aboutsummaryrefslogtreecommitdiff
path: root/src-qt5/core/lumina-desktop-unified/LSession.cpp
diff options
context:
space:
mode:
authorKen Moore <ken@ixsystems.com>2017-08-29 15:54:30 -0400
committerKen Moore <ken@ixsystems.com>2017-08-29 15:54:30 -0400
commit8a96d2ba60a30a6cb0bebace3134dd65d0268b04 (patch)
tree4b4a301bb5f43d3d10a312af073d2c64fa49eaf2 /src-qt5/core/lumina-desktop-unified/LSession.cpp
parentStart getting the Root context menu all moved over from Lumina 1 to 2. (diff)
downloadlumina-8a96d2ba60a30a6cb0bebace3134dd65d0268b04.tar.gz
lumina-8a96d2ba60a30a6cb0bebace3134dd65d0268b04.tar.bz2
lumina-8a96d2ba60a30a6cb0bebace3134dd65d0268b04.zip
Get a lot of the root context menu up and running. Now the application list is available and functional, plus the beginnings of the task manager plugin for the menu.
Diffstat (limited to 'src-qt5/core/lumina-desktop-unified/LSession.cpp')
-rw-r--r--src-qt5/core/lumina-desktop-unified/LSession.cpp44
1 files changed, 27 insertions, 17 deletions
diff --git a/src-qt5/core/lumina-desktop-unified/LSession.cpp b/src-qt5/core/lumina-desktop-unified/LSession.cpp
index b7ea2fe1..e820e97b 100644
--- a/src-qt5/core/lumina-desktop-unified/LSession.cpp
+++ b/src-qt5/core/lumina-desktop-unified/LSession.cpp
@@ -11,7 +11,7 @@
#include "BootSplash.h"
#ifndef DEBUG
-#define DEBUG 0
+#define DEBUG 1
#endif
//Initialize all the global objects to null pointers
@@ -53,8 +53,8 @@ LSession::LSession(int &argc, char ** argv) : LSingleApplication(argc, argv, "lu
Lumina::EVThread = new QThread();
Lumina::NWS->moveToThread(Lumina::EVThread);
Lumina::EVThread->start();
- Lumina::ROOTWIN = new RootWindow();
Lumina::APPLIST = XDGDesktopList::instance();
+ Lumina::ROOTWIN = new RootWindow();
Lumina::SHORTCUTS = new LShortcutEvents(); //this can be moved to it's own thread eventually as well
setupGlobalConnections();
@@ -134,7 +134,7 @@ void LSession::setupSession(){
Lumina::ROOTWIN->start();
Lumina::NWS->setRoot_numberOfWorkspaces(QStringList() << "one" << "two");
Lumina::NWS->setRoot_currentWorkspace(0);
-
+ if(DEBUG){ qDebug() << " - Create Desktop Context Menu"; }
DesktopContextMenu *cmenu = new DesktopContextMenu(Lumina::ROOTWIN);
connect(cmenu, SIGNAL(showLeaveDialog()), this, SLOT(StartLogout()) );
cmenu->start();
@@ -384,10 +384,28 @@ void LSession::StartReboot(bool skipupdates){
}
void LSession::LaunchApplication(QString exec){
+ qDebug() << "Launch Application:" << exec;
ExternalProcess::launch(exec);
}
+void LSession::LaunchDesktopApplication(QString app, QString action){
+ qDebug() << "Launch Desktop Application:" << app << action;
+ XDGDesktop *xdg = Lumina::APPLIST->findAppFile(app);
+ bool cleanup = false;
+ if(xdg==0){
+ xdg = new XDGDesktop(app);
+ cleanup = true;
+ }
+ if(xdg->isValid()){
+ QString exec = xdg->generateExec(QStringList(), action);
+ ExternalProcess::launch(exec, QStringList(), xdg->startupNotify);
+ }
+
+ if(cleanup && xdg!=0){ xdg->deleteLater(); }
+}
+
void LSession::LaunchStandardApplication(QString app, QStringList args){
+ qDebug() << "Launch Standard Application:" << app << args;
//Find/replace standardized apps with thier mimetypes
if(app.startsWith("--")){ app = "application/"+app.section("--",-1).simplified(); }
//First see if this is a mimetype with a default application
@@ -395,24 +413,18 @@ void LSession::LaunchStandardApplication(QString app, QStringList args){
QString mimeapp = XDGMime::findDefaultAppForMime(app);
if(!mimeapp.isEmpty()){ app = mimeapp; }
}
- if(app.endsWith(".desktop")){
+ if(!app.endsWith(".desktop")){
+ //actual command/binary - just launch it
+ ExternalProcess::launch(app, args, false); // do not use startup notify cursor
+ }else{
//Get the XDGDesktop structure
XDGDesktop *desk = 0; bool cleanup = false;
if(app.startsWith("/") && QFile::exists(app)){ desk = new XDGDesktop(app); cleanup = true; }
- if(!desk->isValid()){
+ if(desk==0 || !desk->isValid()){
//Need to find the app within the current list
- QHash<QString, XDGDesktop*>applist = Lumina::APPLIST->files;
if(cleanup){ desk->deleteLater(); desk = 0; cleanup = false; }
app = app.section("/",-1); //make sure this is a relative path
- QStringList list = applist.keys().filter("/"+app);
- if(!list.filter(QDir::homePath()).isEmpty()){ desk = applist[list.filter(QDir::homePath()).first()]; } //prefer user-override files
- if(desk==0 || !desk->isValid()){
- desk = 0;
- for(int i=0; i<list.length() && desk==0; i++){
- XDGDesktop *tmp = applist[list[i]];
- if(tmp->isValid()){ desk = tmp; }
- }
- }
+ desk = Lumina::APPLIST->findAppFile(app);
}
if(desk!=0 && desk->isValid()){
//Got the application - go ahead and assemble the startup command
@@ -420,8 +432,6 @@ void LSession::LaunchStandardApplication(QString app, QStringList args){
ExternalProcess::launch(exec, QStringList(), desk->startupNotify);
}
if(cleanup){ desk->deleteLater(); }
- }else{
- ExternalProcess::launch(app, args, false); // do not use startup notify cursor
}
}
bgstack15