[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdebase/workspace/plasma/desktop/shell
From: Ivan Čukić <ivan.cukic () kde ! org>
Date: 2010-10-18 16:15:15
Message-ID: 20101018161515.ECDB6AC899 () svn ! kde ! org
[Download RAW message or body]
SVN commit 1187202 by ivan:
Finished activitymanager revamp
Summary
- configuration for activities added (name, icon)
- code refactored to remove /evil/ painting and mouse events detection
- activity controlls moved to separate classes for easier managing
- fixed some layout issues
- panel controller closes after a small delay when plasma loses focus
(not detecting specific windows anymore, so it is more robust)
M +1 -0 CMakeLists.txt
M +6 -0 activity.cpp
M +4 -0 activity.h
M +53 -3 activitymanager/activitycontrols.cpp
M +8 -2 activitymanager/activitycontrols.h
M +1 -5 activitymanager/activityicon.cpp
M +7 -6 controllerwindow.cpp
M +1 -0 controllerwindow.h
--- trunk/KDE/kdebase/workspace/plasma/desktop/shell/CMakeLists.txt #1187201:1187202
@@ -8,6 +8,7 @@
activitymanager/activitymanager.cpp
activitymanager/activityicon.cpp
activitymanager/activitylist.cpp
+ activitymanager/activitycontrols.cpp
activitymanager/filterbar.cpp
activitymanager/kidenticongenerator.cpp
)
--- trunk/KDE/kdebase/workspace/plasma/desktop/shell/activity.cpp #1187201:1187202
@@ -207,6 +207,12 @@
}
}
+void Activity::setIcon(const QString &icon)
+{
+ KActivityController().setActivityIcon(m_id, icon);
+ emit iconChanged(icon);
+}
+
void Activity::updateActivityName(Plasma::Context *context)
{
if (context->currentActivityId() != m_id) {
--- trunk/KDE/kdebase/workspace/plasma/desktop/shell/activity.h #1187201:1187202
@@ -85,12 +85,16 @@
signals:
void nameChanged(const QString &name);
+ void iconChanged(const QString &icon);
+
void opened();
void closed();
+
//TODO signals for other changes
public slots:
void setName(const QString &name);
+ void setIcon(const QString &icon);
/**
* delete the activity forever
*/
--- trunk/KDE/kdebase/workspace/plasma/desktop/shell/activitymanager/activitycontrols.cpp \
#1187201:1187202 @@ -18,6 +18,11 @@
*/
#include "activitycontrols.h"
+#include <QGraphicsScene>
+#include <KPushButton>
+#include <KIconDialog>
+#include <KWindowSystem>
+#include <QApplication>
ActivityControls::ActivityControls(ActivityIcon * parent)
: QGraphicsWidget(parent)
@@ -52,8 +57,8 @@
// ActivityConfiguration
-ActivityConfiguration::ActivityConfiguration(ActivityIcon * parent)
- : ActivityControls(parent)
+ActivityConfiguration::ActivityConfiguration(ActivityIcon * parent, Activity * \
activity) + : ActivityControls(parent), m_activity(activity)
{
m_layoutButtons = new QGraphicsLinearLayout(this);
m_layoutButtons->setOrientation(Qt::Vertical);
@@ -68,7 +73,8 @@
m_buttonConfirmChanges = new Plasma::PushButton(this);
m_buttonConfirmChanges->setText(i18n("Apply Changes"));
m_layoutButtons->addItem(m_buttonConfirmChanges);
- connect(m_buttonConfirmChanges, SIGNAL(clicked()), this, \
SIGNAL(applyChanges())); + connect(m_buttonConfirmChanges, SIGNAL(clicked()), \
this, SLOT(applyChanges())); + connect(m_buttonConfirmChanges, SIGNAL(clicked()), \
this, SIGNAL(closed()));
m_buttonCancel = new Plasma::PushButton(this);
m_buttonCancel->setText(i18n("Cancel Changes"));
@@ -87,8 +93,14 @@
m_activityIcon = new Plasma::PushButton(this);
m_activityIcon->setIcon(KIcon("plasma"));
m_layoutMain->addItem(m_activityIcon);
+ connect(m_activityIcon, SIGNAL(clicked()), this, SLOT(chooseIcon()));
m_main->setGeometry(parent->contentsRect());
+
+ m_activityName->setText(m_activity->name());
+
+ m_activityIcon->setIcon(
+ QIcon(parent->pixmap(QSize(32, 32))));
}
void ActivityConfiguration::hideEvent(QHideEvent * event)
@@ -98,8 +110,46 @@
m_main->hide();
}
+void ActivityConfiguration::showEvent(QShowEvent * event)
+{
+ ActivityControls::showEvent(event);
+
+ m_main->setZValue(zValue());
+ m_main->show();
+}
+
ActivityConfiguration::~ActivityConfiguration()
{
// delete m_layoutMain;
m_main->deleteLater();
}
+
+void ActivityConfiguration::applyChanges()
+{
+ m_activity->setName(m_activityName->text());
+
+ if (!m_iconName.isEmpty()) {
+ m_activity->setIcon(m_iconName);
+ }
+}
+
+void ActivityConfiguration::chooseIcon()
+{
+ QString iconName = KIconDialog::getIcon();
+
+ if (!iconName.isEmpty()) {
+ m_activityIcon->setIcon(KIcon(iconName));
+ m_iconName = iconName;
+ }
+
+ // somehow, after closing KIconDialog, plasma loses focus
+ // and the panel controller is closed, soforcing focus to
+ // any of the top level windows that are shown
+ foreach (QWidget * widget, QApplication::topLevelWidgets()) {
+ if (widget->isVisible()) {
+ KWindowSystem::forceActiveWindow(widget->winId(), 0);
+ break;
+ }
+ }
+}
+
--- trunk/KDE/kdebase/workspace/plasma/desktop/shell/activitymanager/activitycontrols.h \
#1187201:1187202 @@ -24,6 +24,7 @@
#include <Plasma/LineEdit>
#include "activityicon.h"
+#include "activity.h"
class ActivityControls : public QGraphicsWidget {
Q_OBJECT
@@ -54,14 +55,16 @@
class ActivityConfiguration: public ActivityControls {
Q_OBJECT
public:
- ActivityConfiguration(ActivityIcon * parent);
+ ActivityConfiguration(ActivityIcon * parent, Activity * activity);
~ActivityConfiguration();
-Q_SIGNALS:
+private Q_SLOTS:
void applyChanges();
+ void chooseIcon();
protected:
void hideEvent(QHideEvent * event);
+ void showEvent(QShowEvent * event);
private:
QGraphicsLinearLayout * m_layoutButtons;
@@ -75,4 +78,7 @@
QGraphicsWidget * m_main;
Plasma::LineEdit * m_activityName;
Plasma::PushButton * m_activityIcon;
+
+ Activity * m_activity;
+ QString m_iconName;
};
--- trunk/KDE/kdebase/workspace/plasma/desktop/shell/activitymanager/activityicon.cpp \
#1187201:1187202 @@ -191,11 +191,7 @@
void ActivityIcon::showConfiguration()
{
- QGraphicsWidget * w = new ActivityConfiguration(this);
-
- connect(w, SIGNAL(applyChanges()), this, SLOT(applyChanges()));
-
- showInlineWidget(w);
+ showInlineWidget(new ActivityConfiguration(this, m_activity));
}
void ActivityIcon::startInlineAnim()
--- trunk/KDE/kdebase/workspace/plasma/desktop/shell/controllerwindow.cpp \
#1187201:1187202 @@ -477,12 +477,13 @@
{
Q_UNUSED(id)
- // if the active window isn't a Plasma::View and the widgets explorer is \
visible,
- // or the activityManager is visible, and we are no longer the active window but \
still
- // visible on-screen, then close up shop
- if ((m_activityManager ||
- (m_widgetExplorer && !qobject_cast<Plasma::View \
*>(QApplication::activeWindow()))) &&
- isControllerViewVisible() && !isActiveWindow()) {
+ // Small delay when closing due to lost focus
+ QTimer::singleShot(300, this, SLOT(closeIfNotFocussed()));
+}
+
+void ControllerWindow::closeIfNotFocussed()
+{
+ if (!QApplication::activeWindow()) {
close();
}
}
--- trunk/KDE/kdebase/workspace/plasma/desktop/shell/controllerwindow.h \
#1187201:1187202 @@ -70,6 +70,7 @@
public Q_SLOTS:
void showWidgetExplorer();
void showActivityManager();
+ void closeIfNotFocussed();
protected:
void setGraphicsWidget(QGraphicsWidget *widget);
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic