aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKen Moore <ken@pcbsd.org>2015-01-21 09:22:27 -0500
committerKen Moore <ken@pcbsd.org>2015-01-21 09:22:27 -0500
commit1b194f252557051d4c625b596f2b7928a6cc01db (patch)
treec815dff4af1ee69a9b4ee1b469aa0ad2313c2aa3
parentCompletely revamp the notepad desktop plugin so that it is now file-based ins... (diff)
downloadlumina-1b194f252557051d4c625b596f2b7928a6cc01db.tar.gz
lumina-1b194f252557051d4c625b596f2b7928a6cc01db.tar.bz2
lumina-1b194f252557051d4c625b596f2b7928a6cc01db.zip
Add a new panel-plugin: appmenu
This plugin re-creates the classic "start" menu from other OS's. Also update how panel-plugins open menus, so now the menu will no longer cover the button that opened it.
-rw-r--r--lumina-desktop/LPanel.cpp1
-rw-r--r--lumina-desktop/lumina-desktop.pro2
-rw-r--r--lumina-desktop/panel-plugins/NewPP.h3
-rw-r--r--lumina-desktop/panel-plugins/appmenu/LAppMenuPlugin.cpp47
-rw-r--r--lumina-desktop/panel-plugins/appmenu/LAppMenuPlugin.h62
-rw-r--r--lumina-desktop/panel-plugins/systemdashboard/LSysDashboard.cpp6
-rw-r--r--lumina-desktop/panel-plugins/userbutton/LUserButton.cpp7
7 files changed, 123 insertions, 5 deletions
diff --git a/lumina-desktop/LPanel.cpp b/lumina-desktop/LPanel.cpp
index 35d89576..8416faaf 100644
--- a/lumina-desktop/LPanel.cpp
+++ b/lumina-desktop/LPanel.cpp
@@ -35,6 +35,7 @@ LPanel::LPanel(QSettings *file, int scr, int num, QWidget *parent) : QWidget(){
this->setWindowTitle("");
this->setObjectName("LuminaPanelBackgroundWidget");
+ this->setStyleSheet("QToolButton::menu-indicator{ image: none; }");
panelArea->setObjectName("LuminaPanelColor");
layout = new QBoxLayout(QBoxLayout::LeftToRight);
layout->setContentsMargins(0,0,0,0);
diff --git a/lumina-desktop/lumina-desktop.pro b/lumina-desktop/lumina-desktop.pro
index 5a05c878..e71ffa65 100644
--- a/lumina-desktop/lumina-desktop.pro
+++ b/lumina-desktop/lumina-desktop.pro
@@ -49,6 +49,7 @@ SOURCES += main.cpp \
panel-plugins/systemdashboard/LSysDashboard.cpp \
panel-plugins/systemdashboard/SysMenuQuick.cpp \
panel-plugins/showdesktop/LHomeButton.cpp \
+ panel-plugins/appmenu/LAppMenuPlugin.cpp \
desktop-plugins/applauncher/AppLauncherPlugin.cpp \
desktop-plugins/desktopview/DesktopViewPlugin.cpp \
desktop-plugins/notepad/NotepadPlugin.cpp \
@@ -87,6 +88,7 @@ HEADERS += Globals.h \
panel-plugins/systemdashboard/LSysDashboard.h \
panel-plugins/systemdashboard/SysMenuQuick.h \
panel-plugins/showdesktop/LHomeButton.h \
+ panel-plugins/appmenu/LAppMenuPlugin.h \
desktop-plugins/SamplePlugin.h \
desktop-plugins/calendar/CalendarPlugin.h \
desktop-plugins/applauncher/AppLauncherPlugin.h \
diff --git a/lumina-desktop/panel-plugins/NewPP.h b/lumina-desktop/panel-plugins/NewPP.h
index 6be3ae17..6c5c369c 100644
--- a/lumina-desktop/panel-plugins/NewPP.h
+++ b/lumina-desktop/panel-plugins/NewPP.h
@@ -22,6 +22,7 @@
#include "taskmanager/LTaskManagerPlugin.h"
#include "systemdashboard/LSysDashboard.h"
#include "showdesktop/LHomeButton.h"
+#include "appmenu/LAppMenuPlugin.h"
#include "systemtray/LSysTray.h" //must be last due to X11 compile issues
class NewPP{
@@ -49,6 +50,8 @@ public:
plug = new LClock(parent, plugin, horizontal);
}else if(plugin.startsWith("systemdashboard---")){
plug = new LSysDashboard(parent, plugin, horizontal);
+ }else if(plugin.startsWith("appmenu---")){
+ plug = new LAppMenuPlugin(parent, plugin, horizontal);
}else{
qWarning() << "Invalid Panel Plugin:"<<plugin << " -- Ignored";
}
diff --git a/lumina-desktop/panel-plugins/appmenu/LAppMenuPlugin.cpp b/lumina-desktop/panel-plugins/appmenu/LAppMenuPlugin.cpp
new file mode 100644
index 00000000..c38c4d3f
--- /dev/null
+++ b/lumina-desktop/panel-plugins/appmenu/LAppMenuPlugin.cpp
@@ -0,0 +1,47 @@
+//===========================================
+// Lumina-DE source code
+// Copyright (c) 2015, Ken Moore
+// Available under the 3-clause BSD license
+// See the LICENSE file for full details
+//===========================================
+#include "LAppMenuPlugin.h"
+#include "../../LSession.h"
+
+#include <LuminaXDG.h>
+
+LAppMenuPlugin::LAppMenuPlugin(QWidget *parent, QString id, bool horizontal) : LPPlugin(parent, id, horizontal){
+ button = new QToolButton(this);
+ button->setAutoRaise(true);
+ button->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
+ button->setMenu( LSession::handle()->applicationMenu() );
+ button->setPopupMode(QToolButton::InstantPopup);
+ this->layout()->setContentsMargins(0,0,0,0);
+ this->layout()->addWidget(button);
+
+
+ QTimer::singleShot(0,this, SLOT(OrientationChange())); //Update icons/sizes
+}
+
+LAppMenuPlugin::~LAppMenuPlugin(){
+
+}
+
+void LAppMenuPlugin::updateButtonVisuals(){
+ button->setToolTip( tr("Quickly launch applications or open files"));
+ button->setText( tr("Start Here") );
+ //Use the PC-BSD icon by default (or the Lumina icon for non-PC-BSD systems)
+ button->setIcon( LXDG::findIcon("pcbsd","Lumina-DE") );
+}
+
+// ========================
+// PRIVATE FUNCTIONS
+// ========================
+/*void LAppMenuPlugin::openMenu(){
+ usermenu->UpdateMenu();
+ menu->popup(this->mapToGlobal(QPoint(0,0)));
+}
+
+void LAppMenuPlugin::closeMenu(){
+ menu->hide();
+}*/
+
diff --git a/lumina-desktop/panel-plugins/appmenu/LAppMenuPlugin.h b/lumina-desktop/panel-plugins/appmenu/LAppMenuPlugin.h
new file mode 100644
index 00000000..cd8d1c1e
--- /dev/null
+++ b/lumina-desktop/panel-plugins/appmenu/LAppMenuPlugin.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 re-creation of the classic "start" menu
+//===========================================
+#ifndef _LUMINA_DESKTOP_APP_MENU_PANEL_PLUGIN_H
+#define _LUMINA_DESKTOP_APP_MENU_PANEL_PLUGIN_H
+
+// Qt includes
+#include <QMenu>
+#include <QToolButton>
+#include <QString>
+#include <QWidget>
+
+
+// Lumina-desktop includes
+#include "../LPPlugin.h" //main plugin widget
+
+
+// PANEL PLUGIN BUTTON
+class LAppMenuPlugin : public LPPlugin{
+ Q_OBJECT
+
+public:
+ LAppMenuPlugin(QWidget *parent = 0, QString id = "appmenu", bool horizontal=true);
+ ~LAppMenuPlugin();
+
+private:
+ QToolButton *button;
+
+ void updateButtonVisuals();
+
+private slots:
+ //void openMenu();
+ //void closeMenu();
+
+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
diff --git a/lumina-desktop/panel-plugins/systemdashboard/LSysDashboard.cpp b/lumina-desktop/panel-plugins/systemdashboard/LSysDashboard.cpp
index 4e5b3139..8f663b0f 100644
--- a/lumina-desktop/panel-plugins/systemdashboard/LSysDashboard.cpp
+++ b/lumina-desktop/panel-plugins/systemdashboard/LSysDashboard.cpp
@@ -13,7 +13,7 @@ LSysDashboard::LSysDashboard(QWidget *parent, QString id, bool horizontal) : LPP
button = new QToolButton(this);
button->setAutoRaise(true);
button->setToolButtonStyle(Qt::ToolButtonIconOnly);
- button->setToolTip(QString("System Dashboard"));
+ button->setPopupMode(QToolButton::DelayedPopup); //make sure it runs the update routine first
connect(button, SIGNAL(clicked()), this, SLOT(openMenu()));
this->layout()->setContentsMargins(0,0,0,0);
this->layout()->addWidget(button);
@@ -24,6 +24,7 @@ LSysDashboard::LSysDashboard(QWidget *parent, QString id, bool horizontal) : LPP
mact->setDefaultWidget(sysmenu);
menu->addAction(mact);
+ button->setMenu(menu);
QTimer::singleShot(0,this, SLOT(OrientationChange())); //Update icons/sizes
}
@@ -38,6 +39,7 @@ void LSysDashboard::updateIcon(bool force){
//For the visual, show battery state only if important
static bool batcharging = false;
QPixmap pix;
+ button->setToolTip(tr("System Dashboard"));
if(LOS::hasBattery()){
int bat = LOS::batteryCharge();
bool charging = LOS::batteryIsCharging();
@@ -79,7 +81,7 @@ void LSysDashboard::resetIcon(){
void LSysDashboard::openMenu(){
sysmenu->UpdateMenu();
- menu->popup(this->mapToGlobal(QPoint(0,0)));
+ button->showMenu();
}
void LSysDashboard::closeMenu(){
diff --git a/lumina-desktop/panel-plugins/userbutton/LUserButton.cpp b/lumina-desktop/panel-plugins/userbutton/LUserButton.cpp
index 1100f37a..c33f9023 100644
--- a/lumina-desktop/panel-plugins/userbutton/LUserButton.cpp
+++ b/lumina-desktop/panel-plugins/userbutton/LUserButton.cpp
@@ -11,7 +11,7 @@ LUserButtonPlugin::LUserButtonPlugin(QWidget *parent, QString id, bool horizonta
button = new QToolButton(this);
button->setAutoRaise(true);
button->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
-
+ button->setPopupMode(QToolButton::DelayedPopup); //make sure it runs the update routine first
connect(button, SIGNAL(clicked()), this, SLOT(openMenu()));
this->layout()->setContentsMargins(0,0,0,0);
this->layout()->addWidget(button);
@@ -23,6 +23,7 @@ LUserButtonPlugin::LUserButtonPlugin(QWidget *parent, QString id, bool horizonta
mact->setDefaultWidget(usermenu);
menu->addAction(mact);
+ button->setMenu(menu);
QTimer::singleShot(0,this, SLOT(OrientationChange())); //Update icons/sizes
}
@@ -31,7 +32,7 @@ LUserButtonPlugin::~LUserButtonPlugin(){
}
void LUserButtonPlugin::updateButtonVisuals(){
- button->setToolTip(QString("Quickly launch applications or open files"));
+ button->setToolTip(tr("Quickly launch applications or open files"));
button->setText( SYSTEM::user() );
if( QFile::exists(QDir::homePath()+"/.loginIcon.png") ){
button->setIcon( QIcon(QDir::homePath()+"/.loginIcon.png") );
@@ -45,7 +46,7 @@ void LUserButtonPlugin::updateButtonVisuals(){
// ========================
void LUserButtonPlugin::openMenu(){
usermenu->UpdateMenu();
- menu->popup(this->mapToGlobal(QPoint(0,0)));
+ button->showMenu();
}
void LUserButtonPlugin::closeMenu(){
bgstack15