[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdebase/workspace/plasma/containments/desktop
From: Aaron J. Seigo <aseigo () kde ! org>
Date: 2009-04-03 0:41:44
Message-ID: 1238719304.694995.23945.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 948432 by aseigo:
support listing multiple panels if they exist, don't assume the panel containment is \
called "panel" if there is only one installed. now to duplicate this code in panel ;)
M +39 -5 desktop.cpp
M +3 -0 desktop.h
--- trunk/KDE/kdebase/workspace/plasma/containments/desktop/desktop.cpp \
#948431:948432 @@ -28,7 +28,9 @@
#include <QFileInfo>
#include <QGraphicsScene>
#include <QGraphicsView>
+#include <QMenu>
#include <QPainter>
+#include <QSignalMapper>
#include <QTimeLine>
#include <KAuthorized>
@@ -58,6 +60,7 @@
DefaultDesktop::DefaultDesktop(QObject *parent, const QVariantList &args)
: Containment(parent, args),
+ m_addPanelsMenu(0),
m_lockDesktopAction(0),
m_appletBrowserAction(0),
m_addPanelAction(0),
@@ -83,6 +86,11 @@
//kDebug() << "!!! loading desktop";
}
+DefaultDesktop::~DefaultDesktop()
+{
+ delete m_addPanelsMenu;
+}
+
void DefaultDesktop::constraintsEvent(Plasma::Constraints constraints)
{
if (constraints & Plasma::ImmutableConstraint && m_appletBrowserAction) {
@@ -118,9 +126,17 @@
void DefaultDesktop::addPanel()
{
+ KPluginInfo::List panelPlugins = listContainments("panel");
+
+ if (!panelPlugins.isEmpty()) {
+ addPanel(panelPlugins.first().pluginName());
+ }
+}
+
+void DefaultDesktop::addPanel(const QString &plugin)
+{
if (corona()) {
- // make a panel at the top
- Containment* panel = corona()->addContainment("panel");
+ Containment* panel = corona()->addContainment(plugin);
panel->showConfigurationInterface();
panel->setScreen(screen());
@@ -190,10 +206,28 @@
if (!m_appletBrowserAction) {
m_appletBrowserAction = action("add widgets");
- m_addPanelAction = new QAction(i18n("Add Panel"), this);
- connect(m_addPanelAction, SIGNAL(triggered(bool)), this, SLOT(addPanel()));
- m_addPanelAction->setIcon(KIcon("list-add"));
+ KPluginInfo::List panelPlugins = listContainmentsOfType("panel");
+ if (panelPlugins.size() == 1) {
+ m_addPanelAction = new QAction(i18n("Add Panel"), this);
+ connect(m_addPanelAction, SIGNAL(triggered(bool)), this, \
SLOT(addPanel())); + m_addPanelAction->setIcon(KIcon("list-add"));
+ } else if (!panelPlugins.isEmpty()) {
+ m_addPanelsMenu = new QMenu();
+ m_addPanelAction = m_addPanelsMenu->menuAction();
+ m_addPanelAction->setText(i18n("Add Panel"));
+
+ QSignalMapper *mapper = new QSignalMapper(this);
+ connect(mapper, SIGNAL(mapped(QString)), this, SLOT(addPanel(QString)));
+
+ foreach (const KPluginInfo &plugin, panelPlugins) {
+ QAction *action = new QAction(plugin.name(), this);
+ mapper->setMapping(action, plugin.pluginName());
+ connect(action, SIGNAL(triggered(bool)), mapper, SLOT(map()));
+ m_addPanelsMenu->addAction(action);
+ }
+ }
+
m_runCommandAction = new QAction(i18n("Run Command..."), this);
connect(m_runCommandAction, SIGNAL(triggered(bool)), this, \
SLOT(runCommand())); m_runCommandAction->setIcon(KIcon("system-run"));
--- trunk/KDE/kdebase/workspace/plasma/containments/desktop/desktop.h #948431:948432
@@ -61,6 +61,7 @@
public:
DefaultDesktop(QObject *parent, const QVariantList &args);
+ ~DefaultDesktop();
void constraintsEvent(Plasma::Constraints constraints);
QList<QAction*> contextualActions();
@@ -75,6 +76,7 @@
void logout();
void addPanel();
+ void addPanel(const QString &plugin);
void onAppletAdded(Plasma::Applet *, const QPointF &);
void onAppletRemoved(Plasma::Applet *);
@@ -83,6 +85,7 @@
void refreshWorkingArea();
private:
+ QMenu *m_addPanelsMenu;
QAction *m_lockDesktopAction;
QAction *m_appletBrowserAction;
QAction *m_addPanelAction;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic