Search This Blog

Monday, May 24, 2010

Plasma NM: more updates

My first MM implementation to solid added the MM dbus interface to GsmNetworkInterface class, MM can run independently from NM, then it is more logical to implement solid MM as a separated backend, that is what I started to do last Saturday. Well, the work is much more complex than I have thought. I spent the whole Saturday reorganizing the code, creating new files, and eliminating some namespaces. The solid interface is ready (I think), now I need to reorganize the NM backend and make everything work again. If the first implementation was an old car I may say I am pimping my code hehe, I completely dismantled the code, now I am reassembling everything together with a nice look. Probably tomorrow I will try to finish the backend.

Last Friday I did some experiments with using html-like tables to implement interface details using a single Plasma::Label, that simplifies the code and, most important, reduces memory usage. I almost succeed, the result is this:


Another advantage of using html tables is that now we can select which detail to show per interface type. In the current implementation the entries Operator, Signal Quality and Access Technology are only shown for Gsm connections. Monolithic Knm uses a similar code to showing tooltips for the interfaces. One other thing Knm does is let the user select which detail and in which order to present them, that is more flexible than what I have implemented so far. I plan to port that code to Plasma NM in the future as more I progress in MM implementation the more information will be added to interface details, so it would be good to select which detail I want to see. One more thing to the TODO list.

Sometimes I get very stubborn to finish one thing. If you look at the screenshot above you can see the access technology and signal quality beside the connection name at the right side of Plasma NM. I thought I could do that in a couple of hours at most, what naive of me. Yesterday morning I started to dig the code finding how Plasma NM does that for wireless connections. Man, it looks like a labirint, only today morning I finally have got everything working, well almost everything, there are some edges to polish. What took me so much time was the fact the wireless component gets the signal strength througth org.kded.networkmanagement (a kded module), so I had to implemented one interface for org.kded.networkmanagement too, more precisely org.kded.networkmanagement.GsmInterfaceConnection. The implementation adds 13 new files to the source code :-/ and charnges several other files. Well, at least now I can see the signal quality and access technology without having to open the interface details window :-) Yes!!!

8 comments:

Andreas Kuhl said...

Wow, this looks great! Cannot wait to test this! When will you commit this to trunk?

Lamarque said...

I need to finish the MM solid backend and commit it to trunk before I can commit the changes to Plasma NM. KDE is in hard feature freeze, which as far as I know ends in August with the KDE SC 4.5.0 release, then I can only commit the MM solid backend to trunk after that.

The html table change can be commmited now since it does not depends on MM. Unfortunately I still have some layout problems. Sometimes the left panel does not resize properly and the back button does not work because some widget overrides it. I added a hack that resizes the left panel as needed but it must run when the panel is visible to the user, and you can see the panel increasing two times during a couple of seconds until it finds the right size. Usability speaking it is very bad to see that happening, I am still trying to find a better solution.

Anonymous said...

This widget is to big. Why not to move this functionality to classical app?

Magnus Lundborg said...

Do you think it will be possible to connect through a bluetooth connected phone acting as a GSM modem?

I guess this will need some more work with the bluetooth manager, but if the connection to between the computer and the phone was established, do you think NM applet would be able to use that?

I would find that very useful, but it is usually not easy to set up atm.

Unknown said...

I just say thanks :)

Great to see someone working on the NM part of KDE

since I use the new NM plamsma app I can finally use my UMTS stick again without using the gnoma nm-applet :)

The rest looks great to me too.
Keep up the good work! :)

Lamarque said...

@Anonymous, well, I like the old app but I am not knm maintainer and the older developers already decided to deprecate knm and stay with plasma nm only. I cannot change that. Besides I like the traffic plotter :-) That was one of the things I would like to implement in knm, less one thing for me to do. I know the widget is big, programming in plasma (and superkaramba) has this problem, there is too much space wasting. Unfortunately the only solution (hack) for the layout problem I talked abrove is increase the window until it fits the contents and let the back button working again.

@Magnus, I will test my Samsung i8910 as bluetooth modem and see what happens. I have only connected with my phone using wvdial (never with MM) because the AT +CFUN=1 command (turn radio on) in fact disables my phone's radio enterely. As far as I know MM always issue this command when connecting and with wvdial I can prevent this command to be issue, in MM I do not know if it is even possible. I do not know the state of nm-applet about this, I used it only once last year to do some tests required by my employer. As far as I know once the phone is connected to rfcomm subsystem it acts as a serial modem, problably from that moment on NM e MM can work with it. Setting the rfcomm part is editing the file /etc/bluetooth/rfcomm.conf, loading the right modules (rfcomm.ko) and pairing the devices. I will test that later and let you know the results.

@Eric, thanks.

Lamarque said...

I tried to connect using my modem as bluetooth modem, it did no work, udev/bluetoothd did not create the /dev/rfcommX entry. Even creating it manually it did not connect to my phone. I know bluetooth is working because I use (k)anyremote to use my phone to control amarok, it works. I will keep trying.

Lamarque said...

I have just posted a new blog about using phone as bluetooth modem, who is interested go to the blog's front page.