diff options
author | Ken Moore <ken@pcbsd.org> | 2015-01-21 09:22:27 -0500 |
---|---|---|
committer | Ken Moore <ken@pcbsd.org> | 2015-01-21 09:22:27 -0500 |
commit | 1b194f252557051d4c625b596f2b7928a6cc01db (patch) | |
tree | c815dff4af1ee69a9b4ee1b469aa0ad2313c2aa3 /lumina-desktop/panel-plugins/appmenu | |
parent | Completely revamp the notepad desktop plugin so that it is now file-based ins... (diff) | |
download | lumina-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.
Diffstat (limited to 'lumina-desktop/panel-plugins/appmenu')
-rw-r--r-- | lumina-desktop/panel-plugins/appmenu/LAppMenuPlugin.cpp | 47 | ||||
-rw-r--r-- | lumina-desktop/panel-plugins/appmenu/LAppMenuPlugin.h | 62 |
2 files changed, 109 insertions, 0 deletions
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 |