From ed5ecf7ea7a482b4649e66ecb35fbc60af680684 Mon Sep 17 00:00:00 2001 From: Ken Moore Date: Mon, 25 Apr 2016 13:08:12 -0400 Subject: Rearrange the Lumina source tree quite a bit: Now the utilites are arranged by category (core, core-utils, desktop-utils), so all the -utils may be excluded by a package system (or turned into separate packages) as needed. --- src-qt5/core/lumina-desktop/LSession.h | 181 +++++++++++++++++++++++++++++++++ 1 file changed, 181 insertions(+) create mode 100644 src-qt5/core/lumina-desktop/LSession.h (limited to 'src-qt5/core/lumina-desktop/LSession.h') diff --git a/src-qt5/core/lumina-desktop/LSession.h b/src-qt5/core/lumina-desktop/LSession.h new file mode 100644 index 00000000..ae217bd8 --- /dev/null +++ b/src-qt5/core/lumina-desktop/LSession.h @@ -0,0 +1,181 @@ +//=========================================== +// 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_SESSION_H +#define _LUMINA_DESKTOP_SESSION_H + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "Globals.h" +#include "AppMenu.h" +#include "SettingsMenu.h" +#include "SystemWindow.h" +#include "LDesktop.h" +#include "WMProcess.h" +//#include "BootSplash.h" + +#include +#include + +//SYSTEM TRAY STANDARD DEFINITIONS +#define SYSTEM_TRAY_REQUEST_DOCK 0 +#define SYSTEM_TRAY_BEGIN_MESSAGE 1 +#define SYSTEM_TRAY_CANCEL_MESSAGE 2 + +/*class MenuProxyStyle : public QProxyStyle{ +public: + int pixelMetric(PixelMetric metric, const QStyleOption *option=0, const QWidget *widget=0) const{ + if(metric==PM_SmallIconSize){ return 22; } //override QMenu icon size (make it larger) + else{ return QProxyStyle::pixelMetric(metric, option, widget); } //use the current style for everything else + } +};*/ + +class LSession : public LSingleApplication{ + Q_OBJECT +public: + LSession(int &argc, char **argv); + ~LSession(); + //Functions to be called during startup + void setupSession(); + + //Public System Tray Functions + QList currentTrayApps(WId visualTray); + bool registerVisualTray(WId); + void unregisterVisualTray(WId); + + //Special functions for XCB event filter parsing only + // (DO NOT USE MANUALLY) + void WindowPropertyEvent(); + void WindowPropertyEvent(WId); + void SysTrayDockRequest(WId); + void WindowClosedEvent(WId); + void WindowConfigureEvent(WId); + void WindowDamageEvent(WId); + void WindowSelectionClearEvent(WId); + + //System Access + //Return a pointer to the current session + static LSession* handle(){ + return static_cast(LSession::instance()); + } + + static void LaunchApplication(QString cmd); + QFileInfoList DesktopFiles(); + + QRect screenGeom(int num); + + AppMenu* applicationMenu(); + void systemWindow(); + SettingsMenu* settingsMenu(); + LXCB *XCB; //class for XCB usage + + QSettings* sessionSettings(); + QSettings* DesktopPluginSettings(); + + //Keep track of which non-desktop window should be treated as active + WId activeWindow(); //This will return the last active window if a desktop element is currently active + + //Temporarily change the session locale (nothing saved between sessions) + void switchLocale(QString localeCode); + + //Play System Audio + void playAudioFile(QString filepath); + //Window Adjustment Routine (due to Fluxbox not respecting _NET_WM_STRUT) + void adjustWindowGeom(WId win, bool maximize = false); + +private: + WMProcess *WM; + QList DESKTOPS; + QFileSystemWatcher *watcher; + QTimer *screenTimer; + + //Internal variable for global usage + AppMenu *appmenu; + SettingsMenu *settingsmenu; + SystemWindow *sysWindow; + QTranslator *currTranslator; + QMediaPlayer *mediaObj; + QSettings *sessionsettings, *DPlugSettings; + bool cleansession; + //QList savedScreens; + + //System Tray Variables + WId SystemTrayID, VisualTrayID; + int TrayDmgEvent, TrayDmgError; + QList RunningTrayApps; + bool TrayStopping; + + //Task Manager Variables + WId lastActiveWin; + QList RunningApps; + QList checkWin; + QFileInfoList desktopFiles; + + void CleanupSession(); + + int VersionStringToNumber(QString version); + +public slots: + void StartLogout(); + void StartShutdown(); + void StartReboot(); + + void reloadIconTheme(); + +private slots: + void NewCommunication(QStringList); + void launchStartupApps(); //used during initialization + void watcherChange(QString); + void screensChanged(); + void screenResized(int); + void checkWindowGeoms(); + + //System Tray Functions + void startSystemTray(); + void stopSystemTray(bool detachall = false); + void attachTrayWindow(WId); + void removeTrayWindow(WId); + + //Internal simplification functions + void checkUserFiles(); + void refreshWindowManager(); + void updateDesktops(); + void registerDesktopWindows(); + + + void SessionEnding(); + +signals: + //System Tray Signals + void VisualTrayAvailable(); //new Visual Tray Plugin can be registered + void TrayListChanged(); //Item added/removed from the list + void TrayIconChanged(WId); //WinID of Tray App + //Task Manager Signals + void WindowListEvent(WId); + void WindowListEvent(); + //General Signals + void LocaleChanged(); + void IconThemeChanged(); + void DesktopConfigChanged(); + void SessionConfigChanged(); + void DesktopFilesChanged(); + +}; + +#endif -- cgit