diff options
author | Ken Moore <ken@pcbsd.org> | 2015-01-19 12:34:52 -0500 |
---|---|---|
committer | Ken Moore <ken@pcbsd.org> | 2015-01-19 12:34:52 -0500 |
commit | 9a2bf7946f2d66dee5342a5cf1183814732e6277 (patch) | |
tree | efa38ec45da8744ef3401818cb51f803447d3da6 /lumina-desktop/panel-plugins | |
parent | Add knowledge of the new Panel theme setting to lumina-config. (diff) | |
download | lumina-9a2bf7946f2d66dee5342a5cf1183814732e6277.tar.gz lumina-9a2bf7946f2d66dee5342a5cf1183814732e6277.tar.bz2 lumina-9a2bf7946f2d66dee5342a5cf1183814732e6277.zip |
Add a new panel plugin: HomeButton
This button will hide all open windows so the desktop is visible (useful for touch screens or small devices)
Diffstat (limited to 'lumina-desktop/panel-plugins')
-rw-r--r-- | lumina-desktop/panel-plugins/NewPP.h | 3 | ||||
-rw-r--r-- | lumina-desktop/panel-plugins/showdesktop/LHomeButton.cpp | 43 | ||||
-rw-r--r-- | lumina-desktop/panel-plugins/showdesktop/LHomeButton.h | 62 |
3 files changed, 108 insertions, 0 deletions
diff --git a/lumina-desktop/panel-plugins/NewPP.h b/lumina-desktop/panel-plugins/NewPP.h index f71ad45b..6be3ae17 100644 --- a/lumina-desktop/panel-plugins/NewPP.h +++ b/lumina-desktop/panel-plugins/NewPP.h @@ -21,6 +21,7 @@ #include "desktopswitcher/LDesktopSwitcher.h" #include "taskmanager/LTaskManagerPlugin.h" #include "systemdashboard/LSysDashboard.h" +#include "showdesktop/LHomeButton.h" #include "systemtray/LSysTray.h" //must be last due to X11 compile issues class NewPP{ @@ -29,6 +30,8 @@ public: LPPlugin *plug = 0; if(plugin.startsWith("userbutton---")){ plug = new LUserButtonPlugin(parent, plugin, horizontal); + }else if(plugin.startsWith("homebutton---")){ + plug = new LHomeButtonPlugin(parent, plugin, horizontal); }else if(plugin.startsWith("desktopbar---")){ plug = new LDeskBarPlugin(parent, plugin, horizontal); }else if(plugin.startsWith("spacer---")){ diff --git a/lumina-desktop/panel-plugins/showdesktop/LHomeButton.cpp b/lumina-desktop/panel-plugins/showdesktop/LHomeButton.cpp new file mode 100644 index 00000000..2cce3395 --- /dev/null +++ b/lumina-desktop/panel-plugins/showdesktop/LHomeButton.cpp @@ -0,0 +1,43 @@ +//=========================================== +// Lumina-DE source code +// Copyright (c) 2015, Ken Moore +// Available under the 3-clause BSD license +// See the LICENSE file for full details +//=========================================== +#include "LHomeButton.h" +#include "../../LSession.h" + +#include <LuminaX11.h> + +LHomeButtonPlugin::LHomeButtonPlugin(QWidget *parent, QString id, bool horizontal) : LPPlugin(parent, id, horizontal){ + button = new QToolButton(this); + button->setAutoRaise(true); + button->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); + + connect(button, SIGNAL(clicked()), this, SLOT(showDesktop())); + this->layout()->setContentsMargins(0,0,0,0); + this->layout()->addWidget(button); + + QTimer::singleShot(0,this, SLOT(OrientationChange())); //Update icons/sizes +} + +LHomeButtonPlugin::~LHomeButtonPlugin(){ + +} + +void LHomeButtonPlugin::updateButtonVisuals(){ + button->setIcon( LXDG::findIcon("go-home", "") ); +} + +// ======================== +// PRIVATE FUNCTIONS +// ======================== +void LHomeButtonPlugin::showDesktop(){ + QList<WId> wins = LSession::handle()->XCB->WindowList(); + for(int i=0; i<wins.length(); i++){ + if( LXCB::INVISIBLE != LSession::handle()->XCB->WindowState(wins[i]) ){ + LSession::handle()->XCB->MinimizeWindow(wins[i]); + } + } +} + diff --git a/lumina-desktop/panel-plugins/showdesktop/LHomeButton.h b/lumina-desktop/panel-plugins/showdesktop/LHomeButton.h new file mode 100644 index 00000000..74aaf4fb --- /dev/null +++ b/lumina-desktop/panel-plugins/showdesktop/LHomeButton.h @@ -0,0 +1,62 @@ +//=========================================== +// Lumina-DE source code +// Copyright (c) 2015, Ken Moore +// Available under the 3-clause BSD license +// See the LICENSE file for full details +//=========================================== +// This panel plugin is a simple button to hide all windows so the desktop is visible +//=========================================== +#ifndef _LUMINA_DESKTOP_GO_HOME_PLUGIN_H +#define _LUMINA_DESKTOP_GO_HOME_PLUGIN_H + +// Qt includes +#include <QToolButton> +#include <QString> +#include <QWidget> + + +// Lumina-desktop includes +#include "../LPPlugin.h" //main plugin widget + +// libLumina includes +#include "LuminaXDG.h" + +// PANEL PLUGIN BUTTON +class LHomeButtonPlugin : public LPPlugin{ + Q_OBJECT + +public: + LHomeButtonPlugin(QWidget *parent = 0, QString id = "homebutton", bool horizontal=true); + ~LHomeButtonPlugin(); + +private: + QToolButton *button; + + void updateButtonVisuals(); + +private slots: + void showDesktop(); + +public slots: + void OrientationChange(){ + if(this->layout()->direction()==QBoxLayout::LeftToRight){ + this->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::MinimumExpanding); + button->setIconSize( QSize(this->height(), this->height()) ); + }else{ + this->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred); + button->setIconSize( QSize(this->width(), this->width()) ); + } + this->layout()->update(); + updateButtonVisuals(); + } + + void LocaleChange(){ + updateButtonVisuals(); + } + + void ThemeChange(){ + updateButtonVisuals(); + } +}; + +#endif
\ No newline at end of file |