Greetings to all habravchan. Today I want to tell you that Kutim is now available for owners of a wonderful mobile computer from Nokia.
What problems did I encounter when porting? The first thing I encountered at the beginning of work was the Kutima assembly system. It uses not the usual for all projects .pro file, and cmake. That is, in order to start assembling, the Nokia Qt SDK is not enough. You need to put Scratchbox. Well and, of course, after a long wait for the assembly, the kutim did not start. The problem was in some plugins that are not workable on Maemo. I had to remove them. After launching and entering the network, I realized that there was a lot to change so that you could use the kutim in everyday life. This is what I encountered:
1. Not the whole interface fits into the small screen of the N900.
In Kutima, of course, everything is pretty minimalistic, but the contents of many windows still do not fit on the screen. In order to move the widgets with your finger, you need to wrap them in QScrollArea. Initially, this was not done for all the necessary widgets.
A small remark: Hereinafter all screenshots are reduced from 800 Ă— 480 to 400 Ă— 240.This is done in order not to take up much space on the screen.
2. Qt restrictions
Not all Qt widgets are supported in Memo. Some of the officially unsupported ones are fully functional and can be used. But some of them simply do not work or it looks like it is not possible to use it. For example, QSound does not work in Maemo. In this case, Kutima plug-ins came in very handy, implementing sound output via phonon and sdlsound. As it turned out, sdlsound eats a lot of CPU time in idle time, and had to be abandoned. As a widget that can not be used, you can bring QFontDialog. He will have to redo it.
')
3. New message notifications
The pop-up window with information about the new message, which is familiar to all of us in an ordinary computer, is unacceptable on Memo. Here, too, the plug-in was very helpful in Kutima, sending notifications via dbus. Very opportunely, because in Maemo, all standard programs communicate via this bus. Later, I screwed support for the vibration and the LED to this plugin. As it turned out, the developers did not expect that there could be several channels through which you can send notifications about events. Therefore, it was temporarily necessary to include everything in one plug-in and without the possibility of customization.
4. Icons
The N900 ppi screen is much larger than a regular monitor, and the icons become very small. As an example, you can look at the first picture in the post. The customer badges in it are 16 × 16. More simply was not, as such is used everywhere. In addition, usually the icons are all sorts of buttons, that is, you need to press them with your fingers. For all buttons in Maemo, the minimum icon size is 48 × 48 pixels. It’s good that icons from the oxygen theme are used in Kutima, as it has all the necessary sizes for all the icons, But, nevertheless, in some places there were problems. For example, in the contact list the size of the icons was rigidly programmed - 16 × 16.
I also want to mention at this point that subsequently the developers moved some important items from the menu, which is usually shown by a long press on the screen (right mouse button), directly to the item for which this menu is intended:
5. Windows
In Kutima, as in any other program, a large number of different windows. And to produce a large number of windows on a mobile device is not good form. In Maemo, the concept of StackedWindow is provided to solve this problem. That is, the new window shifts the old left with the animation. And instead of the “close” icon, a “back” icon appears, which closes the current window and opens the previous one. To support such a function, it was necessary to add code specific only to Memo in the code of many windows.
6. Settings
Initially, all settings Kutima are located in one window. But it didn’t really fit into the N900 screen. In order to assess the scale of disasters, I suggest that you read the following picture:
To improve the situation, Gorthauer87 suggested using the example of SlidingStackedWidget ( video ) for Nokia's Symbian. That is, immediately after opening the settings window, make the user see only the main points. After selecting one of them, the sub-items open. After selecting it, specific settings are opened. This is all accompanied by beautiful animation.
Later, this feature was bolted to the conference bookmarks management interface and to the chat. About this further.
7. Chat
The most important windows in any messenger is the contact list window and the chat window. If everything is basically clear with the first one (you just need to take into account that in the landscape mode of action you need to have it differently), then with the chat, everything is not so simple. As in all other messengers, in Kutima several chat rooms are arranged in the form of tabs. But on a mobile device, a small screen, and many tabs simply do not fit there. There is no need to go far for an example - tabs are used in Majamo pidgin. They take up a lot of places, and getting on the right taboo with a large number of them is problematic. There are also conferences! This means that in the standard window there appears also a list of users in the conference, which takes up almost half of the screen, while it is almost impossible to use it. This is how it looked in Kutima initially:
What did we come up with? Make three separate windows: a list of open chats, current chat, conference participants. If there is no conference support in the protocol, then the number of windows is reduced to two. At the same time, everything in the chat window should be extremely simple: the chat itself, the send button, the button with smiles, and the new message entry field. But come up with a little concept. It must be done so that it is beautiful and convenient to use. To solve the first question, it was decided to use the concept applied to the settings window. And to solve the second problem, they initially decided to use only finger movements. That is, if I spent on the screen from right to left, then we switch to the previous screen, if next left to the right. Of course, if there are only two windows, you can make any movement. As it turned out, using your fingers is not always convenient, because we added a translucent button on the right side of each window that allows you to switch to the next window on the right. Later, two more buttons were added to this button: a button for closing a chat and a button for showing a contact sheet. But, of course, the ability to switch windows on the movement of your fingers is not gone anywhere.
8. Portrait mode
Maemo uses landscape mode everywhere by default. Support for portrait mode is implemented only in a few programs. For example, one of them is the telephone. But such an important program in everyday life as an Internet messenger, it is important to have portrait mode support, as it is not always possible to hold the phone with two hands. When making changes to the Kutima source code, when only landscape mode was supported, I thought about how it would look in portrait mode. Therefore, it was not necessary to re-make changes after switching on the portrait mode. Is that in the contact list had to move the menu. But chat is not so simple. There was a problem with the fact that the virtual keyboard in Maemo only supports landscape orientation. I had to drive a little and write a qwerty keyboard for portrait mode.
9. Menu
And I would also like to say about QMenu. In Maemo, all menu items are oriented by pressing a finger and, accordingly, they are very large in height. Here they are (real size):
In the kutim, all menus with a large number of items and sub-items. This caused a big problem, because changing the QMenu code to something else is very difficult. Alteration of this will require a significant investment of time. At the moment, I solved this problem like this: with the help of QStyleSheets, I reduced the height of the menu elements to such that everything would fit. Users do not seem to complain.
Conclusion
A few months ago on Maemo, besides the built-in client, there was a pidgin. He did not suit everyone with his inconvenience, quiet sound, and so on. Now everyone has the opportunity to use a convenient instant messaging client and throw out a pidgin. Moreover, the latest versions of Kutima have learned to load support for protocols from libpurple.
What is planned in the near future:
Redesign notifications. Mainly so that they can be customized
Writing a plugin that implements support for a specific tray Maemo.
Finally, a video showing the operation of the Kutima interface on Maemo in action:
And of course, you wonder what the Kutima developers themselves do? Over the last month, support for the Mail.ru protocol has been added in Kutima, and the quetzal protocol, which implements the loading of protocols from pidgin, has returned to life. In addition, they are trying to collect the same Kutim for Symbian. The build is complicated by the fact that there is no cmake in symbian sdk, and you have to write patches for cmake yourself in order to compile Kutim. This process is not fast, because there are so many problems. “But how,” you will say, “for I have already seen screenshots of a kutim running on a symbian smartphone. And you will be right. But the fact is that at that time there was no strong dependence on cmake, and the kutim could be something to assemble under symbian without it. In addition, initially the idea of ​​SlidingStackedWidget was tested on the symbian version. Now cmake began to perform a lot of routine work for developers. Therefore, until they finish cmake under symbian, Kutim there, alas, will not appear. If someone can and wants to help, then you are welcome .