aboutsummaryrefslogtreecommitdiff
path: root/lumina-desktop/panel-plugins/showdesktop/LHomeButton.cpp
diff options
context:
space:
mode:
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