KDE/kdebase/workspace/plasma/dataengines/tasks

Alain Boyer alainboyer at gmail.com
Wed Dec 17 18:58:28 CET 2008


Hello,

I'm not sure that this is the best way to go about fixing the 
onCurrentDesktop update. This fixes the tasks data engine but 
libtaskmanager is still broken...

I have attached a patch that fixes the problem in libtaskmanager and 
makes this commit (897412) no longer necessary. I'd like to ask those 
more familiar with libtaskmanager if my changes make sense.

Also, there is still a minor problem with some of the calls to 
Task::refresh() being munged by d->lastUpdate in libs/taskmanager/task.cpp.

Alain.


Thomas Schildknecht wrote:
> SVN commit 897412 by tschildknecht:
> 
> Fix the onCurrentDesktop update
> 
> 
>  M  +16 -0     tasksengine.cpp  
>  M  +1 -0      tasksengine.h  
> 
> 
> --- trunk/KDE/kdebase/workspace/plasma/dataengines/tasks/tasksengine.cpp #897411:897412
> @@ -68,6 +68,7 @@
>      connect(TaskManager::TaskManager::self(), SIGNAL(startupRemoved(StartupPtr)), this, SLOT(startupRemoved(StartupPtr)));
>      connect(TaskManager::TaskManager::self(), SIGNAL(taskAdded(TaskPtr)), this, SLOT(taskAdded(TaskPtr)));
>      connect(TaskManager::TaskManager::self(), SIGNAL(taskRemoved(TaskPtr)), this, SLOT(taskRemoved(TaskPtr)));
> +    connect(TaskManager::TaskManager::self(), SIGNAL(desktopChanged(int)), this, SLOT(desktopChanged(int)));
>  }
>  
>  void TasksEngine::startupAdded(StartupPtr startup)
> @@ -94,6 +95,21 @@
>      removeSource(getTaskName(task));
>  }
>  
> +void TasksEngine::desktopChanged(int desktop)
> +{
> +    Q_UNUSED(desktop);
> +    QHashIterator <QString, Plasma::DataContainer*> it(containerDict());
> +
> +    while (it.hasNext()) {
> +        TaskSource *source =  static_cast<TaskSource*>(it.next().value());
> +        bool onCurrent = source->m_task->isOnCurrentDesktop();
> +        if (source->data()["onCurrentDesktop"].toBool() != onCurrent) {
> +            source->setData("onCurrentDesktop", onCurrent);
> +        }
> +        source->checkForUpdate();
> +    }
> +}
> +
>  void TasksEngine::addStartup(StartupPtr startup)
>  {
>      TaskSource *taskSource = new TaskSource(startup, this);
> --- trunk/KDE/kdebase/workspace/plasma/dataengines/tasks/tasksengine.h #897411:897412
> @@ -62,6 +62,7 @@
>          void startupRemoved(StartupPtr startup);
>          void taskAdded(TaskPtr task);
>          void taskRemoved(TaskPtr task);
> +        void desktopChanged(int desktop);
>  
>      private:
>          friend class TaskSource;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: tasks.diff
Type: text/x-diff
Size: 2456 bytes
Desc: not available
Url : http://mail.kde.org/pipermail/plasma-devel/attachments/20081217/6c179efe/attachment-0001.bin 


More information about the Plasma-devel mailing list