[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdebase/workspace/plasma/applets/tasks
From: Olivier Goffart <ogoffart () kde ! org>
Date: 2008-01-17 17:27:04
Message-ID: 1200590824.235758.16544.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 762683 by ogoffart:
Option to show only task of the current desktop in the taskbar.
I can't use KDE without this :-)
It's enabled by default because i think this is an importent feature for everyone \
using virtual desktops. But feel free to disable it by default if you don't like \
that.
M +57 -15 tasks.cpp
M +6 -0 tasks.h
M +7 -0 tasksConfig.ui
--- trunk/KDE/kdebase/workspace/plasma/applets/tasks/tasks.cpp #762682:762683
@@ -76,10 +76,26 @@
KConfigGroup cg = config();
_showTooltip = cg.readEntry("showTooltip", true);
+ _showOnlyCurrentDesktop = cg.readEntry("showOnlyCurrentDesktop", true);
// add representations of existing running tasks
registerWindowTasks();
registerStartingTasks();
+
+ // listen for addition and removal of window tasks
+ connect(TaskManager::TaskManager::self(), SIGNAL(taskAdded(TaskPtr)),
+ this, SLOT(addWindowTask(TaskPtr)));
+ connect(TaskManager::TaskManager::self(), SIGNAL(taskRemoved(TaskPtr)),
+ this, SLOT(removeWindowTask(TaskPtr)));
+
+ // listen for addition and removal of starting tasks
+ connect(TaskManager::TaskManager::self(), SIGNAL(startupAdded(StartupPtr)),
+ this, SLOT(addStartingTask(StartupPtr)) );
+ connect(TaskManager::TaskManager::self(), SIGNAL(startupRemoved(StartupPtr)),
+ this, SLOT(removeStartingTask(StartupPtr)));
+
+ connect(TaskManager::TaskManager::self(), SIGNAL(desktopChanged(int)),
+ this, SLOT(currentDesktopChanged(int)));
// add the animator once we're initialized to avoid animating like mad on start \
up _rootTaskGroup->layout()->setAnimator(animator);
@@ -87,11 +103,6 @@
void Tasks::registerStartingTasks()
{
- // listen for addition and removal of starting tasks
- connect(TaskManager::TaskManager::self(), SIGNAL(startupAdded(StartupPtr)),
- this, SLOT(addStartingTask(StartupPtr)) );
- connect(TaskManager::TaskManager::self(), SIGNAL(startupRemoved(StartupPtr)),
- this, SLOT(removeStartingTask(StartupPtr)));
}
void Tasks::addStartingTask(StartupPtr task)
@@ -122,12 +133,7 @@
iter.next();
addWindowTask(iter.value());
}
-
- // listen for addition and removal of window tasks
- connect(TaskManager::TaskManager::self(), SIGNAL(taskAdded(TaskPtr)),
- this, SLOT(addWindowTask(TaskPtr)));
- connect(TaskManager::TaskManager::self(), SIGNAL(taskRemoved(TaskPtr)),
- this, SLOT(removeWindowTask(TaskPtr)));
+
}
void Tasks::addItemToRootGroup(AbstractTaskItem *item)
@@ -152,7 +158,9 @@
if (!task->showInTaskbar()) {
return;
}
-
+
+ if (_showOnlyCurrentDesktop && task->desktop() != \
TaskManager::TaskManager::self()->currentDesktop()) + return;
WindowTaskItem *item = 0;
foreach (StartupPtr startup, _startupTaskItems.keys()) {
if (startup->matchesWindow(task->window())) {
@@ -179,6 +187,12 @@
}
}
+void Tasks::removeAllTasks()
+{
+ while (!_windowTaskItems.isEmpty())
+ removeItemFromRootGroup(_windowTaskItems.take(_windowTaskItems.constBegin().key()));
+}
+
void Tasks::constraintsUpdated(Plasma::Constraints constraints)
{
if (constraints & Plasma::LocationConstraint) {
@@ -196,6 +210,15 @@
_rootTaskGroup->cycle(e->delta());
}
+void Tasks::currentDesktopChanged( int )
+{
+ if (!_showOnlyCurrentDesktop)
+ return;
+ removeAllTasks();
+ registerWindowTasks();
+
+}
+
void Tasks::showConfigurationInterface()
{
if (m_dialog == 0) {
@@ -211,11 +234,14 @@
connect( m_dialog, SIGNAL(okClicked()), this, SLOT(configAccepted()) );
}
ui.showTooltip->setChecked(_showTooltip);
+ ui.showOnlyCurrentDesktop->setChecked(_showOnlyCurrentDesktop);
m_dialog->show();
}
void Tasks::configAccepted()
{
+ bool changed = false;
+
if (_showTooltip != (ui.showTooltip->checkState() == Qt::Checked)) {
_showTooltip = !_showTooltip;
foreach (AbstractTaskItem *taskItem, _windowTaskItems) {
@@ -224,12 +250,28 @@
windowTaskItem->setShowTooltip(_showTooltip);
}
}
- update();
-
KConfigGroup cg = config();
cg.writeEntry("showTooltip", _showTooltip);
- emit configNeedsSaving();
+ changed = true;
+
}
+
+ if (_showOnlyCurrentDesktop != (ui.showOnlyCurrentDesktop->checkState() == \
Qt::Checked)) { + _showOnlyCurrentDesktop = !_showOnlyCurrentDesktop;
+
+ removeAllTasks();
+ registerWindowTasks();
+
+ KConfigGroup cg = config();
+ cg.writeEntry("showOnlyCurrentDesktop", _showOnlyCurrentDesktop);
+
+ changed = true;
+ }
+
+ if(changed) {
+ update();
+ emit configNeedsSaving();
+ }
}
--- trunk/KDE/kdebase/workspace/plasma/applets/tasks/tasks.h #762682:762683
@@ -85,6 +85,8 @@
void addStartingTask(StartupPtr);
void removeStartingTask(StartupPtr);
+
+ void currentDesktopChanged(int);
private:
// creates task representations for existing windows
@@ -101,6 +103,9 @@
void addItemToRootGroup(AbstractTaskItem* item);
void removeItemFromRootGroup(AbstractTaskItem* item);
+
+ // remove all tasks from the taskbar
+ void removeAllTasks();
TaskGroupItem* _rootTaskGroup;
@@ -108,6 +113,7 @@
QHash<StartupPtr,AbstractTaskItem*> _startupTaskItems;
bool _showTooltip;
+ bool _showOnlyCurrentDesktop;
KDialog *m_dialog;
Ui::tasksConfig ui;
};
--- trunk/KDE/kdebase/workspace/plasma/applets/tasks/tasksConfig.ui #762682:762683
@@ -23,6 +23,13 @@
</property>
</widget>
</item>
+ <item row="1" column="0" >
+ <widget class="QCheckBox" name="showOnlyCurrentDesktop" >
+ <property name="text" >
+ <string>Show only task of the current desktop</string>
+ </property>
+ </widget>
+ </item>
</layout>
</widget>
<resources/>
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic