I had an unfortunate intermission in kactivities development due to a
hard drive failure.
Fortunately, I managed to salvage significant parts of my work, but
without git history. Now, it is ready for prime-time.
You are now able to access the activity manager without the need for
the ‘clumsy’ activities data-engine. Just import org.kde.activities and
create an instance of the ActivityModel.
import org.kde.activities 0.1 as Activities
ListView {
id: main
model: modelMain
Activities.ActivityModel {
id: modelMain
}
}
But, this is not all. You are not limited only to retrieve the data,
it is also possible to create, delete or alter them. The service control
API is asynchronous. Therefore, all methods, apart from regular
arguments, receive a continuation function that is called when the
method is executed.
Something along these lines:
modelMain.setCurrentActivity(idOfTheActivity,
function(result) {
console.log("Activity switched")
}
)
modelMain.createActivity(nameForTheActivity,
function(result) {
console.log("Activity id is: " + result)
}
)
Well, that is all for now. I’m thinking of adding overloads without
callbacks, but these methods are not really meant to be called by
everybody, so I’m not sure how important a more pleasant API actually
is. :)
Published
in the Prog C++ section,
on 7 November 2013
I’ve been irritated for the way a QSqlQuery result-set is supposed to
be processed for some time now - with while(query.next()) and getting
the results via query.value(…). I was always thinking it would be nice
if it were more accessible… namely, accessible using iterators.
To be able to do something like this:
for (auto &record: query) {
// do something with
record[0]
// or
record["ID"]
}
You have a simple .h file to include, and it will just work.
[1]
{% gist 7346513 %}
The issue is that it is only tailored to match only this use-case -
it can be improved to do more, and to allow more iterators over the same
query, but I don’t really care to do that :)
I have a few questions that I’d like to hear an answer to from a
wider user (and developer) community. Those revolve around the activity
switching UI and the things it could have in plasma 2.
Currently, the switcher shows the name and the icon of an activity,
and allows you to:
switch activities (duh)
create / delete activities
start / stop activities
change the name and icon
This is rather rudimentary. We have more information for the
activities that somebody could find useful. We know:
which windows are currently open in an activity
which documents are open in an activity (for applications that
support that kind of thing)
which documents have been opened in an activity in the past, along
with which were most popular (kept open the longest, accessed multiple
times etc.)
what is the wallpaper in the current activity, for running
activities maybe even the screenshots of the windows
These are some of the things we could have:
marking activity as private in the sense of the private mode web
browsing which would stop the usage tracking, etc. (not to be confused
with encrypted activities we planned for Plasma Active which proved to
be infeasible)
instead of creating blank or templated activities, we could
optionally create activities containing the work from the last hour or
so. This would move the windows and documents you are currently working
on to the new activity (and move all the related recent usage statistics
along with them)
some kind of search (for what?)
All comments on above, ideas for new things and even mock-ups are
welcome!
I’m working on different ideas for the activity switcher for plasma
2. Unfortunately, I haven’t had much inspiration for that. The only
thing I had a real inspiration for was the calendar.
I really dislike out current calendar widget. It is confusing, and
the layout is overcrowded and asymmetric (in a bad way :) ). It often
confuses me when it shows events - I always think everything is
today.
So I made this. It is just a mock-up, no real code yet. Opinions?