- show last refresh time in tooltip
- on error, keep retrying with increasing interval
- plasmafied tooltips
Most important improvements are:
- Auto refresh respecting server-side request throttling.
- Asynchronous webservice request prevent plasma from freezing (when webservice time-outs)
Keep in mind: the telenet webservice does not always work.
- added icon
- don’t let theme determine label color
- autorefresh option: takes ticket expiry into account
- deny refresh request when request is in progress
- don’t fetch at startup when configuration is needed
- gui feedback when refreshing
- show usage and next request time in tooltip
- on error, show webservice error message in tooltip
- refresh in separate thread: fixes plasma hang when webservice is out of service
The telemeter plasmoid works for some time now but when I tried to distribute it, I entered packaging hell and things got deferred.. until some guy reminded me about it in the comments.
I could explain how I eventually managed to work around the packaging issue, but I’ll save that for another post
Without further ado, Telemeter plasmoid v0.1 is released, go get it at kde-look.org!
v0.1 / 2011-04-06
- fetch telenet account usage from telemeter webservice using gsoap
- store credentials in plasmoid config or kde wallet
- click on plasmoid to trigger manual refresh (telemeter service protects itself by denying access when too many requests happen consecutively, the plasmoid currently does not prevent you from doing this)
- automatically refreshes at configurable interval
- use Plasma::Meter::AnalogMeter with custom svg for better text positioning
Here’s a first screenshot of the plasmoid in action in its natural habitat:
Notice the change in looks (ditched the qneedleindicator in favor of a native plasmoid widget Plasma::Meter). I’ll do a blog post later to detail the changes. It shows a fetch error as it accesses the webservice with invalid credentials.
Lately I’ve been running low on my internet download/upload quota. Although my ISP (Telenet) trippled my quota, a combination of new suse release, new steam games and my isp failing to reset my quota (bug in upgrade process I guess), I managed to reach its limit inadvertently at 200 MB left. Since a) my ISP offers a webservice to access your usage data, b) I always wanted to write a useful plasmoid and c) wanted to try out soap services using Qt, I contemplated to write a quota monitor widget / plasmoid. This evening I gave it a shot.
After comparing available c++ toolkits for web services, I stuck to gSOAP rather than QtSoap as gSOAP seems the de facto standard when it comes to soap and cpp. gSOAP has some handy JAXB-ish utils to convert your wsdl into proxy classes. For a moment, I was afraid I would have to give up the nice and easy Qt network support (proxy, ssl,..) but it seems gSOAP has abundant support. All in all, in a few hours I had it up and running. Actually, I lost most of the time finding the relevant webservice url (you have to subscribe to a private wiki although eventually someone mailed it to me through a fairly private mailinglist I found on a user forum). In the meantime I found that putting a #define in my main is not the same as adding it as a compiler flag even when you rebuild everything. Adding a compiler flag the right way using qmake, goes like this:
QMAKE_CXXFLAGS += -DWITH_OPENSSL
When I finally could connect to the webservice, I received bogus data, all 0 usage! Only to find out that this was a problem with my account only. Btw, I good and cross platform tool to try out / debug webservices is SoapUI.
To keep it a little sexy, I threw in the QNeedleIndicator I recently stumbled upon on qt-apps.org and adapted it a bit to my needs and voila, we have an alpha:
It is not a plasmoid yet and credentials are hardcoded so it’s not useful to anybody but I couldn’t wait to blog. Note that in the screenshot I seem to have plenty of quota left. That’s only because it shows my parent’s account usage.
It is currently developed as a Qt app but I definitely plan on wrapping it in a plasmoid. Maybe I’ll keep the Qt app alive for some poor windows users. After I clean it up a bit I will post the code on gitorious.