aboutsummaryrefslogtreecommitdiff
path: root/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins
diff options
context:
space:
mode:
Diffstat (limited to 'src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins')
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/LPPlugin.h77
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/LTBWidget.h71
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/NewPP.h82
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/RotateToolButton.h58
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/applauncher/AppLaunchButton.cpp77
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/applauncher/AppLaunchButton.h63
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/appmenu/LAppMenuPlugin.cpp142
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/appmenu/LAppMenuPlugin.h64
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/audioplayer/LPAudioPlayer.cpp30
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/audioplayer/LPAudioPlayer.h49
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/audioplayer/PPlayerWidget.cpp258
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/audioplayer/PPlayerWidget.h59
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/audioplayer/PPlayerWidget.ui182
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/battery/LBattery.cpp115
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/battery/LBattery.h53
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/battery/NOTES49
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/clock/LClock.cpp230
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/clock/LClock.h58
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/desktopbar/LDeskBar.cpp207
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/desktopbar/LDeskBar.h88
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/desktopswitcher/LDesktopSwitcher.cpp148
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/desktopswitcher/LDesktopSwitcher.h73
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/jsonmenu/PPJsonMenu.cpp35
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/jsonmenu/PPJsonMenu.h42
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/line/LLine.h40
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/panel-plugins.pri57
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/quickcontainer/QuickPPlugin.h43
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/showdesktop/LHomeButton.cpp43
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/showdesktop/LHomeButton.h62
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/spacer/LSpacer.h34
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemdashboard/LSysDashboard.cpp91
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemdashboard/LSysDashboard.h76
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemdashboard/SysMenuQuick.cpp211
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemdashboard/SysMenuQuick.h54
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemdashboard/SysMenuQuick.ui400
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemstart/ItemWidget.cpp279
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemstart/ItemWidget.h98
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemstart/LStartButton.cpp137
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemstart/LStartButton.h113
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemstart/StartMenu.cpp720
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemstart/StartMenu.h105
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemstart/StartMenu.ui1148
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemtray/LSysTray.cpp167
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemtray/LSysTray.h74
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemtray/TrayIcon.cpp128
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemtray/TrayIcon.h55
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/taskmanager/LTaskButton.cpp271
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/taskmanager/LTaskButton.h73
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/taskmanager/LTaskManagerPlugin.cpp141
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/taskmanager/LTaskManagerPlugin.h71
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/userbutton/LUserButton.cpp67
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/userbutton/LUserButton.h75
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/userbutton/UserItemWidget.cpp205
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/userbutton/UserItemWidget.h72
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/userbutton/UserWidget.cpp393
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/userbutton/UserWidget.h101
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/userbutton/UserWidget.ui593
57 files changed, 0 insertions, 8507 deletions
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/LPPlugin.h b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/LPPlugin.h
deleted file mode 100644
index c4c76297..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/LPPlugin.h
+++ /dev/null
@@ -1,77 +0,0 @@
-//===========================================
-// Lumina-DE source code
-// Copyright (c) 2014-2015, Ken Moore
-// Available under the 3-clause BSD license
-// See the LICENSE file for full details
-//===========================================
-// This class is the generic container layout for all panel plugins
-// Simply subclass this when creating a new plugin to enable correct
-// visibility and usage within a panel
-//===========================================
-#ifndef _LUMINA_DESKTOP_PANEL_PLUGIN_H
-#define _LUMINA_DESKTOP_PANEL_PLUGIN_H
-
-#include <QObject>
-#include <QWidget>
-#include <QString>
-#include <QBoxLayout>
-#include <QApplication>
-
-class LPPlugin : public QWidget{
- Q_OBJECT
-
-private:
- QBoxLayout *LY;
- QString plugintype;
-
-public:
- LPPlugin(QWidget *parent = 0, QString ptype="unknown", bool horizontal = true) : QWidget(parent){
- plugintype=ptype;
- this->setContentsMargins(1,1,1,1);
- this->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
- this->setFocusPolicy(Qt::NoFocus); //no keyboard focus on the panel/plugins
- if(horizontal){LY = new QBoxLayout(QBoxLayout::LeftToRight, this); }
- else{ LY = new QBoxLayout(QBoxLayout::TopToBottom, this); }
- this->setObjectName(ptype.section("---",0,0));
- LY->setContentsMargins(0,0,0,0);
- LY->setSpacing(1);
- this->setLayout(LY);
- connect(QApplication::instance(), SIGNAL(LocaleChanged()), this, SLOT(LocaleChange()) );
- connect(QApplication::instance(), SIGNAL(IconThemeChanged()), this, SLOT(ThemeChange()) );
- }
-
- ~LPPlugin(){
- }
-
- QBoxLayout* layout(){
- return LY;
- }
-
- QString type(){
- return plugintype;
- }
-
- virtual void AboutToClose(){
- //This needs to be re-implemented in the subclasses plugin
- //This is for any last-minute cleanup before the plugin gets deleted
- }
-
-public slots:
- virtual void LocaleChange(){
- //This needs to be re-implemented in the subclassed plugin
- //This is where all text is set/translated
- }
- virtual void ThemeChange(){
- //This needs to be re-implemented in the subclasses plugin
- //This is where all the visuals are set if using Theme-dependant icons.
- }
- virtual void OrientationChange(){
- //This needs to be re-implemented in the subclasses plugin
- //This is where any horizontal/vertical orientations can be changed appropriately
- }
-
-signals:
- void MenuClosed(); //This needs to be emitted when any plugin's menu is closed for some reason (check/set focus properly)
-};
-
-#endif
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/LTBWidget.h b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/LTBWidget.h
deleted file mode 100644
index 560e5811..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/LTBWidget.h
+++ /dev/null
@@ -1,71 +0,0 @@
-//===========================================
-// Lumina-DE source code
-// Copyright (c) 2013, Ken Moore
-// Available under the 3-clause BSD license
-// See the LICENSE file for full details
-//===========================================
-#ifndef _LUMINA_TOOLBAR_WIDGET_H
-#define _LUMINA_TOOLBAR_WIDGET_H
-
-#include <QToolButton>
-#include <QEvent>
-#include <QWheelEvent>
-
-#include "Globals.h"
-#include <LuminaX11.h>
-
-class LTBWidget : public QToolButton{
- Q_OBJECT
-
-private:
- LXCB::WINDOWVISIBILITY cstate;
- //QString rawstyle;
- void updateBackground(){
- //QString background = "background: transparent; "; //default value
- //QString border = "border: 1px solid transparent;";
- if(cstate == LXCB::IGNORE){ this->setObjectName(""); } //just use the defaults
- else if(cstate == LXCB::VISIBLE){ this->setObjectName("WindowVisible"); }//background = "background: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(255, 255, 255, 240), stop:0.505682 rgba(240, 240, 240, 150), stop:1 rgba(210, 210, 210, 55));"; border="border: 1px solid transparent;"; }
- else if(cstate == LXCB::INVISIBLE){this->setObjectName("WindowInvisible"); } //background = "background: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(215, 215, 215, 240), stop:0.505682 rgba(184, 185, 186, 150), stop:1 rgba(221, 246, 255, 55));"; border="border: 1px solid transparent;"; }
- else if(cstate == LXCB::ACTIVE){ this->setObjectName("WindowActive"); }//background= "background: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(241, 233, 156, 240), stop:0.355682 rgba(255, 243, 127, 150), stop:1 rgba(221, 246, 255, 55));"; border ="border: 1px solid transparent;"; }
- else if(cstate == LXCB::ATTENTION){ this->setObjectName("WindowAttention"); }//background= "background: qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:1, stop:0 rgba(252, 187, 127, 240), stop:0.505682 rgba(255, 222, 197, 150), stop:1 rgba(221, 246, 255, 55));"; border="border: 1px solid transparent;"; }
- this->setStyleSheet(""); //force the object to re-evaluate the current theme stylesheet and update visuals
- //QString raw = rawstyle;
- //this->setStyleSheet( raw.replace("%1",background).replace("%2", border) );
- }
-
-signals:
-
- void wheelScroll(int change);
-
-public:
- LTBWidget(QWidget* parent) : QToolButton(parent){
- //this->setStyleSheet( this->styleSheet()+" LTBWidget::menu-indicator{image: none;}");
- cstate = LXCB::IGNORE;
-
- this->setPopupMode(QToolButton::InstantPopup);
- this->setAutoRaise(true);
-
- //rawstyle = "LTBWidget{ %1 %2 border-radius: 5px;} LTBWidget::menu-indicator{image: none;} LTBWidget::hover{ %1 border: 1px solid black; border-radius: 5px; } LTBWidget::menu-button{ background: transparent; width: 15px; } LTBWidget[popupMode=\"1\"]{%1 %2 border-radius: 5px; padding-right: 15px;} LTBWidget[popupMode=\"1\"]::hover{%1 border: 1px solid black; border-radius: 5px; padding-right: 15px}";
- updateBackground();
- }
-
- ~LTBWidget(){
- }
-
- void setState(LXCB::WINDOWVISIBILITY newstate){
- cstate = newstate;
- updateBackground();
- }
-
-public slots:
-
-
-protected:
- void wheelEvent(QWheelEvent *event){
- int change = event->delta()/120; // 1/15th of a rotation (delta/120) is usually one "click" of the wheel
- emit wheelScroll(change);
- }
-
-};
-
-#endif
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/NewPP.h b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/NewPP.h
deleted file mode 100644
index 3a5f6a5b..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/NewPP.h
+++ /dev/null
@@ -1,82 +0,0 @@
-//===========================================
-// Lumina-DE source code
-// Copyright (c) 2014-2015, Ken Moore
-// Available under the 3-clause BSD license
-// See the LICENSE file for full details
-//===========================================
-// This class is the interface to load all the different panel plugins
-//===========================================
-#ifndef _LUMINA_DESKTOP_NEW_PANEL_PLUGIN_H
-#define _LUMINA_DESKTOP_NEW_PANEL_PLUGIN_H
-
-#include <QDebug>
-
-//List all the individual plugin includes here
-#include "LPPlugin.h"
-#include "userbutton/LUserButton.h"
-#include "desktopbar/LDeskBar.h"
-#include "spacer/LSpacer.h"
-#include "line/LLine.h"
-#include "clock/LClock.h"
-#include "battery/LBattery.h"
-#include "desktopswitcher/LDesktopSwitcher.h"
-#include "taskmanager/LTaskManagerPlugin.h"
-#include "systemdashboard/LSysDashboard.h"
-#include "showdesktop/LHomeButton.h"
-#include "appmenu/LAppMenuPlugin.h"
-#include "applauncher/AppLaunchButton.h"
-#include "systemstart/LStartButton.h"
-#include "audioplayer/LPAudioPlayer.h"
-#include "jsonmenu/PPJsonMenu.h"
-//#include "quickcontainer/QuickPPlugin.h"
-#include "systemtray/LSysTray.h" //must be last due to X11 compile issues
-
-
-class NewPP{
-public:
- static LPPlugin* createPlugin(QString plugin, QWidget* parent = 0, bool horizontal = true){
- 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---")){
- plug = new LSpacerPlugin(parent, plugin, horizontal);
- }else if(plugin.startsWith("line---")){
- plug = new LLinePlugin(parent, plugin, horizontal);
- }else if(plugin.startsWith("taskmanager")){
- //This one can be "taskmanager[-nogroups]---"
- plug = new LTaskManagerPlugin(parent, plugin, horizontal);
- }else if(plugin.startsWith("systemtray---")){
- plug = new LSysTray(parent, plugin, horizontal);
- }else if(plugin.startsWith("desktopswitcher---")){
- plug = new LDesktopSwitcher(parent, plugin, horizontal);
- }else if(plugin.startsWith("battery---") && LOS::hasBattery()){
- plug = new LBattery(parent, plugin, horizontal);
- }else if(plugin.startsWith("clock---")){
- 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 if(plugin.startsWith("systemstart---")){
- plug = new LStartButtonPlugin(parent, plugin, horizontal);
- }else if(plugin.startsWith("audioplayer---")){
- plug = new LPAudioPlayer(parent, plugin, horizontal);
- }else if(plugin.section("::::",0,0)=="jsonmenu" && plugin.split("::::").length()>=3 ){
- plug = new LPJsonMenu(parent, plugin, horizontal);
- }else if(plugin.section("---",0,0).section("::",0,0)=="applauncher"){
- plug = new AppLaunchButtonPlugin(parent, plugin, horizontal);
- //}else if( plugin.section("---",0,0).startsWith("quick-") && LUtils::validQuickPlugin(plugin.section("---",0,0)) ){
- //plug = new QuickPPlugin(parent, plugin, horizontal);
- }else{
- qWarning() << "Invalid Panel Plugin:"<<plugin << " -- Ignored";
- }
- return plug;
- }
-
-};
-
-#endif
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/RotateToolButton.h b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/RotateToolButton.h
deleted file mode 100644
index 1c8085f6..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/RotateToolButton.h
+++ /dev/null
@@ -1,58 +0,0 @@
-//===========================================
-// Lumina Desktop source code
-// Copyright (c) 2016, Ken Moore
-// Available under the 3-clause BSD license
-// See the LICENSE file for full details
-//===========================================
-// This is a simple subclass of a QToolButton so it can
-// provice text rotated vertically as needed
-//===========================================
-#ifndef _LUMINA_DESKTOP_ROTATE_TOOLBUTTON_H
-#define _LUMINA_DESKTOP_ROTATE_TOOLBUTTON_H
-
-#include <QStylePainter>
-#include <QStyleOptionToolButton>
-#include <QToolButton>
-#include <QTransform>
-
-class RotateToolButton : public QToolButton{
- Q_OBJECT
-
-private:
- int rotate_degrees;
- void paintEvent(QPaintEvent*){
- /* NOTE: This is what a standard QToolButton performs (peeked at Qt source code for this tidbit)
- QStylePainter p(this);
- QStyleOptionToolButton opt;
- initStyleOption(&opt);
- p.drawComplexControl(QStyle::CC_ToolButton, opt);
- */
- QStylePainter p(this);
- QStyleOptionToolButton opt;
- initStyleOption(&opt);
- //Apply the rotation matrix to the painter before starting the paint
- QTransform trans = QTransform( p.transform() ).rotate(rotate_degrees);
- p.setTransform(trans, false); //merging already taken care of
- //Now do the normal painting procedure
- p.drawComplexControl(QStyle::CC_ToolButton, opt);
- }
-
-public:
- RotateToolButton(QWidget *parent = Q_NULLPTR) : QToolButton(parent){
- rotate_degrees = 0; //no rotation initially
- }
-
- void setRotation(int degrees){
- rotate_degrees = degrees;
- this->update(); //trigger a paint event
- }
-
- /*virtual void setText(QString text){
- this->setText(text);
- if(rotate_degrees !=0){
- this->setSizeHint( this->sizeHint()
- }
- }*/
-};
-
-#endif
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/applauncher/AppLaunchButton.cpp b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/applauncher/AppLaunchButton.cpp
deleted file mode 100644
index 1fd819b5..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/applauncher/AppLaunchButton.cpp
+++ /dev/null
@@ -1,77 +0,0 @@
-//===========================================
-// Lumina-DE source code
-// Copyright (c) 2015, Ken Moore
-// Available under the 3-clause BSD license
-// See the LICENSE file for full details
-//===========================================
-#include "AppLaunchButton.h"
-#include "../../LSession.h"
-
-#include <LuminaXDG.h>
-#include <LUtils.h>
-#include <QInputDialog>
-
-AppLaunchButtonPlugin::AppLaunchButtonPlugin(QWidget *parent, QString id, bool horizontal) : LPPlugin(parent, id, horizontal){
- button = new QToolButton(this);
- button->setAutoRaise(true);
- button->setToolButtonStyle(Qt::ToolButtonIconOnly);
- appfile = id.section("---",0,0).section("::",1,1);
- if(!QFile::exists(appfile) && appfile.endsWith(".desktop")){
- //might be a relative path - try to find the file
- appfile = LUtils::AppToAbsolute(appfile.section("/",-1) );
- }
- if(!QFile::exists(appfile)){ appfile.clear(); }
- connect(button, SIGNAL(clicked()), this, SLOT(AppClicked()));
- this->layout()->setContentsMargins(0,0,0,0);
- this->layout()->addWidget(button);
-
- QTimer::singleShot(0,this, SLOT(OrientationChange())); //Update icons/sizes
-}
-
-AppLaunchButtonPlugin::~AppLaunchButtonPlugin(){
-
-}
-
-void AppLaunchButtonPlugin::updateButtonVisuals(){
- QIcon icon;
- QString tooltip = tr("Click to assign an application");
- if(appfile.endsWith(".desktop")){
- XDGDesktop desk(appfile);
- if(desk.isValid()){
- icon = LXDG::findIcon(desk.icon, "unknown");
- tooltip = QString(tr("Launch %1")).arg(desk.name);
- }else{
- icon = LXDG::findIcon("task-attention","");
- appfile.clear();
- }
- }else if(QFile::exists(appfile)){
- icon = LXDG::findMimeIcon(appfile.section("/",-1));
- tooltip = QString(tr("Open %1")).arg(appfile.section("/",-1));
- }else{
- icon = LXDG::findIcon("task-attention", "");
- }
- button->setIcon( icon );
- button->setToolTip(tooltip);
-}
-
-// ========================
-// PRIVATE FUNCTIONS
-// ========================
-void AppLaunchButtonPlugin::AppClicked(){
- if(appfile.isEmpty()){
- //No App File selected
- QList<XDGDesktop*> apps = LSession::handle()->applicationMenu()->currentAppHash()->value("All");
- QStringList names;
- for(int i=0; i<apps.length(); i++){ names << apps[i]->name; }
- bool ok = false;
- QString app = QInputDialog::getItem(this, tr("Select Application"), tr("Name:"), names, 0, false, &ok);
- if(!ok || names.indexOf(app)<0){ return; } //cancelled
- appfile = apps[ names.indexOf(app) ]->filePath;
- //Still need to find a way to set this value persistently
- // --- perhaps replace the plugin in the desktop settings file with the new path?
- // --- "applauncher::broken---<something>" -> "applauncher::fixed---<something>" ?
- QTimer::singleShot(0,this, SLOT(updateButtonVisuals()));
- }else{
- LSession::LaunchApplication("lumina-open \""+appfile+"\"");
- }
-}
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/applauncher/AppLaunchButton.h b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/applauncher/AppLaunchButton.h
deleted file mode 100644
index 3aa3c7ad..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/applauncher/AppLaunchButton.h
+++ /dev/null
@@ -1,63 +0,0 @@
-//===========================================
-// 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 launch a single application
-//===========================================
-#ifndef _LUMINA_DESKTOP_LAUNCH_APP_PANEL_PLUGIN_H
-#define _LUMINA_DESKTOP_LAUNCH_APP_PANEL_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 AppLaunchButtonPlugin : public LPPlugin{
- Q_OBJECT
-
-public:
- AppLaunchButtonPlugin(QWidget *parent = 0, QString id = "applauncher", bool horizontal=true);
- ~AppLaunchButtonPlugin();
-
-private:
- QToolButton *button;
- QString appfile;
-
- void updateButtonVisuals();
-
-private slots:
- void AppClicked();
-
-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/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/appmenu/LAppMenuPlugin.cpp b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/appmenu/LAppMenuPlugin.cpp
deleted file mode 100644
index e3be55c2..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/appmenu/LAppMenuPlugin.cpp
+++ /dev/null
@@ -1,142 +0,0 @@
-//===========================================
-// 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);
- mainmenu = new QMenu(this);
- button->setMenu( mainmenu );
- button->setPopupMode(QToolButton::InstantPopup);
- this->layout()->setContentsMargins(0,0,0,0);
- this->layout()->addWidget(button);
-
- connect(mainmenu, SIGNAL(aboutToHide()), this, SIGNAL(MenuClosed()));
- connect(mainmenu, SIGNAL(triggered(QAction*)), this, SLOT(LaunchItem(QAction*)) );
- connect(LSession::handle()->applicationMenu(), SIGNAL(AppMenuUpdated()), this, SLOT(UpdateMenu()));
- QTimer::singleShot(0,this, SLOT(OrientationChange())); //Update icons/sizes
- QTimer::singleShot(0,this, SLOT(UpdateMenu()) );
- //Setup the global shortcut handling for opening the start menu
- connect(QApplication::instance(), SIGNAL(StartButtonActivated()), this, SLOT(shortcutActivated()) );
- LSession::handle()->registerStartButton(this->type());
-}
-
-LAppMenuPlugin::~LAppMenuPlugin(){
-
-}
-
-void LAppMenuPlugin::updateButtonVisuals(){
- button->setToolTip( tr("Quickly launch applications or open files"));
- button->setText( tr("Applications") );
- //Use the TrueOS icon by default (or the Lumina icon for non-TrueOS systems)
- button->setIcon( LXDG::findIcon("start-here-lumina","Lumina-DE") );
-}
-
-// ========================
-// PRIVATE FUNCTIONS
-// ========================
-void LAppMenuPlugin::shortcutActivated(){
- if(LSession::handle()->registerStartButton(this->type())){
- if(button->menu()->isVisible()){ button->menu()->hide(); }
- else{ button->showMenu(); }
- }
-}
-
-void LAppMenuPlugin::LaunchItem(QAction* item){
- QString appFile = item->whatsThis();
- if(appFile.startsWith("internal::")){
- appFile = appFile.section("::",1,50); //cut off the "internal" flag
- if(appFile=="logout"){ LSession::handle()->systemWindow(); }
- }else if(!appFile.isEmpty()){
- LSession::LaunchApplication("lumina-open "+appFile);
- }
-}
-
-void LAppMenuPlugin::UpdateMenu(){
- mainmenu->clear();
- QHash<QString, QList<XDGDesktop*> > *HASH = LSession::handle()->applicationMenu()->currentAppHash();
- //Now Re-create the menu (orignally copied from the AppMenu class)
- //Add link to the file manager
- QAction *tmpact = mainmenu->addAction( LXDG::findIcon("user-home", ""), tr("Browse Files") );
- tmpact->setWhatsThis("\""+QDir::homePath()+"\"");
- //--Look for the app store
- XDGDesktop store(LOS::AppStoreShortcut());
- if(store.isValid()){
- tmpact = mainmenu->addAction( LXDG::findIcon(store.icon, ""), tr("Install Applications") );
- tmpact->setWhatsThis("\""+store.filePath+"\"");
- }
- //--Look for the control panel
- XDGDesktop controlp(LOS::ControlPanelShortcut());
- if(controlp.isValid()){
- tmpact = mainmenu->addAction( LXDG::findIcon(controlp.icon, ""), tr("Control Panel") );
- tmpact->setWhatsThis("\""+controlp.filePath+"\"");
- }
- mainmenu->addSeparator();
- //--Now create the sub-menus
- QStringList cats = HASH->keys();
- cats.sort(); //make sure they are alphabetical
- for(int i=0; i<cats.length(); i++){
- //Make sure they are translated and have the right icons
- QString name, icon;
- if(cats[i]=="All"){continue; } //skip this listing for the menu
- else if(cats[i] == "Multimedia"){ name = tr("Multimedia"); icon = "applications-multimedia"; }
- else if(cats[i] == "Development"){ name = tr("Development"); icon = "applications-development"; }
- else if(cats[i] == "Education"){ name = tr("Education"); icon = "applications-education"; }
- else if(cats[i] == "Game"){ name = tr("Games"); icon = "applications-games"; }
- else if(cats[i] == "Graphics"){ name = tr("Graphics"); icon = "applications-graphics"; }
- else if(cats[i] == "Network"){ name = tr("Network"); icon = "applications-internet"; }
- else if(cats[i] == "Office"){ name = tr("Office"); icon = "applications-office"; }
- else if(cats[i] == "Science"){ name = tr("Science"); icon = "applications-science"; }
- else if(cats[i] == "Settings"){ name = tr("Settings"); icon = "preferences-system"; }
- else if(cats[i] == "System"){ name = tr("System"); icon = "applications-system"; }
- else if(cats[i] == "Utility"){ name = tr("Utility"); icon = "applications-utilities"; }
- else if(cats[i] == "Wine"){ name = tr("Wine"); icon = "wine"; }
- else{ name = tr("Unsorted"); icon = "applications-other"; }
-
- QMenu *menu = new QMenu(name, this);
- menu->setIcon(LXDG::findIcon(icon,""));
- QList<XDGDesktop*> appL = HASH->value(cats[i]);
- for( int a=0; a<appL.length(); a++){
- if(appL[a]->actions.isEmpty()){
- //Just a single entry point - no extra actions
- QAction *act = new QAction(LXDG::findIcon(appL[a]->icon, ""), appL[a]->name, menu);
- act->setToolTip(appL[a]->comment);
- act->setWhatsThis("\""+appL[a]->filePath+"\"");
- menu->addAction(act);
- }else{
- //This app has additional actions - make this a sub menu
- // - first the main menu/action
- QMenu *submenu = new QMenu(appL[a]->name, menu);
- submenu->setIcon( LXDG::findIcon(appL[a]->icon,"") );
- //This is the normal behavior - not a special sub-action (although it needs to be at the top of the new menu)
- QAction *act = new QAction(LXDG::findIcon(appL[a]->icon, ""), appL[a]->name, submenu);
- act->setToolTip(appL[a]->comment);
- act->setWhatsThis(appL[a]->filePath);
- submenu->addAction(act);
- //Now add entries for every sub-action listed
- for(int sa=0; sa<appL[a]->actions.length(); sa++){
- QAction *sact = new QAction(LXDG::findIcon(appL[a]->actions[sa].icon, appL[a]->icon), appL[a]->actions[sa].name, this);
- sact->setToolTip(appL[a]->comment);
- sact->setWhatsThis("-action \""+appL[a]->actions[sa].ID+"\" \""+appL[a]->filePath+"\"");
- submenu->addAction(sact);
- }
- menu->addMenu(submenu);
- }
- }//end loop over apps within this category
- mainmenu->addMenu(menu);
- } //end loop over categories
- //Now add any logout options
- mainmenu->addSeparator();
- //QMenu *tmpmenu = mainmenu->addMenu(LXDG::findIcon("system-log-out",""), tr("Leave"));
- tmpact =mainmenu->addAction(LXDG::findIcon("system-log-out"),tr("Leave"));
- tmpact->setWhatsThis("internal::logout");
-
-}
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/appmenu/LAppMenuPlugin.h b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/appmenu/LAppMenuPlugin.h
deleted file mode 100644
index 659d781f..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/appmenu/LAppMenuPlugin.h
+++ /dev/null
@@ -1,64 +0,0 @@
-//===========================================
-// 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;
- QMenu *mainmenu;
-
- void updateButtonVisuals();
-
-private slots:
- void shortcutActivated();
- void LaunchItem(QAction* item);
- void UpdateMenu();
-
-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
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/audioplayer/LPAudioPlayer.cpp b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/audioplayer/LPAudioPlayer.cpp
deleted file mode 100644
index 5669aaf5..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/audioplayer/LPAudioPlayer.cpp
+++ /dev/null
@@ -1,30 +0,0 @@
-//===========================================
-// Lumina-DE source code
-// Copyright (c) 2014, Susanne Jaeckel
-// Available under the 3-clause BSD license
-// See the LICENSE file for full details
-//===========================================
-#include "LPAudioPlayer.h"
-#include "LSession.h"
-
-LPAudioPlayer::LPAudioPlayer(QWidget *parent, QString id, bool horizontal) : LPPlugin(parent, id, horizontal){
- //Setup the button
- button = new QToolButton(this);
- button->setAutoRaise(true);
- button->setToolButtonStyle(Qt::ToolButtonIconOnly);
- button->setPopupMode(QToolButton::InstantPopup); //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);
- wact = new QWidgetAction(this);
- aplayer = new PPlayerWidget(this);
- button ->setMenu(new QMenu(this) );
- wact->setDefaultWidget(aplayer);
- button->menu()->addAction(wact);
- //Now start up the widgets
- button->setIcon( LXDG::findIcon("audio-volume-high","") );
- QTimer::singleShot(0,this,SLOT(OrientationChange()) ); //update the sizing/icon
-}
-
-LPAudioPlayer::~LPAudioPlayer(){
-}
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/audioplayer/LPAudioPlayer.h b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/audioplayer/LPAudioPlayer.h
deleted file mode 100644
index e5132b1f..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/audioplayer/LPAudioPlayer.h
+++ /dev/null
@@ -1,49 +0,0 @@
-//===========================================
-// Lumina-DE source code
-// Copyright (c) 2016, Ken Moore
-// Available under the 3-clause BSD license
-// See the LICENSE file for full details
-//===========================================
-#ifndef _LUMINA_PANEL_AUDIO_PLAYER_PLUGIN_H
-#define _LUMINA_PANEL_AUDIO_PLAYER_PLUGIN_H
-
-#include "../../Globals.h"
-#include "../LTBWidget.h"
-#include "../LPPlugin.h"
-#include "PPlayerWidget.h"
-
-class LPAudioPlayer : public LPPlugin{
- Q_OBJECT
-public:
- LPAudioPlayer(QWidget *parent = 0, QString id = "audioplayer", bool horizontal=true);
- ~LPAudioPlayer();
-
-private:
- QToolButton *button;
- QWidgetAction *wact;
- PPlayerWidget *aplayer;
-
- //int iconOld;
-
-private slots:
- //void updateBattery(bool force = false);
- //QString getRemainingTime();
-
-public slots:
- void LocaleChange(){
- //updateBattery(true);
- }
-
- 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();
- }
-};
-
-#endif
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/audioplayer/PPlayerWidget.cpp b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/audioplayer/PPlayerWidget.cpp
deleted file mode 100644
index 023e20c7..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/audioplayer/PPlayerWidget.cpp
+++ /dev/null
@@ -1,258 +0,0 @@
-//===========================================
-// Lumina-DE source code
-// Copyright (c) 2015, Ken Moore
-// Available under the 3-clause BSD license
-// See the LICENSE file for full details
-//===========================================
-#include "PPlayerWidget.h"
-#include "ui_PPlayerWidget.h"
-
-#include <QDir>
-#include <QUrl>
-#include <QInputDialog>
-#include <QFileDialog>
-#include <LuminaXDG.h>
-#include <QDebug>
-#include <QDesktopWidget>
-
-PPlayerWidget::PPlayerWidget(QWidget *parent) : QWidget(parent), ui(new Ui::PPlayerWidget()){
- ui->setupUi(this); //load the designer form
- PLAYER = new QMediaPlayer(this);
- PLAYER->setVolume(100);
- PLAYER->setNotifyInterval(1000); //1 second interval (just needs to be a rough estimate)
- PLAYLIST = new QMediaPlaylist(this);
- PLAYLIST->setPlaybackMode(QMediaPlaylist::Sequential);
- PLAYER->setPlaylist(PLAYLIST);
-
- configMenu = new QMenu(this);
- ui->tool_config->setMenu(configMenu);
- addMenu = new QMenu(this);
- ui->tool_add->setMenu(addMenu);
-
- updatinglists = false; //start off as false
-
- ui->combo_playlist->setContextMenuPolicy(Qt::NoContextMenu);
-
- LoadIcons();
- playerStateChanged(); //update button visibility
- currentSongChanged();
- //Connect all the signals/slots
- //connect(infoTimer, SIGNAL(timeout()), this, SLOT(rotateTrackInfo()) );
- connect(PLAYER, SIGNAL(positionChanged(qint64)),this, SLOT(updateProgress(qint64)) );
- connect(PLAYER, SIGNAL(durationChanged(qint64)), this, SLOT(updateMaxProgress(qint64)) );
- connect(PLAYLIST, SIGNAL(mediaChanged(int, int)), this, SLOT(playlistChanged()) );
- connect(PLAYER, SIGNAL(stateChanged(QMediaPlayer::State)), this, SLOT(playerStateChanged()) );
- connect(PLAYLIST, SIGNAL(currentMediaChanged(const QMediaContent&)), this, SLOT(currentSongChanged()) );
- connect(ui->combo_playlist, SIGNAL(currentIndexChanged(int)), this, SLOT(userlistSelectionChanged()) );
- connect(ui->tool_play, SIGNAL(clicked()), this, SLOT(playClicked()) );
- connect(ui->tool_pause, SIGNAL(clicked()), this, SLOT(pauseClicked()) );
- connect(ui->tool_stop, SIGNAL(clicked()), this, SLOT(stopClicked()) );
- connect(ui->tool_next, SIGNAL(clicked()), this, SLOT(nextClicked()) );
- connect(ui->tool_prev, SIGNAL(clicked()), this, SLOT(prevClicked()) );
-
-}
-
-PPlayerWidget::~PPlayerWidget(){
- //qDebug() << "Removing PPlayerWidget";
-}
-
-void PPlayerWidget::LoadIcons(){
- ui->tool_stop->setIcon( LXDG::findIcon("media-playback-stop","") );
- ui->tool_play->setIcon( LXDG::findIcon("media-playback-start","") );
- ui->tool_pause->setIcon( LXDG::findIcon("media-playback-pause","") );
- ui->tool_next->setIcon( LXDG::findIcon("media-skip-forward","") );
- ui->tool_prev->setIcon( LXDG::findIcon("media-skip-backward","") );
- ui->tool_add->setIcon( LXDG::findIcon("list-add","") );
- ui->tool_config->setIcon( LXDG::findIcon("configure","") );
- //Now re-assemble the menus as well
- configMenu->clear();
- configMenu->addAction(LXDG::findIcon("media-eject",""), tr("Clear Playlist"), this, SLOT(ClearPlaylist()));
- configMenu->addAction(LXDG::findIcon("roll",""), tr("Shuffle Playlist"), this, SLOT(ShufflePlaylist()));
- addMenu->clear();
- addMenu->addAction(LXDG::findIcon("document-new",""), tr("Add Files"), this, SLOT(AddFilesToPlaylist()));
- addMenu->addAction(LXDG::findIcon("folder-new",""), tr("Add Directory"), this, SLOT(AddDirToPlaylist()));
- addMenu->addAction(LXDG::findIcon("download",""), tr("Add URL"), this, SLOT(AddURLToPlaylist()));
-}
-
-void PPlayerWidget::playClicked(){
- PLAYER->play();
-}
-
-void PPlayerWidget::pauseClicked(){
- PLAYER->pause();
-}
-
-void PPlayerWidget::stopClicked(){
- PLAYER->stop();
-}
-
-void PPlayerWidget::nextClicked(){
- PLAYLIST->next();
-}
-
-void PPlayerWidget::prevClicked(){
- PLAYLIST->previous();
-}
-
-void PPlayerWidget::AddFilesToPlaylist(){
- //Prompt the user to select multimedia files
- QFileDialog dlg(0, Qt::Dialog | Qt::WindowStaysOnTopHint );
- dlg.setFileMode(QFileDialog::ExistingFiles);
- dlg.setAcceptMode(QFileDialog::AcceptOpen);
- dlg.setNameFilter( tr("Multimedia Files")+" ("+LXDG::findAVFileExtensions().join(" ")+")");
- dlg.setWindowTitle(tr("Select Multimedia Files"));
- dlg.setWindowIcon( LXDG::findIcon("file-open","") );
- dlg.setDirectory(QDir::homePath()); //start in the home directory
- //ensure it is centered on the current screen
- QPoint center = QApplication::desktop()->screenGeometry(this).center();
- dlg.move( center.x()-(dlg.width()/2), center.y()-(dlg.height()/2) );
- dlg.show();
- while( dlg.isVisible() ){
- QApplication::processEvents();
- }
- QList<QUrl> files = dlg.selectedUrls();
- if(files.isEmpty() || dlg.result()!=QDialog::Accepted){ return; } //cancelled
- //Make this use show/processEvents later
- //QList<QUrl> files = QFileDialog::getOpenFileUrls(0, tr("Select Multimedia Files"), QDir::homePath(), "Multimedia Files ("+LXDG::findAVFileExtensions().join(" ")+")");
- QList<QMediaContent> urls;
- for(int i=0; i<files.length(); i++){
- urls << QMediaContent(files[i]);
- }
- PLAYLIST->addMedia(urls);
- playlistChanged();
-}
-
-void PPlayerWidget::AddDirToPlaylist(){
- QFileDialog dlg(0, Qt::Dialog | Qt::WindowStaysOnTopHint );
- dlg.setFileMode(QFileDialog::Directory);
- dlg.setOption(QFileDialog::ShowDirsOnly, true);
- dlg.setAcceptMode(QFileDialog::AcceptOpen);
- dlg.setWindowTitle(tr("Select Multimedia Directory"));
- dlg.setWindowIcon( LXDG::findIcon("folder-open","") );
- dlg.setDirectory(QDir::homePath()); //start in the home directory
- //ensure it is centered on the current screen
- QPoint center = QApplication::desktop()->screenGeometry(this).center();
- dlg.move( center.x()-(dlg.width()/2), center.y()-(dlg.height()/2) );
- dlg.show();
- while( dlg.isVisible() ){
- QApplication::processEvents();
- }
- if(dlg.result() != QDialog::Accepted){ return; } //cancelled
- QStringList sel = dlg.selectedFiles();
- if(sel.isEmpty()){ return; } //cancelled
- QString dirpath = sel.first(); //QFileDialog::getExistingDirectory(0, tr("Select a Multimedia Directory"), QDir::homePath() );
- if(dirpath.isEmpty()){ return; } //cancelled
- QDir dir(dirpath);
- QFileInfoList files = dir.entryInfoList(LXDG::findAVFileExtensions(), QDir::Files | QDir::NoDotAndDotDot, QDir::Name);
- if(files.isEmpty()){ return; } //nothing in this directory
- QList<QMediaContent> urls;
- for(int i=0; i<files.length(); i++){
- urls << QMediaContent(QUrl::fromLocalFile(files[i].absoluteFilePath()) );
- }
- PLAYLIST->addMedia(urls);
- playlistChanged();
-}
-
-void PPlayerWidget::AddURLToPlaylist(){
- QInputDialog dlg(0, Qt::Dialog | Qt::WindowStaysOnTopHint );
- dlg.setInputMode(QInputDialog::TextInput);
- dlg.setLabelText(tr("Enter a valid URL for a multimedia file or stream:"));
- dlg.setTextEchoMode(QLineEdit::Normal);
- dlg.setWindowTitle(tr("Multimedia URL"));
- dlg.setWindowIcon( LXDG::findIcon("download","") );
- //ensure it is centered on the current screen
- QPoint center = QApplication::desktop()->screenGeometry(this).center();
- dlg.move( center.x()-(dlg.width()/2), center.y()-(dlg.height()/2) );
- dlg.show();
- while( dlg.isVisible() ){
- QApplication::processEvents();
- }
- QString url = dlg.textValue();
- if(url.isEmpty() || dlg.result()!=QDialog::Accepted){ return; } //cancelled
-
- //QString url = QInputDialog::getText(0, tr("Multimedia URL"), tr("Enter a valid URL for a multimedia file or stream"), QLineEdit::Normal);
- //if(url.isEmpty()){ return; }
- QUrl newurl(url);
- if(!newurl.isValid()){ return; } //invalid URL
- PLAYLIST->addMedia(newurl);
- playlistChanged();
-}
-
-void PPlayerWidget::ClearPlaylist(){
- PLAYER->stop();
- PLAYLIST->clear();
- playlistChanged();
-}
-
-void PPlayerWidget::ShufflePlaylist(){
- PLAYLIST->shuffle();
-}
-
-
-void PPlayerWidget::userlistSelectionChanged(){ //front-end combobox was changed by the user
- if(updatinglists){ return; }
- PLAYLIST->setCurrentIndex( ui->combo_playlist->currentIndex() );
-}
-
-void PPlayerWidget::playerStateChanged(){
- switch( PLAYER->state() ){
- case QMediaPlayer::StoppedState:
- ui->tool_stop->setVisible(false);
- ui->tool_play->setVisible(true);
- ui->tool_pause->setVisible(false);
- ui->progressBar->setVisible(false);
- break;
- case QMediaPlayer::PausedState:
- ui->tool_stop->setVisible(true);
- ui->tool_play->setVisible(true);
- ui->tool_pause->setVisible(false);
- ui->progressBar->setVisible(true);
- break;
- case QMediaPlayer::PlayingState:
- ui->tool_stop->setVisible(true);
- ui->tool_play->setVisible(false);
- ui->tool_pause->setVisible(true);
- ui->progressBar->setVisible(true);
- break;
- }
-
-}
-
-void PPlayerWidget::playlistChanged(){
- updatinglists = true;
- ui->combo_playlist->clear();
- for(int i=0; i<PLAYLIST->mediaCount(); i++){
- QUrl url = PLAYLIST->media(i).canonicalUrl();
- if(url.isLocalFile()){
- ui->combo_playlist->addItem(LXDG::findMimeIcon(url.fileName().section(".",-1)), url.fileName() );
- }else{
- ui->combo_playlist->addItem(LXDG::findIcon("download",""), url.toString() );
- }
- }
- if(PLAYLIST->currentIndex()<0 && PLAYLIST->mediaCount()>0){ PLAYLIST->setCurrentIndex(0); }
- ui->combo_playlist->setCurrentIndex(PLAYLIST->currentIndex());
-
- updatinglists = false;
-}
-
-void PPlayerWidget::currentSongChanged(){
- if(PLAYLIST->currentIndex() != ui->combo_playlist->currentIndex()){
- updatinglists = true;
- ui->combo_playlist->setCurrentIndex(PLAYLIST->currentIndex());
- updatinglists = false;
- }
- ui->tool_next->setEnabled( PLAYLIST->nextIndex() >= 0 );
- ui->tool_prev->setEnabled( PLAYLIST->previousIndex() >= 0);
- ui->label_num->setText( QString::number( PLAYLIST->currentIndex()+1)+"/"+QString::number(PLAYLIST->mediaCount()) );
- ui->progressBar->setRange(0, PLAYER->duration() );
- ui->progressBar->setValue(0);
-}
-
-void PPlayerWidget::updateProgress(qint64 val){
- //qDebug() << "Update Progress Bar:" << val;
- ui->progressBar->setValue(val);
-}
-
-void PPlayerWidget::updateMaxProgress(qint64 val){
- ui->progressBar->setRange(0,val);
-}
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/audioplayer/PPlayerWidget.h b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/audioplayer/PPlayerWidget.h
deleted file mode 100644
index a551d74f..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/audioplayer/PPlayerWidget.h
+++ /dev/null
@@ -1,59 +0,0 @@
-//===========================================
-// Lumina-DE source code
-// Copyright (c) 2015, Ken Moore
-// Available under the 3-clause BSD license
-// See the LICENSE file for full details
-//===========================================
-// This plugin is a simple audio player on the desktop
-//===========================================
-#ifndef _LUMINA_PANEL_PLUGIN_AUDIO_PLAYER_WIDGET_H
-#define _LUMINA_PANEL_PLUGIN_AUDIO_PLAYER_WIDGET_H
-
-#include <QMediaPlaylist>
-#include <QMediaPlayer>
-#include <QTimer>
-#include <QWidget>
-#include <QMenu>
-
-
-namespace Ui{
- class PPlayerWidget;
-};
-
-class PPlayerWidget : public QWidget{
- Q_OBJECT
-public:
- PPlayerWidget(QWidget *parent = 0);
- ~PPlayerWidget();
-
-public slots:
- void LoadIcons();
-
-private:
- Ui::PPlayerWidget *ui;
- QMediaPlaylist *PLAYLIST;
- QMediaPlayer *PLAYER;
- QMenu *configMenu, *addMenu;
- bool updatinglists;
-
-private slots:
- void playClicked();
- void pauseClicked();
- void stopClicked();
- void nextClicked();
- void prevClicked();
-
- void AddFilesToPlaylist();
- void AddDirToPlaylist();
- void AddURLToPlaylist();
- void ClearPlaylist();
- void ShufflePlaylist();
- void userlistSelectionChanged(); //front-end combobox was changed by the user
- void playerStateChanged();
- void playlistChanged(); //list of items changed
- void currentSongChanged();
- void updateProgress(qint64 val);
- void updateMaxProgress(qint64 val);
-};
-
-#endif
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/audioplayer/PPlayerWidget.ui b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/audioplayer/PPlayerWidget.ui
deleted file mode 100644
index 2d2450be..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/audioplayer/PPlayerWidget.ui
+++ /dev/null
@@ -1,182 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>PPlayerWidget</class>
- <widget class="QWidget" name="PPlayerWidget">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>346</width>
- <height>90</height>
- </rect>
- </property>
- <property name="windowTitle">
- <string>Form</string>
- </property>
- <property name="styleSheet">
- <string notr="true">QToolButton::menu-indicator{ image: none; }</string>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout">
- <property name="spacing">
- <number>4</number>
- </property>
- <property name="leftMargin">
- <number>0</number>
- </property>
- <property name="topMargin">
- <number>0</number>
- </property>
- <property name="rightMargin">
- <number>0</number>
- </property>
- <property name="bottomMargin">
- <number>0</number>
- </property>
- <item>
- <layout class="QHBoxLayout" name="horizontalLayout_2">
- <item>
- <widget class="QToolButton" name="tool_config">
- <property name="text">
- <string notr="true">Config</string>
- </property>
- <property name="popupMode">
- <enum>QToolButton::InstantPopup</enum>
- </property>
- <property name="autoRaise">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QToolButton" name="tool_add">
- <property name="text">
- <string notr="true">Add</string>
- </property>
- <property name="popupMode">
- <enum>QToolButton::InstantPopup</enum>
- </property>
- <property name="autoRaise">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item>
- <spacer name="horizontalSpacer">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>40</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- <item>
- <widget class="QToolButton" name="tool_prev">
- <property name="text">
- <string notr="true">prev</string>
- </property>
- <property name="autoRaise">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QLabel" name="label_num">
- <property name="text">
- <string notr="true">1/10</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QToolButton" name="tool_next">
- <property name="text">
- <string notr="true">next</string>
- </property>
- <property name="autoRaise">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item>
- <widget class="QComboBox" name="combo_playlist"/>
- </item>
- <item>
- <layout class="QHBoxLayout" name="horizontalLayout">
- <item>
- <widget class="QToolButton" name="tool_play">
- <property name="text">
- <string notr="true">Play</string>
- </property>
- <property name="autoRaise">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QToolButton" name="tool_pause">
- <property name="text">
- <string notr="true">Pause</string>
- </property>
- <property name="autoRaise">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QToolButton" name="tool_stop">
- <property name="text">
- <string notr="true">Stop</string>
- </property>
- <property name="autoRaise">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item>
- <spacer name="horizontalSpacer_2">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>40</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- <item>
- <widget class="QProgressBar" name="progressBar">
- <property name="value">
- <number>24</number>
- </property>
- <property name="textVisible">
- <bool>false</bool>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item>
- <spacer name="verticalSpacer">
- <property name="orientation">
- <enum>Qt::Vertical</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>20</width>
- <height>0</height>
- </size>
- </property>
- </spacer>
- </item>
- </layout>
- </widget>
- <resources/>
- <connections/>
-</ui>
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/battery/LBattery.cpp b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/battery/LBattery.cpp
deleted file mode 100644
index ee379613..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/battery/LBattery.cpp
+++ /dev/null
@@ -1,115 +0,0 @@
-//===========================================
-// Lumina-DE source code
-// Copyright (c) 2014, Susanne Jaeckel, 2015-2016 Ken Moore
-// Available under the 3-clause BSD license
-// See the LICENSE file for full details
-//===========================================
-#include "LBattery.h"
-#include "LSession.h"
-
-LBattery::LBattery(QWidget *parent, QString id, bool horizontal) : LPPlugin(parent, id, horizontal){
- iconOld = -1;
- //Setup the widget
- label = new QLabel(this);
- label->setScaledContents(true);
- //label->setAlignment(Qt::AlignCenter);
- this->layout()->addWidget(label);
- //Setup the timer
- timer = new QTimer();
- timer->setInterval(5000); //update every 5 seconds
- connect(timer,SIGNAL(timeout()), this, SLOT(updateBattery()) );
- timer->start();
- QTimer::singleShot(0,this,SLOT(OrientationChange()) ); //update the sizing/icon
-}
-
-LBattery::~LBattery(){
- timer->stop();
- delete timer;
-}
-
-void LBattery::updateBattery(bool force){
- // Get current state of charge
- //QStringList result = LUtils::getCmdOutput("/usr/sbin/apm", QStringList() << "-al");
- int charge = LOS::batteryCharge(); //result.at(1).toInt();
-//qDebug() << "1: " << result.at(0).toInt() << " 2: " << result.at(1).toInt();
- int icon = -1;
- if (charge > 90) { icon = 4; }
- else if (charge > 70) { icon = 3; }
- else if (charge > 20) { icon = 2; }
- else if (charge > 5) { icon = 1; }
- else if (charge > 0 ) { icon = 0; }
- if(LOS::batteryIsCharging()){ icon = icon+10; }
- //icon = icon + result.at(0).toInt() * 10;
- if (icon != iconOld || force) {
- switch (icon) {
- case 0:
- label->setPixmap( LXDG::findIcon("battery-caution", "").pixmap(label->size()) );
- break;
- case 1:
- label->setPixmap( LXDG::findIcon("battery-040", "").pixmap(label->size()) );
- break;
- case 2:
- label->setPixmap( LXDG::findIcon("battery-060", "").pixmap(label->size()) );
- break;
- case 3:
- label->setPixmap( LXDG::findIcon("battery-080", "").pixmap(label->size()) );
- break;
- case 4:
- label->setPixmap( LXDG::findIcon("battery-100", "").pixmap(label->size()) );
- break;
- case 10:
- label->setPixmap( LXDG::findIcon("battery-charging-caution", "").pixmap(label->size()) );
- break;
- case 11:
- label->setPixmap( LXDG::findIcon("battery-charging-040", "").pixmap(label->size()) );
- break;
- case 12:
- label->setPixmap( LXDG::findIcon("battery-charging-060", "").pixmap(label->size()) );
- break;
- case 13:
- label->setPixmap( LXDG::findIcon("battery-charging-080", "").pixmap(label->size()) );
- break;
- case 14:
- label->setPixmap( LXDG::findIcon("battery-charging", "").pixmap(label->size()) );
- break;
- default:
- label->setPixmap( LXDG::findIcon("battery-missing", "").pixmap(label->size()) );
- break;
- }
- if(icon<iconOld && icon==0){
- //Play some audio warning chime when
- LSession::handle()->playAudioFile(LOS::LuminaShare()+"low-battery.ogg");
- }
- if(icon==0){ label->setStyleSheet("QLabel{ background: red;}"); }
- else if(icon==14 && charge>98){ label->setStyleSheet("QLabel{ background: green;}"); }
- else{ label->setStyleSheet("QLabel{ background: transparent;}"); }
- iconOld = icon;
-
- }
- //Now update the display
- QString tt;
- //Make sure the tooltip can be properly translated as necessary (Ken Moore 5/9/14)
- if(icon > 9 && icon < 15){ tt = QString(tr("%1 % (Charging)")).arg(QString::number(charge)); }
- else{ tt = QString( tr("%1 % (%2 Remaining)") ).arg(QString::number(charge), getRemainingTime() ); }
- label->setToolTip(tt);
-}
-
-QString LBattery::getRemainingTime(){
- int secs = LOS::batterySecondsLeft();
- if(secs < 0){ return "??"; }
- QString rem; //remaining
- if(secs > 3600){
- int hours = secs/3600;
- rem.append( QString::number(hours)+"h ");
- secs = secs - (hours*3600);
- }
- if(secs > 60){
- int min = secs/60;
- rem.append( QString::number(min)+"m ");
- secs = secs - (min*60);
- }
- if(secs > 0){
- rem.append(QString::number(secs)+"s");
- }
- return rem;
-}
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/battery/LBattery.h b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/battery/LBattery.h
deleted file mode 100644
index 29562d5d..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/battery/LBattery.h
+++ /dev/null
@@ -1,53 +0,0 @@
-//===========================================
-// Lumina-DE source code
-// Copyright (c) 2014, Susanne Jaeckel
-// Available under the 3-clause BSD license
-// See the LICENSE file for full details
-//===========================================
-#ifndef _LUMINA_DESKTOP_BATTERY_H
-#define _LUMINA_DESKTOP_BATTERY_H
-
-#include <QTimer>
-#include <QWidget>
-#include <QString>
-#include <QLabel>
-
-#include <LUtils.h>
-#include <LuminaXDG.h>
-#include <LuminaOS.h>
-
-#include "../../Globals.h"
-//#include "../LTBWidget.h"
-#include "../LPPlugin.h"
-
-class LBattery : public LPPlugin{
- Q_OBJECT
-public:
- LBattery(QWidget *parent = 0, QString id = "battery", bool horizontal=true);
- ~LBattery();
-
-private:
- QTimer *timer;
- QLabel *label;
- int iconOld;
-
-private slots:
- void updateBattery(bool force = false);
- QString getRemainingTime();
-
-public slots:
- void LocaleChange(){
- updateBattery(true);
- }
-
- void OrientationChange(){
- if(this->layout()->direction()==QBoxLayout::LeftToRight){
- label->setFixedSize( QSize(this->height(), this->height()) );
- }else{
- label->setFixedSize( QSize(this->width(), this->width()) );
- }
- updateBattery(true); //force icon refresh
- }
-};
-
-#endif
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/battery/NOTES b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/battery/NOTES
deleted file mode 100644
index 3d93267e..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/battery/NOTES
+++ /dev/null
@@ -1,49 +0,0 @@
-Eventuell mit einem Menü implementieren, mit Einträgen für:
-Anzeige des kompletten Status und Infos
-Herunterfahren des Systems etc.
-
-apm -a
- Zeigt den AC line status an
- 0 = off-line
- 1 = on-line
- 2 = backup-power
-
-apm -b
- Zeigt
- 0 = high
- 1 = low
- 2 = critical
- 3 = charging
-
-apm -l
- Zeit die prozentuale Kapazitaet
- 255 = nicht unterstuetzt
-
-apm -t
- Zeigt die verbleibende Zeit in Sekunden
-
-Aufruf Systemfunktionen: LUtils.h
-
-mit der Methode:
-QStringList LUtils::getCmdOutput(QString cmd, QStringList args)
-
-Icons:
-/usr/local/share/icons/oxygen/22x22/status
-oder unter:
-/usr/local/share/icons/oxygen/16x16/status
-
-battery-040.png // 40 %
-battery-060.png
-battery-080.png
-battery-100.png
-
-battery-caution.png
-battery-charging.png
-battery-charging-040.png
-battery-charging-060.png
-battery-charging-080.png
-battery-charging-caution.png
-
-battery-charging-log.png
-battery-log.png
-battery-missing.png
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/clock/LClock.cpp b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/clock/LClock.cpp
deleted file mode 100644
index b370c536..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/clock/LClock.cpp
+++ /dev/null
@@ -1,230 +0,0 @@
-//===========================================
-// Lumina-DE source code
-// Copyright (c) 2012-2015, Ken Moore
-// Available under the 3-clause BSD license
-// See the LICENSE file for full details
-//===========================================
-#include "LClock.h"
-#include "LSession.h"
-#include <LuminaThemes.h>
-#include <LuminaXDG.h>
-
-LClock::LClock(QWidget *parent, QString id, bool horizontal) : LPPlugin(parent, id, horizontal){
- button = new QToolButton(this); //RotateToolButton(this);
- button->setAutoRaise(true);
- button->setToolButtonStyle(Qt::ToolButtonTextOnly);
- button->setStyleSheet("font-weight: bold;");
- button->setPopupMode(QToolButton::DelayedPopup); //make sure it runs the update routine first
- button->setMenu(new QMenu());
- //button->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred);
- //this->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Preferred);
- connect(button, SIGNAL(clicked()), this, SLOT(openMenu()));
- connect(button->menu(), SIGNAL(aboutToHide()), this, SIGNAL(MenuClosed()));
- calendar = new QCalendarWidget(this);
- calAct = new QWidgetAction(this);
- calAct->setDefaultWidget(calendar);
- TZMenu = new QMenu(this);
- connect(TZMenu, SIGNAL(triggered(QAction*)), this, SLOT(ChangeTZ(QAction*)) );
-
- //Now assemble the menu
- button->menu()->addAction(calAct);
- button->menu()->addMenu(TZMenu);
-
- this->layout()->setContentsMargins(0,0,0,0); //reserve some space on left/right
- this->layout()->addWidget(button);
-
- //Setup the timer
- timer = new QTimer();
- //Load all the initial settings
- updateFormats();
- LocaleChange();
- ThemeChange();
- OrientationChange();
- //Now connect/start the timer
- connect(timer,SIGNAL(timeout()), this, SLOT(updateTime()) );
- connect(QApplication::instance(), SIGNAL(SessionConfigChanged()), this, SLOT(updateFormats()) );
- timer->start();
-}
-
-LClock::~LClock(){
- timer->stop();
- delete timer;
-}
-
-
-void LClock::updateTime(bool adjustformat){
- QDateTime CT = QDateTime::currentDateTime();
- //Now update the display
- QString label;
- QString timelabel;
- QString datelabel;
- if(deftime){ timelabel = CT.time().toString(Qt::DefaultLocaleShortDate) ; }
- else{ timelabel=CT.toString(timefmt); }
- if(defdate){ datelabel = CT.date().toString(Qt::DefaultLocaleShortDate); }
- else{ datelabel = CT.toString(datefmt); }
- if(datetimeorder == "dateonly"){
- label = datelabel;
- button->setToolTip(timelabel);
- }else if(datetimeorder == "timedate"){
- label = timelabel + "\n" + datelabel;
- button->setToolTip("");
- }else if(datetimeorder == "datetime"){
- label = datelabel + "\n" + timelabel;
- button->setToolTip("");
- }else{
- label = timelabel;
- button->setToolTip(datelabel);
- }
- if( this->layout()->direction() == QBoxLayout::TopToBottom ){
- //different routine for vertical text (need newlines instead of spaces)
- for(int i=0; i<label.count("\n")+1; i++){
- if(this->size().width() < (this->fontMetrics().width(label.section("\n",i,i))+10 )&& label.section("\n",i,i).contains(" ")){
- label.replace(label.section("\n",i,i), label.section("\n",i,i).replace(" ", "\n"));
- i--;
- }
- }
- //label.replace(" ","\n");
- }else if( this->size().height() < 2*this->fontMetrics().height() ){
- label.replace("\n",", ");
- }
- if(adjustformat){
- //Check the font/spacing for the display and adjust as necessary
- /*double efflines = label.count("\n")+1; //effective lines (with wordwrap)
- if( (button->fontMetrics().height()*efflines) > button->height() ){
- //Force a pixel metric font size to fit everything
- int szH = qRound( (button->height() - button->fontMetrics().lineSpacing() )/efflines );
- //Need to supply a *width* pixel, not a height metric
- int szW = qRound( (szH*button->fontMetrics().maxWidth())/( (double) button->fontMetrics().height()) );
- qDebug() << "Change Clock font:" << button->height() << szH << szW << efflines << button->fontMetrics().height() << button->fontMetrics().lineSpacing();
- button->setStyleSheet("font-weight: bold; font-size: "+QString::number(szW)+"px;");
- }else{
- button->setStyleSheet("font-weight: bold;");
- }*/
- if(this->layout()->direction()==QBoxLayout::LeftToRight){
- //horizontal layout
- this->setFixedWidth( this->sizeHint().width() +6);
- }else{
- //vertical layout
- this->setMaximumWidth(100000);
- }
- }
- button->setText(label);
-}
-
-void LClock::updateFormats(){
- qDebug() << "Updating clock format";
- timefmt = LSession::handle()->sessionSettings()->value("TimeFormat","").toString();
- datefmt = LSession::handle()->sessionSettings()->value("DateFormat","").toString();
- deftime = timefmt.simplified().isEmpty();
- defdate = datefmt.simplified().isEmpty();
- //Adjust the timer interval based on the smallest unit displayed
- if(deftime){ timer->setInterval(500); } //1/2 second
- else if(timefmt.contains("z")){ timer->setInterval(1); } //every millisecond (smallest unit)
- else if(timefmt.contains("s")){ timer->setInterval(500); } //1/2 second
- else if(timefmt.contains("m")){ timer->setInterval(2000); } //2 seconds
- else{ timer->setInterval(1000); } //unknown format - use 1 second interval
- datetimeorder = LSession::handle()->sessionSettings()->value("DateTimeOrder", "timeonly").toString().toLower();
- //this->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
- updateTime(true);
- //Now fix the size of the widget with the new size hint
- //this->setFixedWidth( this->sizeHint().width() +6);
-}
-
-void LClock::updateMenu(){
- QDateTime cdt = QDateTime::currentDateTime();
- TZMenu->setTitle(QString(tr("Time Zone (%1)")).arg(cdt.timeZoneAbbreviation()) );
- calendar->showToday(); //make sure the current month is visible
- calendar->setSelectedDate(QDate::currentDate()); //select the actual date for today
-}
-
-void LClock::openMenu(){
- updateMenu();
- button->showMenu();
-}
-
-void LClock::closeMenu(){
- button->menu()->hide();
-}
-
-void LClock::ChangeTZ(QAction *act){
- LTHEME::setCustomEnvSetting("TZ",act->whatsThis());
- QTimer::singleShot(500, this, SLOT(updateTime()) );
-}
-
-void LClock::LocaleChange(){
- //Refresh all the time zone information
- TZMenu->clear();
- TZMenu->addAction(tr("Use System Time"));
- TZMenu->addSeparator();
- QList<QByteArray> TZList = QTimeZone::availableTimeZoneIds();
- //Orgnize time zones for smaller menus (Continent/Country/City)
- // Note: id = Continent/City
- QStringList info;
- for(int i=0; i<TZList.length(); i++){
- QTimeZone tz(TZList[i]);
- if(!QString(tz.id()).contains("/")){ continue; }
- info << "::::"+QString(tz.id()).section("/",0,0)+"::::"+QLocale::countryToString(tz.country())+"::::"+QString(tz.id()).section("/",1,100).replace("_"," ")+"::::"+QString(tz.id());
- }
- //Now sort alphabetically
- info.sort();
- //Now create the menu tree
- QString continent, country; //current continent/country
- QMenu *tmpC=0; //continent menu
- QMenu *tmpCM=0; //country menu
- for(int i=0; i<info.length(); i++){
- //Check if different continent
- if(info[i].section("::::",1,1)!=continent){
- if(tmpC!=0){
- if(tmpCM!=0 && !tmpCM->isEmpty()){
- tmpC->addMenu(tmpCM);
- }
- if(!tmpC->isEmpty()){ TZMenu->addMenu(tmpC); }
- }
- tmpC = new QMenu(this);
- tmpC->setTitle(info[i].section("::::",1,1));
- tmpCM = new QMenu(this);
- tmpCM->setTitle(info[i].section("::::",2,2));
- //Check if different country
- }else if(info[i].section("::::",2,2)!=country){
- if(tmpC!=0 && tmpCM!=0 && !tmpCM->isEmpty()){
- tmpC->addMenu(tmpCM);
- }
- tmpCM = new QMenu(this);
- tmpCM->setTitle(info[i].section("::::",2,2));
- }
- //Now create the entry within the country menu
- if(tmpCM!=0){
- QAction *act = new QAction(info[i].section("::::",3,3), this);
- act->setWhatsThis(info[i].section("::::",4,4) );
- tmpCM->addAction(act);
- }
- //Save the values for the next run
- continent = info[i].section("::::",1,1);
- country = info[i].section("::::",2,2);
-
- if(i== info.length()-1){
- //last go through - save all menus
- if(tmpCM!=0 && tmpC!=0 && !tmpCM->isEmpty()){ tmpC->addMenu(tmpCM); }
- if(tmpC!=0 && !tmpC->isEmpty()){ TZMenu->addMenu(tmpC); }
- }
- }
-
-}
-
-void LClock::ThemeChange(){
- TZMenu->setIcon(LXDG::findIcon("clock",""));
-}
-
-void LClock::OrientationChange(){
- if(this->layout()->direction()==QBoxLayout::LeftToRight){ //horizontal panel
- //button->setRotation(0); //no rotation of text
- this->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding);
- button->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding);
- }else{ //vertical panel
- //button->setRotation(90); //90 degree rotation
- this->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
- button->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
- }
- updateTime(true); //re-adjust the font/spacings
- this->layout()->update();
-}
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/clock/LClock.h b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/clock/LClock.h
deleted file mode 100644
index eddf782c..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/clock/LClock.h
+++ /dev/null
@@ -1,58 +0,0 @@
-//===========================================
-// Lumina-DE source code
-// Copyright (c) 2012-2015, Ken Moore
-// Available under the 3-clause BSD license
-// See the LICENSE file for full details
-//===========================================
-#ifndef _LUMINA_DESKTOP_CLOCK_H
-#define _LUMINA_DESKTOP_CLOCK_H
-
-#include <QTimer>
-#include <QDateTime>
-#include <QLabel>
-#include <QWidget>
-#include <QString>
-#include <QLocale>
-#include <QTimeZone>
-#include <QCalendarWidget>
-#include <QWidgetAction>
-#include <QAction>
-#include <QToolButton>
-#include <QMenu>
-
-#include "../LPPlugin.h"
-
-//#include "../RotateToolButton.h"
-
-class LClock : public LPPlugin{
- Q_OBJECT
-public:
- LClock(QWidget *parent = 0, QString id = "clock", bool horizontal=true);
- ~LClock();
-
-private:
- QTimer *timer;
- QToolButton *button; //RotateToolButton
- QString timefmt, datefmt, datetimeorder;
- bool deftime, defdate;
- QMenu *TZMenu;
- QCalendarWidget *calendar;
- QWidgetAction *calAct;
-
-private slots:
- void updateTime(bool adjustformat = false);
- void updateFormats();
-
- void updateMenu();
- void openMenu();
- void closeMenu();
-
- void ChangeTZ(QAction*);
-
-public slots:
- void LocaleChange();
- void ThemeChange();
- void OrientationChange();
-};
-
-#endif
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/desktopbar/LDeskBar.cpp b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/desktopbar/LDeskBar.cpp
deleted file mode 100644
index 90d942de..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/desktopbar/LDeskBar.cpp
+++ /dev/null
@@ -1,207 +0,0 @@
-//===========================================
-// Lumina-DE source code
-// Copyright (c) 2012-2015, Ken Moore
-// Available under the 3-clause BSD license
-// See the LICENSE file for full details
-//===========================================
-#include "LDeskBar.h"
-#include "../../LSession.h"
-
-LDeskBarPlugin::LDeskBarPlugin(QWidget *parent, QString id, bool horizontal) : LPPlugin(parent, id, horizontal){
- this->layout()->setContentsMargins(0,0,0,0);
- this->setStyleSheet( "QToolButton::menu-indicator{ image: none; } QToolButton{ padding: 0px; }");
-
- //initialize the desktop bar items
- initializeDesktop();
- //setup the directory watcher
- QString fav = QString(getenv("XDG_CONFIG_HOME"))+"/lumina-desktop/favorites.list";
- if(!QFile::exists(fav)){ QProcess::execute("touch \""+fav+"\""); }
- watcher = new QFileSystemWatcher(this);
- watcher->addPath( fav );
- connect(watcher, SIGNAL(fileChanged(QString)), this, SLOT(filechanged(QString)) );
- QTimer::singleShot(1,this, SLOT(updateFiles()) ); //make sure to load it the first time
- QTimer::singleShot(0,this, SLOT(OrientationChange()) ); //adjust sizes/layout
- connect(QApplication::instance(), SIGNAL(DesktopFilesChanged()), this, SLOT(updateFiles()) );
-}
-
-LDeskBarPlugin::~LDeskBarPlugin(){
-}
-
-// =======================
-// PRIVATE FUNCTIONS
-// =======================
-void LDeskBarPlugin::initializeDesktop(){
- //Applications on the desktop
- appB = new QToolButton(this);
- appB->setToolButtonStyle(Qt::ToolButtonIconOnly);
- appB->setAutoRaise(true);
- appB->setPopupMode(QToolButton::InstantPopup);
- appM = new QMenu(this);
- appB->setMenu(appM);
- this->layout()->addWidget(appB);
- connect(appM,SIGNAL(triggered(QAction*)),this,SLOT(ActionTriggered(QAction*)) );
- connect(appM, SIGNAL(aboutToHide()), this, SIGNAL(MenuClosed()));
- //Directories on the desktop
- dirB = new QToolButton(this);
- dirB->setToolButtonStyle(Qt::ToolButtonIconOnly);
- dirB->setAutoRaise(true);
- dirB->setPopupMode(QToolButton::InstantPopup);
- dirM = new QMenu(this);
- dirB->setMenu(dirM);
- this->layout()->addWidget(dirB);
- connect(dirM,SIGNAL(triggered(QAction*)),this,SLOT(ActionTriggered(QAction*)) );
- connect(dirM, SIGNAL(aboutToHide()), this, SIGNAL(MenuClosed()));
- //Audio Files on the desktop
- audioM = new QMenu(this);
- connect(audioM,SIGNAL(triggered(QAction*)),this,SLOT(ActionTriggered(QAction*)) );
- //Video Files on the desktop
- videoM = new QMenu(this);
- connect(videoM,SIGNAL(triggered(QAction*)),this,SLOT(ActionTriggered(QAction*)) );
- //Picture Files on the desktop
- pictureM = new QMenu(this);
- connect(pictureM,SIGNAL(triggered(QAction*)),this,SLOT(ActionTriggered(QAction*)) );
- //Other Files on the desktop
- otherM = new QMenu(this);
- connect(otherM,SIGNAL(triggered(QAction*)),this,SLOT(ActionTriggered(QAction*)) );
- docM = new QMenu(this);
- connect(docM,SIGNAL(triggered(QAction*)), this,SLOT(ActionTriggered(QAction*)) );
- //All Files Button
- fileB = new QToolButton(this);
- fileB->setToolButtonStyle(Qt::ToolButtonIconOnly);
- fileB->setAutoRaise(true);
- fileB->setPopupMode(QToolButton::InstantPopup);
- fileM = new QMenu(this);
- fileB->setMenu(fileM);
- this->layout()->addWidget(fileB);
-
- updateIcons(); //set all the text/icons
-}
-
-QAction* LDeskBarPlugin::newAction(QString filepath, QString name, QString iconpath){
- return newAction(filepath, name, QIcon(iconpath));
-}
-
-QAction* LDeskBarPlugin::newAction(QString filepath, QString name, QIcon icon){
- QAction *act = new QAction(icon, name, this);
- act->setWhatsThis(filepath);
- return act;
-}
-
-// =======================
-// PRIVATE SLOTS
-// =======================
-void LDeskBarPlugin::ActionTriggered(QAction* act){
- //Open up the file with the appropriate application
- QString cmd = "lumina-open \""+act->whatsThis()+"\"";
- qDebug() << "Open File:" << cmd;
- LSession::LaunchApplication(cmd);
-}
-void LDeskBarPlugin::filechanged(QString file){
- updateFiles();
- if(!watcher->files().contains(file)){ watcher->addPath(file); } //make sure the file does not get removed from the watcher
-}
-void LDeskBarPlugin::updateFiles(){
- QFileInfoList homefiles = LSession::handle()->DesktopFiles();
- QStringList favitems = LDesktopUtils::listFavorites();
- //Remember for format for favorites: <name>::::[app/dir/<mimetype>]::::<full path>
- for(int i=0; i<homefiles.length(); i++){
- if( !favitems.filter(homefiles[i].canonicalFilePath()).isEmpty() ){ continue; } //duplicate entry
- QString type;
- if(homefiles[i].isDir()){ type="dir"; }
- else if(homefiles[i].fileName().endsWith(".desktop")){ type="app"; }
- else{ type=LXDG::findAppMimeForFile(homefiles[i].fileName()); }
- favitems << homefiles[i].fileName()+"::::"+type+"::::"+homefiles[i].absoluteFilePath();
- //qDebug() << "Desktop Item:" << favitems.last();
- }
-
- favitems.sort(); //sort them alphabetically
- //Now add the items to the lists
- appM->clear();
- dirM->clear();
- audioM->clear();
- videoM->clear();
- pictureM->clear();
- docM->clear();
- otherM->clear();
- for(int i=0; i<favitems.length(); i++){
- QString type = favitems[i].section("::::",1,1);
- QString name = favitems[i].section("::::",0,0);
- QString path = favitems[i].section("::::",2,50);
- if(type=="app"){
- //Add it to appM
- bool ok = false;
- XDGDesktop df(path);
- if(df.isValid() && !df.isHidden){
- appM->addAction( newAction(df.filePath, df.name, LXDG::findIcon(df.icon, ":/images/default-application.png")) );
- }
- }else if(type=="dir"){
- //Add it to dirM
- dirM->addAction( newAction(path, name, LXDG::findIcon("folder","")) );
- }else if(type.startsWith("audio/")){
- //Add it to audioM
- audioM->addAction( newAction(path, name, LXDG::findMimeIcon(type)) );
- }else if(type.startsWith("video/")){
- //Add it to videoM
- videoM->addAction( newAction(path, name, LXDG::findMimeIcon(type)) );
- }else if(type.startsWith("image/")){
- //Add it to pictureM
- if(LUtils::imageExtensions().contains(path.section("/",-1).section(".",-1).toLower()) ){
- pictureM->addAction( newAction(path, name, QIcon(path)) );
- }else{
- pictureM->addAction( newAction(path, name, LXDG::findMimeIcon(type)) );
- }
- }else if(type.startsWith("text/")){
- //Add it to docM
- docM->addAction( newAction(path, name, LXDG::findMimeIcon(type)) );
- }else{
- //Add it to otherM
- otherM->addAction( newAction(path, name, LXDG::findMimeIcon(type)) );
- }
-
- }
-
- //Now update the file menu as appropriate
- fileM->clear();
- if(!audioM->isEmpty()){ fileM->addMenu(audioM); }
- if(!docM->isEmpty()){ fileM->addMenu(docM); }
- if(!pictureM->isEmpty()){ fileM->addMenu(pictureM); }
- if(!videoM->isEmpty()){ fileM->addMenu(videoM); }
- if(!otherM->isEmpty()){ fileM->addMenu(otherM); }
- //Check for a single submenu, and skip the main if need be
- disconnect(fileB->menu(), SIGNAL(aboutToHide()), this, SIGNAL(MenuClosed()) );
- if(fileM->actions().length()==1){
- if(!audioM->isEmpty()){ fileB->setMenu(audioM); }
- else if(!pictureM->isEmpty()){ fileB->setMenu(pictureM); }
- else if(!videoM->isEmpty()){ fileB->setMenu(videoM); }
- else if(!docM->isEmpty()){ fileB->setMenu(docM); }
- else if(!otherM->isEmpty()){ fileB->setMenu(otherM); }
- }else{
- fileB->setMenu(fileM);
- }
- connect(fileB->menu(), SIGNAL(aboutToHide()), this, SIGNAL(MenuClosed()));
-
- //Setup the visibility of the buttons
- appB->setVisible( !appM->isEmpty() );
- dirB->setVisible( !dirM->isEmpty() );
- fileB->setVisible( !fileM->isEmpty() );
-}
-
-void LDeskBarPlugin::updateIcons(){
- //Set all the text/icons
- appB->setIcon( LXDG::findIcon("favorites", "") );
- appB->setToolTip(tr("Favorite Applications"));
- dirB->setIcon( LXDG::findIcon("folder", "") );
- dirB->setToolTip(tr("Favorite Folders"));
- audioM->setTitle( tr("Audio") );
- audioM->setIcon( LXDG::findIcon("audio-x-generic","") );
- videoM->setTitle( tr("Video") );
- videoM->setIcon( LXDG::findIcon("video-x-generic","") );
- pictureM->setTitle( tr("Pictures") );
- pictureM->setIcon( LXDG::findIcon("image-x-generic","") );
- otherM->setTitle( tr("Other Files") );
- otherM->setIcon( LXDG::findIcon("unknown","") );
- docM->setTitle( tr("Documents") );
- docM->setIcon( LXDG::findIcon("x-office-document","") );
- fileB->setIcon( LXDG::findIcon("document-multiple", "") );
- fileB->setToolTip(tr("Favorite Files") );
-}
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/desktopbar/LDeskBar.h b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/desktopbar/LDeskBar.h
deleted file mode 100644
index 74f41230..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/desktopbar/LDeskBar.h
+++ /dev/null
@@ -1,88 +0,0 @@
-//===========================================
-// Lumina-DE source code
-// Copyright (c) 2012, Ken Moore
-// Available under the 3-clause BSD license
-// See the LICENSE file for full details
-//===========================================
-// This plugin displays the contents of the user's home directory
-// as organized within a couple buttons on the panel (apps, dirs, files)
-//===========================================
-#ifndef _LUMINA_DESKTOP_DESKBAR_H
-#define _LUMINA_DESKTOP_DESKBAR_H
-
-// Qt includes
-#include <QWidget>
-#include <QString>
-#include <QAction>
-#include <QMenu>
-#include <QProcess>
-#include <QTimer>
-#include <QFileSystemWatcher>
-#include <QHBoxLayout>
-#include <QIcon>
-#include <QToolButton>
-#include <QDebug>
-
-// libLumina includes
-#include <LuminaXDG.h>
-
-// local includes
-//#include "../LTBWidget.h"
-#include "../LPPlugin.h"
-
-class LDeskBarPlugin : public LPPlugin{
- Q_OBJECT
-public:
- LDeskBarPlugin(QWidget* parent=0, QString id = "desktopbar", bool horizontal=true);
- ~LDeskBarPlugin();
-
-private:
- QFileSystemWatcher *watcher;
- //Special toolbuttons and menus
- QToolButton *appB, *fileB, *dirB;
- QMenu *appM, *dirM, *audioM, *videoM, *pictureM, *fileM, *otherM, *docM;
- QList<QToolButton*> APPLIST;
- QDateTime lastHomeUpdate;
-
- void initializeDesktop();
- //bool readDesktopFile(QString path, QString &name, QString &iconpath);
-
- QAction* newAction(QString filepath, QString name, QString iconpath);
- QAction* newAction(QString filepath, QString name, QIcon icon);
-
- //void updateMenu(QMenu* menu, QFileInfoList files, bool trim = true);
-
-
-private slots:
- void ActionTriggered(QAction* act);
- void filechanged(QString);
- void updateFiles();
- void updateIcons();
-
-public slots:
- void LocaleChange(){
- updateIcons();
- updateFiles();
- }
-
- void OrientationChange(){
- QSize sz;
- if(this->layout()->direction()==QBoxLayout::LeftToRight){
- this->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::MinimumExpanding);
- sz = QSize(this->height(), this->height());
- }else{
- this->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred);
- sz = QSize(this->width(), this->width());
- }
- appB->setIconSize(sz);
- fileB->setIconSize(sz);
- dirB->setIconSize(sz);
- for(int i=0; i<APPLIST.length(); i++){
- APPLIST[i]->setIconSize(sz);
- }
- this->layout()->update();
- }
-};
-
-
-#endif
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/desktopswitcher/LDesktopSwitcher.cpp b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/desktopswitcher/LDesktopSwitcher.cpp
deleted file mode 100644
index 8e0a9d28..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/desktopswitcher/LDesktopSwitcher.cpp
+++ /dev/null
@@ -1,148 +0,0 @@
-//===========================================
-// Lumina-DE source code
-// Copyright (c) 2014, Susanne Jaeckel
-// Available under the 3-clause BSD license
-// See the LICENSE file for full details
-//===========================================
-#include "LDesktopSwitcher.h"
-#include <LSession.h>
-
-LDesktopSwitcher::LDesktopSwitcher(QWidget *parent, QString id, bool horizontal) : LPPlugin(parent, id, horizontal) {
- iconOld = -1;
- this->setStyleSheet( "QToolButton::menu-indicator{ image: none; } QToolButton{padding: 0px;}");
- //Setup the widget
- label = new QToolButton(this);
- label->setPopupMode(QToolButton::DelayedPopup);
- label->setAutoRaise(true);
- label->setToolButtonStyle(Qt::ToolButtonIconOnly);
- label->setIcon( LXDG::findIcon("format-view-carousel", "preferences-desktop-display") );
- label->setToolTip(QString("Workspace 1"));
- connect(label, SIGNAL(clicked()), this, SLOT(openMenu()));
- menu = new QMenu(this);
- connect(menu, SIGNAL(triggered(QAction*)), this, SLOT(menuActionTriggered(QAction*)));
- connect(menu, SIGNAL(aboutToHide()), this, SIGNAL(MenuClosed()));
- label->setMenu(menu);
- this->layout()->addWidget(label);
-
- // Maybe a timer should be set to set the toolTip of the button,
- // becasue the workspace could be switched via Keyboard-shortcuts ...
-
- QTimer::singleShot(500, this, SLOT(createMenu()) ); //needs a delay to make sure it works right the first time
- QTimer::singleShot(0,this, SLOT(OrientationChange()) ); //adjust icon size
-
- //Process the signal which is sent when the workspace is changed via keyboard-shortcuts
- connect(QApplication::instance(), SIGNAL(WorkspaceChanged()), this, SLOT(updateWorkspaceMenu()));
-}
-
-LDesktopSwitcher::~LDesktopSwitcher(){
-}
-/* MOVED THESE FUNCTIONS TO LIBLUMINA (LuminaX11.h) -- Ken Moore 5/9/14
-void LDesktopSwitcher::setNumberOfDesktops(int number) {
- Display *display = QX11Info::display();
- Window rootWindow = QX11Info::appRootWindow();
-
- Atom atom = XInternAtom(display, "_NET_NUMBER_OF_DESKTOPS", False);
- XEvent xevent;
- xevent.type = ClientMessage;
- xevent.xclient.type = ClientMessage;
- xevent.xclient.display = display;
- xevent.xclient.window = rootWindow;
- xevent.xclient.message_type = atom;
- xevent.xclient.format = 32;
- xevent.xclient.data.l[0] = number;
- xevent.xclient.data.l[1] = CurrentTime;
- xevent.xclient.data.l[2] = 0;
- xevent.xclient.data.l[3] = 0;
- xevent.xclient.data.l[4] = 0;
- XSendEvent(display, rootWindow, False, SubstructureNotifyMask | SubstructureRedirectMask, &xevent);
-
- XFlush(display);
-}
-
-void LDesktopSwitcher::setCurrentDesktop(int number) {
- Display *display = QX11Info::display();
- Window rootWindow = QX11Info::appRootWindow();
-
- Atom atom = XInternAtom(display, "_NET_CURRENT_DESKTOP", False);
- XEvent xevent;
- xevent.type = ClientMessage;
- xevent.xclient.type = ClientMessage;
- xevent.xclient.display = display;
- xevent.xclient.window = rootWindow;
- xevent.xclient.message_type = atom;
- xevent.xclient.format = 32;
- xevent.xclient.data.l[0] = number;
- xevent.xclient.data.l[1] = CurrentTime;
- xevent.xclient.data.l[2] = 0;
- xevent.xclient.data.l[3] = 0;
- xevent.xclient.data.l[4] = 0;
- XSendEvent(display, rootWindow, False, SubstructureNotifyMask | SubstructureRedirectMask, &xevent);
-
- XFlush(display);
-}
-
-int LDesktopSwitcher::getNumberOfDesktops() {
- int number = -1;
- Atom a = XInternAtom(QX11Info::display(), "_NET_NUMBER_OF_DESKTOPS", true);
- Atom realType;
- int format;
- unsigned long num, bytes;
- unsigned char *data = 0;
- int status = XGetWindowProperty(QX11Info::display(), QX11Info::appRootWindow(), a, 0L, (~0L),
- false, AnyPropertyType, &realType, &format, &num, &bytes, &data);
- if( (status >= Success) && (num > 0) ){
- number = *data;
- XFree(data);
- }
- return number;
-}
-
-int LDesktopSwitcher::getCurrentDesktop() {
- int number = -1;
- Atom a = XInternAtom(QX11Info::display(), "_NET_CURRENT_DESKTOP", true);
- Atom realType;
- int format;
- unsigned long num, bytes;
- unsigned char *data = 0;
- int status = XGetWindowProperty(QX11Info::display(), QX11Info::appRootWindow(), a, 0L, (~0L),
- false, AnyPropertyType, &realType, &format, &num, &bytes, &data);
- if( (status >= Success) && (num > 0) ){
- number = *data;
- XFree(data);
- }
- return number;
-} */
-
-void LDesktopSwitcher::openMenu(){
- //Make sure the menu is refreshed right before it opens
- createMenu();
- label->showMenu();
-}
-
-QAction* LDesktopSwitcher::newAction(int what, QString name) {
- QAction *act = new QAction(LXDG::findIcon("preferences-desktop-display", ""), name, this);
- act->setWhatsThis(QString::number(what));
- return act;
-}
-
-void LDesktopSwitcher::createMenu() {
- int cur = LSession::handle()->XCB->CurrentWorkspace(); //current desktop number
- int tot = LSession::handle()->XCB->NumberOfWorkspaces(); //total number of desktops
- //qDebug() << "-- vor getCurrentDesktop SWITCH";
- qDebug() << "Virtual Desktops:" << tot << cur;
- menu->clear();
- for (int i = 0; i < tot; i++) {
- QString name = QString(tr("Workspace %1")).arg( QString::number(i+1) );
- if(i == cur){ name.prepend("*"); name.append("*");} //identify which desktop this is currently
- menu->addAction(newAction(i, name));
- }
- label->setToolTip(QString(tr("Workspace %1")).arg(QString::number(cur + 1)));
-}
-
-void LDesktopSwitcher::menuActionTriggered(QAction* act) {
- LSession::handle()->XCB->SetCurrentWorkspace(act->whatsThis().toInt());
-}
-
-void LDesktopSwitcher::updateWorkspaceMenu() {
- createMenu();
-}
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/desktopswitcher/LDesktopSwitcher.h b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/desktopswitcher/LDesktopSwitcher.h
deleted file mode 100644
index 69fe46da..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/desktopswitcher/LDesktopSwitcher.h
+++ /dev/null
@@ -1,73 +0,0 @@
-//===========================================
-// Lumina-DE source code
-// Copyright (c) 2014, Susanne Jaeckel
-// Available under the 3-clause BSD license
-// See the LICENSE file for full details
-//===========================================
-#ifndef _LUMINA_DESKTOP_SWITCHER_H
-#define _LUMINA_DESKTOP_SWITCHER_H
-
-#include <QTimer>
-#include <QWidget>
-#include <QString>
-//#include <QX11Info>
-#include <QMenu>
-#include <QToolButton>
-
-#include <LUtils.h>
-#include <LuminaXDG.h>
-#include <LuminaX11.h>
-
-//#include "../LTBWidget.h"
-#include "../LPPlugin.h"
-
-//#include <X11/Xlib.h>
-//#include <X11/Xutil.h>
-//#include <X11/Xatom.h>
-
-class LDesktopSwitcher : public LPPlugin{
- Q_OBJECT
-public:
- LDesktopSwitcher(QWidget *parent = 0, QString id = "desktopswitcher", bool horizontal=true);
- ~LDesktopSwitcher();
-
-private:
- QTimer *timer;
- QToolButton *label;
- QMenu *menu;
- int iconOld;
-
- //void setNumberOfDesktops(int);
- //void setCurrentDesktop(int);
- //int getNumberOfDesktops();
- //int getCurrentDesktop();
-
-
- QAction* newAction(int, QString);
-
-private slots:
- void openMenu();
- void createMenu();
- void menuActionTriggered(QAction*);
- void updateWorkspaceMenu();
-
-public slots:
- void LocaleChange(){
- createMenu();
- }
-
- void OrientationChange(){
- QSize sz;
- if(this->layout()->direction()==QBoxLayout::LeftToRight){
- this->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::MinimumExpanding);
- sz = QSize(this->height(), this->height());
- }else{
- this->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred);
- sz = QSize(this->width(), this->width());
- }
- label->setIconSize(sz);
- this->layout()->update();
- }
-};
-
-#endif
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/jsonmenu/PPJsonMenu.cpp b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/jsonmenu/PPJsonMenu.cpp
deleted file mode 100644
index 14880f9b..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/jsonmenu/PPJsonMenu.cpp
+++ /dev/null
@@ -1,35 +0,0 @@
-//===========================================
-// Lumina Desktop source code
-// Copyright (c) 2016, Ken Moore
-// Available under the 3-clause BSD license
-// See the LICENSE file for full details
-//===========================================
-#include "PPJsonMenu.h"
-#include "../../JsonMenu.h"
-
-LPJsonMenu::LPJsonMenu(QWidget *parent, QString id, bool horizontal) : LPPlugin(parent, id, horizontal){
- //Setup the button
- button = new QToolButton(this);
- button->setAutoRaise(true);
- button->setToolButtonStyle(Qt::ToolButtonIconOnly);
- button->setPopupMode(QToolButton::InstantPopup); //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);
- //Parse the id and get the extra information needed for the plugin
- QStringList info = id.section("---",0,0).split("::::"); //FORMAT:[ "jsonmenu---<number>",exec,name, icon(optional)]
- if(info.length()>=3){
- qDebug() << "Custom JSON Menu Loaded:" << info;
- JsonMenu *menu = new JsonMenu(info[1], button);
- button->setText(info[2]);
- //connect(menu, SIGNAL(triggered(QAction*)), this, SLOT(SystemApplication(QAction*)) );
- if(info.length()>=4){ button->setIcon( LXDG::findIcon(info[3],"run-build") ); }
- else{ button->setIcon( LXDG::findIcon("run-build","") ); }
- button->setMenu(menu);
- }
- //Now start up the widgets
- QTimer::singleShot(0,this,SLOT(OrientationChange()) ); //update the sizing/icon
-}
-
-LPJsonMenu::~LPJsonMenu(){
-}
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/jsonmenu/PPJsonMenu.h b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/jsonmenu/PPJsonMenu.h
deleted file mode 100644
index d0827fd2..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/jsonmenu/PPJsonMenu.h
+++ /dev/null
@@ -1,42 +0,0 @@
-//===========================================
-// Lumina-DE source code
-// Copyright (c) 2016, Ken Moore
-// Available under the 3-clause BSD license
-// See the LICENSE file for full details
-//===========================================
-#ifndef _LUMINA_PANEL_JSON_PLUGIN_H
-#define _LUMINA_PANEL_JSON_PLUGIN_H
-
-#include "../../Globals.h"
-#include "../LPPlugin.h"
-
-
-class LPJsonMenu : public LPPlugin{
- Q_OBJECT
-public:
- LPJsonMenu(QWidget *parent = 0, QString id = "jsonmenu", bool horizontal=true);
- ~LPJsonMenu();
-
-private:
- QToolButton *button;
-
-private slots:
- //void SystemApplication(QAction*);
-
-public slots:
- void LocaleChange(){
- }
-
- 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();
- }
-};
-
-#endif
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/line/LLine.h b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/line/LLine.h
deleted file mode 100644
index 94de486e..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/line/LLine.h
+++ /dev/null
@@ -1,40 +0,0 @@
-//===========================================
-// Lumina-DE source code
-// Copyright (c) 2015, Ken Moore
-// Available under the 3-clause BSD license
-// See the LICENSE file for full details
-//===========================================
-// This class is a generic line separator for the panel
-//===========================================
-#ifndef _LUMINA_DESKTOP_PANEL_PLUGIN_LINE_H
-#define _LUMINA_DESKTOP_PANEL_PLUGIN_LINE_H
-
-#include "../LPPlugin.h"
-#include <QFrame>
-
-class LLinePlugin : public LPPlugin{
- Q_OBJECT
-private:
- QFrame *line;
-
-public:
- LLinePlugin(QWidget *parent=0, QString id="spacer", bool horizontal=true) : LPPlugin(parent, id, horizontal){
- line = new QFrame(this);
- line->setObjectName("LuminaPanelLine");
- this->layout()->addWidget(line);
- OrientationChange();
- }
- ~LLinePlugin(){}
-
-public slots:
- void OrientationChange(){
- if(this->layout()->direction()==QBoxLayout::LeftToRight){ //horizontal
- line->setFrameShape(QFrame::VLine);
- }else{ //vertical
- line->setFrameShape(QFrame::HLine);
- }
- }
-};
-
-
-#endif \ No newline at end of file
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/panel-plugins.pri b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/panel-plugins.pri
deleted file mode 100644
index c40c4725..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/panel-plugins.pri
+++ /dev/null
@@ -1,57 +0,0 @@
-#Lumina Desktop Panel Plugin files
-
-SOURCES += $$PWD/userbutton/LUserButton.cpp \
- $$PWD/userbutton/UserWidget.cpp \
- $$PWD/userbutton/UserItemWidget.cpp \
- $$PWD/desktopbar/LDeskBar.cpp \
- $$PWD/taskmanager/LTaskManagerPlugin.cpp \
- $$PWD/taskmanager/LTaskButton.cpp \
- $$PWD/systemtray/LSysTray.cpp \
- $$PWD/systemtray/TrayIcon.cpp \
- $$PWD/clock/LClock.cpp \
- $$PWD/battery/LBattery.cpp \
- $$PWD/desktopswitcher/LDesktopSwitcher.cpp \
- $$PWD/systemdashboard/LSysDashboard.cpp \
- $$PWD/systemdashboard/SysMenuQuick.cpp \
- $$PWD/showdesktop/LHomeButton.cpp \
- $$PWD/appmenu/LAppMenuPlugin.cpp \
- $$PWD/applauncher/AppLaunchButton.cpp \
- $$PWD/systemstart/LStartButton.cpp \
- $$PWD/systemstart/StartMenu.cpp \
- $$PWD/systemstart/ItemWidget.cpp \
- $$PWD/audioplayer/LPAudioPlayer.cpp \
- $$PWD/audioplayer/PPlayerWidget.cpp \
- $$PWD/jsonmenu/PPJsonMenu.cpp
-
-HEADERS += $$PWD/RotateToolButton.h \
- $$PWD/userbutton/LUserButton.h \
- $$PWD/userbutton/UserWidget.h \
- $$PWD/userbutton/UserItemWidget.h \
- $$PWD/desktopbar/LDeskBar.h \
- $$PWD/systemtray/LSysTray.h \
- $$PWD/systemtray/TrayIcon.h \
- $$PWD/spacer/LSpacer.h \
- $$PWD/line/LLine.h \
- $$PWD/clock/LClock.h \
- $$PWD/battery/LBattery.h \
- $$PWD/desktopswitcher/LDesktopSwitcher.h \
- $$PWD/taskmanager/LTaskManagerPlugin.h \
- $$PWD/taskmanager/LTaskButton.h \
- $$PWD/systemdashboard/LSysDashboard.h \
- $$PWD/systemdashboard/SysMenuQuick.h \
- $$PWD/showdesktop/LHomeButton.h \
- $$PWD/appmenu/LAppMenuPlugin.h \
- $$PWD/applauncher/AppLaunchButton.h \
- $$PWD/systemstart/LStartButton.h \
- $$PWD/systemstart/StartMenu.h \
- $$PWD/systemstart/ItemWidget.h \
- $$PWD/audioplayer/LPAudioPlayer.h \
- $$PWD/audioplayer/PPlayerWidget.h \
- $$PWD/jsonmenu/PPJsonMenu.h
-# $$PWD/quickcontainer/QuickPPlugin.h
-
-FORMS += $$PWD/userbutton/UserWidget.ui \
- $$PWD/systemdashboard/SysMenuQuick.ui \
- $$PWD/systemstart/StartMenu.ui \
- $$PWD/audioplayer/PPlayerWidget.ui
-
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/quickcontainer/QuickPPlugin.h b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/quickcontainer/QuickPPlugin.h
deleted file mode 100644
index 6f61c4d5..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/quickcontainer/QuickPPlugin.h
+++ /dev/null
@@ -1,43 +0,0 @@
-//===========================================
-// Lumina-DE source code
-// Copyright (c) 2015, Ken Moore
-// Available under the 3-clause BSD license
-// See the LICENSE file for full details
-//===========================================
-// This class is a simple container for a QtQuick plugin
-//===========================================
-#ifndef _LUMINA_DESKTOP_PANEL_PLUGIN_QUICK_H
-#define _LUMINA_DESKTOP_PANEL_PLUGIN_QUICK_H
-
-#include <QQuickWidget>
-#include <QVBoxLayout>
-#include "../LPPlugin.h"
-
-#include <LUtils.h>
-#include <QDebug>
-
-class QuickPPlugin : public LPPlugin{
- Q_OBJECT
-public:
- QuickPPlugin(QWidget* parent, QString ID, bool horizontal) : LPPlugin(parent, ID){
- container = new QQuickWidget(this);
- container->setResizeMode(QQuickWidget::SizeRootObjectToView);
- this->layout()->addWidget(container);
- horizontal = true; //just to silence compiler warning
- container->setSource(QUrl::fromLocalFile( LUtils::findQuickPluginFile(ID.section("---",0,0)) ));
- }
-
- ~QuickPPlugin(){}
-
-private:
- QQuickWidget *container;
-
-private slots:
- void statusChange(QQuickWidget::Status status){
- if(status == QQuickWidget::Error){
- qDebug() << "Quick Widget Error:" << this->type();
- }
- }
-
-};
-#endif
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/showdesktop/LHomeButton.cpp b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/showdesktop/LHomeButton.cpp
deleted file mode 100644
index 6c259b16..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/showdesktop/LHomeButton.cpp
+++ /dev/null
@@ -1,43 +0,0 @@
-//===========================================
-// 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("user-desktop", "") );
-}
-
-// ========================
-// 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/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/showdesktop/LHomeButton.h b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/showdesktop/LHomeButton.h
deleted file mode 100644
index 74aaf4fb..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/showdesktop/LHomeButton.h
+++ /dev/null
@@ -1,62 +0,0 @@
-//===========================================
-// 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
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/spacer/LSpacer.h b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/spacer/LSpacer.h
deleted file mode 100644
index 1e60c519..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/spacer/LSpacer.h
+++ /dev/null
@@ -1,34 +0,0 @@
-//===========================================
-// Lumina-DE source code
-// Copyright (c) 2014, Ken Moore
-// Available under the 3-clause BSD license
-// See the LICENSE file for full details
-//===========================================
-// This class is a generic invisible spacer for the panel
-//===========================================
-#ifndef _LUMINA_DESKTOP_PANEL_PLUGIN_SPACER_H
-#define _LUMINA_DESKTOP_PANEL_PLUGIN_SPACER_H
-
-#include "../LPPlugin.h"
-
-class LSpacerPlugin : public LPPlugin{
- Q_OBJECT
-public:
- LSpacerPlugin(QWidget *parent=0, QString id="spacer", bool horizontal=true) : LPPlugin(parent, id, horizontal){
- if(horizontal){ this->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); }
- else{ this->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding); }
- }
- ~LSpacerPlugin(){}
-
-public slots:
- void OrientationChange(){
- if(this->layout()->direction()==QBoxLayout::LeftToRight){ //horizontal
- this->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
- }else{ //vertical
- this->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding);
- }
- }
-};
-
-
-#endif \ No newline at end of file
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemdashboard/LSysDashboard.cpp b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemdashboard/LSysDashboard.cpp
deleted file mode 100644
index b9d70e97..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemdashboard/LSysDashboard.cpp
+++ /dev/null
@@ -1,91 +0,0 @@
-//===========================================
-// Lumina-DE source code
-// Copyright (c) 2014, Ken Moore
-// Available under the 3-clause BSD license
-// See the LICENSE file for full details
-//===========================================
-#include "LSysDashboard.h"
-
-LSysDashboard::LSysDashboard(QWidget *parent, QString id, bool horizontal) : LPPlugin(parent, id, horizontal){
- upTimer = new QTimer(this);
- upTimer->setInterval(10000); //10 second update ping
- connect(upTimer, SIGNAL(timeout()), this, SLOT(updateIcon()));
- button = new QToolButton(this);
- button->setAutoRaise(true);
- button->setToolButtonStyle(Qt::ToolButtonIconOnly);
- 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);
- menu = new QMenu(this);
- connect(menu, SIGNAL(aboutToHide()), this, SIGNAL(MenuClosed()));
- sysmenu = new LSysMenuQuick(this);
- connect(sysmenu, SIGNAL(CloseMenu()), this, SLOT(closeMenu()) );
- mact = new QWidgetAction(this);
- mact->setDefaultWidget(sysmenu);
- menu->addAction(mact);
-
- button->setMenu(menu);
- QTimer::singleShot(0,this, SLOT(OrientationChange())); //Update icons/sizes
-}
-
-LSysDashboard::~LSysDashboard(){
-
-}
-
-// ========================
-// PRIVATE FUNCTIONS
-// ========================
-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();
- //Set the icon as necessary
- if(charging && !batcharging){
- //Charging and just plugged in
- if(bat < 15){ button->setIcon( LXDG::findIcon("battery-charging-low","") ); QTimer::singleShot(5000, this, SLOT(resetIcon()));}
- else if(bat < 30){ button->setIcon( LXDG::findIcon("battery-charging-caution","") ); QTimer::singleShot(5000, this, SLOT(resetIcon()));}
- else if(force || button->icon().isNull()){ resetIcon(); }
- }else if(!charging){
- //Not charging (critical level or just unplugged)
- if(bat<5){ button->setIcon( LXDG::findIcon("battery-missing","") ); }
- else if(bat < 15){ button->setIcon( LXDG::findIcon("battery-low","") ); QTimer::singleShot(5000, this, SLOT(resetIcon())); }
- else if(bat < 30 && batcharging){ button->setIcon( LXDG::findIcon("battery-caution","") ); QTimer::singleShot(5000, this, SLOT(resetIcon()));}
- else if(bat < 50 && batcharging){ button->setIcon( LXDG::findIcon("battery-040","")); QTimer::singleShot(5000, this, SLOT(resetIcon()));}
- else if(bat < 70 && batcharging){ button->setIcon( LXDG::findIcon("battery-060","")); QTimer::singleShot(5000, this, SLOT(resetIcon()));}
- else if(bat < 90 && batcharging){ button->setIcon( LXDG::findIcon("battery-080","")); QTimer::singleShot(5000, this, SLOT(resetIcon()));}
- else if(batcharging){ button->setIcon( LXDG::findIcon("battery-100","")); QTimer::singleShot(5000, this, SLOT(resetIcon()));}
- else if(force || button->icon().isNull()){ resetIcon(); }
- }else if(force || button->icon().isNull()){
- //Otherwise just use the default icon
- resetIcon();
- }
- //Save the values for comparison later
- batcharging = charging;
- if( !upTimer->isActive() ){ upTimer->start(); } //only use the timer if a battery is present
-
- // No battery - just use/set the normal icon
- }else if(force || button->icon().isNull()){
- resetIcon();
- if(upTimer->isActive() ){ upTimer->stop(); } //no battery available - no refresh timer needed
- }
-
-}
-
-void LSysDashboard::resetIcon(){
- button->setIcon( LXDG::findIcon("arrow-down-drop-circle",""));
-}
-
-void LSysDashboard::openMenu(){
- sysmenu->UpdateMenu();
- button->showMenu();
-}
-
-void LSysDashboard::closeMenu(){
- menu->hide();
-}
-
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemdashboard/LSysDashboard.h b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemdashboard/LSysDashboard.h
deleted file mode 100644
index 782fc4e6..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemdashboard/LSysDashboard.h
+++ /dev/null
@@ -1,76 +0,0 @@
-//===========================================
-// Lumina-DE source code
-// Copyright (c) 2014, Ken Moore
-// Available under the 3-clause BSD license
-// See the LICENSE file for full details
-//===========================================
-// This panel plugin allows the user to control different system settings
-// For example: screen brightness, audio volume, workspace, and battery
-//===========================================
-#ifndef _LUMINA_DESKTOP_SYSTEM_DASHBOARD_H
-#define _LUMINA_DESKTOP_SYSTEM_DASHBOARD_H
-
-//Qt includes
-
-#include <QHBoxLayout>
-#include <QDebug>
-#include <QCoreApplication>
-#include <QPainter>
-#include <QPixmap>
-#include <QWidgetAction>
-#include <QMenu>
-#include <QTimer>
-#include <QToolButton>
-
-//libLumina includes
-#include <LuminaOS.h>
-#include <LuminaXDG.h>
-
-//Local includes
-#include "../LPPlugin.h"
-#include "SysMenuQuick.h"
-
-class LSysDashboard : public LPPlugin{
- Q_OBJECT
-public:
- LSysDashboard(QWidget *parent = 0, QString id="systemdashboard", bool horizontal=true);
- ~LSysDashboard();
-
-private:
- QMenu *menu;
- QWidgetAction *mact;
- LSysMenuQuick *sysmenu;
- QToolButton *button;
- QTimer *upTimer;
-
-private slots:
- void updateIcon(bool force = false);
- void resetIcon();
- void openMenu();
- void closeMenu();
-
-public slots:
- void LocaleChange(){
- updateIcon(true);
- sysmenu->UpdateMenu();
- }
-
- void ThemeChange(){
- updateIcon(true);
- sysmenu->UpdateMenu();
- }
-
- 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()) );
- }
- updateIcon(true); //force icon refresh
- this->layout()->update();
- }
-};
-
-#endif
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemdashboard/SysMenuQuick.cpp b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemdashboard/SysMenuQuick.cpp
deleted file mode 100644
index 1d699ea9..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemdashboard/SysMenuQuick.cpp
+++ /dev/null
@@ -1,211 +0,0 @@
-//===========================================
-// Lumina-DE source code
-// Copyright (c) 2014, Ken Moore
-// Available under the 3-clause BSD license
-// See the LICENSE file for full details
-//===========================================
-#include "SysMenuQuick.h"
-#include "ui_SysMenuQuick.h"
-
-#include "../../LSession.h"
-#include <LuminaX11.h>
-
-LSysMenuQuick::LSysMenuQuick(QWidget *parent) : QWidget(parent), ui(new Ui::LSysMenuQuick){
- ui->setupUi(this);
- brighttimer = new QTimer(this);
- brighttimer->setSingleShot(true);
- brighttimer->setInterval(50); //50ms delay in setting the new value
- //Now reset the initial saved settings (this is handles by the LOS/session now - 4/22/15)
- firstrun = true;
- UpdateMenu(); //do this once before all the signals/slots are connected below
- firstrun = false;
- //Now setup the connections
- connect(ui->slider_volume, SIGNAL(valueChanged(int)), this, SLOT(volSliderChanged()) );
- connect(ui->slider_brightness, SIGNAL(valueChanged(int)), this, SLOT(brightSliderChanged()) );
- connect(ui->tool_wk_prev, SIGNAL(clicked()), this, SLOT(prevWorkspace()) );
- connect(ui->tool_wk_next, SIGNAL(clicked()), this, SLOT(nextWorkspace()) );
- connect(ui->tool_logout, SIGNAL(clicked()), this, SLOT(startLogout()) );
- connect(ui->tool_vol_mixer, SIGNAL(clicked()), this, SLOT(startMixer()) );
- connect(brighttimer, SIGNAL(timeout()), this, SLOT(setCurrentBrightness()) );
- connect(ui->combo_locale, SIGNAL(currentIndexChanged(int)), this, SLOT(changeLocale()) );
- //And setup the default icons
- ui->label_bright_icon->setPixmap( LXDG::findIcon("preferences-system-power-management","").pixmap(ui->label_bright_icon->maximumSize()) );
- ui->tool_wk_prev->setIcon( LXDG::findIcon("go-previous-view",""));
- ui->tool_wk_next->setIcon( LXDG::findIcon("go-next-view","") );
- ui->tool_logout->setIcon( LXDG::findIcon("system-log-out","") );
-}
-
-LSysMenuQuick::~LSysMenuQuick(){
-
-}
-
-void LSysMenuQuick::UpdateMenu(){
- ui->retranslateUi(this);
- //Audio Volume
- int val = LOS::audioVolume();
- QIcon ico;
- if(val > 66){ ico= LXDG::findIcon("audio-volume-high",""); }
- else if(val > 33){ ico= LXDG::findIcon("audio-volume-medium",""); }
- else if(val > 0){ ico= LXDG::findIcon("audio-volume-low",""); }
- else{ ico= LXDG::findIcon("audio-volume-muted",""); }
- bool hasMixer = LOS::hasMixerUtility();
- ui->label_vol_icon->setVisible(!hasMixer);
- ui->tool_vol_mixer->setVisible(hasMixer);
- if(!hasMixer){ ui->label_vol_icon->setPixmap( ico.pixmap(ui->label_vol_icon->maximumSize()) ); }
- else{ ui->tool_vol_mixer->setIcon(ico); }
- QString txt = QString::number(val)+"%";
- if(val<100){ txt.prepend(" "); } //make sure no widget resizing
- ui->label_vol_text->setText(txt);
- if(ui->slider_volume->value()!= val){ ui->slider_volume->setValue(val); }
- //Screen Brightness
- val = LOS::ScreenBrightness();
- if(val < 0){
- //No brightness control - hide it
- ui->group_brightness->setVisible(false);
- }else{
- ui->group_brightness->setVisible(true);
- txt = QString::number(val)+"%";
- if(val<100){ txt.prepend(" "); } //make sure no widget resizing
- ui->label_bright_text->setText(txt);
- if(ui->slider_brightness->value()!=val){ ui->slider_brightness->setValue(val); }
- }
-
- //Do any one-time checks
- if(firstrun){
- hasBat = LOS::hasBattery(); //No need to check this more than once - will not change in the middle of a session
- //Current Locale
- QStringList locales = LUtils::knownLocales();
- ui->combo_locale->clear();
- QLocale curr;
- for(int i=0; i<locales.length(); i++){
- QLocale loc( (locales[i]=="pt") ? "pt_PT" : locales[i] );
- ui->combo_locale->addItem(loc.nativeLanguageName()+" ("+locales[i]+")", locales[i]); //Make the display text prettier later
- if(locales[i] == curr.name() || locales[i] == curr.name().section("_",0,0) ){
- //Current Locale
- ui->combo_locale->setCurrentIndex(ui->combo_locale->count()-1); //the last item in the list right now
- }
- }
- ui->group_locale->setVisible(locales.length() > 1);
- }
-
- //Battery Status
- if(hasBat){
- ui->group_battery->setVisible(true);
- val = LOS::batteryCharge();
- if(LOS::batteryIsCharging()){
- if(val < 15){ ui->label_bat_icon->setPixmap( LXDG::findIcon("battery-charging-low","").pixmap(ui->label_bat_icon->maximumSize()) ); }
- else if(val < 30){ ui->label_bat_icon->setPixmap( LXDG::findIcon("battery-charging-caution","").pixmap(ui->label_bat_icon->maximumSize()) ); }
- else if(val < 50){ ui->label_bat_icon->setPixmap( LXDG::findIcon("battery-charging-040","").pixmap(ui->label_bat_icon->maximumSize()) ); }
- else if(val < 70){ ui->label_bat_icon->setPixmap( LXDG::findIcon("battery-charging-060","").pixmap(ui->label_bat_icon->maximumSize()) ); }
- else if(val < 90){ ui->label_bat_icon->setPixmap( LXDG::findIcon("battery-charging-080","").pixmap(ui->label_bat_icon->maximumSize()) ); }
- else{ ui->label_bat_icon->setPixmap( LXDG::findIcon("battery-charging","").pixmap(ui->label_bat_icon->maximumSize()) ); }
- ui->label_bat_text->setText( QString("%1%\n(%2)").arg(QString::number(val), tr("connected")) );
- }else{
- if(val < 1){ ui->label_bat_icon->setPixmap( LXDG::findIcon("battery-missing","").pixmap(ui->label_bat_icon->maximumSize()) ); }
- else if(val < 15){ ui->label_bat_icon->setPixmap( LXDG::findIcon("battery-low","").pixmap(ui->label_bat_icon->maximumSize()) ); }
- else if(val < 30){ ui->label_bat_icon->setPixmap( LXDG::findIcon("battery-caution","").pixmap(ui->label_bat_icon->maximumSize()) ); }
- else if(val < 50){ ui->label_bat_icon->setPixmap( LXDG::findIcon("battery-040","").pixmap(ui->label_bat_icon->maximumSize()) ); }
- else if(val < 70){ ui->label_bat_icon->setPixmap( LXDG::findIcon("battery-060","").pixmap(ui->label_bat_icon->maximumSize()) ); }
- else if(val < 90){ ui->label_bat_icon->setPixmap( LXDG::findIcon("battery-080","").pixmap(ui->label_bat_icon->maximumSize()) ); }
- else{ ui->label_bat_icon->setPixmap( LXDG::findIcon("battery-100","").pixmap(ui->label_bat_icon->maximumSize()) ); }
- ui->label_bat_text->setText( QString("%1%\n(%2)").arg(QString::number(val), getRemainingTime()) );
- }
- }else{
- ui->group_battery->setVisible(false);
- }
- //Workspace
- val = LSession::handle()->XCB->CurrentWorkspace();
- int tot = LSession::handle()->XCB->NumberOfWorkspaces();
- ui->group_workspace->setVisible(val>=0 && tot>1);
- ui->label_wk_text->setText( QString(tr("%1 of %2")).arg(QString::number(val+1), QString::number(tot)) );
-}
-
-void LSysMenuQuick::volSliderChanged(){
- int val = ui->slider_volume->value();
- LOS::setAudioVolume(val);
- QString txt = QString::number(val)+"%";
- if(val<100){ txt.prepend(" "); } //make sure no widget resizing
- ui->label_vol_text->setText( txt );
- if(val > 66){ ui->label_vol_icon->setPixmap( LXDG::findIcon("audio-volume-high","").pixmap(ui->label_vol_icon->maximumSize()) ); }
- else if(val > 33){ ui->label_vol_icon->setPixmap( LXDG::findIcon("audio-volume-medium","").pixmap(ui->label_vol_icon->maximumSize()) ); }
- else if(val > 0){ ui->label_vol_icon->setPixmap( LXDG::findIcon("audio-volume-low","").pixmap(ui->label_vol_icon->maximumSize()) ); }
- else{ ui->label_vol_icon->setPixmap( LXDG::findIcon("audio-volume-muted","").pixmap(ui->label_vol_icon->maximumSize()) ); }
-}
-
-void LSysMenuQuick::startMixer(){
- emit CloseMenu();
- LOS::startMixerUtility();
-}
-
-void LSysMenuQuick::brightSliderChanged(){
- //Brightness controls cannot operate extremely quickly - combine calls as necessary
- if(brighttimer->isActive()){ brighttimer->stop(); }
- brighttimer->start();
- //*DO* update the label right away
- int val = ui->slider_brightness->value();
- QString txt = QString::number(val)+"%";
- if(val<100){ txt.prepend(" "); } //make sure no widget resizing
- ui->label_bright_text->setText( txt );
-}
-
-void LSysMenuQuick::setCurrentBrightness(){
- int val = ui->slider_brightness->value();
- LOS::setScreenBrightness(val);
- QString txt = QString::number(val)+"%";
- if(val<100){ txt.prepend(" "); } //make sure no widget resizing
- ui->label_bright_text->setText( txt );
-}
-
-void LSysMenuQuick::nextWorkspace(){
- int cur = LSession::handle()->XCB->CurrentWorkspace();
- int tot = LSession::handle()->XCB->NumberOfWorkspaces();
- //qDebug()<< "Next Workspace:" << cur << tot;
- cur++;
- if(cur>=tot){ cur = 0; } //back to beginning
- //qDebug() << " - New Current:" << cur;
- LSession::handle()->XCB->SetCurrentWorkspace(cur);
-ui->label_wk_text->setText( QString(tr("%1 of %2")).arg(QString::number(cur+1), QString::number(tot)) );
-}
-
-void LSysMenuQuick::prevWorkspace(){
- int cur = LSession::handle()->XCB->CurrentWorkspace();
- int tot = LSession::handle()->XCB->NumberOfWorkspaces();
- cur--;
- if(cur<0){ cur = tot-1; } //back to last
- LSession::handle()->XCB->SetCurrentWorkspace(cur);
- ui->label_wk_text->setText( QString(tr("%1 of %2")).arg(QString::number(cur+1), QString::number(tot)) );
-}
-
-QString LSysMenuQuick::getRemainingTime(){
- int secs = LOS::batterySecondsLeft();
- if(secs < 0){ return "??"; }
- QString rem; //remaining
- if(secs > 3600){
- int hours = secs/3600;
- rem.append( QString::number(hours)+"h ");
- secs = secs - (hours*3600);
- }
- if(secs > 60){
- int min = secs/60;
- rem.append( QString::number(min)+"m ");
- secs = secs - (min*60);
- }
- if(secs > 0){
- rem.append( QString::number(secs)+"s");
- }else{
- rem.append( "0s" );
- }
- return rem;
-}
-
-void LSysMenuQuick::startLogout(){
- emit CloseMenu();
- LSession::handle()->systemWindow();
-}
-
-void LSysMenuQuick::changeLocale(){
- //Get the currently selected Locale
- QString locale = ui->combo_locale->currentData().toString();
- emit CloseMenu();
- LSession::handle()->switchLocale(locale);
-} \ No newline at end of file
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemdashboard/SysMenuQuick.h b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemdashboard/SysMenuQuick.h
deleted file mode 100644
index a300b5b1..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemdashboard/SysMenuQuick.h
+++ /dev/null
@@ -1,54 +0,0 @@
-//===========================================
-// Lumina-DE source code
-// Copyright (c) 2014, Ken Moore
-// Available under the 3-clause BSD license
-// See the LICENSE file for full details
-//===========================================
-// This panel plugin allows the user to control different system settings
-// For example: screen brightness, audio volume, workspace, and battery
-//===========================================
-#ifndef _LUMINA_PANEL_QUICK_SYSTEM_MENU_H
-#define _LUMINA_PANEL_QUICK_SYSTEM_MENU_H
-
-#include <QWidget>
-#include <QSettings>
-#include <QString>
-
-#include <LuminaOS.h>
-#include <LuminaXDG.h>
-
-namespace Ui{
- class LSysMenuQuick;
-};
-
-class LSysMenuQuick : public QWidget{
- Q_OBJECT
-public:
- LSysMenuQuick(QWidget *parent=0);
- ~LSysMenuQuick();
-
- void UpdateMenu();
-
-private:
- Ui::LSysMenuQuick *ui;
- QTimer *brighttimer;
- bool firstrun, hasBat;
- QString getRemainingTime(); //battery time left
-
-private slots:
- void volSliderChanged();
- void brightSliderChanged(); //start the delay/collection timer
- void setCurrentBrightness(); //perform the change
- void startMixer();
- void nextWorkspace();
- void prevWorkspace();
- void startLogout();
- void changeLocale();
-
-
-signals:
- void CloseMenu();
-
-};
-
-#endif \ No newline at end of file
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemdashboard/SysMenuQuick.ui b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemdashboard/SysMenuQuick.ui
deleted file mode 100644
index 26c32c74..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemdashboard/SysMenuQuick.ui
+++ /dev/null
@@ -1,400 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>LSysMenuQuick</class>
- <widget class="QWidget" name="LSysMenuQuick">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>171</width>
- <height>317</height>
- </rect>
- </property>
- <property name="windowTitle">
- <string>Form</string>
- </property>
- <property name="styleSheet">
- <string notr="true">/*QGroupBox{
-border-radius: 5px;
-border: 1px solid grey;
-margin-top: 1ex;
-}
-QGroupBox::title{
-subcontrol-origin: margin;
-subcontrol-position: top center;
-padding: 0 3px;
-background-color: rgba(255,255,255,255);
-border-radius: 5px;
-font: bold;
-}*/</string>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout">
- <property name="spacing">
- <number>2</number>
- </property>
- <property name="leftMargin">
- <number>1</number>
- </property>
- <property name="topMargin">
- <number>1</number>
- </property>
- <property name="rightMargin">
- <number>1</number>
- </property>
- <property name="bottomMargin">
- <number>1</number>
- </property>
- <item>
- <widget class="QGroupBox" name="group_volume">
- <property name="title">
- <string>System Volume</string>
- </property>
- <property name="flat">
- <bool>false</bool>
- </property>
- <layout class="QHBoxLayout" name="horizontalLayout">
- <property name="spacing">
- <number>2</number>
- </property>
- <property name="leftMargin">
- <number>2</number>
- </property>
- <property name="topMargin">
- <number>2</number>
- </property>
- <property name="rightMargin">
- <number>2</number>
- </property>
- <property name="bottomMargin">
- <number>2</number>
- </property>
- <item>
- <widget class="QLabel" name="label_vol_icon">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>32</width>
- <height>32</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>32</width>
- <height>32</height>
- </size>
- </property>
- <property name="text">
- <string notr="true"/>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QToolButton" name="tool_vol_mixer">
- <property name="minimumSize">
- <size>
- <width>30</width>
- <height>30</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>32</width>
- <height>32</height>
- </size>
- </property>
- <property name="toolTip">
- <string>Launch Audio Mixer</string>
- </property>
- <property name="text">
- <string/>
- </property>
- <property name="iconSize">
- <size>
- <width>30</width>
- <height>30</height>
- </size>
- </property>
- <property name="autoRaise">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QSlider" name="slider_volume">
- <property name="maximum">
- <number>100</number>
- </property>
- <property name="value">
- <number>100</number>
- </property>
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QLabel" name="label_vol_text">
- <property name="text">
- <string notr="true">100%</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- <item>
- <widget class="QGroupBox" name="group_brightness">
- <property name="title">
- <string>Screen Brightness</string>
- </property>
- <layout class="QHBoxLayout" name="horizontalLayout_2">
- <property name="spacing">
- <number>2</number>
- </property>
- <property name="leftMargin">
- <number>2</number>
- </property>
- <property name="topMargin">
- <number>2</number>
- </property>
- <property name="rightMargin">
- <number>2</number>
- </property>
- <property name="bottomMargin">
- <number>2</number>
- </property>
- <item>
- <widget class="QLabel" name="label_bright_icon">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>32</width>
- <height>32</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>32</width>
- <height>32</height>
- </size>
- </property>
- <property name="text">
- <string notr="true"/>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QSlider" name="slider_brightness">
- <property name="minimum">
- <number>10</number>
- </property>
- <property name="maximum">
- <number>100</number>
- </property>
- <property name="value">
- <number>100</number>
- </property>
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QLabel" name="label_bright_text">
- <property name="text">
- <string notr="true">100%</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- <item>
- <widget class="QGroupBox" name="group_battery">
- <property name="title">
- <string>Battery Status</string>
- </property>
- <layout class="QHBoxLayout" name="horizontalLayout_3">
- <property name="spacing">
- <number>2</number>
- </property>
- <property name="leftMargin">
- <number>2</number>
- </property>
- <property name="topMargin">
- <number>2</number>
- </property>
- <property name="rightMargin">
- <number>2</number>
- </property>
- <property name="bottomMargin">
- <number>2</number>
- </property>
- <item>
- <widget class="QLabel" name="label_bat_icon">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>32</width>
- <height>32</height>
- </size>
- </property>
- <property name="maximumSize">
- <size>
- <width>32</width>
- <height>32</height>
- </size>
- </property>
- <property name="text">
- <string notr="true"/>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QLabel" name="label_bat_text">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string notr="true">100% (Plugged in)</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- <item>
- <widget class="QGroupBox" name="group_workspace">
- <property name="title">
- <string>Workspace</string>
- </property>
- <layout class="QHBoxLayout" name="horizontalLayout_4">
- <property name="spacing">
- <number>2</number>
- </property>
- <property name="leftMargin">
- <number>2</number>
- </property>
- <property name="topMargin">
- <number>2</number>
- </property>
- <property name="rightMargin">
- <number>2</number>
- </property>
- <property name="bottomMargin">
- <number>2</number>
- </property>
- <item>
- <widget class="QToolButton" name="tool_wk_prev">
- <property name="text">
- <string notr="true">prev</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QLabel" name="label_wk_text">
- <property name="text">
- <string notr="true">1 of 2</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QToolButton" name="tool_wk_next">
- <property name="text">
- <string notr="true">next</string>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- <item>
- <widget class="QGroupBox" name="group_locale">
- <property name="title">
- <string>Locale</string>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout_2">
- <property name="spacing">
- <number>2</number>
- </property>
- <property name="leftMargin">
- <number>2</number>
- </property>
- <property name="topMargin">
- <number>2</number>
- </property>
- <property name="rightMargin">
- <number>2</number>
- </property>
- <property name="bottomMargin">
- <number>2</number>
- </property>
- <item>
- <widget class="QComboBox" name="combo_locale"/>
- </item>
- </layout>
- </widget>
- </item>
- <item>
- <layout class="QHBoxLayout" name="horizontalLayout_6">
- <item>
- <widget class="QToolButton" name="tool_logout">
- <property name="font">
- <font>
- <pointsize>9</pointsize>
- </font>
- </property>
- <property name="text">
- <string>Log Out</string>
- </property>
- <property name="iconSize">
- <size>
- <width>22</width>
- <height>22</height>
- </size>
- </property>
- <property name="toolButtonStyle">
- <enum>Qt::ToolButtonTextBesideIcon</enum>
- </property>
- <property name="autoRaise">
- <bool>false</bool>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- </layout>
- </widget>
- <resources/>
- <connections/>
-</ui>
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemstart/ItemWidget.cpp b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemstart/ItemWidget.cpp
deleted file mode 100644
index ea074a59..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemstart/ItemWidget.cpp
+++ /dev/null
@@ -1,279 +0,0 @@
-//===========================================
-// Lumina-DE source code
-// Copyright (c) 2014-2015, Ken Moore
-// Available under the 3-clause BSD license
-// See the LICENSE file for full details
-//===========================================
-#include "ItemWidget.h"
-#include <LUtils.h>
-#include <QMenu>
-#include "../../LSession.h"
-
-
-ItemWidget::ItemWidget(QWidget *parent, QString itemPath, QString type, bool goback) : QFrame(parent){
- createWidget();
- //Now fill it appropriately
- bool inHome = type.endsWith("-home"); //internal code
- if(inHome){ type = type.remove("-home"); }
- if(itemPath.endsWith(".desktop") || type=="app"){
- XDGDesktop item(itemPath, this);
- gooditem = item.isValid();
- //qDebug() << "Good Item:" << gooditem << itemPath;
- if(gooditem){
- icon->setPixmap( LXDG::findIcon(item.icon, "preferences-system-windows-actions").pixmap(32,32) );
- iconPath = item.icon;
- text = item.name;
- if(!item.genericName.isEmpty() && item.name!=item.genericName){ text.append("<br><i> -- "+item.genericName+"</i>"); }
- name->setText(text);
- name->setToolTip(item.comment);
- setupActions(&item);
- }else{
- return;
- }
- }else if(type=="dir"){
- actButton->setVisible(false);
- if(itemPath.endsWith("/")){ itemPath.chop(1); }
- if(goback){
- icon->setPixmap( LXDG::findIcon("go-previous","").pixmap(64,64) );
- iconPath = "go-previous";
- text = tr("Go Back");
- name->setText( text );
- }else{
- icon->setPixmap( LXDG::findIcon("folder","").pixmap(64,64) );
- iconPath = "folder";
- name->setText( itemPath.section("/",-1));
- text = itemPath.section("/",-1);
- }
- }else if(type.startsWith("chcat::::")){
- //Category given
- actButton->setVisible(false);
- iconPath = LXDG::DesktopCatToIcon(type.section("::::",1,50));
- if(goback){ iconPath = "go-previous"; type = "chcat::::"; itemPath = "<B>("+itemPath+")</B>"; }
- icon->setPixmap( LXDG::findIcon(iconPath,"applications-other").pixmap(64,64) );
- name->setText(itemPath);
- text = itemPath;
- icon->setWhatsThis(type);
- linkPath = type;
- }else{
- actButton->setVisible(false);
- if(itemPath.endsWith("/")){ itemPath.chop(1); }
- if(QFileInfo(itemPath).isDir()){
- type = "dir";
- icon->setPixmap( LXDG::findIcon("folder","").pixmap(64,64) );
- iconPath = "folder";
- }else if(LUtils::imageExtensions().contains(itemPath.section("/",-1).section(".",-1).toLower()) ){
- icon->setPixmap( QIcon(itemPath).pixmap(64,64) );
- }else{
- if( LUtils::isValidBinary(itemPath) ){ icon->setPixmap( LXDG::findIcon(type, "application-x-executable").pixmap(64,64) ); }
- else{ icon->setPixmap( LXDG::findMimeIcon(itemPath.section("/",-1)).pixmap(64,64) ); }
- }
- name->setText( itemPath.section("/",-1) ); //this->fontMetrics().elidedText(itemPath.section("/",-1), Qt::ElideRight, TEXTCUTOFF) );
- text = itemPath.section("/",-1) ;
- }
- icon->setWhatsThis(itemPath);
- if(!goback){ this->setWhatsThis(name->text()); }
- isDirectory = (type=="dir"); //save this for later
- if(LDesktopUtils::isFavorite(itemPath)){
- linkPath = itemPath;
- isShortcut=true;
- }else if( inHome ){//|| itemPath.section("/",0,-2)==QDir::homePath()+"/Desktop" ){
- isShortcut = true;
- }else{
- isShortcut = false;
- }
- if(isShortcut && name->toolTip().isEmpty()){
- name->setToolTip(icon->whatsThis()); //also allow the user to see the full shortcut path
- }
- //Now setup the button appropriately
- setupContextMenu();
-}
-
-// - Application constructor
-ItemWidget::ItemWidget(QWidget *parent, XDGDesktop *item) : QFrame(parent){
- createWidget();
- if(item==0){ gooditem = false; return; }
- isDirectory = false;
- if(LDesktopUtils::isFavorite(item->filePath)){
- linkPath = item->filePath;
- isShortcut=true;
- }else if( item->filePath.section("/",0,-2)==QDir::homePath()+"/Desktop" ){
- isShortcut = true;
- }else{
- isShortcut = false;
- }
- if(isShortcut){
- name->setToolTip(icon->whatsThis()); //also allow the user to see the full shortcut path
- }
- //Now fill it appropriately
- icon->setPixmap( LXDG::findIcon(item->icon,"preferences-system-windows-actions").pixmap(64,64) );
- text = item->name;
- if(!item->genericName.isEmpty() && item->name!=item->genericName){ text.append("<br><i> -- "+item->genericName+"</i>"); }
- name->setText(text);
- name->setToolTip(item->comment);
- this->setWhatsThis(item->name);
- icon->setWhatsThis(item->filePath);
- iconPath = item->icon;
- //Now setup the buttons appropriately
- setupContextMenu();
- setupActions(item);
-}
-
-ItemWidget::~ItemWidget(){
- icon->setPixmap(QPixmap()); //make sure the pixmap is cleared from memory too
- actButton->deleteLater();
- contextMenu->clear();
- contextMenu->deleteLater();
- if(actButton->menu()!=0){
- for(int i=0; i<actButton->menu()->actions().length(); i++){
- actButton->menu()->actions().at(i)->deleteLater();
- }
- actButton->menu()->deleteLater();
- }
- actButton->deleteLater();
- icon->deleteLater();
- name->deleteLater();
- menureset->deleteLater();
- linkPath.clear(); iconPath.clear(); text.clear();
-}
-
-void ItemWidget::triggerItem(){
- ItemClicked();
-}
-
-void ItemWidget::createWidget(){
- //Initialize the widgets
- gooditem = true;
- menuopen = false;
- menureset = new QTimer(this);
- menureset->setSingleShot(true);
- menureset->setInterval(1000); //1 second
- this->setContentsMargins(0,0,0,0);
- contextMenu = new QMenu(this);
- connect(contextMenu, SIGNAL(aboutToShow()), this, SLOT(actionMenuOpen()) );
- connect(contextMenu, SIGNAL(aboutToHide()), this, SLOT(actionMenuClosed()) );
- actButton = new QToolButton(this);
- actButton->setPopupMode(QToolButton::InstantPopup);
- actButton->setArrowType(Qt::DownArrow);
- icon = new QLabel(this);
- name = new QLabel(this);
- name->setWordWrap(true);
- name->setTextFormat(Qt::RichText);
- name->setTextInteractionFlags(Qt::NoTextInteraction);
- //Add them to the layout
- this->setLayout(new QHBoxLayout(this));
- this->layout()->setContentsMargins(1,1,1,1);
- this->layout()->addWidget(icon);
- this->layout()->addWidget(actButton);
- this->layout()->addWidget(name);
- //Set a custom object name so this can be tied into the Lumina Theme stylesheets
- this->setObjectName("LuminaItemWidget");
-}
-
-void ItemWidget::setupContextMenu(){
- //Now refresh the context menu
- contextMenu->clear();
- if(!QFile::exists(QDir::homePath()+"/Desktop/"+icon->whatsThis().section("/",-1)) ){
- //Does not have a desktop link
- contextMenu->addAction( LXDG::findIcon("preferences-desktop-icons",""), tr("Pin to Desktop"), this, SLOT(PinToDesktop()) );
- }
- //Favorite Item
- if( LDesktopUtils::isFavorite(icon->whatsThis()) ){ //Favorite Item - can always remove this
- contextMenu->addAction( LXDG::findIcon("edit-delete",""), tr("Remove from Favorites"), this, SLOT(RemoveFavorite()) );
- }else{
- //This file does not have a shortcut yet -- allow the user to add it
- contextMenu->addAction( LXDG::findIcon("bookmark-toolbar",""), tr("Add to Favorites"), this, SLOT(AddFavorite()) );
- }
- //QuickLaunch Item
- if(LSession::handle()->sessionSettings()->value("QuicklaunchApps",QStringList()).toStringList().contains(icon->whatsThis()) ){ //Favorite Item - can always remove this
- contextMenu->addAction( LXDG::findIcon("edit-delete",""), tr("Remove from Quicklaunch"), this, SLOT(RemoveQL()) );
- }else{
- //This file does not have a shortcut yet -- allow the user to add it
- contextMenu->addAction( LXDG::findIcon("quickopen",""), tr("Add to Quicklaunch"), this, SLOT(AddQL()) );
- }
-}
-
-void ItemWidget::setupActions(XDGDesktop *app){
- if(app==0 || app->actions.isEmpty()){ actButton->setVisible(false); return; }
- //Actions Available - go ahead and list them all
- actButton->setMenu( new QMenu(this) );
- for(int i=0; i<app->actions.length(); i++){
- QAction *act = new QAction(LXDG::findIcon(app->actions[i].icon, app->icon), app->actions[i].name, this);
- act->setToolTip(app->actions[i].ID);
- act->setWhatsThis(app->actions[i].ID);
- actButton->menu()->addAction(act);
- }
- connect(actButton->menu(), SIGNAL(triggered(QAction*)), this, SLOT(actionClicked(QAction*)) );
- connect(actButton->menu(), SIGNAL(aboutToShow()), this, SLOT(actionMenuOpen()) );
- connect(actButton->menu(), SIGNAL(aboutToHide()), this, SLOT(actionMenuClosed()) );
- connect(menureset, SIGNAL(timeout()), this, SLOT(resetmenuflag()) );
-}
-
-void ItemWidget::updateItems(){
- //update the text/icon to match sizes
- int H = 2.3*name->fontMetrics().height(); //make sure the height is large enough for two lines
- icon->setFixedSize(QSize(H-4, H-4));
- actButton->setFixedSize( QSize( (H-4)/2, H-4) );
- QStringList newname = text.split("<br>");
- for(int i=0; i<newname.length(); i++){ newname[i] = name->fontMetrics().elidedText(newname[i], Qt::ElideRight, name->width()); }
- name->setText( newname.join("<br>") );
- //Now reload the icon if necessary
- if(icon->pixmap()!=0){
- if(icon->pixmap()->size().height() < (H-4) ){
- if(iconPath.isEmpty()){
- //Use item path (thumbnail or mimetype)
- if(LUtils::imageExtensions().contains(icon->whatsThis().section("/",-1).section(".",-1).toLower()) ){
- icon->setPixmap( QIcon(icon->whatsThis()).pixmap(H-4,H-4).scaledToHeight(H-4,Qt::SmoothTransformation) );
- }else{
- icon->setPixmap( LXDG::findMimeIcon(icon->whatsThis().section("/",-1)).pixmap(H-4,H-4).scaledToHeight(H-4,Qt::SmoothTransformation) );
- }
- }else{
- icon->setPixmap( LXDG::findIcon(iconPath,"preferences-system-windows-actions").pixmap(H-4,H-4).scaledToHeight(H-4,Qt::SmoothTransformation) );
- }
- }else if(icon->pixmap()->size().height() > (H-4) ){
- icon->setPixmap( icon->pixmap()->scaled(H-4, H-4, Qt::IgnoreAspectRatio, Qt::SmoothTransformation) );
- }
- }
-}
-
-void ItemWidget::PinToDesktop(){
- qDebug() << "Create Link on Desktop:" << icon->whatsThis();
- bool ok = QFile::link(icon->whatsThis(), QDir::homePath()+"/Desktop/"+icon->whatsThis().section("/",-1));
- qDebug() << " - " << (ok ? "Success": "Failure");
-}
-
-void ItemWidget::RemoveFavorite(){
- LDesktopUtils::removeFavorite(icon->whatsThis());
- linkPath.clear();
- emit RemovedShortcut();
-}
-
-void ItemWidget::AddFavorite(){
- if( LDesktopUtils::addFavorite(icon->whatsThis()) ){
- linkPath = icon->whatsThis();
- emit NewShortcut();
- }
-
-}
-void ItemWidget::RemoveQL(){
- qDebug() << "Remove QuickLaunch Button:" << icon->whatsThis();
- emit toggleQuickLaunch(icon->whatsThis(), false);
-}
-
-void ItemWidget::AddQL(){
- qDebug() << "Add QuickLaunch Button:" << icon->whatsThis();
- emit toggleQuickLaunch(icon->whatsThis(), true);
-}
-
-
-void ItemWidget::ItemClicked(){
- if(!linkPath.isEmpty()){ emit RunItem(linkPath); }
- else{ emit RunItem(icon->whatsThis()); }
-}
-
-void ItemWidget::actionClicked(QAction *act){
- actButton->menu()->hide();
- QString cmd = "lumina-open -action \""+act->whatsThis()+"\" \"%1\"";
- if(!linkPath.isEmpty()){ cmd = cmd.arg(linkPath); }
- else{ cmd = cmd.arg(icon->whatsThis()); }
- emit RunItem(cmd);
-}
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemstart/ItemWidget.h b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemstart/ItemWidget.h
deleted file mode 100644
index 11394dd6..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemstart/ItemWidget.h
+++ /dev/null
@@ -1,98 +0,0 @@
-//===========================================
-// Lumina-DE source code
-// Copyright (c) 2014-2015, Ken Moore
-// Available under the 3-clause BSD license
-// See the LICENSE file for full details
-//===========================================
-// This item widget manages a single file/directory
-//===========================================
-#ifndef _LUMINA_PANEL_SYSTEM_START_ITEM_WIDGET_H
-#define _LUMINA_PANEL_SYSTEM_START_ITEM_WIDGET_H
-
-#include <QFrame>
-#include <QLabel>
-#include <QToolButton>
-#include <QString>
-#include <QHBoxLayout>
-#include <QSize>
-#include <QDir>
-#include <QFile>
-#include <QMouseEvent>
-#include <QAction>
-#include <QMenu>
-#include <QTimer>
-#include <QResizeEvent>
-
-#include <LuminaXDG.h>
-
-class ItemWidget : public QFrame{
- Q_OBJECT
-public:
- //Overloaded Constructors for various uses
- // - Favorites (path/type)
- ItemWidget(QWidget *parent=0, QString itemPath="", QString type="unknown", bool goback=false);
- // - Generic Apps
- ItemWidget(QWidget *parent=0, XDGDesktop *item= 0);
-
- ~ItemWidget();
-
- bool gooditem;
-
- void triggerItem(); //trigger this item - just as if it was clicked on
-
-private:
- QToolButton *actButton;
- QMenu *contextMenu;
- QLabel *icon, *name;
- bool isDirectory, isShortcut, menuopen;
- QString linkPath, iconPath, text;
- QTimer *menureset;
-
- void createWidget();
-
- void setupContextMenu();
- void setupActions(XDGDesktop*);
-
- void updateItems(); //update the text/icon to match sizes
-
-private slots:
- void PinToDesktop();
- void RemoveFavorite();
- void AddFavorite();
- void RemoveQL();
- void AddQL();
- void ItemClicked();
- void actionClicked(QAction*);
- //Functions to fix the submenu open/close issues
- void actionMenuOpen(){
- if(menureset->isActive()){ menureset->stop(); }
- menuopen = true;
- }
- void resetmenuflag(){ menuopen = false; } //tied to the "menureset" timer
- void actionMenuClosed(){ menureset->start(); }
-
-
-protected:
- void mouseReleaseEvent(QMouseEvent *event){
- if(menuopen){ resetmenuflag(); } //skip this event if a submenu was open
- else if(event->button() == Qt::RightButton && !icon->whatsThis().startsWith("chcat::::") ){
- menuopen = true;
- setupContextMenu();
- contextMenu->popup(event->globalPos());
- }else if(event->button() != Qt::NoButton){ ItemClicked(); }
- }
-
- void resizeEvent(QResizeEvent *ev){
- updateItems(); //update the sizing of everything
- QFrame::resizeEvent(ev); // do the normal procedures
- }
-
-signals:
- void NewShortcut();
- void RemovedShortcut();
- void RunItem(QString cmd);
- void toggleQuickLaunch(QString path, bool ok);
-
-};
-
-#endif
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemstart/LStartButton.cpp b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemstart/LStartButton.cpp
deleted file mode 100644
index f44add77..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemstart/LStartButton.cpp
+++ /dev/null
@@ -1,137 +0,0 @@
-//===========================================
-// Lumina-DE source code
-// Copyright (c) 2015, Ken Moore
-// Available under the 3-clause BSD license
-// See the LICENSE file for full details
-//===========================================
-#include "LStartButton.h"
-#include "../../LSession.h"
-
-#include <LuminaXDG.h>
-#include <LUtils.h> //This contains the "ResizeMenu" class
-
-LStartButtonPlugin::LStartButtonPlugin(QWidget *parent, QString id, bool horizontal) : LPPlugin(parent, id, horizontal){
- button = new QToolButton(this);
- button->setAutoRaise(true);
- button->setToolButtonStyle(Qt::ToolButtonIconOnly);
- 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);
- menu = new ResizeMenu(this);
- menu->setContentsMargins(1,1,1,1);
- connect(menu, SIGNAL(aboutToHide()), this, SIGNAL(MenuClosed()));
- connect(menu, SIGNAL(MenuResized(QSize)), this, SLOT(SaveMenuSize(QSize)) );
- startmenu = new StartMenu(this);
- connect(startmenu, SIGNAL(CloseMenu()), this, SLOT(closeMenu()) );
- connect(startmenu, SIGNAL(UpdateQuickLaunch(QStringList)), this, SLOT(updateQuickLaunch(QStringList)));
- menu->setContents(startmenu);
- QSize saved = LSession::handle()->DesktopPluginSettings()->value("panelPlugs/"+this->type()+"/MenuSize", QSize(0,0)).toSize();
- if(!saved.isNull()){ startmenu->setFixedSize(saved); } //re-load the previously saved value
-
- button->setMenu(menu);
- connect(menu, SIGNAL(aboutToHide()), this, SLOT(updateButtonVisuals()) );
- QTimer::singleShot(0,this, SLOT(OrientationChange())); //Update icons/sizes
- QTimer::singleShot(0, startmenu, SLOT(ReLoadQuickLaunch()) );
- //Setup the global shortcut handling for opening the start menu
- connect(QApplication::instance(), SIGNAL(StartButtonActivated()), this, SLOT(shortcutActivated()) );
- LSession::handle()->registerStartButton(this->type());
-}
-
-LStartButtonPlugin::~LStartButtonPlugin(){
- LSession::handle()->unregisterStartButton(this->type());
-}
-
-void LStartButtonPlugin::updateButtonVisuals(){
- button->setToolTip(tr(""));
- button->setText( SYSTEM::user() );
- button->setIcon( LXDG::findIcon("start-here-lumina","Lumina-DE") ); //force icon refresh
-}
-
-void LStartButtonPlugin::updateQuickLaunch(QStringList apps){
- //First clear any obsolete apps
- QStringList old;
- //qDebug() << "Update QuickLaunch Buttons";
- for(int i=0; i<QUICKL.length(); i++){
- if( !apps.contains(QUICKL[i]->whatsThis()) ){
- //App was removed
- QUICKL.takeAt(i)->deleteLater();
- i--;
- }else{
- //App still listed - update the button
- old << QUICKL[i]->whatsThis(); //add the list of current buttons
- LFileInfo info(QUICKL[i]->whatsThis());
- QUICKL[i]->setIcon( LXDG::findIcon(info.iconfile(),"unknown") );
- if(info.isDesktopFile()){ QUICKL[i]->setToolTip( info.XDG()->name ); }
- else{ QUICKL[i]->setToolTip( info.fileName() ); }
- }
- }
- //Now go through and create any new buttons
- for(int i=0; i<apps.length(); i++){
- if( !old.contains(apps[i]) ){
- //New App
- LQuickLaunchButton *tmp = new LQuickLaunchButton(apps[i], this);
- QUICKL << tmp;
- LFileInfo info(apps[i]);
- tmp->setIcon( LXDG::findIcon( info.iconfile() ) );
- if(info.isDesktopFile()){ tmp->setToolTip( info.XDG()->name ); }
- else{ tmp->setToolTip( info.fileName() ); }
- //Now add the button to the layout and connect the signal/slots
- this->layout()->insertWidget(i+1,tmp); //"button" is always in slot 0
- connect(tmp, SIGNAL(Launch(QString)), this, SLOT(LaunchQuick(QString)) );
- connect(tmp, SIGNAL(Remove(QString)), this, SLOT(RemoveQuick(QString)) );
- }
- }
- //qDebug() << " - Done updateing QuickLaunch Buttons";
- QTimer::singleShot(0,this, SLOT(OrientationChange())); //Update icons/sizes
-}
-
-void LStartButtonPlugin::LaunchQuick(QString file){
- //Need to get which button was clicked
- //qDebug() << "Quick Launch triggered:" << file;
- if(!file.isEmpty()){
- LSession::LaunchApplication("lumina-open \""+file+"\"");
- emit MenuClosed();
- }
-}
-
-void LStartButtonPlugin::RemoveQuick(QString file){
- //qDebug() << "Remove Quicklaunch Button:" << file;
- if(!file.isEmpty()){
- startmenu->UpdateQuickLaunch(file, false); //always a removal
- emit MenuClosed();
- }
-}
-
-void LStartButtonPlugin::SaveMenuSize(QSize sz){
- //Save this size for the menu
- LSession::handle()->DesktopPluginSettings()->setValue("panelPlugs/"+this->type()+"/MenuSize", sz);
-}
-
-// ========================
-// PRIVATE FUNCTIONS
-// ========================
-void LStartButtonPlugin::openMenu(){
- if(menu->isVisible()){ return; } //don't re-show it - already open
- //TESTING CODE TO SEE IF THIS MAKES IT RECOVER MEMORY
- /*StartMenu *old = startmenu;
- startmenu = new StartMenu(this);
- connect(startmenu, SIGNAL(CloseMenu()), this, SLOT(closeMenu()) );
- connect(startmenu, SIGNAL(UpdateQuickLaunch(QStringList)), this, SLOT(updateQuickLaunch(QStringList)));
- menu->setContents(startmenu);
- if(old!=0){ old->deleteLater(); }*/
-//--------
- startmenu->UpdateMenu();
- button->showMenu();
-}
-
-void LStartButtonPlugin::closeMenu(){
- menu->hide();
-}
-
-void LStartButtonPlugin::shortcutActivated(){
- if(LSession::handle()->registerStartButton(this->type())){
- if(menu->isVisible()){ closeMenu(); }
- else{ this->activateWindow(); openMenu(); }
- }
-}
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemstart/LStartButton.h b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemstart/LStartButton.h
deleted file mode 100644
index d46bb1be..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemstart/LStartButton.h
+++ /dev/null
@@ -1,113 +0,0 @@
-//===========================================
-// 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 the main button that allow the user to run
-// applications or logout of the desktop
-//===========================================
-#ifndef _LUMINA_DESKTOP_START_MENU_PLUGIN_H
-#define _LUMINA_DESKTOP_START_MENU_PLUGIN_H
-
-// Qt includes
-#include <QMenu>
-#include <QWidgetAction>
-#include <QToolButton>
-#include <QString>
-#include <QWidget>
-#include <QMenu>
-
-// Lumina-desktop includes
-//#include "../../Globals.h"
-#include "../LPPlugin.h" //main plugin widget
-
-// libLumina includes
-#include <LuminaXDG.h>
-#include <LUtils.h>
-#include <ResizeMenu.h>
-
-#include "StartMenu.h"
-
-//Simple Tool Button For QuickLaunch Items
-class LQuickLaunchButton : public QToolButton{
- Q_OBJECT
-signals:
- void Launch(QString);
- void Remove(QString);
-
-private slots:
- void rmentry(){
- emit Remove(this->whatsThis());
- }
- void launchentry(){
- emit Launch(this->whatsThis());
- }
-
-public:
- LQuickLaunchButton(QString path, QWidget* parent = 0) : QToolButton(parent){
- this->setWhatsThis(path);
- this->setMenu(new QMenu(this));
- this->setContextMenuPolicy(Qt::CustomContextMenu);
- this->menu()->addAction( LXDG::findIcon("edit-delete",""), tr("Remove from Quicklaunch"), this, SLOT(rmentry()) );
- connect(this, SIGNAL(clicked()), this, SLOT(launchentry()) );
- connect(this, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(showMenu()) );
- }
- ~LQuickLaunchButton(){}
-
-};
-
-// PANEL PLUGIN BUTTON
-class LStartButtonPlugin : public LPPlugin{
- Q_OBJECT
-
-public:
- LStartButtonPlugin(QWidget *parent = 0, QString id = "systemstart", bool horizontal=true);
- ~LStartButtonPlugin();
-
-private:
- ResizeMenu *menu;
- //QWidgetAction *mact;
- StartMenu *startmenu;
- QToolButton *button;
- QList<LQuickLaunchButton*> QUICKL;
-
-private slots:
- void openMenu();
- void closeMenu();
- void shortcutActivated();
-
- void updateButtonVisuals();
-
- void updateQuickLaunch(QStringList);
- void LaunchQuick(QString);
- void RemoveQuick(QString);
- void SaveMenuSize(QSize);
-
-public slots:
- void OrientationChange(){
- if(this->layout()->direction()==QBoxLayout::LeftToRight){
- this->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::MinimumExpanding);
- button->setIconSize( QSize(this->height(), this->height()) );
- for(int i=0; i<QUICKL.length(); i++){ QUICKL[i]->setIconSize(QSize(this->height(), this->height())); }
- }else{
- this->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred);
- button->setIconSize( QSize(this->width(), this->width()) );
- for(int i=0; i<QUICKL.length(); i++){ QUICKL[i]->setIconSize(QSize(this->width(), this->width())); }
- }
- this->layout()->update();
- updateButtonVisuals();
- }
-
- void LocaleChange(){
- updateButtonVisuals();
- if(startmenu!=0){ startmenu->UpdateAll(); }
- }
-
- void ThemeChange(){
- updateButtonVisuals();
- if(startmenu!=0){ startmenu->UpdateAll(); }
- }
-};
-
-#endif
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemstart/StartMenu.cpp b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemstart/StartMenu.cpp
deleted file mode 100644
index d05ba22f..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemstart/StartMenu.cpp
+++ /dev/null
@@ -1,720 +0,0 @@
-//===========================================
-// Lumina-DE source code
-// Copyright (c) 2015, Ken Moore
-// Available under the 3-clause BSD license
-// See the LICENSE file for full details
-//===========================================
-#include "StartMenu.h"
-#include "ui_StartMenu.h"
-//#include <QtConcurrent>
-
-#include <LuminaOS.h>
-#include "../../LSession.h"
-#include <QtConcurrent>
-#include <QMessageBox>
-
-#include "ItemWidget.h"
-//#define SSAVER QString("xscreensaver-demo")
-
-StartMenu::StartMenu(QWidget *parent) : QWidget(parent), ui(new Ui::StartMenu){
- ui->setupUi(this); //load the designer file
- this->setMouseTracking(true);
- searchTimer = new QTimer(this);
- searchTimer->setInterval(300); //~1/3 second
- searchTimer->setSingleShot(true);
- connect(searchTimer, SIGNAL(timeout()), this, SLOT(startSearch()) );
- connect(LSession::handle()->applicationMenu(), SIGNAL(AppMenuUpdated()), this, SLOT(UpdateApps()) );
- connect(LSession::handle(), SIGNAL(FavoritesChanged()), this, SLOT(UpdateFavs()) );
- //Need to load the last used setting of the application list
- QString state = LSession::handle()->DesktopPluginSettings()->value("panelPlugs/systemstart/showcategories", "partial").toString();
- if(state=="partial"){ui->check_apps_showcats->setCheckState(Qt::PartiallyChecked); }
- else if(state=="true"){ ui->check_apps_showcats->setCheckState(Qt::Checked); }
- else{ ui->check_apps_showcats->setCheckState(Qt::Unchecked); }
- connect(ui->check_apps_showcats, SIGNAL(stateChanged(int)), this, SLOT(catViewChanged()) );
- UpdateAll();
- QTimer::singleShot(10, this,SLOT(UpdateApps()));
- QTimer::singleShot(10, this, SLOT(UpdateFavs()));
-}
-
-StartMenu::~StartMenu(){
-
-}
-
-void StartMenu::UpdateAll(){
- //Update all the icons/text on all the pages
-
- // Update Text
- ui->retranslateUi(this);
-
- //Update Icons
- ui->tool_goto_apps->setIcon(LXDG::findIcon("system-run",""));
- ui->tool_goto_settings->setIcon(LXDG::findIcon("preferences-system",""));
- ui->tool_launch_fm->setIcon(LXDG::findIcon("user-home",""));
- ui->tool_launch_desksettings->setIcon(LXDG::findIcon("preferences-desktop",""));
- ui->tool_lock->setIcon(LXDG::findIcon("system-lock-screen",""));
- ui->tool_goto_logout->setIcon(LXDG::findIcon("system-log-out",""));
- ui->tool_back->setIcon(LXDG::findIcon("go-previous",""));
- ui->tool_launch_deskinfo->setIcon(LXDG::findIcon("system-help",""));
-
- ui->tool_launch_mixer->setIcon( LXDG::findIcon("preferences-desktop-sound","") );
- ui->label_bright_icon->setPixmap( LXDG::findIcon("preferences-system-power-management","").pixmap(ui->tool_goto_apps->iconSize()) );
- ui->label_locale_icon->setPixmap( LXDG::findIcon("preferences-desktop-locale","").pixmap(ui->tool_goto_apps->iconSize()) );
- ui->tool_set_nextwkspace->setIcon(LXDG::findIcon("go-next-view",""));
- ui->tool_set_prevwkspace->setIcon(LXDG::findIcon("go-previous-view",""));
- ui->tool_logout->setIcon(LXDG::findIcon("system-log-out",""));
- ui->tool_restart->setIcon(LXDG::findIcon("system-reboot",""));
- ui->tool_shutdown->setIcon(LXDG::findIcon("system-shutdown",""));
- ui->tool_suspend->setIcon(LXDG::findIcon("system-suspend",""));
-
- //Update Visibility of system/session/OS options
- // -- Control Panel
- QString tmp = LOS::ControlPanelShortcut();
- if(QFile::exists(tmp)){
- ui->tool_launch_controlpanel->setWhatsThis(tmp);
- //Now read the file to see which icon to use
- XDGDesktop desk(tmp);
- if(desk.isValid()){
- ui->tool_launch_controlpanel->setIcon(LXDG::findIcon(desk.icon,"preferences-other"));
- }else{ ui->tool_launch_controlpanel->setVisible(false); }
- }else{ ui->tool_launch_controlpanel->setVisible(false); }
- // -- App Store
- tmp = LOS::AppStoreShortcut();
- if(QFile::exists(tmp)){
- ui->tool_launch_store->setWhatsThis(tmp);
- //Now read the file to see which icon to use
- XDGDesktop desk(tmp);
- if(desk.isValid()){
- ui->tool_launch_store->setIcon(LXDG::findIcon(desk.icon,"utilities-file-archiver"));
- }else{ ui->tool_launch_store->setVisible(false); }
- }else{ ui->tool_launch_store->setVisible(false); }
- //Audio Controls
- ui->frame_audio->setVisible( LOS::audioVolume() >=0 );
- //Brightness controls
- ui->frame_bright->setVisible( LOS::ScreenBrightness() >=0 );
- //Shutdown/restart
- bool ok = LOS::userHasShutdownAccess();
- ui->frame_leave_system->setWhatsThis(ok ? "allowed": "");
- ui->frame_leave_system->setVisible(ok);
- //Battery Availability
- ok = LOS::hasBattery();
- ui->label_status_battery->setWhatsThis(ok ? "allowed": "");
- ui->label_status_battery->setVisible(ok);
- //Locale availability
- QStringList locales = LUtils::knownLocales();
- ui->stackedWidget->setCurrentWidget(ui->page_main); //need to ensure the settings page is not active
- ui->combo_locale->clear();
- QString curr = LUtils::currentLocale();
- //qDebug() << "Update Locales:" << locales;
- //qDebug() << "Current Locale:" << curr;
- for(int i=0; i<locales.length(); i++){
- QLocale loc( (locales[i]=="pt") ? "pt_PT" : locales[i] );
- ui->combo_locale->addItem(loc.nativeLanguageName() +" ("+locales[i]+")", locales[i]); //Make the display text prettier later
- if(locales[i] == curr || locales[i] == curr.section("_",0,0) ){
- //Current Locale
- ui->combo_locale->setCurrentIndex(ui->combo_locale->count()-1); //the last item in the list right now
- }
- }
- ui->frame_locale->setVisible(locales.length() > 1);
- //User Name in status bar
- ui->label_status->setText( QString::fromLocal8Bit(getlogin()) );
- //Lumina Utilities
- ui->tool_launch_desksettings->setVisible(LUtils::isValidBinary("lumina-config"));
- ui->tool_launch_deskinfo->setVisible(LUtils::isValidBinary("lumina-info"));
-
-}
-
-void StartMenu::UpdateMenu(bool forceall){
- //qDebug() << "Update Menu" << forceall;
- ui->line_search->clear();
- if(forceall){ UpdateAll(); }
- //Quick update routine before the menu is made visible
- //qDebug() << "update favs";
- //UpdateFavs();
- //qDebug() << "check page";
- if(ui->stackedWidget->currentWidget() != ui->page_main){
- ui->stackedWidget->setCurrentWidget(ui->page_main); //just show the main page
- }else{
- on_stackedWidget_currentChanged(0); //refresh/update the main page every time
- }
- //qDebug() << "done";
-}
-
-void StartMenu::ReLoadQuickLaunch(){
- emit UpdateQuickLaunch( LSession::handle()->sessionSettings()->value("QuicklaunchApps",QStringList()).toStringList() );
-}
-
-void StartMenu::UpdateQuickLaunch(QString path, bool keep){
- QStringList QL = LSession::handle()->sessionSettings()->value("QuicklaunchApps",QStringList()).toStringList();
- if(keep){QL << path; }
- else{ QL.removeAll(path); }
- QL.removeDuplicates();
- LSession::handle()->sessionSettings()->setValue("QuicklaunchApps",QL);
- //LSession::handle()->sessionSettings()->sync();
- emit UpdateQuickLaunch(QL);
-}
-
-// ==========================
-// PRIVATE FUNCTIONS
-// ==========================
-/*void StartMenu::deleteChildren(QWidget *obj){
- if(obj->layout()==0){
- for(int i=0; i<obj->children().count(); i++){
- obj->children().at(i)->deleteLater();
- }
- }else{
-
- }
-}*/
-
-void StartMenu::ClearScrollArea(QScrollArea *area){
- //QWidget *old = area->takeWidget();
- //qDebug() << "Clear Scroll Area:";
- //if(old->layout()!=0){ qDebug() << " - Number of items in layout:" << old->layout()->count(); }
- //qDebug() << " - Number of Children:" << old->children().count();
- //deleteChildren(old); //make sure we *fully* delete these items to save memory
- //old->deleteLater();
- if(area == ui->scroll_favs){
- area->takeWidget()->deleteLater();
- }
- if(area->widget()==0){
- area->setWidget( new QWidget(area) ); //create a new widget in the scroll area
- }
- if(area->widget()->layout()==0){
- QVBoxLayout *layout = new QVBoxLayout(area->widget());
- layout->setSpacing(2);
- layout->setContentsMargins(3,1,3,1);
- layout->setDirection(QBoxLayout::TopToBottom);
- layout->setAlignment(Qt::AlignTop);
- area->widget()->setContentsMargins(0,0,0,0);
- area->widget()->setLayout(layout);
- }
- //Now clear the items in the layout
- while( area->widget()->layout()->count() >0 ){
- QLayoutItem *it = area->widget()->layout()->takeAt(0);
- //Need to delete both the widget and the layout item
- if(it->widget()!=0){ it->widget()->deleteLater(); }
- delete it;
- }
-}
-
-void StartMenu::SortScrollArea(QScrollArea *area){
- //qDebug() << "Sorting Scroll Area:";
- //Sort all the items in the scroll area alphabetically
- QLayout *lay = area->widget()->layout();
- QStringList items;
- for(int i=0; i<lay->count(); i++){
- items << lay->itemAt(i)->widget()->whatsThis();
- }
-
- items.sort();
- //qDebug() << " - Sorted Items:" << items;
- for(int i=0; i<items.length(); i++){
- if(items[i].isEmpty()){ continue; }
- //QLayouts are weird in that they can only add items to the end - need to re-insert almost every item
- for(int j=0; j<lay->count(); j++){
- //Find this item
- if(lay->itemAt(j)->widget()->whatsThis()==items[i]){
- //Found it - now move it if necessary
- //qDebug() << "Found Item:" << items[i] << i << j;
- lay->addItem( lay->takeAt(j) );
- break;
- }
- }
- }
-}
-
-void StartMenu::do_search(QString search, bool force){
- search = search.simplified(); //remove unneccesary whitespace
- if(search == CSearch && !force){
- //nothing new - just ensure the page is visible
- if(ui->stackedWidget->currentWidget()!=ui->page_search ){ ui->stackedWidget->setCurrentWidget(ui->page_search); }
- return;
- }else if(search.isEmpty()){
- CSearch.clear();
- if(ui->stackedWidget->currentWidget()==ui->page_search ){ on_tool_back_clicked(); }
- return;
- }
- //Got a search term - check it
- CSearch = search; //save this for comparison later
- qDebug() << "Search for term:" << search;
- ClearScrollArea(ui->scroll_search);
- topsearch.clear();
- //Now find any items which match the search
- QStringList found; //syntax: [<sorter>::::<mimetype>::::<filepath>]
- QString tmp = search;
- if(LUtils::isValidBinary(tmp)){ found << "0::::application/x-executable::::"+tmp; }
- QList<XDGDesktop*> apps = LSession::handle()->applicationMenu()->currentAppHash()->value("All");
- for(int i=0; i<apps.length(); i++){
- int priority = -1;
- if(apps[i]->name.toLower()==search.toLower()){ priority = 10; }
- else if(apps[i]->name.startsWith(search, Qt::CaseInsensitive)){ priority = 15; }
- else if(apps[i]->name.contains(search, Qt::CaseInsensitive)){ priority = 19; }
- else if(apps[i]->genericName.contains(search, Qt::CaseInsensitive)){ priority = 20; }
- else if(apps[i]->comment.contains(search, Qt::CaseInsensitive)){ priority = 30; }
- //Can add other filters here later
-
- if(priority>0){
- found << QString::number(priority)+"::::app::::"+apps[i]->filePath;
- }
- }
- found.sort(Qt::CaseInsensitive); //sort by priority/type (lower numbers are higher on list)
- //qDebug() << "Sorted Items:" << found;
- //Now add the items to the menu in order
- for(int i=0; i<found.length(); i++){
- if( !QFile::exists(found[i].section("::::",2,-1)) ){ continue; } //invalid favorite - skip it
- if(topsearch.isEmpty()){ topsearch = found[i].section("::::",2,-1); }
- ItemWidget *it = 0;
- if( found[i].section("::::",2,-1).endsWith(".desktop")){
- XDGDesktop item(found[i].section("::::",2,-1));
- if(item.isValid()){ it = new ItemWidget(ui->scroll_favs->widget(), &item); }
- }else{
- it = new ItemWidget(ui->scroll_favs->widget(), found[i].section("::::",2,-1), found[i].section("::::",1,1) );
- }
- if(it==0){ continue; }
- if(!it->gooditem){ it->deleteLater(); continue; } //invalid for some reason
- ui->scroll_search->widget()->layout()->addWidget(it);
- connect(it, SIGNAL(NewShortcut()), this, SLOT(UpdateFavs()) );
- connect(it, SIGNAL(RemovedShortcut()), this, SLOT(UpdateFavs()) );
- connect(it, SIGNAL(RunItem(QString)), this, SLOT(LaunchItem(QString)) );
- connect(it, SIGNAL(toggleQuickLaunch(QString, bool)), this, SLOT(UpdateQuickLaunch(QString, bool)) );
- if(i%3==0){
- QApplication::processEvents();
- if(searchTimer->isActive()){ return; } //search changed - go ahead and stop here
- }
- }
- ui->stackedWidget->setCurrentWidget(ui->page_search);
-}
-
-bool StartMenu::promptAboutUpdates(bool &skip){
- QString pending = LOS::systemPendingUpdates();
- if(pending.isEmpty()){ skip = false; } //continue without skip
- else{
- QMessageBox dlg(QMessageBox::Question, tr("Apply Updates?"), tr("You have system updates waiting to be applied! Do you wish to install them now?"), QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel, this);
- dlg.setDetailedText(pending);
- dlg.setDefaultButton(QMessageBox::Yes);
- dlg.show();
- int ret = dlg.exec();
- if(ret == QMessageBox::Cancel){ return false; } //do not continue
- else{ skip = (ret==QMessageBox::No); }
- }
- return true;
-}
-
-// ========================
-// PRIVATE SLOTS
-// ========================
-void StartMenu::LaunchItem(QString path, bool fix){
- if(path.startsWith("chcat::::")){
- ChangeCategory(path.section("::::",1,50));
- return;
- }
- qDebug() << "Launching Item:" << path << fix;
- if(!path.isEmpty()){
- qDebug() << "Launch Application:" << path;
- if( fix && !path.startsWith("lumina-open") ){ LSession::LaunchApplication("lumina-open \""+path+"\""); }
- else{ LSession::LaunchApplication(path); }
- emit CloseMenu(); //so the menu container will close
- }
-}
-
-void StartMenu::ChangeCategory(QString cat){
- //This only happens on user interaction - make sure to run the update routine in a separate thread
- CCat = cat;
- UpdateApps();
- //QtConcurrent::run(this, &StartMenu::UpdateApps);
-}
-
-//Listing Update routines
-void StartMenu::UpdateApps(){
- ClearScrollArea(ui->scroll_apps);
- //Now assemble the apps list
- //qDebug() << "Update Apps:";// << CCat << ui->check_apps_showcats->checkState();
- if(ui->check_apps_showcats->checkState() == Qt::PartiallyChecked){
- //qDebug() << " - Partially Checked";
- //Show a single page of apps, but still divided up by categories
- CCat.clear();
- QStringList cats = LSession::handle()->applicationMenu()->currentAppHash()->keys();
- cats.sort();
- cats.removeAll("All");
- for(int c=0; c<cats.length(); c++){
- QList<XDGDesktop*> apps = LSession::handle()->applicationMenu()->currentAppHash()->value(cats[c]);
- if(apps.isEmpty()){ continue; }
- //Add the category label to the scroll
- QLabel *catlabel = new QLabel("<b>"+cats[c]+"</b>",ui->scroll_apps->widget());
- catlabel->setAlignment(Qt::AlignCenter);
- ui->scroll_apps->widget()->layout()->addWidget(catlabel);
- //Now add all the apps for this category
- for(int i=0; i<apps.length(); i++){
- ItemWidget *it = new ItemWidget(ui->scroll_apps->widget(), apps[i] );
- if(!it->gooditem){ qDebug() << "Invalid Item:"; it->deleteLater(); continue; } //invalid for some reason
- ui->scroll_apps->widget()->layout()->addWidget(it);
- connect(it, SIGNAL(NewShortcut()), this, SLOT(UpdateFavs()) );
- connect(it, SIGNAL(RemovedShortcut()), this, SLOT(UpdateFavs()) );
- connect(it, SIGNAL(RunItem(QString)), this, SLOT(LaunchItem(QString)) );
- connect(it, SIGNAL(toggleQuickLaunch(QString, bool)), this, SLOT(UpdateQuickLaunch(QString, bool)) );
- }
- }
-
- }else if(ui->check_apps_showcats->checkState() == Qt::Checked){
- //qDebug() << " - Checked";
- //Only show categories to start with - and have the user click-into a cat to see apps
- if(CCat.isEmpty()){
- //No cat selected yet - show cats only
- QStringList cats = LSession::handle()->applicationMenu()->currentAppHash()->keys();
- cats.sort();
- cats.removeAll("All"); //This is not a "real" category
- for(int c=0; c<cats.length(); c++){
- ItemWidget *it = new ItemWidget(ui->scroll_apps->widget(), cats[c], "chcat::::"+cats[c] );
- if(!it->gooditem){ qDebug() << "Invalid Item:";it->deleteLater(); continue; } //invalid for some reason
- ui->scroll_apps->widget()->layout()->addWidget(it);
- connect(it, SIGNAL(RunItem(QString)), this, SLOT(LaunchItem(QString)) );
- }
- }else{
- //qDebug() << "Show Apps For category:" << CCat;
- //Show the "go back" button
- ItemWidget *it = new ItemWidget(ui->scroll_apps->widget(), CCat, "chcat::::"+CCat, true);
- //if(!it->gooditem){ continue; } //invalid for some reason
- ui->scroll_apps->widget()->layout()->addWidget(it);
- connect(it, SIGNAL(RunItem(QString)), this, SLOT(LaunchItem(QString)) );
- //Show apps for this cat
- QList<XDGDesktop*> apps = LSession::handle()->applicationMenu()->currentAppHash()->value(CCat);
- for(int i=0; i<apps.length(); i++){
- //qDebug() << " - App:" << apps[i].name;
- ItemWidget *it = new ItemWidget(ui->scroll_apps->widget(), apps[i] );
- if(!it->gooditem){ qDebug() << "Invalid Item:"; it->deleteLater(); continue; } //invalid for some reason
- ui->scroll_apps->widget()->layout()->addWidget(it);
- connect(it, SIGNAL(NewShortcut()), this, SLOT(UpdateFavs()) );
- connect(it, SIGNAL(RemovedShortcut()), this, SLOT(UpdateFavs()) );
- connect(it, SIGNAL(RunItem(QString)), this, SLOT(LaunchItem(QString)) );
- connect(it, SIGNAL(toggleQuickLaunch(QString, bool)), this, SLOT(UpdateQuickLaunch(QString, bool)) );
- }
- }
-
- }else{
- //qDebug() << " - Not Checked";
- //No categories at all - just alphabetize all the apps
- QList<XDGDesktop*> apps = LSession::handle()->applicationMenu()->currentAppHash()->value("All");
- CCat.clear();
- //Now add all the apps for this category
- for(int i=0; i<apps.length(); i++){
- ItemWidget *it = new ItemWidget(ui->scroll_apps->widget(), apps[i] );
- if(!it->gooditem){ it->deleteLater(); continue; } //invalid for some reason
- ui->scroll_apps->widget()->layout()->addWidget(it);
- connect(it, SIGNAL(NewShortcut()), this, SLOT(UpdateFavs()) );
- connect(it, SIGNAL(RemovedShortcut()), this, SLOT(UpdateFavs()) );
- connect(it, SIGNAL(RunItem(QString)), this, SLOT(LaunchItem(QString)) );
- connect(it, SIGNAL(toggleQuickLaunch(QString, bool)), this, SLOT(UpdateQuickLaunch(QString, bool)) );
- }
- }
-
-
-}
-
-void StartMenu::UpdateFavs(){
- //SYNTAX NOTE: (per-line) "<name>::::[dir/app/<mimetype>]::::<path>"
- QStringList newfavs = LDesktopUtils::listFavorites();
- if(favs == newfavs){ return; } //nothing to do - same as before
- favs = newfavs;
- ClearScrollArea(ui->scroll_favs);
- favs.sort();
- //Iterate over types of favorites
- QStringList rest = favs;
- QStringList tmp;
- for(int type = 0; type<3; type++){
- if(type==0){ tmp = favs.filter("::::app::::"); } //apps first
- else if(type==1){ tmp = favs.filter("::::dir::::"); } //dirs next
- else{ tmp = rest; } //everything left over
- if(type==1){
- SortScrollArea(ui->scroll_favs);
- //Need to run a special routine for sorting the apps (already in the widget)
- //qDebug() << "Sort App Widgets...";
- // Since each app actually might have a different name listed within the file
- /*QLayout *lay = ui->scroll_favs->widget()->layout();
- QStringList items;
- for(int i=0; i<lay->count(); i++){
- items << lay->itemAt(i)->widget()->whatsThis().toLower();
- }
-
- items.sort();
- // qDebug() << " - Sorted Items:" << items;
- for(int i=0; i<items.length(); i++){
- if(items[i].isEmpty()){ continue; }
- //QLayouts are weird in that they can only add items to the end - need to re-insert almost every item
- for(int j=0; j<lay->count(); j++){
- //Find this item
- if(lay->itemAt(j)->widget()->whatsThis().toLower()==items[i]){
- //Found it - now move it if necessary
- //qDebug() << "Found Item:" << items[i] << i << j;
- lay->addItem( lay->takeAt(j) );
- break;
- }
- }
- }*/
-
- }//end of special app sorting routine
- tmp.sort(); //Sort alphabetically by name (dirs/files)
- for(int i=0; i<tmp.length(); i++){
- if(type<2){ rest.removeAll(tmp[i]); }
- if( !QFile::exists(tmp[i].section("::::",2,-1)) ){ continue; } //invalid favorite - skip it
- ItemWidget *it = 0;
- if( tmp[i].section("::::",2,-1).endsWith(".desktop")){
- XDGDesktop item(tmp[i].section("::::",2,-1));
- if(item.isValid()){ it = new ItemWidget(ui->scroll_favs->widget(), &item); }
- }else{
- it = new ItemWidget(ui->scroll_favs->widget(), tmp[i].section("::::",2,-1), tmp[i].section("::::",1,1) );
- }
- if(it==0){ continue; }
- if(!it->gooditem){ it->deleteLater(); continue; } //invalid for some reason
- ui->scroll_favs->widget()->layout()->addWidget(it);
- connect(it, SIGNAL(NewShortcut()), this, SLOT(UpdateFavs()) );
- connect(it, SIGNAL(RemovedShortcut()), this, SLOT(UpdateFavs()) );
- connect(it, SIGNAL(RunItem(QString)), this, SLOT(LaunchItem(QString)) );
- connect(it, SIGNAL(toggleQuickLaunch(QString, bool)), this, SLOT(UpdateQuickLaunch(QString, bool)) );
- }
- //QApplication::processEvents();
- } //end loop over types
- ui->scroll_favs->update();
- //qDebug() << "End updateFavs";
-}
-
-// Page update routines
-void StartMenu::on_stackedWidget_currentChanged(int val){
- QWidget *page = ui->stackedWidget->widget(val);
- ui->tool_back->setVisible(page != ui->page_main);
- ui->line_search->setFocus();
-
- //Now the page specific updates
- if(page == ui->page_main){
- if(!ui->label_status_battery->whatsThis().isEmpty()){
- //Battery available - update the status button
- int charge = LOS::batteryCharge();
- QString TT, ICON;
- if(charge<=5){ ICON="-caution"; }
- else if(charge<=20){ ICON="-040"; }
- else if(charge<=70){ ICON="-060"; }
- else if(charge<=90){ ICON="-080"; }
- else{ ICON="-100"; }
- if(LOS::batteryIsCharging()){
- if(charge>=80){ ICON.clear(); } //for charging, there is no suffix to the icon name over 80%
- ICON.prepend("battery-charging");
- TT = QString(tr("%1% (Plugged In)")).arg(QString::number(charge));
- }else{
- ICON.prepend("battery");
- int secs = LOS::batterySecondsLeft();
- if(secs>1){ TT = QString(tr("%1% (%2 Estimated)")).arg(QString::number(charge), LUtils::SecondsToDisplay(secs)); }
- else{ TT = QString(tr("%1% Remaining")).arg(QString::number(charge)); }
- }
- //qDebug() << " Battery Icon:" << ICON << val << TT
- ui->label_status_battery->setPixmap( LXDG::findIcon(ICON,"").pixmap(ui->tool_goto_apps->iconSize()/2) );
- ui->label_status_battery->setToolTip(TT);
- }
- //Network Status
- ui->label_status_network->clear(); //not implemented yet
- }else if(page == ui->page_apps){
- //Nothing needed for this page explicitly
- }else if( page == ui->page_settings){
- // -- Workspaces
- int tot = LSession::handle()->XCB->NumberOfWorkspaces();
- if(tot>1){
- ui->frame_wkspace->setVisible(true);
- int cur = LSession::handle()->XCB->CurrentWorkspace();
- ui->label_wkspace->setText( QString(tr("Workspace %1/%2")).arg(QString::number(cur+1), QString::number(tot)) );
- }else{
- ui->frame_wkspace->setVisible(false);
- }
- // -- Brightness Controls
- int tmp = LOS::ScreenBrightness();
- ui->frame_bright->setVisible(tmp >= 0);
- if(tmp >= 0){ ui->slider_bright->setValue(tmp); }
- // -- Audio Controls
- tmp = LOS::audioVolume();
- ui->frame_audio->setVisible(tmp >= 0);
- if(tmp >= 0){ ui->slider_volume->setValue(tmp); }
- }else if(page == ui->page_leave){
- if( !ui->frame_leave_system->whatsThis().isEmpty() ){
- //This frame is allowed/visible - need to adjust the shutdown detection
- bool updating = LOS::systemPerformingUpdates();
- ui->tool_restart->setEnabled(!updating);
- ui->tool_shutdown->setEnabled(!updating);
- ui->label_updating->setVisible(updating); //to let the user know *why* they can't shutdown/restart right now
- }
- ui->frame_leave_suspend->setVisible( LOS::systemCanSuspend() );
- }
-
-}
-
-void StartMenu::catViewChanged(){
- QString state;
- switch(ui->check_apps_showcats->checkState()){
- case Qt::Checked:
- state = "true";
- break;
- case Qt::PartiallyChecked:
- state = "partial";
- break;
- default:
- state = "false";
- }
- LSession::handle()->DesktopPluginSettings()->setValue("panelPlugs/systemstart/showcategories", state);
- //Now kick off the reload of the apps list
- UpdateApps();
- //QtConcurrent::run(this, &StartMenu::UpdateApps); //this was a direct user change - keep it thread safe
-}
-//Page Change Buttons
-void StartMenu::on_tool_goto_apps_clicked(){
- ui->stackedWidget->setCurrentWidget(ui->page_apps);
-}
-
-void StartMenu::on_tool_goto_settings_clicked(){
- ui->stackedWidget->setCurrentWidget(ui->page_settings);
-}
-
-void StartMenu::on_tool_goto_logout_clicked(){
- ui->stackedWidget->setCurrentWidget(ui->page_leave);
-}
-
-void StartMenu::on_tool_back_clicked(){
- ui->stackedWidget->setCurrentWidget(ui->page_main);
-}
-
-
-//Launch Buttons
-void StartMenu::on_tool_launch_controlpanel_clicked(){
- LaunchItem(ui->tool_launch_controlpanel->whatsThis());
-}
-
-void StartMenu::on_tool_launch_fm_clicked(){
- LaunchItem(QDir::homePath());
-}
-
-void StartMenu::on_tool_launch_store_clicked(){
- LaunchItem(ui->tool_launch_store->whatsThis());
-}
-
-void StartMenu::on_tool_launch_desksettings_clicked(){
- LaunchItem("lumina-config", false);
-}
-
-void StartMenu::on_tool_launch_deskinfo_clicked(){
- LaunchItem("lumina-info",false);
-}
-
-//Logout Buttons
-void StartMenu::on_tool_lock_clicked(){
- //QProcess::startDetached("xscreensaver-command -lock");
- LaunchItem("xscreensaver-command -lock",false);
-}
-
-void StartMenu::on_tool_logout_clicked(){
- emit CloseMenu();
- LSession::handle()->StartLogout();
-}
-
-void StartMenu::on_tool_restart_clicked(){
- emit CloseMenu();
- QCoreApplication::processEvents();
- bool skipupdates = false;
- if( !promptAboutUpdates(skipupdates) ){ return; }
- LSession::handle()->StartReboot(skipupdates);
-}
-
-void StartMenu::on_tool_shutdown_clicked(){
- emit CloseMenu();
- QCoreApplication::processEvents();
- bool skipupdates = false;
- if( !promptAboutUpdates(skipupdates) ){ return; }
- LSession::handle()->StartShutdown(skipupdates);
-}
-
-void StartMenu::on_tool_suspend_clicked(){
- //Make sure to lock the system first (otherwise anybody can access it again)
- emit CloseMenu();
- LUtils::runCmd("xscreensaver-command -lock");
- LOS::systemSuspend();
-}
-
-
-//Audio Volume
-void StartMenu::on_slider_volume_valueChanged(int val){
- ui->label_vol->setText(QString::number(val)+"%");
- LOS::setAudioVolume(val);
- //Also adjust the icon for the volume
- if(val<1){ ui->tool_mute_audio->setIcon(LXDG::findIcon("audio-volume-muted","")); }
- else if(val<33){ ui->tool_mute_audio->setIcon(LXDG::findIcon("audio-volume-low","")); }
- else if(val<66){ ui->tool_mute_audio->setIcon(LXDG::findIcon("audio-volume-medium","")); }
- else{ ui->tool_mute_audio->setIcon(LXDG::findIcon("audio-volume-high","")); }
-}
-
-void StartMenu::on_tool_launch_mixer_clicked(){
- if(LOS::hasMixerUtility()){
- emit CloseMenu();
- LOS::startMixerUtility();
- }
-}
-
-void StartMenu::on_tool_mute_audio_clicked(){
- static int lastvol = 50;
- if(ui->slider_volume->value()==0){ ui->slider_volume->setValue(lastvol); }
- else{
- lastvol = ui->slider_volume->value();
- ui->slider_volume->setValue(0);
- }
-}
-
-//Screen Brightness
-void StartMenu::on_slider_bright_valueChanged(int val){
- ui->label_bright->setText(QString::number(val)+"%");
- LOS::setScreenBrightness(val);
-}
-
-
-//Workspace
-void StartMenu::on_tool_set_nextwkspace_clicked(){
- int cur = LSession::handle()->XCB->CurrentWorkspace();
- int tot = LSession::handle()->XCB->NumberOfWorkspaces();
- //qDebug()<< "Next Workspace:" << cur << tot;
- cur++;
- if(cur>=tot){ cur = 0; } //back to beginning
- //qDebug() << " - New Current:" << cur;
- LSession::handle()->XCB->SetCurrentWorkspace(cur);
- ui->label_wkspace->setText( QString(tr("Workspace %1/%2")).arg(QString::number(cur+1), QString::number(tot)) );
-}
-
-void StartMenu::on_tool_set_prevwkspace_clicked(){
- int cur = LSession::handle()->XCB->CurrentWorkspace();
- int tot = LSession::handle()->XCB->NumberOfWorkspaces();
- //qDebug()<< "Next Workspace:" << cur << tot;
- cur--;
- if(cur<0){ cur = tot-1; } //back to end
- //qDebug() << " - New Current:" << cur;
- LSession::handle()->XCB->SetCurrentWorkspace(cur);
- ui->label_wkspace->setText( QString(tr("Workspace %1/%2")).arg(QString::number(cur+1), QString::number(tot)) );
-}
-
-
-//Locale
-void StartMenu::on_combo_locale_currentIndexChanged(int){
- //Get the currently selected Locale
- if(ui->stackedWidget->currentWidget()!=ui->page_settings){ return; }
- QString locale = ui->combo_locale->currentData().toString();
- emit CloseMenu();
- LSession::processEvents();
- LSession::handle()->switchLocale(locale);
-}
-
-
-//Search
-void StartMenu::on_line_search_textEdited(QString){
- if(searchTimer->isActive()){ searchTimer->stop(); }
- searchTimer->start();
-}
-
-void StartMenu::startSearch(){
- if(!this->isVisible()){ return; } //menu closed while timer was active
- do_search(ui->line_search->text(),false); //auto-launched
-}
-
-void StartMenu::on_line_search_returnPressed(){
- if(topsearch.isEmpty()){ return; }
- LaunchItem(topsearch);
-}
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemstart/StartMenu.h b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemstart/StartMenu.h
deleted file mode 100644
index 8ab04d94..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemstart/StartMenu.h
+++ /dev/null
@@ -1,105 +0,0 @@
-//===========================================
-// Lumina-DE source code
-// Copyright (c) 2015, Ken Moore
-// Available under the 3-clause BSD license
-// See the LICENSE file for full details
-//===========================================
-#ifndef _LUMINA_DESKTOP_SYSTEM_START_PANEL_PLUGIN_H
-#define _LUMINA_DESKTOP_SYSTEM_START_PANEL_PLUGIN_H
-
-#include <QWidget>
-#include <QScrollArea>
-#include <QMouseEvent>
-
-#include <LuminaXDG.h>
-
-namespace Ui{
- class StartMenu;
-};
-
-class StartMenu : public QWidget{
- Q_OBJECT
-public:
- StartMenu(QWidget *parent = 0);
- ~StartMenu();
-
-public slots:
- void UpdateAll(); //for re-translation/icon changes
- void UpdateMenu(bool forceall = false); //for item changes
-
- void ReLoadQuickLaunch();
- void UpdateQuickLaunch(QString, bool);
-
-private:
- Ui::StartMenu *ui;
- QStringList favs;
- QString CCat, CSearch, topsearch; //current category/search
- QTimer *searchTimer;
-
- //Simple utility functions
- //void deleteChildren(QWidget *obj); //recursive function
- void ClearScrollArea(QScrollArea *area);
- void SortScrollArea(QScrollArea *area);
- void do_search(QString search, bool force);
-
- bool promptAboutUpdates(bool &skip);
-
-private slots:
- void LaunchItem(QString path, bool fix = true);
-
- //Application/Favorite Listings
- void ChangeCategory(QString cat);
- void UpdateApps();
- void UpdateFavs();
-
- // Page update routines
- void on_stackedWidget_currentChanged(int); //page changed
- void catViewChanged(); //application categorization view mode changed
-
- //Page Change Buttons
- void on_tool_goto_apps_clicked();
- void on_tool_goto_settings_clicked();
- void on_tool_goto_logout_clicked();
- void on_tool_back_clicked();
-
- //Launch Buttons
- void on_tool_launch_controlpanel_clicked();
- void on_tool_launch_fm_clicked();
- void on_tool_launch_store_clicked();
- void on_tool_launch_desksettings_clicked();
- void on_tool_launch_deskinfo_clicked();
-
- //Logout Buttons
- void on_tool_lock_clicked();
- void on_tool_logout_clicked();
- void on_tool_restart_clicked();
- void on_tool_shutdown_clicked();
- void on_tool_suspend_clicked();
-
- //Audio Volume
- void on_slider_volume_valueChanged(int);
- void on_tool_launch_mixer_clicked();
- void on_tool_mute_audio_clicked();
-
- //Screen Brightness
- void on_slider_bright_valueChanged(int);
-
- //Workspace
- void on_tool_set_nextwkspace_clicked();
- void on_tool_set_prevwkspace_clicked();
-
- //Locale
- void on_combo_locale_currentIndexChanged(int);
-
- //Search
- void on_line_search_textEdited(QString);
- void startSearch();
- void on_line_search_returnPressed();
-
-signals:
- void CloseMenu();
- void UpdateQuickLaunch(QStringList);
-
-};
-
-#endif
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemstart/StartMenu.ui b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemstart/StartMenu.ui
deleted file mode 100644
index 74f61d7f..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemstart/StartMenu.ui
+++ /dev/null
@@ -1,1148 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>StartMenu</class>
- <widget class="QWidget" name="StartMenu">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>181</width>
- <height>405</height>
- </rect>
- </property>
- <property name="windowTitle">
- <string>Form</string>
- </property>
- <property name="styleSheet">
- <string notr="true">QScrollArea{background: transparent; border: none; }</string>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout">
- <property name="spacing">
- <number>2</number>
- </property>
- <property name="leftMargin">
- <number>1</number>
- </property>
- <property name="topMargin">
- <number>1</number>
- </property>
- <property name="rightMargin">
- <number>1</number>
- </property>
- <property name="bottomMargin">
- <number>1</number>
- </property>
- <item>
- <widget class="QLineEdit" name="line_search">
- <property name="placeholderText">
- <string>Type to search</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QStackedWidget" name="stackedWidget">
- <property name="currentIndex">
- <number>4</number>
- </property>
- <widget class="QWidget" name="page_main">
- <layout class="QVBoxLayout" name="verticalLayout_2">
- <property name="spacing">
- <number>2</number>
- </property>
- <property name="leftMargin">
- <number>0</number>
- </property>
- <property name="topMargin">
- <number>0</number>
- </property>
- <property name="rightMargin">
- <number>0</number>
- </property>
- <property name="bottomMargin">
- <number>0</number>
- </property>
- <item>
- <layout class="QHBoxLayout" name="horizontalLayout">
- <item>
- <widget class="QLabel" name="label_status_battery">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Minimum" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string notr="true">bat%</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QLabel" name="label_status_network">
- <property name="text">
- <string notr="true">netstat</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QLabel" name="label_status">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string notr="true"/>
- </property>
- <property name="alignment">
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item>
- <widget class="Line" name="line_14">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QScrollArea" name="scroll_favs">
- <property name="contextMenuPolicy">
- <enum>Qt::CustomContextMenu</enum>
- </property>
- <property name="styleSheet">
- <string notr="true"/>
- </property>
- <property name="frameShape">
- <enum>QFrame::NoFrame</enum>
- </property>
- <property name="frameShadow">
- <enum>QFrame::Plain</enum>
- </property>
- <property name="verticalScrollBarPolicy">
- <enum>Qt::ScrollBarAsNeeded</enum>
- </property>
- <property name="horizontalScrollBarPolicy">
- <enum>Qt::ScrollBarAlwaysOff</enum>
- </property>
- <property name="sizeAdjustPolicy">
- <enum>QAbstractScrollArea::AdjustToContents</enum>
- </property>
- <property name="widgetResizable">
- <bool>true</bool>
- </property>
- <property name="alignment">
- <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
- </property>
- <widget class="QWidget" name="scrollAreaWidgetContents">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>179</width>
- <height>177</height>
- </rect>
- </property>
- </widget>
- </widget>
- </item>
- <item>
- <widget class="Line" name="line_3">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QToolButton" name="tool_launch_fm">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="focusPolicy">
- <enum>Qt::NoFocus</enum>
- </property>
- <property name="text">
- <string>Browse Files</string>
- </property>
- <property name="iconSize">
- <size>
- <width>32</width>
- <height>32</height>
- </size>
- </property>
- <property name="toolButtonStyle">
- <enum>Qt::ToolButtonTextBesideIcon</enum>
- </property>
- <property name="autoRaise">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QToolButton" name="tool_goto_apps">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="focusPolicy">
- <enum>Qt::NoFocus</enum>
- </property>
- <property name="text">
- <string>Browse Applications</string>
- </property>
- <property name="iconSize">
- <size>
- <width>32</width>
- <height>32</height>
- </size>
- </property>
- <property name="toolButtonStyle">
- <enum>Qt::ToolButtonTextBesideIcon</enum>
- </property>
- <property name="autoRaise">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item>
- <widget class="Line" name="line">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QToolButton" name="tool_launch_controlpanel">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="focusPolicy">
- <enum>Qt::NoFocus</enum>
- </property>
- <property name="text">
- <string>Control Panel</string>
- </property>
- <property name="iconSize">
- <size>
- <width>32</width>
- <height>32</height>
- </size>
- </property>
- <property name="toolButtonStyle">
- <enum>Qt::ToolButtonTextBesideIcon</enum>
- </property>
- <property name="autoRaise">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QToolButton" name="tool_goto_settings">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="focusPolicy">
- <enum>Qt::NoFocus</enum>
- </property>
- <property name="text">
- <string>Preferences</string>
- </property>
- <property name="iconSize">
- <size>
- <width>32</width>
- <height>32</height>
- </size>
- </property>
- <property name="popupMode">
- <enum>QToolButton::InstantPopup</enum>
- </property>
- <property name="toolButtonStyle">
- <enum>Qt::ToolButtonTextBesideIcon</enum>
- </property>
- <property name="autoRaise">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item>
- <widget class="Line" name="line_2">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- </widget>
- </item>
- <item>
- <layout class="QHBoxLayout" name="horizontalLayout_6">
- <item>
- <widget class="QToolButton" name="tool_goto_logout">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="focusPolicy">
- <enum>Qt::NoFocus</enum>
- </property>
- <property name="styleSheet">
- <string notr="true">QToolButton::menu-arrow{ image: rightarrow-icon; }</string>
- </property>
- <property name="text">
- <string>Leave</string>
- </property>
- <property name="iconSize">
- <size>
- <width>32</width>
- <height>32</height>
- </size>
- </property>
- <property name="popupMode">
- <enum>QToolButton::DelayedPopup</enum>
- </property>
- <property name="toolButtonStyle">
- <enum>Qt::ToolButtonTextBesideIcon</enum>
- </property>
- <property name="autoRaise">
- <bool>true</bool>
- </property>
- <property name="arrowType">
- <enum>Qt::NoArrow</enum>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QToolButton" name="tool_lock">
- <property name="focusPolicy">
- <enum>Qt::NoFocus</enum>
- </property>
- <property name="text">
- <string notr="true">lock</string>
- </property>
- <property name="iconSize">
- <size>
- <width>32</width>
- <height>32</height>
- </size>
- </property>
- <property name="autoRaise">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- </layout>
- </widget>
- <widget class="QWidget" name="page_apps">
- <layout class="QVBoxLayout" name="verticalLayout_3">
- <property name="spacing">
- <number>2</number>
- </property>
- <property name="leftMargin">
- <number>0</number>
- </property>
- <property name="topMargin">
- <number>0</number>
- </property>
- <property name="rightMargin">
- <number>0</number>
- </property>
- <property name="bottomMargin">
- <number>0</number>
- </property>
- <item>
- <widget class="QToolButton" name="tool_launch_store">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="focusPolicy">
- <enum>Qt::NoFocus</enum>
- </property>
- <property name="text">
- <string>Manage Applications</string>
- </property>
- <property name="iconSize">
- <size>
- <width>32</width>
- <height>32</height>
- </size>
- </property>
- <property name="toolButtonStyle">
- <enum>Qt::ToolButtonTextBesideIcon</enum>
- </property>
- <property name="autoRaise">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item>
- <widget class="Line" name="line_15">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QCheckBox" name="check_apps_showcats">
- <property name="focusPolicy">
- <enum>Qt::NoFocus</enum>
- </property>
- <property name="text">
- <string>Show Categories</string>
- </property>
- <property name="checked">
- <bool>true</bool>
- </property>
- <property name="tristate">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item>
- <widget class="Line" name="line_4">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QScrollArea" name="scroll_apps">
- <property name="horizontalScrollBarPolicy">
- <enum>Qt::ScrollBarAlwaysOff</enum>
- </property>
- <property name="sizeAdjustPolicy">
- <enum>QAbstractScrollArea::AdjustToContents</enum>
- </property>
- <property name="widgetResizable">
- <bool>true</bool>
- </property>
- <widget class="QWidget" name="scrollAreaWidgetContents_2">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>179</width>
- <height>284</height>
- </rect>
- </property>
- </widget>
- </widget>
- </item>
- <item>
- <widget class="Line" name="line_5">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- <widget class="QWidget" name="page_settings">
- <layout class="QVBoxLayout" name="verticalLayout_9">
- <property name="spacing">
- <number>2</number>
- </property>
- <property name="leftMargin">
- <number>0</number>
- </property>
- <property name="topMargin">
- <number>0</number>
- </property>
- <property name="rightMargin">
- <number>0</number>
- </property>
- <property name="bottomMargin">
- <number>0</number>
- </property>
- <item>
- <layout class="QHBoxLayout" name="horizontalLayout_7">
- <item>
- <widget class="QToolButton" name="tool_launch_desksettings">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="focusPolicy">
- <enum>Qt::NoFocus</enum>
- </property>
- <property name="text">
- <string>Configure Desktop</string>
- </property>
- <property name="iconSize">
- <size>
- <width>32</width>
- <height>32</height>
- </size>
- </property>
- <property name="toolButtonStyle">
- <enum>Qt::ToolButtonTextBesideIcon</enum>
- </property>
- <property name="autoRaise">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QToolButton" name="tool_launch_deskinfo">
- <property name="focusPolicy">
- <enum>Qt::NoFocus</enum>
- </property>
- <property name="text">
- <string notr="true">info</string>
- </property>
- <property name="iconSize">
- <size>
- <width>32</width>
- <height>32</height>
- </size>
- </property>
- <property name="autoRaise">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item>
- <widget class="Line" name="line_8">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QFrame" name="frame_audio">
- <property name="frameShape">
- <enum>QFrame::NoFrame</enum>
- </property>
- <property name="frameShadow">
- <enum>QFrame::Raised</enum>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout_8">
- <property name="leftMargin">
- <number>0</number>
- </property>
- <property name="topMargin">
- <number>0</number>
- </property>
- <property name="rightMargin">
- <number>0</number>
- </property>
- <property name="bottomMargin">
- <number>0</number>
- </property>
- <item>
- <layout class="QHBoxLayout" name="horizontalLayout_5">
- <item>
- <widget class="QToolButton" name="tool_mute_audio">
- <property name="focusPolicy">
- <enum>Qt::NoFocus</enum>
- </property>
- <property name="text">
- <string notr="true"/>
- </property>
- <property name="iconSize">
- <size>
- <width>32</width>
- <height>32</height>
- </size>
- </property>
- <property name="autoRaise">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item>
- <layout class="QVBoxLayout" name="verticalLayout_11">
- <item>
- <widget class="QSlider" name="slider_volume">
- <property name="focusPolicy">
- <enum>Qt::NoFocus</enum>
- </property>
- <property name="maximum">
- <number>100</number>
- </property>
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QLabel" name="label_vol">
- <property name="text">
- <string notr="true">vol%</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item>
- <widget class="QToolButton" name="tool_launch_mixer">
- <property name="focusPolicy">
- <enum>Qt::NoFocus</enum>
- </property>
- <property name="text">
- <string notr="true"/>
- </property>
- <property name="iconSize">
- <size>
- <width>32</width>
- <height>32</height>
- </size>
- </property>
- <property name="autoRaise">
- <bool>false</bool>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item>
- <widget class="Line" name="line_7">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- <item>
- <widget class="QFrame" name="frame_bright">
- <property name="frameShape">
- <enum>QFrame::NoFrame</enum>
- </property>
- <property name="frameShadow">
- <enum>QFrame::Raised</enum>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout_7">
- <property name="leftMargin">
- <number>0</number>
- </property>
- <property name="topMargin">
- <number>0</number>
- </property>
- <property name="rightMargin">
- <number>0</number>
- </property>
- <property name="bottomMargin">
- <number>0</number>
- </property>
- <item>
- <layout class="QHBoxLayout" name="horizontalLayout_3">
- <item>
- <widget class="QLabel" name="label_bright_icon">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>32</width>
- <height>32</height>
- </size>
- </property>
- <property name="text">
- <string notr="true"/>
- </property>
- <property name="alignment">
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QSlider" name="slider_bright">
- <property name="focusPolicy">
- <enum>Qt::NoFocus</enum>
- </property>
- <property name="minimum">
- <number>10</number>
- </property>
- <property name="maximum">
- <number>100</number>
- </property>
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QLabel" name="label_bright">
- <property name="text">
- <string notr="true">br%</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item>
- <widget class="Line" name="line_9">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- <item>
- <widget class="QFrame" name="frame_wkspace">
- <property name="frameShape">
- <enum>QFrame::NoFrame</enum>
- </property>
- <property name="frameShadow">
- <enum>QFrame::Raised</enum>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout_4">
- <property name="leftMargin">
- <number>0</number>
- </property>
- <property name="topMargin">
- <number>0</number>
- </property>
- <property name="rightMargin">
- <number>0</number>
- </property>
- <property name="bottomMargin">
- <number>0</number>
- </property>
- <item>
- <layout class="QHBoxLayout" name="horizontalLayout_4">
- <item>
- <widget class="QToolButton" name="tool_set_prevwkspace">
- <property name="focusPolicy">
- <enum>Qt::NoFocus</enum>
- </property>
- <property name="text">
- <string notr="true">prev</string>
- </property>
- <property name="iconSize">
- <size>
- <width>32</width>
- <height>32</height>
- </size>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QLabel" name="label_wkspace">
- <property name="text">
- <string notr="true">workspace #</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QToolButton" name="tool_set_nextwkspace">
- <property name="focusPolicy">
- <enum>Qt::NoFocus</enum>
- </property>
- <property name="text">
- <string notr="true">next</string>
- </property>
- <property name="iconSize">
- <size>
- <width>32</width>
- <height>32</height>
- </size>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item>
- <widget class="Line" name="line_10">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- <item>
- <widget class="QFrame" name="frame_locale">
- <property name="frameShape">
- <enum>QFrame::NoFrame</enum>
- </property>
- <property name="frameShadow">
- <enum>QFrame::Raised</enum>
- </property>
- <layout class="QHBoxLayout" name="horizontalLayout_2">
- <property name="leftMargin">
- <number>0</number>
- </property>
- <property name="topMargin">
- <number>0</number>
- </property>
- <property name="rightMargin">
- <number>0</number>
- </property>
- <property name="bottomMargin">
- <number>0</number>
- </property>
- <item>
- <widget class="QLabel" name="label_locale_icon">
- <property name="text">
- <string notr="true">Locale:</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QComboBox" name="combo_locale">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="focusPolicy">
- <enum>Qt::NoFocus</enum>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- <item>
- <spacer name="verticalSpacer">
- <property name="orientation">
- <enum>Qt::Vertical</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>20</width>
- <height>161</height>
- </size>
- </property>
- </spacer>
- </item>
- <item>
- <widget class="Line" name="line_6">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- <widget class="QWidget" name="page_leave">
- <layout class="QVBoxLayout" name="verticalLayout_6">
- <property name="spacing">
- <number>2</number>
- </property>
- <property name="leftMargin">
- <number>0</number>
- </property>
- <property name="topMargin">
- <number>0</number>
- </property>
- <property name="rightMargin">
- <number>0</number>
- </property>
- <property name="bottomMargin">
- <number>0</number>
- </property>
- <item>
- <spacer name="verticalSpacer_2">
- <property name="orientation">
- <enum>Qt::Vertical</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>20</width>
- <height>185</height>
- </size>
- </property>
- </spacer>
- </item>
- <item>
- <widget class="QFrame" name="frame_leave_suspend">
- <property name="frameShape">
- <enum>QFrame::NoFrame</enum>
- </property>
- <property name="frameShadow">
- <enum>QFrame::Raised</enum>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout_10">
- <property name="spacing">
- <number>2</number>
- </property>
- <property name="leftMargin">
- <number>0</number>
- </property>
- <property name="topMargin">
- <number>0</number>
- </property>
- <property name="rightMargin">
- <number>0</number>
- </property>
- <property name="bottomMargin">
- <number>0</number>
- </property>
- <item>
- <widget class="QToolButton" name="tool_suspend">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="focusPolicy">
- <enum>Qt::NoFocus</enum>
- </property>
- <property name="text">
- <string>Suspend System</string>
- </property>
- <property name="iconSize">
- <size>
- <width>32</width>
- <height>32</height>
- </size>
- </property>
- <property name="toolButtonStyle">
- <enum>Qt::ToolButtonTextBesideIcon</enum>
- </property>
- <property name="autoRaise">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item>
- <widget class="Line" name="line_11">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- <item>
- <widget class="QFrame" name="frame_leave_system">
- <property name="styleSheet">
- <string notr="true">QFrame#frame_leave_system{border: none; background: transparent; }</string>
- </property>
- <property name="frameShape">
- <enum>QFrame::NoFrame</enum>
- </property>
- <property name="frameShadow">
- <enum>QFrame::Raised</enum>
- </property>
- <layout class="QVBoxLayout" name="verticalLayout_5">
- <property name="spacing">
- <number>2</number>
- </property>
- <property name="leftMargin">
- <number>0</number>
- </property>
- <property name="topMargin">
- <number>0</number>
- </property>
- <property name="rightMargin">
- <number>0</number>
- </property>
- <property name="bottomMargin">
- <number>0</number>
- </property>
- <item>
- <widget class="QToolButton" name="tool_restart">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="focusPolicy">
- <enum>Qt::NoFocus</enum>
- </property>
- <property name="text">
- <string>Restart System</string>
- </property>
- <property name="iconSize">
- <size>
- <width>32</width>
- <height>32</height>
- </size>
- </property>
- <property name="toolButtonStyle">
- <enum>Qt::ToolButtonTextBesideIcon</enum>
- </property>
- <property name="autoRaise">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QToolButton" name="tool_shutdown">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="focusPolicy">
- <enum>Qt::NoFocus</enum>
- </property>
- <property name="text">
- <string>Power Off System</string>
- </property>
- <property name="iconSize">
- <size>
- <width>32</width>
- <height>32</height>
- </size>
- </property>
- <property name="toolButtonStyle">
- <enum>Qt::ToolButtonTextBesideIcon</enum>
- </property>
- <property name="autoRaise">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QLabel" name="label_updating">
- <property name="text">
- <string>(System Performing Updates)</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignCenter</set>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </item>
- <item>
- <widget class="Line" name="line_13">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QToolButton" name="tool_logout">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="focusPolicy">
- <enum>Qt::NoFocus</enum>
- </property>
- <property name="text">
- <string>Sign Out User</string>
- </property>
- <property name="iconSize">
- <size>
- <width>32</width>
- <height>32</height>
- </size>
- </property>
- <property name="toolButtonStyle">
- <enum>Qt::ToolButtonTextBesideIcon</enum>
- </property>
- <property name="autoRaise">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item>
- <widget class="Line" name="line_12">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- <widget class="QWidget" name="page_search">
- <layout class="QVBoxLayout" name="verticalLayout_12">
- <item>
- <widget class="QScrollArea" name="scroll_search">
- <property name="widgetResizable">
- <bool>true</bool>
- </property>
- <widget class="QWidget" name="scrollAreaWidgetContents_3">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>161</width>
- <height>332</height>
- </rect>
- </property>
- </widget>
- </widget>
- </item>
- </layout>
- </widget>
- </widget>
- </item>
- <item>
- <widget class="QToolButton" name="tool_back">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="focusPolicy">
- <enum>Qt::NoFocus</enum>
- </property>
- <property name="text">
- <string>Back</string>
- </property>
- <property name="iconSize">
- <size>
- <width>32</width>
- <height>32</height>
- </size>
- </property>
- <property name="toolButtonStyle">
- <enum>Qt::ToolButtonTextBesideIcon</enum>
- </property>
- <property name="autoRaise">
- <bool>true</bool>
- </property>
- <property name="arrowType">
- <enum>Qt::NoArrow</enum>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- <resources/>
- <connections/>
-</ui>
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemtray/LSysTray.cpp b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemtray/LSysTray.cpp
deleted file mode 100644
index a71fd57e..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemtray/LSysTray.cpp
+++ /dev/null
@@ -1,167 +0,0 @@
-//===========================================
-// Lumina-DE source code
-// Copyright (c) 2012-2015, Ken Moore
-// Available under the 3-clause BSD license
-// See the LICENSE file for full details
-//===========================================
-#include "LSysTray.h"
-#include "../../LSession.h"
-
-LSysTray::LSysTray(QWidget *parent, QString id, bool horizontal) : LPPlugin(parent, id, horizontal){
- frame = new QFrame(this);
- frame->setContentsMargins(0,0,0,0);
- //frame->setStyleSheet("QFrame{ background: transparent; border: 1px solid transparent; border-radius: 3px; }");
- LI = new QBoxLayout( this->layout()->direction());
- frame->setLayout(LI);
- LI->setAlignment(Qt::AlignCenter);
- LI->setSpacing(0);
- LI->setContentsMargins(0,0,0,0);
- this->layout()->addWidget(frame);
- this->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred);
- //TrayID=0;
- upTimer = new QTimer(this);
- upTimer->setInterval(300000); //maximum time between refreshes is 5 minutes
- connect(upTimer, SIGNAL(timeout()), this, SLOT(checkAll()) );
- isRunning = false; stopping = false; checking = false; pending = false;
- QTimer::singleShot(100, this, SLOT(start()) );
- //Also do one extra check a minute or so after startup (just in case something got missed in the initial flood of registrations)
- QTimer::singleShot(90000,this, SLOT(checkAll()) );
- connect(LSession::handle(), SIGNAL(TrayListChanged()), this, SLOT(checkAll()) );
- connect(LSession::handle(), SIGNAL(TrayIconChanged(WId)), this, SLOT(UpdateTrayWindow(WId)) );
- connect(LSession::handle(), SIGNAL(VisualTrayAvailable()), this, SLOT(start()) );
-}
-
-LSysTray::~LSysTray(){
- if(isRunning){
- this->stop();
- }
-}
-
-void LSysTray::start(){
- if(isRunning || stopping){ return; } //already running
- isRunning = LSession::handle()->registerVisualTray(this->winId());
- qDebug() << "Visual Tray Started:" << this->type() << isRunning;
- if(isRunning){
- //upTimer->start();
- QTimer::singleShot(0,this, SLOT(checkAll()) );
- }
-}
-
-void LSysTray::stop(){
- if(!isRunning){ return; }
- stopping = true;
- upTimer->stop();
- //Now close down the system tray registry
- qDebug() << "Stop visual system tray:" << this->type();
- //LX11::closeSystemTray(TrayID);
- //TrayID = 0;
- disconnect(this); //remove any signals/slots
- isRunning = false;
- //Release all the tray applications and delete the containers
- if( !LSession::handle()->currentTrayApps(this->winId()).isEmpty() ){
- qDebug() << " - Remove tray applications";
- //This overall system tray is not closed down - go ahead and release them here
- for(int i=(trayIcons.length()-1); i>=0; i--){
- trayIcons[i]->detachApp();
- TrayIcon *cont = trayIcons.takeAt(i);
- LI->removeWidget(cont);
- cont->deleteLater();
- }
- }
- //Now let some other visual tray take over
- LSession::handle()->unregisterVisualTray(this->winId());
- qDebug() << "Done stopping visual tray";
-}
-
-// ========================
-// PRIVATE FUNCTIONS
-// ========================
-void LSysTray::checkAll(){
- if(!isRunning || stopping || checking){ pending = true; return; } //Don't check if not running at the moment
- checking = true;
- pending = false;
- //Make sure this tray should handle the windows (was not disabled in the backend)
- bool TrayRunning = LSession::handle()->registerVisualTray(this->winId());
- //qDebug() << "System Tray: Check tray apps";
- QList<WId> wins = LSession::handle()->currentTrayApps(this->winId());
- for(int i=0; i<trayIcons.length(); i++){
- int index = wins.indexOf(trayIcons[i]->appID());
- if(index < 0){
- //Tray Icon no longer exists: remove it
- qDebug() << " - Visual System Tray: Remove Icon:" << trayIcons[i]->appID();
- TrayIcon *cont = trayIcons.takeAt(i);
- cont->cleanup();
- LI->removeWidget(cont);
- cont->deleteLater();
- i--; //List size changed
- //Re-adjust the maximum widget size to account for what is left
- if(this->layout()->direction()==QBoxLayout::LeftToRight){
- this->setMaximumSize( trayIcons.length()*this->height(), 10000);
- }else{
- this->setMaximumSize(10000, trayIcons.length()*this->width());
- }
- }else{
- //Tray Icon already exists
- //qDebug() << " - SysTray: Update Icon";
- trayIcons[i]->update();
- wins.removeAt(index); //Already found - remove from the list
- }
- }
- //Now go through any remaining windows and add them
- for(int i=0; i<wins.length() && TrayRunning; i++){
- qDebug() << " - Visual System Tray: Add Icon:" << wins[i];
- TrayIcon *cont = new TrayIcon(this);
- connect(cont, SIGNAL(BadIcon()), this, SLOT(checkAll()) );
- //LSession::processEvents();
- trayIcons << cont;
- LI->addWidget(cont);
- //qDebug() << " - Update tray layout";
- if(this->layout()->direction()==QBoxLayout::LeftToRight){
- int sz = this->height()-2-2*frame->frameWidth();
- if(sz>64){ sz = 64; }
- cont->setSizeSquare(sz); //horizontal tray
- this->setMaximumSize( trayIcons.length()*this->height(), 10000);
- }else{
- int sz = this->width()-2-2*frame->frameWidth();
- if(sz>64){ sz = 64; }
- cont->setSizeSquare(sz); //vertical tray
- this->setMaximumSize(10000, trayIcons.length()*this->width());
- }
- //LSession::processEvents();
- //qDebug() << " - Attach tray app";
- cont->attachApp(wins[i]);
- if(cont->appID()==0){
- //could not attach window - remove the widget
- qDebug() << " - Invalid Tray App: Could Not Embed:";
- trayIcons.takeAt(trayIcons.length()-1); //Always at the end
- LI->removeWidget(cont);
- cont->deleteLater();
- continue;
- }
- LI->update(); //make sure there is no blank space in the layout
- }
- /*if(listChanged){
- //Icons got moved around: be sure to re-draw all of them to fix visuals
- for(int i=0; i<trayIcons.length(); i++){
- trayIcons[i]->update();
- }
- }*/
- //qDebug() << " - System Tray: check done";
- checking = false;
- if(pending){ QTimer::singleShot(0,this, SLOT(checkAll()) ); }
-}
-
-void LSysTray::UpdateTrayWindow(WId win){
- if(!isRunning || stopping || checking){ return; }
- for(int i=0; i<trayIcons.length(); i++){
- if(trayIcons[i]->appID()==win){
- //qDebug() << "System Tray: Update Window " << win;
- trayIcons[i]->repaint(); //don't use update() because we need an instant repaint (not a cached version)
- return; //finished now
- }
- }
- //Could not find tray in the list, run the checkall routine to make sure we are not missing any
- //qDebug() << "System Tray: Missing Window - check all";
- QTimer::singleShot(0,this, SLOT(checkAll()) );
-}
-
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemtray/LSysTray.h b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemtray/LSysTray.h
deleted file mode 100644
index 7db307c6..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemtray/LSysTray.h
+++ /dev/null
@@ -1,74 +0,0 @@
-//===========================================
-// Lumina-DE source code
-// Copyright (c) 2012-2015, Ken Moore
-// Available under the 3-clause BSD license
-// See the LICENSE file for full details
-//===========================================
-#ifndef _LUMINA_DESKTOP_SYSTRAY_H
-#define _LUMINA_DESKTOP_SYSTRAY_H
-
-//Qt includes
-#include <QFrame>
-#include <QHBoxLayout>
-#include <QDebug>
-#include <QX11Info>
-#include <QCoreApplication>
-
-//Local includes
-#include "../LPPlugin.h"
-#include "TrayIcon.h"
-
-//SYSTEM TRAY STANDARD DEFINITIONS
-#define SYSTEM_TRAY_REQUEST_DOCK 0
-#define SYSTEM_TRAY_BEGIN_MESSAGE 1
-#define SYSTEM_TRAY_CANCEL_MESSAGE 2
-
-class LSysTray : public LPPlugin{
- Q_OBJECT
-public:
- LSysTray(QWidget *parent = 0, QString id="systemtray", bool horizontal=true);
- ~LSysTray();
-
- virtual void AboutToClose(){
- this->stop();
- }
-
-private:
- bool isRunning, stopping, checking, pending;
- QList<TrayIcon*> trayIcons;
- QFrame *frame;
- QBoxLayout *LI; //layout items
- QTimer *upTimer; //manual timer to force refresh of all items
-
-private slots:
- void checkAll();
- void UpdateTrayWindow(WId win);
-
- //void removeTrayIcon(WId win);
-
-public slots:
- void start();
- void stop();
-
- virtual void OrientationChange(){
- //make sure the internal layout has the same orientation as the main widget
- LI->setDirection( this->layout()->direction() );
- //Re-adjust the maximum widget size
- int sz;
- if(this->layout()->direction()==QBoxLayout::LeftToRight){
- this->setMaximumSize( trayIcons.length()*this->height(), 10000);
- sz = this->height()-2*frame->frameWidth();
- }else{
- this->setMaximumSize(10000, trayIcons.length()*this->width());
- sz = this->width()-2*frame->frameWidth();
- }
- if(sz>64){ sz = 64; } //many tray icons can't go larger than this anyway
- for(int i=0; i<trayIcons.length(); i++){
- trayIcons[i]->setSizeSquare(sz);
- trayIcons[i]->repaint();
- }
- }
-
-};
-
-#endif
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemtray/TrayIcon.cpp b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemtray/TrayIcon.cpp
deleted file mode 100644
index 9fdbce50..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemtray/TrayIcon.cpp
+++ /dev/null
@@ -1,128 +0,0 @@
-//===========================================
-// Lumina-DE source code
-// Copyright (c) 2014-2015, Ken Moore
-// Available under the 3-clause BSD license
-// See the LICENSE file for full details
-//===========================================
-#include "TrayIcon.h"
-
-#include <LSession.h>
-#include <QScreen>
-#include <LuminaX11.h>
-
-TrayIcon::TrayIcon(QWidget *parent) : QWidget(parent){
- AID = 0; //nothing yet
- IID = 0;
- dmgID = 0;
- badpaints = 0;
- //this->setLayout(new QHBoxLayout);
- //this->layout()->setContentsMargins(0,0,0,0);
-}
-
-TrayIcon::~TrayIcon(){
-}
-
-void TrayIcon::cleanup(){
- AID = IID = 0;
-}
-
-WId TrayIcon::appID(){
- return AID;
-}
-
-void TrayIcon::attachApp(WId id){
- if(id==0){ return; } //nothing to attach
- else if(AID!=0){ qWarning() << "Tray Icon is already attached to a window!"; return; }
- AID = id;
- //WIN = QWindow::fromWinId(AID);
- //connect(WIN, SIGNAL(
- //this->layout()->addWidget( QWidget::createWindowContainer(WIN, this) );
- IID = this->winId(); //embed directly into this widget
- dmgID = LSession::handle()->XCB->EmbedWindow(AID, IID);
- if( dmgID != 0 ){
- LSession::handle()->XCB->RestoreWindow(AID); //make it visible
- //qDebug() << "New System Tray App:" << AID;
- QTimer::singleShot(1000, this, SLOT(updateIcon()) );
- }else{
- //qWarning() << "Could not Embed Tray Application:" << AID;
- IID = 0;
- AID = 0;
- }
-}
-
-void TrayIcon::setSizeSquare(int side){
- //qDebug() << " Set Fixed Systray size:" << side;
- this->setFixedSize( QSize(side, side) );
-}
-
-// ==============
-// PUBLIC SLOTS
-// ==============
-void TrayIcon::detachApp(){
- if(AID==0){ return; } //already detached
- //qDebug() << "Detach App:" << AID;
- //Temporarily move the AID, so that internal slots do not auto-run
- WId tmp = AID;
- AID = 0;
- //Now detach the application window and clean up
- //qDebug() << " - Unembed";
- //WIN->setParent(0); //Reset parentage back to the main stack
- LSession::handle()->XCB->UnembedWindow(tmp);
- //qDebug() << " - finished app:" << tmp;
- IID = 0;
-}
-
-// ==============
-// PRIVATE SLOTS
-// ==============
-void TrayIcon::updateIcon(){
- if(AID==0){ return; }
- //Make sure the icon is square
- QSize icosize = this->size();
- LSession::handle()->XCB->ResizeWindow(AID, icosize.width(), icosize.height());
- QTimer::singleShot(500, this, SLOT(update()) ); //make sure to re-draw the window in a moment
-}
-
-// =============
-// PROTECTED
-// =============
-void TrayIcon::paintEvent(QPaintEvent *event){
- QWidget::paintEvent(event); //make sure the background is already painted
- if(AID!=0){
- //Update the background on the tray app
- //qDebug() << "Paint Tray Background";
- //LSession::handle()->XCB->SetWindowBackground(this, this->geometry(), AID);
- //qDebug() << "Paint Tray:" << AID;
- QPainter painter(this);
- //Now paint the tray app on top of the background
- //qDebug() << " - Draw tray:" << AID << IID << this->winId();
- //qDebug() << " - - " << event->rect().x() << event->rect().y() << event->rect().width() << event->rect().height();
- //qDebug() << " - Get image:" << AID;
- QPixmap pix = LSession::handle()->XCB->TrayImage(AID); //= WIN->icon().pixmap(this->size());
-
- //qDebug() << " - Pix size:" << pix.size().width() << pix.size().height();
- //qDebug() << " - Geom:" << this->geometry().x() << this->geometry().y() << this->geometry().width() << this->geometry().height();
- if(!pix.isNull()){
- if(this->size() != pix.size()){ QTimer::singleShot(10, this, SLOT(updateIcon())); }
- painter.drawPixmap(0,0,this->width(), this->height(), pix.scaled(this->size(), Qt::KeepAspectRatio, Qt::SmoothTransformation) );
- badpaints = 0; //good paint
- }else{
- badpaints++;
- if(badpaints>5){
- qWarning() << " - - No Tray Icon/Image found!" << "ID:" << AID;
- AID = 0; //reset back to nothing
- IID = 0;
- emit BadIcon(); //removed/destroyed in some non-valid way?
- }
- }
- //qDebug() << " - Done";
- }
-}
-
-void TrayIcon::resizeEvent(QResizeEvent *event){
- //qDebug() << "Resize Event:" << event->size().width() << event->size().height();
- if(AID!=0){
- LSession::handle()->XCB->ResizeWindow(AID, event->size());
- QTimer::singleShot(500, this, SLOT(update()) ); //make sure to re-draw the window in a moment
- }
-}
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemtray/TrayIcon.h b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemtray/TrayIcon.h
deleted file mode 100644
index 5d072cc1..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/systemtray/TrayIcon.h
+++ /dev/null
@@ -1,55 +0,0 @@
-//===========================================
-// Lumina-DE source code
-// Copyright (c) 2014, Ken Moore
-// Available under the 3-clause BSD license
-// See the LICENSE file for full details
-//===========================================
-// Note: The basic idea behind this class that that it puts the app window
-// in the same spot as the tray icon (to directly pass mouse events and such),
-// while keeping the tray icon visual in sync with the app window
-//===========================================
-#ifndef _LUMINA_PANEL_PLUGIN_SYSTEM_TRAY_ICON_H
-#define _LUMINA_PANEL_PLUGIN_SYSTEM_TRAY_ICON_H
-
-//Qt includes
-#include <QWidget>
-#include <QTimer>
-#include <QPaintEvent>
-#include <QMoveEvent>
-#include <QResizeEvent>
-#include <QPainter>
-#include <QPixmap>
-#include <QImage>
-//#include <QWindow>
-// libLumina includes
-//#include <LuminaX11.h>
-
-class TrayIcon : public QWidget{
- Q_OBJECT
-public:
- TrayIcon(QWidget* parent = 0);
- ~TrayIcon();
-
- void cleanup(); //about to be removed after window was detroyed
-
- WId appID(); //the ID for the attached application
- void attachApp(WId id);
- void setSizeSquare(int side);
-
-public slots:
- void detachApp();
- void updateIcon();
-
-private:
- WId IID, AID; //icon ID and app ID
- int badpaints;
- uint dmgID;
-
-protected:
- void paintEvent(QPaintEvent *event);
- void resizeEvent(QResizeEvent *event);
-
-signals:
- void BadIcon();
-};
-#endif \ No newline at end of file
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/taskmanager/LTaskButton.cpp b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/taskmanager/LTaskButton.cpp
deleted file mode 100644
index 0dd68bb0..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/taskmanager/LTaskButton.cpp
+++ /dev/null
@@ -1,271 +0,0 @@
-//===========================================
-// Lumina-DE source code
-// Copyright (c) 2014, Ken Moore
-// Available under the 3-clause BSD license
-// See the LICENSE file for full details
-//===========================================
-#include "LTaskButton.h"
-#include "LSession.h"
-
-#ifndef DEBUG
-#define DEBUG 0
-#endif
-
-LTaskButton::LTaskButton(QWidget *parent, bool smallDisplay) : LTBWidget(parent){
- actMenu = new QMenu(this);
- winMenu = new QMenu(this);
- UpdateMenus();
- showText = !smallDisplay;
- this->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
- this->setAutoRaise(false); //make sure these always look like buttons
- this->setContextMenuPolicy(Qt::CustomContextMenu);
- this->setFocusPolicy(Qt::NoFocus);
- this->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Maximum);
- winMenu->setContextMenuPolicy(Qt::CustomContextMenu);
- connect(this, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(openActionMenu()) );
- connect(this, SIGNAL(clicked()), this, SLOT(buttonClicked()) );
- connect(winMenu, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(openActionMenu()) );
- connect(winMenu, SIGNAL(triggered(QAction*)), this, SLOT(winClicked(QAction*)) );
- connect(winMenu, SIGNAL(aboutToHide()), this, SIGNAL(MenuClosed()));
- connect(actMenu, SIGNAL(aboutToHide()), this, SIGNAL(MenuClosed()));
-}
-
-LTaskButton::~LTaskButton(){
-
-}
-
-//===========
-// PUBLIC
-//===========
-QList<WId> LTaskButton::windows(){
- QList<WId> list;
- for(int i=0; i<WINLIST.length(); i++){
- list << WINLIST[i].windowID();
- }
- return list;
-}
-
-QString LTaskButton::classname(){
- return cname;
-}
-
-bool LTaskButton::isActive(){
- return cstate == LXCB::ACTIVE;
-}
-
-void LTaskButton::addWindow(WId win){
- WINLIST << LWinInfo(win);
- UpdateButton();
-}
-
-void LTaskButton::rmWindow(WId win){
- for(int i=0; i<WINLIST.length(); i++){
- if(WINLIST[i].windowID() == win){
- WINLIST.removeAt(i);
- break;
- }
- }
- UpdateButton();
-}
-
-//==========
-// PRIVATE
-//==========
-LWinInfo LTaskButton::currentWindow(){
- if(WINLIST.length() == 1 || cWin.windowID()==0){
- return WINLIST[0]; //only 1 window - this must be it
- }else{
- return cWin;
- }
-}
-
-//=============
-// PUBLIC SLOTS
-//=============
-void LTaskButton::UpdateButton(){
- if(winMenu->isVisible()){ return; } //skip this if the window menu is currently visible for now
- bool statusOnly = (WINLIST.length() == LWINLIST.length());
- LWINLIST = WINLIST;
-
- winMenu->clear();
- LXCB::WINDOWVISIBILITY showstate = LXCB::IGNORE;
- for(int i=0; i<WINLIST.length(); i++){
- if(WINLIST[i].windowID() == 0){
- WINLIST.removeAt(i);
- i--;
- continue;
- }
- if(i==0 && !statusOnly){
- //Update the button visuals from the first window
- this->setIcon(WINLIST[i].icon(noicon));
- cname = WINLIST[i].Class();
- if(cname.isEmpty()){
- //Special case (chrome/chromium does not register *any* information with X except window title)
- cname = WINLIST[i].text();
- if(cname.contains(" - ")){ cname = cname.section(" - ",-1); }
- }
- this->setToolTip(cname);
- }
- bool junk;
- QAction *tmp = winMenu->addAction( WINLIST[i].icon(junk), WINLIST[i].text() );
- tmp->setData(i); //save which number in the WINLIST this entry is for
- LXCB::WINDOWVISIBILITY stat = WINLIST[i].status(true); //update the saved state for the window
- if(stat<LXCB::ACTIVE && WINLIST[i].windowID() == LSession::handle()->activeWindow()){ stat = LXCB::ACTIVE; }
- if(stat > showstate){ showstate = stat; } //higher priority
- }
- //Now setup the button appropriately
- // - visibility
- if(showstate == LXCB::IGNORE || WINLIST.length() < 1){ this->setVisible(false); }
- else{ this->setVisible(true); }
- // - functionality
- if(WINLIST.length() == 1){
- //single window
- this->setPopupMode(QToolButton::DelayedPopup);
- this->setMenu(actMenu);
- if(showText){
- QString txt = WINLIST[0].text();
- if(txt.length()>30){ txt.truncate(27); txt.append("..."); }
- else if(txt.length()<30){ txt = txt.leftJustified(30, ' '); }
- this->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); this->setText(txt);
- }else if(noicon){ this->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); this->setText( cname ); }
- else{ this->setToolButtonStyle(Qt::ToolButtonIconOnly); this->setText(""); }
- this->setToolTip(WINLIST[0].text());
- }else if(WINLIST.length() > 1){
- //multiple windows
- this->setPopupMode(QToolButton::InstantPopup);
- this->setMenu(winMenu);
- this->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
- if(noicon || showText){ "("+QString::number(WINLIST.length())+") "+cname; }
- else{ this->setText("("+QString::number(WINLIST.length())+")"); }
- }
- this->setState(showstate); //Make sure this is after the button setup so that it properly sets the margins/etc
- cstate = showstate; //save this for later
-}
-
-void LTaskButton::UpdateMenus(){
- //Action menu should be auto-created for the state of the current window (cWin/cstate)
- actMenu->clear();
- if(cstate!=LXCB::ACTIVE){
- actMenu->addAction( LXDG::findIcon("edit-select",""), tr("Activate Window"), this, SLOT(triggerWindow()) );
- }
- if(cstate!=LXCB::INVISIBLE){
- actMenu->addAction( LXDG::findIcon("view-close",""), tr("Minimize Window"), this, SLOT(minimizeWindow()) );
- if(LSession::handle()->XCB->WindowIsMaximized(cWin.windowID()) ){
- actMenu->addAction( LXDG::findIcon("view-restore",""), tr("Restore Window"), this, SLOT(maximizeWindow()) );
- }else{
- actMenu->addAction( LXDG::findIcon("view-fullscreen",""), tr("Maximize Window"), this, SLOT(maximizeWindow()) );
- }
- }
- actMenu->addAction( LXDG::findIcon("window-close",""), tr("Close Window"), this, SLOT(closeWindow()) );
- if(WINLIST.length()>1 && !winMenu->isVisible()){
- actMenu->addSeparator();
- actMenu->addAction( LXDG::findIcon("layer-visible-on",""), tr("Show All Windows"), this, SLOT(showAllWindows()) );
- actMenu->addAction( LXDG::findIcon("layer-visible-off",""), tr("Minimize All Windows"), this, SLOT(hideAllWindows()) );
- actMenu->addAction( LXDG::findIcon("window-close",""), tr("Close All Windows"), this, SLOT(closeAllWindows()) );
- }
-}
-
-//=============
-// PRIVATE SLOTS
-//=============
-void LTaskButton::buttonClicked(){
- if(WINLIST.length() > 1){
- winMenu->popup(QCursor::pos());
- }else{
- triggerWindow();
- }
-}
-
-void LTaskButton::closeWindow(){
- if(DEBUG){ qDebug() << "Close Window:" << this->text(); }
- if(winMenu->isVisible()){ winMenu->hide(); }
- LWinInfo win = currentWindow();
- LSession::handle()->XCB->CloseWindow(win.windowID());
- cWin = LWinInfo(); //clear the current
-}
-
-void LTaskButton::maximizeWindow(){
- if(DEBUG){ qDebug() << "Maximize Window:" << this->text(); }
- if(winMenu->isVisible()){ winMenu->hide(); }
- LWinInfo win = currentWindow();
- LSession::handle()->XCB->MaximizeWindow(win.windowID());
- //LSession::handle()->adjustWindowGeom(win.windowID(), true); //run this for now until the WM works properly
- cWin = LWinInfo(); //clear the current
-}
-
-void LTaskButton::minimizeWindow(){
- if(DEBUG){ qDebug() << "Minimize Window:" << this->text(); }
- if(winMenu->isVisible()){ winMenu->hide(); }
- LWinInfo win = currentWindow();
- LSession::handle()->XCB->MinimizeWindow(win.windowID());
- cWin = LWinInfo(); //clear the current
- QTimer::singleShot(100, this, SLOT(UpdateButton()) ); //make sure to update this button if losing active status
-}
-
-void LTaskButton::showAllWindows(){
- for(int i=WINLIST.length()-1; i>=0; i--){
- if(WINLIST[i].status()==LXCB::INVISIBLE){
- LSession::handle()->XCB->RestoreWindow(WINLIST[i].windowID());
- }
- }
-}
-
-void LTaskButton::hideAllWindows(){
- for(int i=WINLIST.length()-1; i>=0; i--){
- LXCB::WINDOWVISIBILITY state = WINLIST[i].status();
- if(state==LXCB::VISIBLE || state==LXCB::ACTIVE){
- LSession::handle()->XCB->MinimizeWindow(WINLIST[i].windowID());
- }
- }
-}
-
-void LTaskButton::closeAllWindows(){
- for(int i=WINLIST.length()-1; i>=0; i--){
- LSession::handle()->XCB->CloseWindow(WINLIST[i].windowID());
- }
-}
-
-void LTaskButton::triggerWindow(){
- LWinInfo win = currentWindow();
- //Check which state the window is currently in and flip it to the other
- //LXCB::WINDOWSTATE state = cstate;
- //if(DEBUG){ qDebug() << "Window State: " << state; }
- if(cstate == LXCB::ACTIVE){
- if(DEBUG){ qDebug() << "Minimize Window:" << this->text(); }
- LSession::handle()->XCB->MinimizeWindow(win.windowID());
- QTimer::singleShot(100, this, SLOT(UpdateButton()) ); //make sure to update this button if losing active status
- }else{
- if(DEBUG){ qDebug() << "Activate Window:" << this->text(); }
- LSession::handle()->XCB->ActivateWindow(win.windowID());
- }
- cWin = LWinInfo(); //clear the current
-}
-
-void LTaskButton::winClicked(QAction* act){
- //Get the window from the action
- if(act->data().toInt() < WINLIST.length()){
- cWin = WINLIST[act->data().toInt()];
- cstate = cWin.status();
- }else{ cWin = LWinInfo(); } //clear it
- //Now trigger the window
- triggerWindow();
-}
-
-void LTaskButton::openActionMenu(){
- //Get the Window the mouse is currently over
- QPoint curpos = QCursor::pos();
- QAction *act = winMenu->actionAt(winMenu->mapFromGlobal(curpos));
- //qDebug() << "Button Context Menu:" << curpos.x() << curpos.y() << winMenu->geometry().x() << winMenu->geometry().y() << winMenu->geometry().width() << winMenu->geometry().height();
- cWin = WINLIST[0]; //default to the first window
- if( act != 0 && winMenu->isVisible() ){
- //Get the window from the action
- //qDebug() << "Found Action:" << act->data().toInt();
- if(act->data().toInt() < WINLIST.length()){
- cWin = WINLIST[act->data().toInt()];
- }
- }
- cstate = cWin.status();
- //Now show the action menu
- UpdateMenus();
- actMenu->popup(QCursor::pos());
-}
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/taskmanager/LTaskButton.h b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/taskmanager/LTaskButton.h
deleted file mode 100644
index 6b171c6a..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/taskmanager/LTaskButton.h
+++ /dev/null
@@ -1,73 +0,0 @@
-//===========================================
-// Lumina-DE source code
-// Copyright (c) 2014, Ken Moore
-// Available under the 3-clause BSD license
-// See the LICENSE file for full details
-//===========================================
-#ifndef _LUMINA_DESKTOP_TASK_BUTTON_H
-#define _LUMINA_DESKTOP_TASK_BUTTON_H
-
-// Qt includes
-#include <QWidget>
-#include <QList>
-#include <QIcon>
-#include <QCursor>
-#include <QMenu>
-#include <QEvent>
-#include <QAction>
-
-// libLumina includes
-#include <LuminaXDG.h>
-#include <LuminaX11.h>
-
-// Local includes
-#include "../../LWinInfo.h"
-#include "../LTBWidget.h"
-
-class LTaskButton : public LTBWidget{
- Q_OBJECT
-public:
- LTaskButton(QWidget *parent=0, bool smallDisplay = true);
- ~LTaskButton();
-
- //Window Information
- QList<WId> windows();
- QString classname();
- bool isActive();
-
- //Window Management
- void addWindow(WId win); //Add a window to this button
- void rmWindow(WId win); //Remove a window from this button
-
-private:
- QList<LWinInfo> WINLIST;
- QList<LWinInfo> LWINLIST;
- QMenu *actMenu; // action menu (custom context menu)
- QMenu *winMenu; // window menu (if more than 1)
- LWinInfo cWin;
- QString cname; //class name for the entire button
- bool noicon, showText;
-
- LWinInfo currentWindow(); //For getting the currently-active window
- LXCB::WINDOWVISIBILITY cstate; //current state of the button
-
-public slots:
- void UpdateButton(); //re-sync the current window infomation
- void UpdateMenus(); //re-create the menus (text + icons)
-
-private slots:
- void buttonClicked();
- void closeWindow(); //send the signal to close a window
- void maximizeWindow(); //send the signal to maximize/restore a window
- void minimizeWindow(); //send the signal to minimize a window (iconify)
- void showAllWindows();
- void hideAllWindows();
- void closeAllWindows();
- void triggerWindow(); //change b/w visible and invisible
- void winClicked(QAction*);
- void openActionMenu();
-
-signals:
- void MenuClosed();
-};
-#endif
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/taskmanager/LTaskManagerPlugin.cpp b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/taskmanager/LTaskManagerPlugin.cpp
deleted file mode 100644
index 79c5dd36..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/taskmanager/LTaskManagerPlugin.cpp
+++ /dev/null
@@ -1,141 +0,0 @@
-//===========================================
-// Lumina-DE source code
-// Copyright (c) 2014, Ken Moore
-// Available under the 3-clause BSD license
-// See the LICENSE file for full details
-//===========================================
-#include "LTaskManagerPlugin.h"
-#include "../../LSession.h"
-
-LTaskManagerPlugin::LTaskManagerPlugin(QWidget *parent, QString id, bool horizontal) : LPPlugin(parent, id, horizontal){
- timer = new QTimer(this);
- timer->setSingleShot(true);
- timer->setInterval(10); // 1/100 second
- connect(timer, SIGNAL(timeout()), this, SLOT(UpdateButtons()) );
- usegroups = true; //backwards-compatible default value
- if(id.contains("-nogroups")){ usegroups = false; }
- connect(LSession::handle(), SIGNAL(WindowListEvent()), this, SLOT(checkWindows()) );
- connect(LSession::handle(), SIGNAL(WindowListEvent(WId)), this, SLOT(UpdateButton(WId)) );
- this->layout()->setContentsMargins(0,0,0,0);
- QTimer::singleShot(0,this, SLOT(UpdateButtons()) ); //perform an initial sync
- //QTimer::singleShot(100,this, SLOT(OrientationChange()) ); //perform an initial sync
-}
-
-LTaskManagerPlugin::~LTaskManagerPlugin(){
-
-}
-
-//==============
-// PRIVATE SLOTS
-//==============
-void LTaskManagerPlugin::UpdateButtons(){
- updating = QDateTime::currentDateTime(); //global time stamp
- QDateTime ctime = updating; //current thread time stamp
-
- //Get the current window list
- QList<WId> winlist = LSession::handle()->XCB->WindowList();
- // Ignore the windows which don't want to be listed
- for (int i = 0; i < winlist.length(); i++) {
- QList<LXCB::WINDOWSTATE> states = LSession::handle()->XCB->WM_Get_Window_States(winlist[i]);
- for (int j = 0; j < states.length(); j++) {
- if (states[j] == LXCB::S_SKIP_TASKBAR) {
- // Skip taskbar window
- winlist.removeAt(i);
- i--;
- break;
- }
- }
- }
- //Do not change the status of the previously active window if it just changed to a non-visible window
- //WId activeWin = LSession::handle()->XCB->ActiveWindow();
- //bool skipActive = !winlist.contains(activeWin);
- //qDebug() << "Update Buttons:" << winlist;
- if(updating > ctime){ return; } //another thread kicked off already - stop this one
- //Now go through all the current buttons first
- for(int i=0; i<BUTTONS.length(); i++){
- //Get the windows managed in this button
- QList<WId> WI = BUTTONS[i]->windows();
- bool updated=false;
- if(updating > ctime){ return; } //another thread kicked off already - stop this one
- //Loop over all the windows for this button
- for(int w=0; w<WI.length(); w++){
- if(updating > ctime){ return; } //another thread kicked off already - stop this one
- if( winlist.contains( WI[w] ) ){
- //Still current window - update it later
- winlist.removeAll(WI[w] ); //remove this window from the list since it is done
- }else{
- //Window was closed - remove it
- if(WI.length()==1){
- //Remove the entire button
- //qDebug() << "Window Closed: Remove Button" ;
- this->layout()->takeAt(i); //remove from the layout
- BUTTONS.takeAt(i)->deleteLater();
- i--;
- updated = true; //prevent updating a removed button
- break; //break out of the button->window loop
- }else{
- //qDebug() << "Window Closed: Remove from button:" << WI[w].windowID() << "Button:" << w;
- BUTTONS[i]->rmWindow(WI[w]); // one of the multiple windows for the button
- WI.removeAt(w); //remove this window from the list
- w--;
- }
- updated=true; //button already changed
- }
- if(updating > ctime){ return; } //another thread kicked off already - stop this one
- }
- if(!updated){
- //qDebug() << "Update Button:" << i;
- if(updating > ctime){ return; } //another thread kicked off already - stop this one
- //if(!skipActive || !BUTTONS[i]->isActive()){
- QTimer::singleShot(1,BUTTONS[i], SLOT(UpdateButton()) ); //keep moving on
- //}
- }
- }
- //Now go through the remaining windows
- for(int i=0; i<winlist.length(); i++){
- //New windows, create buttons for each (add grouping later)
- if(updating > ctime){ return; } //another thread kicked off already - stop this one
- //Check for a button that this can just be added to
- QString ctxt = LSession::handle()->XCB->WindowClass(winlist[i]);
- bool found = false;
- for(int b=0; b<BUTTONS.length(); b++){
- if(updating > ctime){ return; } //another thread kicked off already - stop this one
- if(BUTTONS[b]->classname()== ctxt && usegroups){
- //This adds a window to an existing group
- found = true;
- //qDebug() << "Add Window to Button:" << b;
- BUTTONS[b]->addWindow(winlist[i]);
- break;
- }
- }
- if(!found){
- if(updating > ctime){ return; } //another thread kicked off already - stop this one
- //No group, create a new button
- //qDebug() << "New Button";
- LTaskButton *but = new LTaskButton(this, usegroups);
- but->addWindow( winlist[i] );
- if(this->layout()->direction()==QBoxLayout::LeftToRight){
- but->setIconSize(QSize(this->height(), this->height()));
- }else{
- but->setIconSize(QSize(this->width(), this->width()));
- }
- this->layout()->addWidget(but);
- connect(but, SIGNAL(MenuClosed()), this, SIGNAL(MenuClosed()));
- BUTTONS << but;
- }
- }
-}
-
-void LTaskManagerPlugin::UpdateButton(WId win){
- for(int i=0; i<BUTTONS.length(); i++){
- if(BUTTONS[i]->windows().contains(win)){
- qDebug() << "Update Task Manager Button (single window ping)";
- QTimer::singleShot(0,BUTTONS[i], SLOT(UpdateButton()) );
- break;
- }
- }
-}
-
-void LTaskManagerPlugin::checkWindows(){
- timer->start();
-}
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/taskmanager/LTaskManagerPlugin.h b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/taskmanager/LTaskManagerPlugin.h
deleted file mode 100644
index e6371f34..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/taskmanager/LTaskManagerPlugin.h
+++ /dev/null
@@ -1,71 +0,0 @@
-//===========================================
-// Lumina-DE source code
-// Copyright (c) 2014, Ken Moore
-// Available under the 3-clause BSD license
-// See the LICENSE file for full details
-//===========================================
-#ifndef _LUMINA_DESKTOP_TASK_MANAGER_PLUGIN_H
-#define _LUMINA_DESKTOP_TASK_MANAGER_PLUGIN_H
-
-// Qt includes
-#include <QWidget>
-#include <QList>
-#include <QString>
-#include <QDebug>
-#include <QTimer>
-#include <QEvent>
-#include <QDateTime>
-
-// libLumina includes
-#include <LuminaX11.h>
-
-// Local includes
-#include "LTaskButton.h"
-#include "LWinInfo.h"
-#include "../LPPlugin.h"
-
-class LTaskManagerPlugin : public LPPlugin{
- Q_OBJECT
-public:
- LTaskManagerPlugin(QWidget *parent=0, QString id="taskmanager", bool horizontal=true);
- ~LTaskManagerPlugin();
-
-private:
- QList<LTaskButton*> BUTTONS; //to keep track of the current buttons
- QTimer *timer;
- QDateTime updating; //quick flag for if it is currently working
- bool usegroups;
-
-private slots:
- void UpdateButtons();
- void UpdateButton(WId win);
- void checkWindows();
-
-public slots:
- void LocaleChange(){
- UpdateButtons();
- }
- void ThemeChange(){
- UpdateButtons();
- }
- void OrientationChange(){
- if(this->layout()->direction()==QBoxLayout::LeftToRight){ //horizontal
- this->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
- this->layout()->setAlignment(Qt::AlignLeft);
- QSize sz(this->height(), this->height());
- for(int i=0; i<BUTTONS.length(); i++){
- BUTTONS[i]->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
- BUTTONS[i]->setIconSize(sz);
- }
- }else{ //vertical
- this->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding);
- this->layout()->setAlignment(Qt::AlignTop);
- QSize sz(this->width(), this->width());
- for(int i=0; i<BUTTONS.length(); i++){
- BUTTONS[i]->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);
- BUTTONS[i]->setIconSize(sz);
- }
- }
- }
-};
-#endif \ No newline at end of file
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/userbutton/LUserButton.cpp b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/userbutton/LUserButton.cpp
deleted file mode 100644
index acb27135..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/userbutton/LUserButton.cpp
+++ /dev/null
@@ -1,67 +0,0 @@
-//===========================================
-// Lumina-DE source code
-// Copyright (c) 2014, Ken Moore
-// Available under the 3-clause BSD license
-// See the LICENSE file for full details
-//===========================================
-#include "LUserButton.h"
-#include "../../LSession.h"
-
-LUserButtonPlugin::LUserButtonPlugin(QWidget *parent, QString id, bool horizontal) : LPPlugin(parent, id, horizontal){
- 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);
- menu = new QMenu(this);
- menu->setContentsMargins(1,1,1,1);
- connect(menu, SIGNAL(aboutToHide()), this, SIGNAL(MenuClosed()));
- usermenu = new UserWidget(this);
- connect(usermenu, SIGNAL(CloseMenu()), this, SLOT(closeMenu()) );
- mact = new QWidgetAction(this);
- mact->setDefaultWidget(usermenu);
- menu->addAction(mact);
-
- button->setMenu(menu);
- connect(menu, SIGNAL(aboutToHide()), this, SLOT(updateButtonVisuals()) );
- //Setup the global shortcut handling for opening the start menu
- connect(QApplication::instance(), SIGNAL(StartButtonActivated()), this, SLOT(shortcutActivated()) );
- LSession::handle()->registerStartButton(this->type());
-
- QTimer::singleShot(0,this, SLOT(OrientationChange())); //Update icons/sizes
-}
-
-LUserButtonPlugin::~LUserButtonPlugin(){
-
-}
-
-void LUserButtonPlugin::updateButtonVisuals(){
- 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") );
- }else{
- button->setIcon( LXDG::findIcon("user-identity", ":/images/default-user.png") ); //force icon refresh
- }
-}
-
-// ========================
-// PRIVATE FUNCTIONS
-// ========================
-void LUserButtonPlugin::openMenu(){
- usermenu->UpdateMenu();
- button->showMenu();
-}
-
-void LUserButtonPlugin::closeMenu(){
- menu->hide();
-}
-
-void LUserButtonPlugin::shortcutActivated(){
- if(LSession::handle()->registerStartButton(this->type())){
- if(menu->isVisible()){ closeMenu(); }
- else{ openMenu(); }
- }
-}
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/userbutton/LUserButton.h b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/userbutton/LUserButton.h
deleted file mode 100644
index 8d5e5040..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/userbutton/LUserButton.h
+++ /dev/null
@@ -1,75 +0,0 @@
-//===========================================
-// Lumina-DE source code
-// Copyright (c) 2014, Ken Moore
-// Available under the 3-clause BSD license
-// See the LICENSE file for full details
-//===========================================
-// This panel plugin is the main button that allow the user to run
-// applications or logout of the desktop
-//===========================================
-#ifndef _LUMINA_DESKTOP_USER_MENU_PLUGIN_H
-#define _LUMINA_DESKTOP_USER_MENU_PLUGIN_H
-
-// Qt includes
-#include <QMenu>
-#include <QWidgetAction>
-#include <QToolButton>
-#include <QString>
-#include <QWidget>
-
-
-// Lumina-desktop includes
-//#include "../../Globals.h"
-#include "../LPPlugin.h" //main plugin widget
-
-// libLumina includes
-#include "LuminaXDG.h"
-
-#include "UserWidget.h"
-
-// PANEL PLUGIN BUTTON
-class LUserButtonPlugin : public LPPlugin{
- Q_OBJECT
-
-public:
- LUserButtonPlugin(QWidget *parent = 0, QString id = "userbutton", bool horizontal=true);
- ~LUserButtonPlugin();
-
-private:
- QMenu *menu;
- QWidgetAction *mact;
- UserWidget *usermenu;
- QToolButton *button;
-
-private slots:
- void openMenu();
- void closeMenu();
- void shortcutActivated();
-
- void updateButtonVisuals();
-
-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();
- usermenu->UpdateAll();
- }
-
- void ThemeChange(){
- updateButtonVisuals();
- usermenu->UpdateAll();
- }
-};
-
-#endif
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/userbutton/UserItemWidget.cpp b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/userbutton/UserItemWidget.cpp
deleted file mode 100644
index 8d7dab7a..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/userbutton/UserItemWidget.cpp
+++ /dev/null
@@ -1,205 +0,0 @@
-//===========================================
-// Lumina-DE source code
-// Copyright (c) 2014-2015, Ken Moore
-// Available under the 3-clause BSD license
-// See the LICENSE file for full details
-//===========================================
-#include "UserItemWidget.h"
-#include <LUtils.h>
-#include <LDesktopUtils.h>
-#include <QMenu>
-
-#define TEXTCUTOFF 165
-UserItemWidget::UserItemWidget(QWidget *parent, QString itemPath, QString type, bool goback) : QFrame(parent){
- createWidget();
- //Now fill it appropriately
- bool inHome = type.endsWith("-home"); //internal code
- if(inHome){ type = type.remove("-home"); }
- if(itemPath.endsWith(".desktop") || type=="app"){
- XDGDesktop item(itemPath);
- if( item.isValid() ){
- icon->setPixmap( LXDG::findIcon(item.icon, "preferences-system-windows-actions").pixmap(32,32) );
- name->setText( this->fontMetrics().elidedText(item.name, Qt::ElideRight, TEXTCUTOFF) );
- setupActions(&item);
- }else{
- gooditem = false;
- return;
- }
- }else if(type=="dir"){
- actButton->setVisible(false);
- if(itemPath.endsWith("/")){ itemPath.chop(1); }
- if(goback){
- icon->setPixmap( LXDG::findIcon("go-previous","").pixmap(32,32) );
- name->setText( tr("Go Back") );
- }else{
- icon->setPixmap( LXDG::findIcon("folder","").pixmap(32,32) );
- name->setText( this->fontMetrics().elidedText(itemPath.section("/",-1), Qt::ElideRight, TEXTCUTOFF) );
- }
- }else{
- actButton->setVisible(false);
- if(itemPath.endsWith("/")){ itemPath.chop(1); }
- if(QFileInfo(itemPath).isDir()){
- type = "dir";
- icon->setPixmap( LXDG::findIcon("folder","").pixmap(32,32) );
- }else if(LUtils::imageExtensions().contains(itemPath.section("/",-1).section(".",-1).toLower()) ){
- icon->setPixmap( QIcon(itemPath).pixmap(32,32) );
- }else{
- icon->setPixmap( LXDG::findMimeIcon(itemPath.section("/",-1)).pixmap(32,32) );
- }
- name->setText( this->fontMetrics().elidedText(itemPath.section("/",-1), Qt::ElideRight, TEXTCUTOFF) );
- }
- icon->setWhatsThis(itemPath);
- if(!goback){ this->setWhatsThis(name->text()); }
- isDirectory = (type=="dir"); //save this for later
- if(LDesktopUtils::isFavorite(itemPath)){
- linkPath = itemPath;
- isShortcut=true;
- }else if( inHome ){//|| itemPath.section("/",0,-2)==QDir::homePath()+"/Desktop" ){
- isShortcut = true;
- }else{
- isShortcut = false;
- }
- //Now setup the button appropriately
- setupButton(goback);
-}
-
-UserItemWidget::UserItemWidget(QWidget *parent, XDGDesktop *item) : QFrame(parent){
- if(item==0){ return; }
- createWidget();
- isDirectory = false;
- if(LDesktopUtils::isFavorite(item->filePath)){
- linkPath = item->filePath;
- isShortcut=true;
- }else if( item->filePath.section("/",0,-2)==QDir::homePath()+"/Desktop" ){
- isShortcut = true;
- }else{
- isShortcut = false;
- }
- //Now fill it appropriately
- icon->setPixmap( LXDG::findIcon(item->icon,"preferences-system-windows-actions").pixmap(32,32) );
- name->setText( this->fontMetrics().elidedText(item->name, Qt::ElideRight, TEXTCUTOFF) );
- this->setWhatsThis(name->text());
- icon->setWhatsThis(item->filePath);
- //Now setup the buttons appropriately
- setupButton();
- setupActions(item);
-}
-
-UserItemWidget::~UserItemWidget(){
- delete button;
- delete icon;
- delete name;
-}
-
-
-void UserItemWidget::createWidget(){
- //Initialize the widgets
- gooditem = true;
- menuopen = false;
- menureset = new QTimer(this);
- menureset->setSingleShot(true);
- menureset->setInterval(1000); //1 second
- this->setContentsMargins(0,0,0,0);
- button = new QToolButton(this);
- button->setIconSize( QSize(14,14) );
- button->setAutoRaise(true);
- actButton = new QToolButton(this);
- actButton->setPopupMode(QToolButton::InstantPopup);
- actButton->setFixedSize( QSize(17,34) );
- actButton->setArrowType(Qt::DownArrow);
- icon = new QLabel(this);
- icon->setFixedSize( QSize(34,34) );
- name = new QLabel(this);
- //Add them to the layout
- this->setLayout(new QHBoxLayout());
- this->layout()->setContentsMargins(1,1,1,1);
- this->layout()->addWidget(icon);
- this->layout()->addWidget(actButton);
- this->layout()->addWidget(name);
- this->layout()->addWidget(button);
- //Set a custom object name so this can be tied into the Lumina Theme stylesheets
- this->setObjectName("LuminaUserItemWidget");
- //Install the stylesheet
- //this->setStyleSheet("UserItemWidget{ background: transparent; border-radius: 5px;} UserItemWidget::hover{ background: rgba(255,255,255,200); border-radius: 5px; }");
-}
-
-void UserItemWidget::setupButton(bool disable){
- //if(isDirectory){ qDebug() << "Directory Entry:" << isShortcut << linkPath << icon->whatsThis(); }
-
- if(disable){
- button->setVisible(false);
- }else if(isShortcut && !linkPath.isEmpty()){ //Favorite Item - can always remove this
- button->setWhatsThis("remove");
- button->setIcon( LXDG::findIcon("list-remove","") );
- button->setToolTip(tr("Remove Shortcut"));
- connect(button, SIGNAL(clicked()), this, SLOT(buttonClicked()) );
- }else if(isShortcut){ //Physical File/Dir - can remove
- button->setWhatsThis("remove");
- button->setIcon( LXDG::findIcon("user-trash","") );
- button->setToolTip(tr("Delete File"));
- connect(button, SIGNAL(clicked()), this, SLOT(buttonClicked()) );
- }else if(!isShortcut){// if( !QFile::exists( QDir::homePath()+"/Desktop/"+icon->whatsThis().section("/",-1) ) && !LUtils::isFavorite(icon->whatsThis() ) ){
- //This file does not have a shortcut yet -- allow the user to add it
- button->setWhatsThis("add");
- button->setIcon( LXDG::findIcon("bookmark-toolbar","") );
- button->setToolTip(tr("Create Shortcut"));
- connect(button, SIGNAL(clicked()), this, SLOT(buttonClicked()) );
- }else{
- //This already has a desktop shortcut -- no special actions
- button->setVisible(false);
- }
- if(isShortcut){
- name->setToolTip(icon->whatsThis()); //also allow the user to see the full shortcut path
- }
-}
-
-void UserItemWidget::setupActions(XDGDesktop *app){
- if(app==0 || app->actions.isEmpty()){ actButton->setVisible(false); return; }
- //Actions Available - go ahead and list them all
- actButton->setMenu( new QMenu(this) );
- for(int i=0; i<app->actions.length(); i++){
- QAction *act = new QAction(LXDG::findIcon(app->actions[i].icon, app->icon), app->actions[i].name, this);
- act->setToolTip(app->actions[i].ID);
- act->setWhatsThis(app->actions[i].ID);
- actButton->menu()->addAction(act);
- }
- connect(actButton->menu(), SIGNAL(triggered(QAction*)), this, SLOT(actionClicked(QAction*)) );
- connect(actButton->menu(), SIGNAL(aboutToShow()), this, SLOT(actionMenuOpen()) );
- connect(actButton->menu(), SIGNAL(aboutToHide()), this, SLOT(actionMenuClosed()) );
- connect(menureset, SIGNAL(timeout()), this, SLOT(resetmenuflag()) );
-}
-
-void UserItemWidget::buttonClicked(){
- button->setVisible(false);
- if(button->whatsThis()=="add"){
- LDesktopUtils::addFavorite(icon->whatsThis());
- //QFile::link(icon->whatsThis(), QDir::homePath()+"/.lumina/favorites/"+icon->whatsThis().section("/",-1) );
- emit NewShortcut();
- }else if(button->whatsThis()=="remove"){
- if(linkPath.isEmpty()){
- //This is a desktop file
- if(isDirectory){
- QProcess::startDetached("rm -r \""+icon->whatsThis()+"\"");
- }else{
- QFile::remove(icon->whatsThis());
- }
- //Don't emit the RemovedShortcut signal here - the automatic ~/Desktop watcher will see the change when finished
- }else{
- LDesktopUtils::removeFavorite(icon->whatsThis()); //This is a favorite
- emit RemovedShortcut();
- }
- }
-}
-
-void UserItemWidget::ItemClicked(){
- if(!linkPath.isEmpty()){ emit RunItem(linkPath); }
- else{ emit RunItem(icon->whatsThis()); }
-}
-
-void UserItemWidget::actionClicked(QAction *act){
- actButton->menu()->hide();
- QString cmd = "lumina-open -action \""+act->whatsThis()+"\" \"%1\"";
- if(!linkPath.isEmpty()){ cmd = cmd.arg(linkPath); }
- else{ cmd = cmd.arg(icon->whatsThis()); }
- emit RunItem(cmd);
-}
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/userbutton/UserItemWidget.h b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/userbutton/UserItemWidget.h
deleted file mode 100644
index 0b212f10..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/userbutton/UserItemWidget.h
+++ /dev/null
@@ -1,72 +0,0 @@
-//===========================================
-// Lumina-DE source code
-// Copyright (c) 2014-2015, Ken Moore
-// Available under the 3-clause BSD license
-// See the LICENSE file for full details
-//===========================================
-// This item widget manages a single file/directory
-//===========================================
-#ifndef _LUMINA_PANEL_USER_ITEM_WIDGET_H
-#define _LUMINA_PANEL_USER_ITEM_WIDGET_H
-
-#include <QFrame>
-#include <QLabel>
-#include <QToolButton>
-#include <QString>
-#include <QHBoxLayout>
-#include <QSize>
-#include <QDir>
-#include <QFile>
-#include <QMouseEvent>
-#include <QAction>
-#include <QMenu>
-#include <QTimer>
-
-#include <LuminaXDG.h>
-
-class UserItemWidget : public QFrame{
- Q_OBJECT
-public:
- UserItemWidget(QWidget *parent=0, QString itemPath="", QString type="unknown", bool goback=false);
- UserItemWidget(QWidget *parent=0, XDGDesktop *item= 0);
- ~UserItemWidget();
-
- bool gooditem;
-private:
- QToolButton *button, *actButton;
- QLabel *icon, *name;
- bool isDirectory, isShortcut, menuopen;
- QString linkPath;
- QTimer *menureset;
-
- void createWidget();
- void setupButton(bool disable = false);
- void setupActions(XDGDesktop*);
-
-private slots:
- void buttonClicked();
- void ItemClicked();
- void actionClicked(QAction*);
- //Functions to fix the submenu open/close issues
- void actionMenuOpen(){
- if(menureset->isActive()){ menureset->stop(); }
- menuopen = true;
- }
- void resetmenuflag(){ menuopen = false; } //tied to the "menureset" timer
- void actionMenuClosed(){ menureset->start(); }
-
-
-protected:
- void mouseReleaseEvent(QMouseEvent *event){
- if(menuopen){ resetmenuflag(); } //skip this event if a submenu was open
- else if(event->button() != Qt::NoButton){ ItemClicked(); }
- }
-
-signals:
- void NewShortcut();
- void RemovedShortcut();
- void RunItem(QString cmd);
-
-};
-
-#endif
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/userbutton/UserWidget.cpp b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/userbutton/UserWidget.cpp
deleted file mode 100644
index a0ba8996..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/userbutton/UserWidget.cpp
+++ /dev/null
@@ -1,393 +0,0 @@
-//===========================================
-// Lumina-DE source code
-// Copyright (c) 2014-2015, Ken Moore
-// Available under the 3-clause BSD license
-// See the LICENSE file for full details
-//===========================================
-#include "UserWidget.h"
-#include "ui_UserWidget.h"
-#include "../../LSession.h"
-#include "../../AppMenu.h"
-
-UserWidget::UserWidget(QWidget* parent) : QTabWidget(parent), ui(new Ui::UserWidget){
- ui->setupUi(this);
- updatingfavs = false;
- if(parent!=0){ parent->setMouseTracking(true); }
- this->setMouseTracking(true);
- sysapps = LSession::handle()->applicationMenu()->currentAppHash(); //get the raw info
-
- //Connect the signals/slots
- connect(ui->tool_desktopsettings, SIGNAL(clicked()), this, SLOT(openDeskSettings()) );
- connect(ui->tool_config_screensaver, SIGNAL(clicked()), this, SLOT(openScreenSaverConfig()) );
- connect(ui->tool_config_screensettings, SIGNAL(clicked()), this, SLOT(openScreenConfig()) );
- connect(ui->tool_fav_apps, SIGNAL(clicked()), this, SLOT(FavChanged()) );
- connect(ui->tool_fav_files, SIGNAL(clicked()), this, SLOT(FavChanged()) );
- connect(ui->tool_fav_dirs, SIGNAL(clicked()), this, SLOT(FavChanged()) );
- connect(ui->combo_app_cats, SIGNAL(currentIndexChanged(int)), this, SLOT(updateApps()) );
- connect(ui->tool_home_gohome, SIGNAL(clicked()), this, SLOT(slotGoHome()) );
- connect(ui->tool_home_browse, SIGNAL(clicked()), this, SLOT(slotOpenDir()) );
- connect(ui->tool_home_search, SIGNAL(clicked()), this, SLOT(slotOpenSearch()) );
- connect(ui->tool_config_about, SIGNAL(clicked()), this, SLOT(openLuminaInfo()) );
-
- //Setup the special buttons
- connect(ui->tool_app_store, SIGNAL(clicked()), this, SLOT(openStore()) );
- connect(ui->tool_controlpanel, SIGNAL(clicked()), this, SLOT(openControlPanel()) );
- //connect(ui->tool_qtconfig, SIGNAL(clicked()), this, SLOT(openQtConfig()) );
-
- lastUpdate = QDateTime(); //make sure it refreshes
-
- connect(LSession::handle()->applicationMenu(), SIGNAL(AppMenuUpdated()), this, SLOT(UpdateMenu()) );
- connect(QApplication::instance(), SIGNAL(DesktopFilesChanged()), this, SLOT(updateFavItems()) );
- QTimer::singleShot(10,this, SLOT(UpdateAll())); //make sure to load this once after initialization
-}
-
-UserWidget::~UserWidget(){
-}
-
-//===========
-// PRIVATE
-//===========
-void UserWidget::ClearScrollArea(QScrollArea *area){
- QWidget *wgt = area->takeWidget();
- wgt->deleteLater(); //delete the widget and all children
- area->setWidget( new QWidget() ); //create a new widget in the scroll area
- area->widget()->setContentsMargins(0,0,0,0);
- QVBoxLayout *layout = new QVBoxLayout;
- layout->setSpacing(2);
- layout->setContentsMargins(3,1,3,1);
- layout->setDirection(QBoxLayout::TopToBottom);
- layout->setAlignment(Qt::AlignTop);
- area->widget()->setLayout(layout);
-}
-
-void UserWidget::SortScrollArea(QScrollArea *area){
- //qDebug() << "Sorting Scroll Area:";
- //Sort all the items in the scroll area alphabetically
- QLayout *lay = area->widget()->layout();
- QStringList items;
- for(int i=0; i<lay->count(); i++){
- items << lay->itemAt(i)->widget()->whatsThis().toLower();
- }
-
- items.sort();
- //qDebug() << " - Sorted Items:" << items;
- for(int i=0; i<items.length(); i++){
- if(items[i].isEmpty()){ continue; }
- //QLayouts are weird in that they can only add items to the end - need to re-insert almost every item
- for(int j=0; j<lay->count(); j++){
- //Find this item
- if(lay->itemAt(j)->widget()->whatsThis().toLower()==items[i]){
- //Found it - now move it if necessary
- //qDebug() << "Found Item:" << items[i] << i << j;
- lay->addItem( lay->takeAt(j) );
- break;
- }
- }
- }
-
-}
-
-QIcon UserWidget::rotateIcon(QIcon ico){
- //Rotate the given icon to appear vertical in the tab widget
- QPixmap pix = ico.pixmap(32,32);
- QTransform tran;
- tran.rotate(+90); //For tabs on the left/West
- pix = pix.transformed(tran);
- ico = QIcon(pix);
- return ico;
-}
-
-//============
-// PRIVATE SLOTS
-//============
-void UserWidget::UpdateAll(){
- ui->retranslateUi(this);
- //Setup the Icons
- // - favorites tab
- this->setTabIcon(0, rotateIcon(LXDG::findIcon("folder-favorites","")) );
- this->setTabText(0,"");
- // - apps tab
- this->setTabIcon(1, rotateIcon(LXDG::findIcon("system-run","")) );
- this->setTabText(1,"");
- // - home tab
- this->setTabIcon(2, rotateIcon(LXDG::findIcon("user-home","")) );
- this->setTabText(2,"");
- // - config tab
- this->setTabIcon(3, rotateIcon(LXDG::findIcon("preferences-system","")) );
- this->setTabText(3,"");
- ui->tool_fav_apps->setIcon( LXDG::findIcon("system-run","") );
- ui->tool_fav_dirs->setIcon( LXDG::findIcon("folder","") );
- ui->tool_fav_files->setIcon( LXDG::findIcon("document-multiple","") );
- ui->tool_desktopsettings->setIcon( LXDG::findIcon("preferences-desktop","") );
- ui->tool_config_screensaver->setIcon( LXDG::findIcon("preferences-desktop-screensaver","") );
- ui->tool_config_screensettings->setIcon( LXDG::findIcon("preferences-other","") );
- ui->tool_home_gohome->setIcon( LXDG::findIcon("go-home","") );
- ui->tool_home_browse->setIcon( LXDG::findIcon("document-open","") );
- ui->tool_home_search->setIcon( LXDG::findIcon("system-search","") );
- ui->tool_config_about->setIcon( LXDG::findIcon("lumina","") );
-
- //Setup the special buttons
- QString APPSTORE = LOS::AppStoreShortcut();
- if(QFile::exists(APPSTORE) && !APPSTORE.isEmpty()){
- //Now load the info
- XDGDesktop store(APPSTORE);
- bool ok = store.isValid();
- if(ok){
- ui->tool_app_store->setIcon( LXDG::findIcon(store.icon, "") );
- ui->tool_app_store->setText( store.name );
- }
- ui->tool_app_store->setVisible(ok); //availability
- }else{
- ui->tool_app_store->setVisible(false); //not available
- }
- QString CONTROLPANEL = LOS::ControlPanelShortcut();
- if(QFile::exists(CONTROLPANEL) && !CONTROLPANEL.isEmpty()){
- //Now load the info
- XDGDesktop cpan(CONTROLPANEL);
- bool ok = cpan.isValid();
- if(ok){
- ui->tool_controlpanel->setIcon( LXDG::findIcon(cpan.icon, "") );
- }
- ui->tool_controlpanel->setVisible(ok); //availability
- }else{
- ui->tool_controlpanel->setVisible(false); //not available
- }
- /*QString QTCONFIG = LOS::QtConfigShortcut();
- if(QFile::exists(QTCONFIG) && !QTCONFIG.isEmpty()){
- ui->tool_qtconfig->setVisible(true);
- ui->tool_qtconfig->setIcon( LXDG::findIcon("preferences-desktop-theme","") );
- }else{
- ui->tool_qtconfig->setVisible(false);
- }*/
- //Now update the menus
- UpdateMenu();
-}
-
-void UserWidget::UpdateMenu(bool forceall){
- this->setCurrentWidget(ui->tab_fav);
- ui->tool_fav_apps->setChecked(true);
- ui->tool_fav_dirs->setChecked(false);
- ui->tool_fav_files->setChecked(false);
- cfav = 0; //favorite apps
- FavChanged();
- QString cdir = ui->label_home_dir->whatsThis();
- if(cdir.isEmpty() || !QFile::exists(cdir)){
- //Directory deleted or nothing loaded yet
- ui->label_home_dir->setWhatsThis(QDir::homePath());
- QTimer::singleShot(0,this, SLOT(updateHome()) );
- }else if( lastUpdate < QFileInfo(cdir).lastModified() || forceall){
- //Directory contents changed - reload it
- QTimer::singleShot(0,this, SLOT(updateHome()) );
- }
- if(lastUpdate < LSession::handle()->applicationMenu()->lastHashUpdate || lastUpdate.isNull() || forceall){
- updateAppCategories();
- QTimer::singleShot(0,this, SLOT(updateApps()) );
- }
- lastUpdate = QDateTime::currentDateTime();
-}
-
-void UserWidget::LaunchItem(QString path, bool fix){
- if(!path.isEmpty()){
- qDebug() << "Launch Application:" << path;
- if( fix && !path.startsWith("lumina-open") ){ LSession::LaunchApplication("lumina-open \""+path+"\""); }
- else{ LSession::LaunchApplication(path); }
- emit CloseMenu(); //so the menu container will close
- }
-}
-
-void UserWidget::FavChanged(){
- //uncheck the current item for a moment
- int oldfav = cfav;
- if(cfav==0){ ui->tool_fav_apps->setChecked(false); }
- else if(cfav==1){ ui->tool_fav_dirs->setChecked(false); }
- if(cfav==2){ ui->tool_fav_files->setChecked(false); }
- //Now check what other item is now the only one checked
- if(ui->tool_fav_apps->isChecked() && !ui->tool_fav_dirs->isChecked() && !ui->tool_fav_files->isChecked() ){
- cfav = 0;
- }else if(!ui->tool_fav_apps->isChecked() && ui->tool_fav_dirs->isChecked() && !ui->tool_fav_files->isChecked() ){
- cfav = 1;
- }else if(!ui->tool_fav_apps->isChecked() && !ui->tool_fav_dirs->isChecked() && ui->tool_fav_files->isChecked() ){
- cfav = 2;
- }else{
- //Re-check the old item (something invalid)
- ui->tool_fav_apps->setChecked(cfav==0);
- ui->tool_fav_dirs->setChecked(cfav==1);
- ui->tool_fav_files->setChecked(cfav==2);
- }
- updateFavItems(oldfav!=cfav);
-}
-
-void UserWidget::updateFavItems(bool newfilter){
- if(updatingfavs){ return; }
- updatingfavs = true;
- //qDebug() << "Updating User Favorite Items";
- QStringList newfavs = LDesktopUtils::listFavorites();
- //qDebug() << "Favorites:" << newfavs;
- if(lastHomeUpdate.isNull() || (QFileInfo(QDir::homePath()+"/Desktop").lastModified() > lastHomeUpdate) || newfavs!=favs ){
- favs = newfavs;
-
- homefiles = LSession::handle()->DesktopFiles();
- lastHomeUpdate = QDateTime::currentDateTime();
- }else if(!newfilter){ updatingfavs = false; return; } //nothing new to change - stop now
- //qDebug() << " - Passed Smoke Test...";
- QStringList favitems;
- //Remember for format for favorites: <name>::::[app/dir/<mimetype>]::::<full path>
- if(ui->tool_fav_apps->isChecked()){
- favitems = favs.filter("::::app::::");
- for(int i=0; i<homefiles.length(); i++){
- if(homefiles[i].fileName().endsWith(".desktop") && favitems.filter(homefiles[i].canonicalFilePath()).isEmpty() ){
- favitems << homefiles[i].fileName()+"::::app-home::::"+homefiles[i].absoluteFilePath();
- }
- }
- }else if(ui->tool_fav_dirs->isChecked()){
- favitems = favs.filter("::::dir::::");
- for(int i=0; i<homefiles.length(); i++){
- if(homefiles[i].isDir() && favitems.filter(homefiles[i].canonicalFilePath()).isEmpty() ){
- favitems << homefiles[i].fileName()+"::::dir-home::::"+homefiles[i].absoluteFilePath();
- }
- }
- }else{
- //Files
- for(int i=0; i<favs.length(); i++){
- QString type = favs[i].section("::::",1,1);
- if(type != "app" && type !="dir"){
- favitems << favs[i];
- }
- }
- for(int i=0; i<homefiles.length(); i++){
- if(!homefiles[i].isDir() && !homefiles[i].fileName().endsWith(".desktop") && favitems.filter(homefiles[i].canonicalFilePath()).isEmpty() ){
- favitems << homefiles[i].fileName()+"::::"+LXDG::findAppMimeForFile(homefiles[i].fileName())+"-home::::"+homefiles[i].absoluteFilePath();
- }
- }
- }
- ClearScrollArea(ui->scroll_fav);
- //qDebug() << " - Sorting Items";
- favitems.sort(); //sort them alphabetically
- //qDebug() << " - Creating Items:" << favitems;
- for(int i=0; i<favitems.length(); i++){
- if( !QFile::exists(favitems[i].section("::::",2,50)) ){ continue; } //file does not exist - just skip it
- UserItemWidget *it = new UserItemWidget(ui->scroll_fav->widget(), favitems[i].section("::::",2,50), favitems[i].section("::::",1,1) );
- if(!it->gooditem){ it->deleteLater(); continue; }
- ui->scroll_fav->widget()->layout()->addWidget(it);
- connect(it, SIGNAL(RunItem(QString)), this, SLOT(LaunchItem(QString)) );
- connect(it, SIGNAL(NewShortcut()), this, SLOT(updateFavItems()) );
- connect(it, SIGNAL(RemovedShortcut()), this, SLOT(updateFavItems()) );
- QApplication::processEvents(); //keep the UI snappy - might be a number of these
- }
- SortScrollArea(ui->scroll_fav);
- updatingfavs = false;
- //qDebug() << " - Done";
-}
-
-//Apps Tab
-void UserWidget::updateAppCategories(){
- ui->combo_app_cats->clear();
- QStringList cats = sysapps->keys();
- cats.sort();
- for(int i=0; i<cats.length(); i++){
- QString name, icon;
- if(cats[i] == "All"){ name = tr("All"); icon = "application-x-executable"; }
- else if(cats[i] == "Multimedia"){ name = tr("Multimedia"); icon = "applications-multimedia"; }
- else if(cats[i] == "Development"){ name = tr("Development"); icon = "applications-development"; }
- else if(cats[i] == "Education"){ name = tr("Education"); icon = "applications-education"; }
- else if(cats[i] == "Game"){ name = tr("Games"); icon = "applications-games"; }
- else if(cats[i] == "Graphics"){ name = tr("Graphics"); icon = "applications-graphics"; }
- else if(cats[i] == "Network"){ name = tr("Network"); icon = "applications-internet"; }
- else if(cats[i] == "Office"){ name = tr("Office"); icon = "applications-office"; }
- else if(cats[i] == "Science"){ name = tr("Science"); icon = "applications-science"; }
- else if(cats[i] == "Settings"){ name = tr("Settings"); icon = "preferences-system"; }
- else if(cats[i] == "System"){ name = tr("System"); icon = "applications-system"; }
- else if(cats[i] == "Utility"){ name = tr("Utilities"); icon = "applications-utilities"; }
- else if(cats[i] == "Wine"){ name = tr("Wine"); icon = "wine"; }
- else{ name = tr("Unsorted"); icon = "applications-other"; }
- ui->combo_app_cats->addItem( LXDG::findIcon(icon,""), name, cats[i] );
- }
-}
-
-void UserWidget::updateApps(){
- if(ui->combo_app_cats->currentIndex() < 0){ return; } //no cat
- QString cat = ui->combo_app_cats->itemData( ui->combo_app_cats->currentIndex() ).toString();
- QList<XDGDesktop*> items = sysapps->value(cat);
- ClearScrollArea(ui->scroll_apps);
- for(int i=0; i<items.length(); i++){
- UserItemWidget *it = new UserItemWidget(ui->scroll_apps->widget(), items[i]);
- ui->scroll_apps->widget()->layout()->addWidget(it);
- connect(it, SIGNAL(RunItem(QString)), this, SLOT(LaunchItem(QString)) );
- connect(it, SIGNAL(NewShortcut()), this, SLOT(updateFavItems()) );
- connect(it, SIGNAL(RemovedShortcut()), this, SLOT(updateFavItems()) );
- QApplication::processEvents(); //keep the UI snappy - might be a number of these
- }
-}
-
-//Home Tab
-void UserWidget::updateHome(){
- qDebug() << "Update Home";
- ClearScrollArea(ui->scroll_home);
- qDebug() << " - dir:" << ui->label_home_dir->whatsThis();
- QDir homedir(ui->label_home_dir->whatsThis());
- QStringList items;
- if(QDir::homePath() == homedir.absolutePath()){
- ui->label_home_dir->setText(tr("Home"));
- ui->tool_home_gohome->setVisible(false);
- }else{
- qDebug() << " - Show the back button";
- ui->tool_home_gohome->setVisible(true);
- ui->label_home_dir->setText( this->fontMetrics().elidedText(homedir.dirName(), Qt::ElideRight, ui->label_home_dir->width()));
- //Now make sure to put a "go back" button at the top of the list
- QString dir = ui->label_home_dir->whatsThis();
- if(dir.endsWith("/")){ dir.chop(1); }
- dir.chop( dir.section("/",-1).length() );
- items << dir;
- }
- qDebug() << " - Load items";
- ui->label_home_dir->setToolTip(ui->label_home_dir->whatsThis());
- items << homedir.entryList(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot, QDir::Name | QDir::DirsFirst);
- QString type = "";
- if(homedir.absolutePath() == QDir::homePath()+"/Desktop"){ type.append("-home"); }//internal code
- for(int i=0; i<items.length(); i++){
- qDebug() << " - New item:" << homedir.absoluteFilePath(items[i]);
- UserItemWidget *it;
- if(items[i].startsWith("/")){ it = new UserItemWidget(ui->scroll_home->widget(), items[i], "dir", true); } //go-back button
- else{ it = new UserItemWidget(ui->scroll_home->widget(), homedir.absoluteFilePath(items[i]), type, false); }
- qDebug() << " - Add to layout";
- ui->scroll_home->widget()->layout()->addWidget(it);
- connect(it, SIGNAL(RunItem(QString)), this, SLOT(slotGoToDir(QString)) );
- connect(it, SIGNAL(NewShortcut()), this, SLOT(updateFavItems()) );
- connect(it, SIGNAL(RemovedShortcut()), this, SLOT(updateFavItems()) );
- qDebug() << " - process events";
- QApplication::processEvents(); //keep the UI snappy - may be a lot of these to load
- }
- qDebug() << " - Done";
-}
-
-void UserWidget::slotGoToDir(QString dir){
- if(!QFileInfo(dir).isDir()){
- LaunchItem(dir);
- }else{
- ui->label_home_dir->setWhatsThis(dir);
- updateHome();
- }
-}
-
-void UserWidget::slotGoHome(){
- slotGoToDir(QDir::homePath());
-}
-
-void UserWidget::slotOpenDir(){
- LaunchItem(ui->label_home_dir->whatsThis());
-}
-
-void UserWidget::slotOpenSearch(){
- LaunchItem("lumina-search -dir \""+ui->label_home_dir->whatsThis()+"\"", false); //use command as-is
-}
-
-void UserWidget::mouseMoveEvent( QMouseEvent *event){
- QTabBar *wid = tabBar();
- if(wid==0){ return; } //invalid widget found
- QPoint relpos = wid->mapFromGlobal( this->mapToGlobal(event->pos()) );
- //qDebug() << "Mouse Move Event: " << event->pos().x() << event->pos().y() << relpos.x() << relpos.y() << wid->width() << wid->height();
- if(wid && wid->tabAt(relpos) != -1){
- qDebug() << " - Mouse over tab";
- this->setCurrentIndex( wid->tabAt(relpos) );
- }
-}
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/userbutton/UserWidget.h b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/userbutton/UserWidget.h
deleted file mode 100644
index 8b03c489..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/userbutton/UserWidget.h
+++ /dev/null
@@ -1,101 +0,0 @@
-//===========================================
-// Lumina-DE source code
-// Copyright (c) 2014, Ken Moore
-// Available under the 3-clause BSD license
-// See the LICENSE file for full details
-//===========================================
-// This panel plugin allows the user to quickly access user favorites and applications
-//===========================================
-#ifndef _LUMINA_PANEL_USER_BUTTON_WIDGET_H
-#define _LUMINA_PANEL_USER_BUTTON_WIDGET_H
-
-#include <QWidget>
-#include <QString>
-#include <QList>
-#include <QHash>
-#include <QVBoxLayout>
-#include <QScrollArea>
-#include <QDateTime>
-#include <QTransform>
-#include <QMouseEvent>
-#include <QTabWidget>
-
-#include <LuminaXDG.h>
-#include <LuminaOS.h>
-#include "UserItemWidget.h"
-
-#define SSAVER QString("xscreensaver-demo")
-
-namespace Ui{
- class UserWidget;
-};
-
-class UserWidget : public QTabWidget{
- Q_OBJECT
-public:
- UserWidget(QWidget *parent=0);
- ~UserWidget();
-
-public slots:
- void UpdateAll(); //for re-translation/icon changes
- void UpdateMenu(bool forceall = false); //for item changes
-
-private:
- Ui::UserWidget *ui;
- QHash<QString, QList<XDGDesktop*> > *sysapps;
- QDateTime lastUpdate, lastHomeUpdate;
- QStringList favs;
- QFileInfoList homefiles;
- int cfav; //current favorite category
- void ClearScrollArea(QScrollArea *area);
- void SortScrollArea(QScrollArea *area);
- QIcon rotateIcon(QIcon);
- bool updatingfavs;
-
-private slots:
- void LaunchItem(QString path, bool fix = true);
-
- //Favorites Tab
- void FavChanged(); //for ensuring radio-button-like behaviour
- void updateFavItems(bool newfilter = true); //if false, will only update if filesystem changes
-
- //Apps Tab
- void updateAppCategories();
- void updateApps();
-
- //Home Tab
- void updateHome();
- void slotGoToDir(QString dir);
- void slotGoHome();
- void slotOpenDir();
- void slotOpenSearch();
-
- //Slots for the special buttons
- void openStore(){
- LaunchItem(LOS::AppStoreShortcut());
- }
- void openControlPanel(){
- LaunchItem(LOS::ControlPanelShortcut());
- }
- void openDeskSettings(){
- LaunchItem("lumina-config", false);
- }
- void openScreenSaverConfig(){
- LaunchItem(SSAVER, false);
- }
- void openScreenConfig(){
- LaunchItem("lumina-xconfig",false);
- }
- void openLuminaInfo(){
- LaunchItem("lumina-info",false);
- }
-
-protected:
- void mouseMoveEvent( QMouseEvent *event);
-
-signals:
- void CloseMenu();
-
-};
-
-#endif
diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/userbutton/UserWidget.ui b/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/userbutton/UserWidget.ui
deleted file mode 100644
index 9ef5af7e..00000000
--- a/src-qt5/core/lumina-desktop-unified/src-DE/panel-plugins/userbutton/UserWidget.ui
+++ /dev/null
@@ -1,593 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>UserWidget</class>
- <widget class="QTabWidget" name="UserWidget">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>294</width>
- <height>289</height>
- </rect>
- </property>
- <property name="windowTitle">
- <string>UserWidget</string>
- </property>
- <property name="tabPosition">
- <enum>QTabWidget::West</enum>
- </property>
- <property name="currentIndex">
- <number>0</number>
- </property>
- <widget class="QWidget" name="tab_fav">
- <attribute name="title">
- <string>Favorites</string>
- </attribute>
- <attribute name="toolTip">
- <string>Favorites</string>
- </attribute>
- <layout class="QVBoxLayout" name="verticalLayout">
- <property name="spacing">
- <number>2</number>
- </property>
- <property name="leftMargin">
- <number>1</number>
- </property>
- <property name="topMargin">
- <number>1</number>
- </property>
- <property name="rightMargin">
- <number>1</number>
- </property>
- <property name="bottomMargin">
- <number>1</number>
- </property>
- <item>
- <layout class="QHBoxLayout" name="horizontalLayout">
- <item>
- <widget class="QToolButton" name="tool_fav_apps">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>30</width>
- <height>30</height>
- </size>
- </property>
- <property name="cursor">
- <cursorShape>ArrowCursor</cursorShape>
- </property>
- <property name="toolTip">
- <string>Favorite Applications</string>
- </property>
- <property name="text">
- <string>Applications</string>
- </property>
- <property name="iconSize">
- <size>
- <width>20</width>
- <height>20</height>
- </size>
- </property>
- <property name="checkable">
- <bool>true</bool>
- </property>
- <property name="toolButtonStyle">
- <enum>Qt::ToolButtonTextBesideIcon</enum>
- </property>
- <property name="autoRaise">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QToolButton" name="tool_fav_dirs">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>30</width>
- <height>30</height>
- </size>
- </property>
- <property name="toolTip">
- <string>Favorite Directories</string>
- </property>
- <property name="text">
- <string>Places</string>
- </property>
- <property name="iconSize">
- <size>
- <width>20</width>
- <height>20</height>
- </size>
- </property>
- <property name="checkable">
- <bool>true</bool>
- </property>
- <property name="toolButtonStyle">
- <enum>Qt::ToolButtonTextBesideIcon</enum>
- </property>
- <property name="autoRaise">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QToolButton" name="tool_fav_files">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>30</width>
- <height>30</height>
- </size>
- </property>
- <property name="toolTip">
- <string>Favorite FIles</string>
- </property>
- <property name="text">
- <string>Files</string>
- </property>
- <property name="iconSize">
- <size>
- <width>20</width>
- <height>20</height>
- </size>
- </property>
- <property name="checkable">
- <bool>true</bool>
- </property>
- <property name="toolButtonStyle">
- <enum>Qt::ToolButtonTextBesideIcon</enum>
- </property>
- <property name="autoRaise">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item>
- <widget class="QScrollArea" name="scroll_fav">
- <property name="widgetResizable">
- <bool>true</bool>
- </property>
- <widget class="QWidget" name="scrollAreaWidgetContents">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>259</width>
- <height>247</height>
- </rect>
- </property>
- </widget>
- </widget>
- </item>
- </layout>
- </widget>
- <widget class="QWidget" name="tab_apps">
- <attribute name="title">
- <string>Apps</string>
- </attribute>
- <attribute name="toolTip">
- <string>Applications</string>
- </attribute>
- <layout class="QVBoxLayout" name="verticalLayout_2">
- <property name="spacing">
- <number>2</number>
- </property>
- <property name="leftMargin">
- <number>1</number>
- </property>
- <property name="topMargin">
- <number>1</number>
- </property>
- <property name="rightMargin">
- <number>1</number>
- </property>
- <property name="bottomMargin">
- <number>1</number>
- </property>
- <item>
- <layout class="QHBoxLayout" name="horizontalLayout_2">
- <item>
- <widget class="QComboBox" name="combo_app_cats">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>0</width>
- <height>30</height>
- </size>
- </property>
- <property name="maxVisibleItems">
- <number>12</number>
- </property>
- <property name="iconSize">
- <size>
- <width>20</width>
- <height>20</height>
- </size>
- </property>
- </widget>
- </item>
- <item>
- <spacer name="horizontalSpacer">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>40</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- <item>
- <widget class="QToolButton" name="tool_app_store">
- <property name="minimumSize">
- <size>
- <width>30</width>
- <height>30</height>
- </size>
- </property>
- <property name="text">
- <string/>
- </property>
- <property name="iconSize">
- <size>
- <width>20</width>
- <height>20</height>
- </size>
- </property>
- <property name="toolButtonStyle">
- <enum>Qt::ToolButtonTextBesideIcon</enum>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item>
- <widget class="QScrollArea" name="scroll_apps">
- <property name="widgetResizable">
- <bool>true</bool>
- </property>
- <widget class="QWidget" name="scrollAreaWidgetContents_2">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>98</width>
- <height>28</height>
- </rect>
- </property>
- </widget>
- </widget>
- </item>
- </layout>
- </widget>
- <widget class="QWidget" name="tab_home">
- <attribute name="title">
- <string>Home</string>
- </attribute>
- <attribute name="toolTip">
- <string>Home Directory</string>
- </attribute>
- <layout class="QVBoxLayout" name="verticalLayout_3">
- <property name="spacing">
- <number>2</number>
- </property>
- <property name="leftMargin">
- <number>1</number>
- </property>
- <property name="topMargin">
- <number>1</number>
- </property>
- <property name="rightMargin">
- <number>1</number>
- </property>
- <property name="bottomMargin">
- <number>1</number>
- </property>
- <item>
- <layout class="QGridLayout" name="gridLayout">
- <property name="horizontalSpacing">
- <number>4</number>
- </property>
- <property name="verticalSpacing">
- <number>1</number>
- </property>
- <item row="0" column="3">
- <widget class="QToolButton" name="tool_home_search">
- <property name="toolTip">
- <string>Search this Directory</string>
- </property>
- <property name="text">
- <string notr="true"/>
- </property>
- <property name="iconSize">
- <size>
- <width>20</width>
- <height>20</height>
- </size>
- </property>
- </widget>
- </item>
- <item row="0" column="2">
- <widget class="QToolButton" name="tool_home_browse">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>30</width>
- <height>30</height>
- </size>
- </property>
- <property name="toolTip">
- <string>Open Directory</string>
- </property>
- <property name="text">
- <string notr="true">Browse</string>
- </property>
- <property name="iconSize">
- <size>
- <width>20</width>
- <height>20</height>
- </size>
- </property>
- <property name="toolButtonStyle">
- <enum>Qt::ToolButtonIconOnly</enum>
- </property>
- </widget>
- </item>
- <item row="0" column="0">
- <widget class="QToolButton" name="tool_home_gohome">
- <property name="minimumSize">
- <size>
- <width>30</width>
- <height>30</height>
- </size>
- </property>
- <property name="toolTip">
- <string>Go back to home directory</string>
- </property>
- <property name="text">
- <string notr="true">home</string>
- </property>
- <property name="iconSize">
- <size>
- <width>20</width>
- <height>20</height>
- </size>
- </property>
- <property name="autoRaise">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item row="0" column="1">
- <widget class="QLabel" name="label_home_dir">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="minimumSize">
- <size>
- <width>0</width>
- <height>30</height>
- </size>
- </property>
- <property name="font">
- <font>
- <pointsize>10</pointsize>
- <weight>75</weight>
- <bold>true</bold>
- </font>
- </property>
- <property name="frameShape">
- <enum>QFrame::NoFrame</enum>
- </property>
- <property name="text">
- <string notr="true">&lt;current dir&gt;</string>
- </property>
- <property name="alignment">
- <set>Qt::AlignCenter</set>
- </property>
- <property name="wordWrap">
- <bool>true</bool>
- </property>
- <property name="margin">
- <number>0</number>
- </property>
- <property name="indent">
- <number>0</number>
- </property>
- <property name="textInteractionFlags">
- <set>Qt::NoTextInteraction</set>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item>
- <widget class="QScrollArea" name="scroll_home">
- <property name="widgetResizable">
- <bool>true</bool>
- </property>
- <widget class="QWidget" name="scrollAreaWidgetContents_3">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>98</width>
- <height>28</height>
- </rect>
- </property>
- </widget>
- </widget>
- </item>
- </layout>
- </widget>
- <widget class="QWidget" name="tab_config">
- <attribute name="title">
- <string>Config</string>
- </attribute>
- <attribute name="toolTip">
- <string>Desktop Preferences</string>
- </attribute>
- <layout class="QVBoxLayout" name="verticalLayout_4">
- <item>
- <widget class="QToolButton" name="tool_controlpanel">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>Control Panel</string>
- </property>
- <property name="iconSize">
- <size>
- <width>20</width>
- <height>20</height>
- </size>
- </property>
- <property name="toolButtonStyle">
- <enum>Qt::ToolButtonTextBesideIcon</enum>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QToolButton" name="tool_desktopsettings">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>Desktop Appearance/Plugins</string>
- </property>
- <property name="iconSize">
- <size>
- <width>20</width>
- <height>20</height>
- </size>
- </property>
- <property name="toolButtonStyle">
- <enum>Qt::ToolButtonTextBesideIcon</enum>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QToolButton" name="tool_config_screensettings">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>Screen Configuration</string>
- </property>
- <property name="iconSize">
- <size>
- <width>20</width>
- <height>20</height>
- </size>
- </property>
- <property name="toolButtonStyle">
- <enum>Qt::ToolButtonTextBesideIcon</enum>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QToolButton" name="tool_config_screensaver">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>Screensaver Settings</string>
- </property>
- <property name="iconSize">
- <size>
- <width>20</width>
- <height>20</height>
- </size>
- </property>
- <property name="toolButtonStyle">
- <enum>Qt::ToolButtonTextBesideIcon</enum>
- </property>
- </widget>
- </item>
- <item>
- <spacer name="verticalSpacer">
- <property name="orientation">
- <enum>Qt::Vertical</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>243</width>
- <height>162</height>
- </size>
- </property>
- </spacer>
- </item>
- <item>
- <widget class="Line" name="line">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QToolButton" name="tool_config_about">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="text">
- <string>About the Lumina Desktop</string>
- </property>
- <property name="toolButtonStyle">
- <enum>Qt::ToolButtonTextBesideIcon</enum>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- </widget>
- <resources/>
- <connections/>
-</ui>
bgstack15