aboutsummaryrefslogtreecommitdiff
path: root/lumina-desktop/panel-plugins/showdesktop/LHomeButton.cpp
diff options
context:
space:
mode:
authorKen Moore <ken@pcbsd.org>2015-01-19 12:34:52 -0500
committerKen Moore <ken@pcbsd.org>2015-01-19 12:34:52 -0500
commit9a2bf7946f2d66dee5342a5cf1183814732e6277 (patch)
treeefa38ec45da8744ef3401818cb51f803447d3da6 /lumina-desktop/panel-plugins/showdesktop/LHomeButton.cpp
parentAdd knowledge of the new Panel theme setting to lumina-config. (diff)
downloadlumina-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/showdesktop/LHomeButton.cpp')
-rw-r--r--lumina-desktop/panel-plugins/showdesktop/LHomeButton.cpp43
1 files changed, 43 insertions, 0 deletions
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]);
+ }
+ }
+}
+
bgstack15