diff options
Diffstat (limited to 'src-qt5/core')
386 files changed, 16507 insertions, 17527 deletions
diff --git a/src-qt5/core/libLumina/DesktopSettings.cpp b/src-qt5/core/libLumina/DesktopSettings.cpp index 8bda1ac5..f1c74bc5 100644 --- a/src-qt5/core/libLumina/DesktopSettings.cpp +++ b/src-qt5/core/libLumina/DesktopSettings.cpp @@ -56,11 +56,19 @@ void DesktopSettings::stop(){ } //Main Read/Write functions +QList< DesktopSettings::File > DesktopSettings::writableFiles(){ + QList< DesktopSettings::File > tmp; + if(runmode!=DesktopSettings::SystemFull){ tmp = filesForRunMode(runmode); } + return tmp; +} + QVariant DesktopSettings::value(DesktopSettings::File file, QString variable, QVariant defaultvalue){ if(!files.contains(file)){ return defaultvalue; } for(int i=0; i<files[file].length(); i++){ + //qDebug() << "Look for Settings value:" << variable << files[file]; if( settings.contains(files[file][i])){ //make sure this file is in the settings hash if(settings[files[file][i]]->contains(variable)){ //if this file does not have the variable - go to the next one + //qDebug() << " - Found Setting in File:" << files[file][i]; return settings[files[file][i]]->value(variable, defaultvalue); } } @@ -118,7 +126,7 @@ void DesktopSettings::parseSystemSettings(){ QString defMode = settings[path]->value("default_mode","fulluser").toString().toLower(); if(defMode=="fullsystem"){ runmode= DesktopSettings::SystemFull; } else if(defMode=="staticinterface"){ runmode = DesktopSettings::SystemInterface; } - + else{ runmode = DesktopSettings::UserFull; } //Now determine the runmode for this user struct passwd *pw = getpwuid(getuid()); if(pw!=0){ @@ -178,25 +186,29 @@ void DesktopSettings::locateFiles(){ systemdirs << QString(getenv("XDG_CONFIG_DIRS")).split(":") << QString(getenv("XDG_DATA_DIRS")).split(":"); //Load all the user-level files for this run mode QList< DesktopSettings::File > tmp; - if(runmode == DesktopSettings::UserFull){ tmp << DesktopSettings::Favorites << DesktopSettings::Environment << DesktopSettings::Session << DesktopSettings::Desktop << DesktopSettings::Keys << DesktopSettings::Theme; } - else if(runmode == DesktopSettings::SystemInterface){ tmp << DesktopSettings::Favorites << DesktopSettings::Environment << DesktopSettings::Session << DesktopSettings::Desktop << DesktopSettings::Keys << DesktopSettings::Theme; } - for(int i=0; i<tmp.length(); i++){ - QString path = userdir+rel_path(tmp[i]); - touchFile(path); - files.insert(tmp[i], QStringList() << path); - settings.insert(path, new QSettings(path, QSettings::IniFormat, this) ); - watcher->addPath(path); + if(runmode!=DesktopSettings::SystemFull){ + //Load the user-level files + tmp= filesForRunMode(runmode); + for(int i=0; i<tmp.length(); i++){ + QString path = userdir+rel_path(tmp[i]); + touchFile(path); + files.insert(tmp[i], QStringList() << path); + settings.insert(path, new QSettings(path, QSettings::IniFormat, this) ); + watcher->addPath(path); + } } //Now load all the system-level files - tmp.clear(); - tmp << DesktopSettings::Favorites << DesktopSettings::Environment << DesktopSettings::Session << DesktopSettings::Desktop << DesktopSettings::Keys << DesktopSettings::Theme; + tmp = filesForRunMode(DesktopSettings::SystemFull); for(int i=0; i<systemdirs.length(); i++){ if(systemdirs[i].endsWith("/xdg")){ systemdirs[i] = systemdirs[i].section("/",0,-2); } if( !QFile::exists(systemdirs[i]+"/lumina-desktop") ){ continue; } for(int j=0; j<tmp.length(); j++){ QString path = systemdirs[i]+rel_path(tmp[j]); if(QFile::exists(path)){ - files.insert(tmp[j], QStringList() << path); + QStringList filepaths; + if(files.contains(tmp[j])){ filepaths = files[tmp[j]]; } + filepaths << path; //add this file to the end of the list for this type of settings file + files.insert(tmp[j], filepaths); settings.insert(path, new QSettings(path, QSettings::IniFormat, this) ); watcher->addPath(path); } @@ -219,6 +231,17 @@ void DesktopSettings::touchFile(QString path){ } } +QList< DesktopSettings::File > DesktopSettings::filesForRunMode(RunMode mode){ + // Note that the "System" file is always ignored here - that is specially loaded + QList< DesktopSettings::File > tmp; + if(mode == DesktopSettings::UserFull || mode == DesktopSettings::SystemFull){ + tmp << DesktopSettings::Favorites << DesktopSettings::Environment << DesktopSettings::Session << DesktopSettings::Desktop << DesktopSettings::Panels << DesktopSettings::Plugins << DesktopSettings::Keys << DesktopSettings::ContextMenu << DesktopSettings::Animation << DesktopSettings::ScreenSaver << DesktopSettings::WM; + }else if(runmode == DesktopSettings::SystemInterface){ + tmp << DesktopSettings::Favorites << DesktopSettings::Environment << DesktopSettings::Session; + } + return tmp; +} + QString DesktopSettings::rel_path(DesktopSettings::File file){ QString name; switch(file){ @@ -236,10 +259,16 @@ QString DesktopSettings::rel_path(DesktopSettings::File file){ name="contextmenu"; break; case DesktopSettings::Keys: name="keys"; break; - case DesktopSettings::Theme: - name="theme"; break; case DesktopSettings::Animation: name="animations"; break; + case DesktopSettings::Panels: + name="panels"; break; + case DesktopSettings::Plugins: + name="plugins"; break; + case DesktopSettings::ScreenSaver: + name="screensaver"; break; + case DesktopSettings::WM: + name="windows"; break; } return FILEPREFIX+name+".conf"; } diff --git a/src-qt5/core/libLumina/DesktopSettings.h b/src-qt5/core/libLumina/DesktopSettings.h index dcb10bb6..efb3776e 100644 --- a/src-qt5/core/libLumina/DesktopSettings.h +++ b/src-qt5/core/libLumina/DesktopSettings.h @@ -25,7 +25,8 @@ class DesktopSettings : public QObject{ Q_OBJECT public: - enum File{ System, Favorites, Environment, Session, Desktop, ContextMenu, Keys, Theme, Animation }; + enum File{ System, Favorites, Environment, Session, Desktop, Panels, Plugins, ContextMenu, Keys, Animation, ScreenSaver, WM}; + //Changes to this enum need to be added to the "filesForRunMode()" and "rel_path()" functions as well DesktopSettings(QObject *parent = 0); ~DesktopSettings(); @@ -37,6 +38,7 @@ public: void stop(); //Main Read/Write functions + QList< DesktopSettings::File > writableFiles(); //return the list of all writable files QVariant value(DesktopSettings::File, QString variable, QVariant defaultvalue); bool setValue(DesktopSettings::File, QString variable, QVariant value); QStringList keys(DesktopSettings::File); //return a list of all variables which are available in this file @@ -51,9 +53,13 @@ private: QHash< DesktopSettings::File, QStringList > files; //location hash for where files are actually located on disk QHash< QString, QSettings*> settings; //location hash for the settings files themselves + //Functions void parseSystemSettings(); //run at start - determine the RunMode for this user/session void locateFiles(); //run at start - finds the locations of the various files (based on RunMode) void touchFile(QString path); //used to create an empty file so it can be watched for changes later + + //The two functions which define the public "File" enumeration (both need updates when the enum changes) + QList< DesktopSettings::File > filesForRunMode(RunMode mode); QString rel_path(DesktopSettings::File); //return the relative file path (starting with "/") private slots: diff --git a/src-qt5/core/libLumina/LDesktopUtils.cpp b/src-qt5/core/libLumina/LDesktopUtils.cpp index b79f777d..54e660e6 100644 --- a/src-qt5/core/libLumina/LDesktopUtils.cpp +++ b/src-qt5/core/libLumina/LDesktopUtils.cpp @@ -16,7 +16,7 @@ static QStringList fav; QString LDesktopUtils::LuminaDesktopVersion(){ - QString ver = "1.3.2"; + QString ver = "1.3.3"; #ifdef GIT_VERSION ver.append( QString(" (Git Revision: %1)").arg(GIT_VERSION) ); #endif @@ -143,6 +143,8 @@ void LDesktopUtils::upgradeFavorites(int){ //fromoldversionnumber void LDesktopUtils::LoadSystemDefaults(bool skipOS){ //Will create the Lumina configuration files based on the current system template (if any) qDebug() << "Loading System Defaults"; + bool skipmime = QFile::exists( QString(getenv("XDG_CONFIG_HOME"))+"/lumina-mimapps.list" ); + qDebug() << " - Skipping mimetype default apps" << skipmime; QStringList sysDefaults; if(!skipOS){ sysDefaults = LUtils::readFile(LOS::AppPrefix()+"etc/luminaDesktop.conf"); } if(sysDefaults.isEmpty() && !skipOS){ sysDefaults = LUtils::readFile(LOS::AppPrefix()+"etc/luminaDesktop.conf.dist"); } @@ -193,18 +195,18 @@ void LDesktopUtils::LoadSystemDefaults(bool skipOS){ if(var=="session_enablenumlock"){ sset = "EnableNumlock="+ istrue; } else if(var=="session_playloginaudio"){ sset = "PlayStartupAudio="+istrue; } else if(var=="session_playlogoutaudio"){ sset = "PlayLogoutAudio="+istrue; } - else if(var=="session_default_terminal"){ + else if(var=="session_default_terminal" && !skipmime){ LXDG::setDefaultAppForMime("application/terminal", val); //sset = "default-terminal="+val; - }else if(var=="session_default_filemanager"){ + }else if(var=="session_default_filemanager" && !skipmime){ LXDG::setDefaultAppForMime("inode/directory", val); //sset = "default-filemanager="+val; //loset = "directory="+val; - }else if(var=="session_default_webbrowser"){ + }else if(var=="session_default_webbrowser" && !skipmime){ //loset = "webbrowser="+val; LXDG::setDefaultAppForMime("x-scheme-handler/http", val); LXDG::setDefaultAppForMime("x-scheme-handler/https", val); - }else if(var=="session_default_email"){ + }else if(var=="session_default_email" && !skipmime){ LXDG::setDefaultAppForMime("application/email",val); //loset = "email="+val; } @@ -225,7 +227,7 @@ void LDesktopUtils::LoadSystemDefaults(bool skipOS){ // -- MIMETYPE DEFAULTS -- tmp = sysDefaults.filter("mime_default_"); - for(int i=0; i<tmp.length(); i++){ + for(int i=0; i<tmp.length() && !skipmime; i++){ if(tmp[i].startsWith("#") || !tmp[i].contains("=") ){ continue; } QString var = tmp[i].section("=",0,0).toLower().simplified(); QString val = tmp[i].section("=",1,1).section("#",0,0).simplified(); @@ -337,6 +339,16 @@ void LDesktopUtils::LoadSystemDefaults(bool skipOS){ else if(var=="favorites_remove"){ qDebug() << " - Removing:"; LDesktopUtils::removeFavorite(val); } } + tmp = sysDefaults.filter("desktoplinks_"); + QString desktopFolder = QDir::homePath()+"/Desktop/"; //need to make this translatable and dynamic later + for(int i=0; i<tmp.length(); i++){ + if(tmp[i].startsWith("#") || !tmp[i].contains("=") ){ continue; } + QString var = tmp[i].section("=",0,0).toLower().simplified(); + QString val = tmp[i].section("=",1,1).section("#",0,0).simplified(); + val = LUtils::AppToAbsolute(val); //turn any relative files into absolute + if(var=="desktoplinks_add" && QFile::exists(val) && !QFile::exists(desktopFolder+val.section("/",-1)) ){ QFile::link(val, desktopFolder+val.section("/",-1)); } + } + // -- QUICKLAUNCH -- tmp = sysDefaults.filter("quicklaunch_"); if(tmp.isEmpty()){ tmp = sysDefaults.filter("quicklaunch."); } @@ -409,6 +421,7 @@ void LDesktopUtils::LoadSystemDefaults(bool skipOS){ } } } + } //qDebug() << " - Final Theme Color:" << themesettings[1]; @@ -419,7 +432,16 @@ void LDesktopUtils::LoadSystemDefaults(bool skipOS){ dir.mkpath(setdir); } //Now save the settings files - if(setTheme){ LTHEME::setCurrentSettings( themesettings[0], themesettings[1], themesettings[2], themesettings[3], themesettings[4]); } + if(setTheme){ + LTHEME::setCurrentSettings( themesettings[0], themesettings[1], themesettings[2], themesettings[3], themesettings[4]); + QSettings themeset("lthemeengine","lthemeengine"); + themeset.setValue("Appearance/icon_theme",themesettings[2]); + //Quick hack for a "dark" theme/color to be uniform across the desktop/applications + if(themesettings[0].contains("DarkGlass") || themesettings[1].contains("Black")){ + themeset.setValue("Appearance/custom_palette", true); + themeset.setValue("Appearance/color_scheme_path", LOS::LuminaShare().section("/",0,-3)+"/lthemeengine/colors/darker.conf"); + } + } LUtils::writeFile(setdir+"/sessionsettings.conf", sesset, true); LUtils::writeFile(setdir+"/desktopsettings.conf", deskset, true); diff --git a/src-qt5/core/libLumina/LDesktopUtils.h b/src-qt5/core/libLumina/LDesktopUtils.h index b21bc78a..a9b44c67 100644 --- a/src-qt5/core/libLumina/LDesktopUtils.h +++ b/src-qt5/core/libLumina/LDesktopUtils.h @@ -30,7 +30,7 @@ public: static QString findQuickPluginFile(QString ID); static QStringList listQuickPlugins(); //List of valid ID's static QStringList infoQuickPlugin(QString ID); //Returns: [Name, Description, Icon] - + //Various functions for the favorites sub-system // Formatting Note: "<name>::::[dir/app/<mimetype>]::::<path>" // the <name> field might not be used for "app" flagged entries @@ -40,7 +40,7 @@ public: static bool addFavorite(QString path, QString name = ""); static void removeFavorite(QString path); static void upgradeFavorites(int fromoldversionnumber); - + //Load the default setup for the system static void LoadSystemDefaults(bool skipOS = false); static bool checkUserFiles(QString lastversion); //returns true if something changed diff --git a/src-qt5/core/libLumina/LIconCache.cpp b/src-qt5/core/libLumina/LIconCache.cpp index 70c360fb..84428546 100644 --- a/src-qt5/core/libLumina/LIconCache.cpp +++ b/src-qt5/core/libLumina/LIconCache.cpp @@ -184,6 +184,27 @@ void LIconCache::loadIcon(QLabel *label, QString icon, bool noThumb){ if(needload){ startReadFile(icon, idata.fullpath); } } +void LIconCache::loadIcon(QMenu *action, QString icon, bool noThumb){ + if(icon.isEmpty()){ return; } + if(isThemeIcon(icon)){ + action->setIcon( iconFromTheme(icon)); + return ; + } + //See if the icon has already been loaded into the HASH + bool needload = !HASH.contains(icon); + if(!needload){ + if(!noThumb && !HASH[icon].thumbnail.isNull()){ action->setIcon( HASH[icon].thumbnail ); return; } + else if(!HASH[icon].icon.isNull()){ action->setIcon( HASH[icon].icon ); return; } + } + //Need to load the icon + icon_data idata; + if(HASH.contains(icon)){ idata = HASH.value(icon); } + else { idata = createData(icon); } + idata.pendingMenus << QPointer<QMenu>(action); //save this button for later + HASH.insert(icon, idata); + if(needload){ startReadFile(icon, idata.fullpath); } +} + void LIconCache::clearIconTheme(){ //use when the icon theme changes to refresh all requested icons QStringList keys = HASH.keys(); @@ -282,6 +303,8 @@ void LIconCache::startReadFile(QString id, QString path){ idat.pendingLabels.clear(); for(int i=0; i<idat.pendingActions.length(); i++){ if(!idat.pendingActions[i].isNull()){ idat.pendingActions[i]->setIcon(idat.icon); } } idat.pendingActions.clear(); + for(int i=0; i<idat.pendingMenus.length(); i++){ if(!idat.pendingMenus[i].isNull()){ idat.pendingMenus[i]->setIcon(idat.icon); } } + idat.pendingMenus.clear(); //Now update the hash and let the world know it is available now HASH.insert(id, idat); this->emit IconAvailable(id); diff --git a/src-qt5/core/libLumina/LIconCache.h b/src-qt5/core/libLumina/LIconCache.h index 428ffcab..691d328c 100644 --- a/src-qt5/core/libLumina/LIconCache.h +++ b/src-qt5/core/libLumina/LIconCache.h @@ -4,7 +4,7 @@ // Available under the 3-clause BSD license // See the LICENSE file for full details //=========================================== -// This is a simple class for loading/serving icon files +// This is a simple class for loading/serving icon files // from the icon theme or local filesystem //=========================================== #include <QHash> @@ -26,6 +26,7 @@ struct icon_data{ QList<QPointer<QLabel> > pendingLabels; QList<QPointer<QAbstractButton> > pendingButtons; QList<QPointer<QAction> > pendingActions; + QList<QPointer<QMenu> > pendingMenus; QIcon icon; QIcon thumbnail; }; @@ -50,6 +51,7 @@ public: void loadIcon(QAbstractButton *button, QString icon, bool noThumb = false); void loadIcon(QLabel *label, QString icon, bool noThumb = false); void loadIcon(QAction *action, QString icon, bool noThumb = false); + void loadIcon(QMenu *action, QString icon, bool noThumb = false); QIcon loadIcon(QString icon, bool noThumb = false); //generic loading routine - does not background the loading of icons when not in the cache diff --git a/src-qt5/core/libLumina/LUtils.cpp b/src-qt5/core/libLumina/LUtils.cpp index fa0173dc..491778ca 100644 --- a/src-qt5/core/libLumina/LUtils.cpp +++ b/src-qt5/core/libLumina/LUtils.cpp @@ -26,7 +26,7 @@ inline QStringList ProcessRun(QString cmd, QStringList args){ if(args.isEmpty()){ proc.start(cmd, QIODevice::ReadOnly); }else{ - proc.start(cmd,args ,QIODevice::ReadOnly); + proc.start(cmd,args ,QIODevice::ReadOnly); } QString info; while(!proc.waitForFinished(1000)){ @@ -37,7 +37,7 @@ inline QStringList ProcessRun(QString cmd, QStringList args){ } out[0] = QString::number(proc.exitCode()); out[1] = info+QString(proc.readAllStandardOutput()); - return out; + return out; } //============= // LUtils Functions @@ -59,7 +59,6 @@ int LUtils::runCmd(QString cmd, QStringList args){ return ret;*/ QFuture<QStringList> future = QtConcurrent::run(ProcessRun, cmd, args); return future.result()[0].toInt(); //turn it back into an integer return code - } QStringList LUtils::getCmdOutput(QString cmd, QStringList args){ @@ -72,7 +71,7 @@ QStringList LUtils::getCmdOutput(QString cmd, QStringList args){ if(args.isEmpty()){ proc.start(cmd); }else{ - proc.start(cmd,args); + proc.start(cmd,args); } //if(!proc.waitForStarted(30000)){ return QStringList(); } //process never started - max wait of 30 seconds while(!proc.waitForFinished(300)){ @@ -118,7 +117,7 @@ bool LUtils::isValidBinary(QString& bin){ //Relative path: search for it on the current "PATH" settings QStringList paths = QString(qgetenv("PATH")).split(":"); for(int i=0; i<paths.length(); i++){ - if(QFile::exists(paths[i]+"/"+bin)){ bin = paths[i]+"/"+bin; break;} + if(QFile::exists(paths[i]+"/"+bin)){ bin = paths[i]+"/"+bin; break;} } } //bin should be the full path by now @@ -150,7 +149,7 @@ QSettings* LUtils::openSettings(QString org, QString name, QObject *parent){ }else{ return (new QSettings(filepath, QSettings::IniFormat, parent)); } - + } QStringList LUtils::systemApplicationDirs(){ @@ -164,7 +163,7 @@ QStringList LUtils::systemApplicationDirs(){ for(int i=0; i<appDirs.length(); i++){ if( QFile::exists(appDirs[i]+"/applications") ){ out << appDirs[i]+"/applications"; - //Also check any subdirs within this directory + //Also check any subdirs within this directory // (looking at you KDE - stick to the standards!!) out << LUtils::listSubDirectories(appDirs[i]+"/applications"); } @@ -197,7 +196,7 @@ QString LUtils::GenerateOpenTerminalExec(QString term, QString dirpath){ }else if(term=="konsole" || term == "qterminal"){ exec = term+" --workdir \""+dirpath+"\""; }else{ - //-e is the parameter for most of the terminal appliction to execute an external command. + //-e is the parameter for most of the terminal appliction to execute an external command. //In this case we start a shell in the selected directory //Need the user's shell first QString shell = QString(getenv("SHELL")); @@ -253,12 +252,18 @@ QString LUtils::AppToAbsolute(QString path){ return path; } +QStringList LUtils::videoExtensions() { + static QStringList vidExtensions; + vidExtensions << "avi" << "mkv" << "mp4" << "mov" << "webm" << "wmv"; + return vidExtensions; +} + QStringList LUtils::imageExtensions(bool wildcards){ //Note that all the image extensions are lowercase!! static QStringList imgExtensions; if(imgExtensions.isEmpty()){ QList<QByteArray> fmt = QImageReader::supportedImageFormats(); - for(int i=0; i<fmt.length(); i++){ + for(int i=0; i<fmt.length(); i++){ if(wildcards){ imgExtensions << "*."+QString::fromLocal8Bit(fmt[i]); } else{ imgExtensions << QString::fromLocal8Bit(fmt[i]); } } @@ -308,7 +313,7 @@ QStringList LUtils::imageExtensions(bool wildcards){ qDebug() << "Loading System Encoding:" << langEnc; } //Load current encoding for this locale - QTextCodec::setCodecForLocale( QTextCodec::codecForName(langEnc.toUtf8()) ); + QTextCodec::setCodecForLocale( QTextCodec::codecForName(langEnc.toUtf8()) ); return cTrans; } @@ -379,7 +384,7 @@ void LUtils::setLocaleEnv(QString lang, QString msg, QString time, QString num,Q else{ if(!ctype.contains(".")){ ctype.append(".UTF-8"); } setenv("LC_CTYPE",ctype.toUtf8(),1); - } + } } QString LUtils::currentLocale(){ diff --git a/src-qt5/core/libLumina/LUtils.h b/src-qt5/core/libLumina/LUtils.h index 4ad05ca1..a494d4da 100644 --- a/src-qt5/core/libLumina/LUtils.h +++ b/src-qt5/core/libLumina/LUtils.h @@ -55,7 +55,7 @@ public: //Create the exec string to open a terminal in a particular directory static QString GenerateOpenTerminalExec(QString term, QString dirpath); - + //List all the sub-directories of a parent dir (recursive) static QStringList listSubDirectories(QString dir, bool recursive = true); @@ -65,18 +65,19 @@ public: //Get the list of all file extensions which Qt can read (lowercase) static QStringList imageExtensions(bool wildcards = false); - + static QStringList videoExtensions(); + //Load a translation file for a Lumina Project static QTranslator* LoadTranslation(QApplication *app, QString appname, QString locale = "", QTranslator *cTrans = 0); //Other localization shortcuts static QStringList knownLocales(); //Note: This only lists locales known to Lumina (so the i18n files need to be installed) static void setLocaleEnv(QString lang, QString msg="", QString time="", QString num="" ,QString money="",QString collate="", QString ctype=""); static QString currentLocale(); - + //Number format conversions static double DisplaySizeToBytes(QString num); //Turn a display size (like 50M or 50KB) into a double for calculations (bytes) static QString BytesToDisplaySize(qint64 bytes); //convert into a readable size (like 50M or 50KB) - + static QString SecondsToDisplay(int secs); //convert into a readable time }; #endif diff --git a/src-qt5/core/libLumina/LuminaSingleApplication.cpp b/src-qt5/core/libLumina/LuminaSingleApplication.cpp index 86248666..6811d147 100644 --- a/src-qt5/core/libLumina/LuminaSingleApplication.cpp +++ b/src-qt5/core/libLumina/LuminaSingleApplication.cpp @@ -107,17 +107,17 @@ void LSingleApplication::PerformLockChecks(){ QLocalSocket socket(this); socket.connectToServer(cfile); socket.waitForConnected(); - if(!socket.isValid() || socket.state()!=QLocalSocket::ConnectedState){ + if(!socket.isValid() || socket.state()!=QLocalSocket::ConnectedState){ //error - could not forward info for some reason qDebug() << " - Could not connect to locking process: exiting..."; - exit(1); - } - - qDebug() << " - Forwarding inputs to locking process and closing down this instance..."; + exit(1); + } + + qDebug() << " - Forwarding inputs to locking process and closing down this instance..."; socket.write( inputlist.join("::::").toLocal8Bit() ); socket.waitForDisconnected(500); //max out at 1/2 second (only hits this if no inputs) } - + } //New messages detected diff --git a/src-qt5/core/libLumina/LuminaThemes.cpp b/src-qt5/core/libLumina/LuminaThemes.cpp index 85d43925..ddbc7b37 100644 --- a/src-qt5/core/libLumina/LuminaThemes.cpp +++ b/src-qt5/core/libLumina/LuminaThemes.cpp @@ -23,7 +23,7 @@ //#include "qxcbcursor.h" //needed to prod Qt to refresh the mouse cursor theme //#include <QCursor> -QStringList LTHEME::availableSystemThemes(){ +QStringList LTHEME::availableSystemThemes(){ //returns: [name::::path] for each item QDir dir(LOS::LuminaShare()+"themes"); QStringList list = dir.entryList(QStringList() <<"*.qss.template", QDir::Files, QDir::Name); @@ -31,7 +31,7 @@ QStringList LTHEME::availableSystemThemes(){ //Format the output entry [<name>::::<fullpath>] list[i] = list[i].section(".qss.",0,0)+"::::"+dir.absoluteFilePath(list[i]); } - return list; + return list; } QStringList LTHEME::availableLocalThemes(){ //returns: [name::::path] for each item @@ -52,7 +52,7 @@ QStringList LTHEME::availableSystemColors(){ //returns: [name::::path] for each //Format the output entry [<name>::::<fullpath>] list[i] = list[i].section(".qss.",0,0)+"::::"+dir.absoluteFilePath(list[i]); } - return list; + return list; } QStringList LTHEME::availableLocalColors(){ //returns: [name::::path] for each item @@ -62,7 +62,7 @@ QStringList LTHEME::availableLocalColors(){ //returns: [name::::path] for each //Format the output entry [<name>::::<fullpath>] list[i] = list[i].section(".qss.",0,0)+"::::"+dir.absoluteFilePath(list[i]); } - return list; + return list; } QStringList LTHEME::availableSystemIcons(){ //returns: [name] for each item @@ -72,7 +72,7 @@ QStringList LTHEME::availableSystemIcons(){ //returns: [name] for each item xdd << QString(getenv("XDG_DATA_DIRS")).split(":"); for(int i=0; i<xdd.length(); i++){ if(QFile::exists(xdd[i]+"/icons")){ - paths << xdd[i]+"/icons"; + paths << xdd[i]+"/icons"; } } //Now get all the icon themes in these directories @@ -83,8 +83,8 @@ QStringList LTHEME::availableSystemIcons(){ //returns: [name] for each item tmpthemes = dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot, QDir::Name); for(int j=0; j<tmpthemes.length(); j++){ if(tmpthemes[j].startsWith("default")){ continue; } - if(QFile::exists(dir.absoluteFilePath(tmpthemes[j]+"/index.theme")) || - QFile::exists(dir.absoluteFilePath(tmpthemes[j]+"/index.desktop")) ){ themes << tmpthemes[j]; } + if( (QFile::exists(dir.absoluteFilePath(tmpthemes[j]+"/index.theme")) || + QFile::exists(dir.absoluteFilePath(tmpthemes[j]+"/index.desktop")) ) ){ themes << tmpthemes[j]; } } } } @@ -92,21 +92,32 @@ QStringList LTHEME::availableSystemIcons(){ //returns: [name] for each item themes.sort(); return themes; } - + QStringList LTHEME::availableSystemCursors(){ //returns: [name] for each item - QStringList paths; paths << LOS::SysPrefix()+"lib/X11/icons/" << LOS::AppPrefix()+"lib/X11/icons/"; - QStringList out; + QStringList paths; + paths << QDir::homePath()+"/.icons"; + QStringList xdd = QString(getenv("XDG_DATA_HOME")).split(":"); + xdd << QString(getenv("XDG_DATA_DIRS")).split(":"); + for(int i=0; i<xdd.length(); i++){ + if(QFile::exists(xdd[i]+"/icons")){ + paths << xdd[i]+"/icons"; + } + } + //Now get all the icon themes in these directories + QStringList themes, tmpthemes; + QDir dir; for(int i=0; i<paths.length(); i++){ - if( !QFile::exists(paths[i]) ){ continue; } - QDir dir(paths[i]); - QStringList tmp = dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot, QDir::Name); - for(int j=0; j<tmp.length(); j++){ - if(QFile::exists(paths[i]+tmp[j]+"/cursors")){ - out << tmp[j]; //good theme - save it to the output list - } + if(dir.cd(paths[i])){ + tmpthemes = dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot, QDir::Name); + for(int j=0; j<tmpthemes.length(); j++){ + if(tmpthemes[j].startsWith("default")){ continue; } + if( QFile::exists(dir.absoluteFilePath(tmpthemes[j]+"/cursors")) ){ themes << tmpthemes[j]; } + } } } - return out; + themes.removeDuplicates(); + themes.sort(); + return themes; } //Save a new theme/color file @@ -119,7 +130,7 @@ bool LTHEME::saveLocalTheme(QString name, QStringList contents){ bool LTHEME::saveLocalColors(QString name, QStringList contents){ QString localdir = QString(getenv("XDG_CONFIG_HOME"))+"/lumina-desktop/colors/"; if(!QFile::exists(localdir)){ QDir dir; dir.mkpath(localdir); } - return LUtils::writeFile(localdir+name+".qss.colors", contents, true); + return LUtils::writeFile(localdir+name+".qss.colors", contents, true); } //Return the currently selected Theme/Colors/Icons @@ -129,21 +140,23 @@ QStringList LTHEME::currentSettings(){ //returns [theme path, colorspath, iconsn for(int i=0; i<settings.length(); i++){ if(settings[i].startsWith("THEMEFILE=")){ out[0] = settings[i].section("=",1,1).simplified(); } else if(settings[i].startsWith("COLORFILE=")){ out[1] = settings[i].section("=",1,1).simplified(); } - else if(settings[i].startsWith("ICONTHEME=")){ out[2] = settings[i].section("=",1,1).simplified(); } + //else if(settings[i].startsWith("ICONTHEME=")){ out[2] = settings[i].section("=",1,1).simplified(); } else if(settings[i].startsWith("FONTFAMILY=")){ out[3] = settings[i].section("=",1,1).simplified(); } else if(settings[i].startsWith("FONTSIZE=")){ out[4] = settings[i].section("=",1,1).simplified(); } } + QSettings engineset("lthemeengine","lthemeengine"); + out[2]=engineset.value("Appearance/icon_theme", "material-design-light").toString(); bool nofile = settings.isEmpty(); if(out[0].isEmpty() || !QFile::exists(out[0]) ){ out[0] = LOS::LuminaShare()+"themes/Lumina-default.qss.template"; } if(out[1].isEmpty() || !QFile::exists(out[1]) ){ out[1] = LOS::LuminaShare()+"colors/Lumina-Glass.qss.colors"; } if(out[3].isEmpty()){ out[3] = QFont().defaultFamily(); } - if(out[4].isEmpty()){ + if(out[4].isEmpty()){ int num = QFont().pointSize(); out[4] = QString::number(num)+"pt"; //Check point size first if(num<0){ num = QFont().pixelSize(); out[4] = QString::number(num)+"px";} //Now check pixel size if(num<0){ out[4] = "9pt"; } //Now hard-code a fallback (just in case) } if(nofile){ setCurrentSettings(out[0], out[1], out[2], out[3], out[4]); } - + return out; } @@ -167,8 +180,14 @@ QString LTHEME::currentCursor(){ //Change the current Theme/Colors/Icons bool LTHEME::setCurrentSettings(QString themepath, QString colorpath, QString iconname, QString font, QString fontsize){ - QIcon::setThemeName(iconname); - //Now save the theme settings file + //QIcon::setThemeName(iconname); + QSettings engineset("lthemeengine","lthemeengine"); + engineset.setValue("Appearance/icon_theme", iconname); + //engineset.setValue("Appearance/color_scheme_path", colorpath); //re-enable this once the color scheme has been synced with lthemeengine + //Need to add theme path saving here too later + + + //Now save the theme settings file QStringList contents; contents << "THEMEFILE="+themepath; contents << "COLORFILE="+colorpath; @@ -195,13 +214,13 @@ bool LTHEME::setCursorTheme(QString cursorname){ bool changed = false; QString newval = "Inherits="+cursorname; for(int i=0; i<info.length() && !changed; i++){ - if(info[i]=="[Icon Theme]"){ + if(info[i]=="[Icon Theme]"){ insection = true; - }else if( info[i].startsWith("[") && insection){ + }else if( info[i].startsWith("[") && insection){ //Section does not have the setting - add it - info.insert(i, newval); + info.insert(i, newval); changed =true; - }else if( info[i].startsWith("[") ){ + }else if( info[i].startsWith("[") ){ insection = false; }else if(insection && info[i].startsWith("Inherits=")){ info[i] = newval; //replace the current setting diff --git a/src-qt5/core/libLumina/LuminaXDG.cpp b/src-qt5/core/libLumina/LuminaXDG.cpp index 01b3305e..ab1000ab 100644 --- a/src-qt5/core/libLumina/LuminaXDG.cpp +++ b/src-qt5/core/libLumina/LuminaXDG.cpp @@ -44,7 +44,7 @@ void XDGDesktop::sync(){ //Get the current localization code type = XDGDesktop::APP; //assume this initially if we read the file properly QString lang = QLocale::system().name(); //lang code - QString slang = lang.section("_",0,0); //short lang code + QString slang = lang.section("_",0,0); //short lang code //Now start looping over the information XDGDesktopAction CDA; //current desktop action bool insection=false; @@ -53,14 +53,14 @@ void XDGDesktop::sync(){ QString line = file[i]; //if(filePath.contains("pcbsd")){ qDebug() << " - Check Line:" << line << inaction << insection; } //Check if this is the end of a section - if(line.startsWith("[") && inaction){ + if(line.startsWith("[") && inaction){ insection=false; inaction=false; //Add the current Action structure to the main desktop structure if appropriate if(!CDA.ID.isEmpty()){ actions << CDA; CDA = XDGDesktopAction(); } }else if(line.startsWith("[")){ insection=false; inaction = false; } //Now check if this is the beginning of a section if(line=="[Desktop Entry]"){ insection=true; continue; } - else if(line.startsWith("[Desktop Action ")){ + else if(line.startsWith("[Desktop Action ")){ //Grab the ID of the action out of the label CDA.ID = line.section("]",0,0).section("Desktop Action",1,1).simplified(); inaction = true; @@ -73,26 +73,26 @@ void XDGDesktop::sync(){ var = var.section("[",0,0).simplified(); //remove the localization QString val = line.section("=",1,50).simplified(); //------------------- - if(var=="Name"){ + if(var=="Name"){ if(insection){ - if(name.isEmpty() && loc.isEmpty()){ name = val; } - else if(name.isEmpty() && loc==slang){ name = val; } //short locale code - else if(loc == lang){ name = val; } + if(loc==slang){ name = val;} //short locale code + else if(loc==lang){ name = val;} + else if(name.isEmpty() && loc.isEmpty()){ /*qDebug() << "Empty" << val;*/ name = val; } }else if(inaction){ if(CDA.name.isEmpty() && loc.isEmpty()){ CDA.name = val; } else if(CDA.name.isEmpty() && loc==slang){ CDA.name = val; } //short locale code - else if(loc == lang){ CDA.name = val; } + else if(loc == lang){ CDA.name = val; } } //hasName = true; - }else if(var=="GenericName" && insection){ + }else if(var=="GenericName" && insection){ if(genericName.isEmpty() && loc.isEmpty()){ genericName = val; } else if(genericName.isEmpty() && loc==slang){ genericName = val; } //short locale code else if(loc == lang){ genericName = val; } - }else if(var=="Comment" && insection){ + }else if(var=="Comment" && insection){ if(comment.isEmpty() && loc.isEmpty()){ comment = val; } else if(comment.isEmpty() && loc==slang){ comment = val; } //short locale code else if(loc == lang){ comment = val; } - }else if(var=="Icon"){ + }else if(var=="Icon"){ if(insection){ if(icon.isEmpty() && loc.isEmpty()){ icon = val; } else if(icon.isEmpty() && loc==slang){ icon = val; } //short locale code @@ -107,7 +107,7 @@ void XDGDesktop::sync(){ else if(var=="Exec"){ if(insection && exec.isEmpty() ){ exec = val; } else if(inaction && CDA.exec.isEmpty() ){ CDA.exec = val; } - } + } else if( (var=="Path") && (path.isEmpty() ) && insection){ path = val; } else if(var=="NoDisplay" && !isHidden && insection){ isHidden = (val.toLower()=="true"); } else if(var=="Hidden" && !isHidden && insection){ isHidden = (val.toLower()=="true"); } @@ -117,7 +117,7 @@ void XDGDesktop::sync(){ else if(var=="Terminal" && insection){ useTerminal= (val.toLower()=="true"); } else if(var=="Actions" && insection){ actionList = val.split(";",QString::SkipEmptyParts); } else if(var=="MimeType" && insection){ mimeList = val.split(";",QString::SkipEmptyParts); } - else if(var=="Keywords" && insection){ + else if(var=="Keywords" && insection){ if(keyList.isEmpty() && loc.isEmpty()){ keyList = val.split(";",QString::SkipEmptyParts); } else if(loc == lang){ keyList = val.split(";",QString::SkipEmptyParts); } } @@ -136,7 +136,7 @@ void XDGDesktop::sync(){ file.clear(); //done with contents of file //If there are OnlyShowIn desktops listed, add them to the name if( !showInList.isEmpty() && !showInList.contains("Lumina", Qt::CaseInsensitive) ){ - name.append(" ("+showInList.join(", ")+")"); + name.append(" ("+showInList.join(", ")+")"); } //Quick fix for showing "wine" applications (which quite often don't list a category, or have other differences) if(catList.isEmpty() && filePath.contains("/wine/")){ @@ -164,7 +164,7 @@ bool XDGDesktop::isValid(bool showAll){ //if(DEBUG){ qDebug() << "[LXDG] Check File validity:" << dFile.name << dFile.filePath; } switch (type){ case XDGDesktop::BAD: - ok=false; + ok=false; //if(DEBUG){ qDebug() << " - Bad file type"; } break; case XDGDesktop::APP: @@ -182,7 +182,7 @@ bool XDGDesktop::isValid(bool showAll){ break; default: ok=false; - //if(DEBUG){ qDebug() << " - Unknown file type"; } + //if(DEBUG){ qDebug() << " - Unknown file type"; } } if(!showAll){ QString cdesk = getenv("XDG_CURRENT_DESKTOP"); @@ -206,7 +206,7 @@ QString XDGDesktop::getDesktopExec(QString ActionID){ } } } - + if(out.isEmpty()){ return ""; } else if(useTerminal){ //Get the currently default terminal @@ -222,7 +222,7 @@ QString XDGDesktop::getDesktopExec(QString ActionID){ } //Now perform any of the XDG flag substitutions as appropriate (9/2014 standards) if(out.contains("%i") && !icon.isEmpty() ){ out.replace("%i", "--icon \""+icon+"\""); } - if(out.contains("%c")){ + if(out.contains("%c")){ if(!name.isEmpty()){ out.replace("%c", "\""+name+"\""); } else if(!genericName.isEmpty()){ out.replace("%c", "\""+genericName+"\""); } else{ out.replace("%c", "\""+filePath.section("/",-1).section(".desktop",0,0)+"\""); } @@ -250,17 +250,17 @@ QString XDGDesktop::generateExec(QStringList inputfiles, QString ActionID){ } } //Now to the exec replacements as needed - if(exec.contains("%f")){ + if(exec.contains("%f")){ if(inputfiles.isEmpty()){ exec.replace("%f",""); } else{ exec.replace("%f", "\""+inputfiles.first()+"\""); } //Note: can only take one input - }else if(exec.contains("%F")){ + }else if(exec.contains("%F")){ if(inputfiles.isEmpty()){ exec.replace("%F",""); } else{ exec.replace("%F", "\""+inputfiles.join("\" \"")+"\""); } } - if(exec.contains("%u")){ + if(exec.contains("%u")){ if(inputfiles.isEmpty()){ exec.replace("%u",""); } else{ exec.replace("%u", "\""+inputfiles.first()+"\""); } //Note: can only take one input - }else if(exec.contains("%U")){ + }else if(exec.contains("%U")){ if(inputfiles.isEmpty()){ exec.replace("%U",""); } else{ exec.replace("%U", "\""+inputfiles.join("\" \"")+"\""); } } @@ -281,7 +281,7 @@ bool XDGDesktop::saveDesktopFile(bool merge){ info = LUtils::readFile(filePath); //set a couple flags based on the contents before we start iterating through // - determine if a translated field was changed (need to remove all the now-invalid translations) - bool clearName, clearComment, clearGName; + bool clearName, clearComment, clearGName; QString tmp = ""; if(!info.filter("Name=").isEmpty()){ tmp = info.filter("Name=").first().section("=",1,50); } clearName=(tmp!=name); @@ -294,13 +294,13 @@ bool XDGDesktop::saveDesktopFile(bool merge){ //Now start iterating through the file and changing fields as necessary bool insection = false; for(int i=0; i<info.length(); i++){ - if(info[i]=="[Desktop Entry]"){ - insection = true; + if(info[i]=="[Desktop Entry]"){ + insection = true; continue; - }else if(info[i].startsWith("[")){ + }else if(info[i].startsWith("[")){ if(insection){ insertloc = i; } //save this location for later insertions - insection = false; - continue; + insection = false; + continue; } if(!insection || info[i].isEmpty() || info[i].section("#",0,0).simplified().isEmpty()){ continue; } QString var = info[i].section("=",0,0); @@ -331,25 +331,25 @@ bool XDGDesktop::saveDesktopFile(bool merge){ else if(var=="OnlyShowIn"){ info[i] = var+"="+showInList.join(";"); showInList.clear(); } else if(var=="NotShowIn"){ info[i] = var+"="+notShowInList.join(";"); notShowInList.clear(); } else if(var=="URL"){ info[i] = var+"="+url; url.clear(); } - + // --BOOLIAN VALUES-- - else if(var=="Hidden"){ + else if(var=="Hidden"){ if(!autofile){ info.removeAt(i); i--; continue; } else{ info[i] = var+"="+(isHidden ? "true": "false"); isHidden=false;} - }else if(var=="NoDisplay"){ + }else if(var=="NoDisplay"){ if(autofile){ info.removeAt(i); i--; continue; } else{ info[i] = var+"="+(isHidden ? "true": "false"); isHidden=false;} - }else if(var=="Terminal"){ + }else if(var=="Terminal"){ info[i] = var+"="+(useTerminal ? "true": "false"); useTerminal=false; - }else if(var=="StartupNotify"){ + }else if(var=="StartupNotify"){ info[i] = var+"="+(startupNotify ? "true": "false"); startupNotify=false; } // Remove any lines that have been un-set or removed from the file if(info[i].section("=",1,50).simplified().isEmpty()){ info.removeAt(i); i--; } } - + }else{ - //Just write a new file and overwrite any old one + //Just write a new file and overwrite any old one // (pre-set some values here which are always required) info << "[Desktop Entry]"; info << "Version=1.0"; @@ -357,7 +357,7 @@ bool XDGDesktop::saveDesktopFile(bool merge){ else if(type==XDGDesktop::LINK){ info << "Type=Link"; } else if(type==XDGDesktop::DIR){ info << "Type=Dir"; } } - + if(insertloc<0){ insertloc = info.size(); }//put it at the end //Now add in any items that did not exist in the original file if( !exec.isEmpty() ){ info.insert(insertloc,"Exec="+exec); } @@ -379,7 +379,7 @@ bool XDGDesktop::saveDesktopFile(bool merge){ else if(isHidden){ info.insert(insertloc,"NoDisplay=true"); } if( useTerminal){ info.insert(insertloc,"Terminal=true"); } if( startupNotify ){ info.insert(insertloc,"StartupNotify=true"); } - + //Now save the file return LUtils::writeFile(filePath, info, true); } @@ -409,7 +409,7 @@ bool XDGDesktop::setAutoStarted(bool autostart){ } } //Make sure the user-autostart dir is specified, and clean the app structure as necessary - if( !filePath.startsWith(upath) && autostart){ + if( !filePath.startsWith(upath) && autostart){ //Some other non-override autostart file - set it up to open with lumina-open if(!filePath.endsWith(".desktop")){ exec = "lumina-open \""+filePath+"\""; @@ -444,6 +444,39 @@ bool XDGDesktop::setAutoStarted(bool autostart){ return saved; } +void XDGDesktop::addToMenu(QMenu *topmenu){ + if(!this->isValid()){ return; } + if(actions.isEmpty()){ + //Just a single entry point - no extra actions + QAction *act = new QAction(this->name, topmenu); + act->setIcon(LXDG::findIcon(this->icon, "")); + act->setToolTip(this->comment); + act->setWhatsThis(this->filePath); + topmenu->addAction(act); + }else{ + //This app has additional actions - make this a sub menu + // - first the main menu/action + QMenu *submenu = new QMenu(this->name, topmenu); + submenu->setIcon( LXDG::findIcon(this->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(this->name, submenu); + act->setIcon(LXDG::findIcon(this->icon, "")); + act->setToolTip(this->comment); + act->setWhatsThis(this->filePath); + submenu->addAction(act); + //Now add entries for every sub-action listed + for(int sa=0; sa<this->actions.length(); sa++){ + QAction *sact = new QAction( this->actions[sa].name, this); + sact->setIcon(LXDG::findIcon( this->actions[sa].icon, this->icon)); + sact->setToolTip(this->comment); + sact->setWhatsThis("-action \""+this->actions[sa].ID+"\" \""+this->filePath+"\""); + submenu->addAction(sact); + } + topmenu->addMenu(submenu); + } +} + + //====XDGDesktopList Functions ==== XDGDesktopList::XDGDesktopList(QObject *parent, bool watchdirs) : QObject(parent){ synctimer = new QTimer(this); //interval set automatically based on changes/interactions @@ -462,6 +495,14 @@ XDGDesktopList::~XDGDesktopList(){ //nothing special to do here } +XDGDesktopList* XDGDesktopList::instance(){ + static XDGDesktopList *APPLIST = 0; + if(APPLIST==0){ + APPLIST = new XDGDesktopList(0, true); + } + return APPLIST; +} + void XDGDesktopList::watcherChanged(){ if(synctimer->isActive()){ synctimer->stop(); } synctimer->setInterval(1000); //1 second delay before check kicks off @@ -484,7 +525,7 @@ void XDGDesktopList::updateList(){ apps = dir.entryList(QStringList() << "*.desktop",QDir::Files, QDir::Name); for(int a=0; a<apps.length(); a++){ path = dir.absoluteFilePath(apps[a]); - if(files.contains(path) && (files.value(path)->lastRead>QFileInfo(path).lastModified()) ){ + if(files.contains(path) && (files.value(path)->lastRead>QFileInfo(path).lastModified()) ){ //Re-use previous data for this file (nothing changed) found << files[path]->name; //keep track of which files were already found }else{ @@ -503,7 +544,7 @@ void XDGDesktopList::updateList(){ } //end loop over apps } //end loop over appDirs //Save the extra info to the internal lists - if(!firstrun){ + if(!firstrun){ removedApps = oldkeys;//files which were removed newApps = newfiles; //files which were added } @@ -539,6 +580,52 @@ QList<XDGDesktop*> XDGDesktopList::apps(bool showAll, bool showHidden){ return out; } +XDGDesktop* XDGDesktopList::findAppFile(QString filename){ + QStringList keys = files.keys().filter(filename); + QString chk = filename.section("/",-1); + for(int i=0; i<keys.length(); i++){ + if(keys[i] == filename || keys[i].endsWith("/"+chk)){ return files[keys[i]]; } + } + //No matches + return 0; +} + +void XDGDesktopList::populateMenu(QMenu *topmenu, bool byCategory){ + topmenu->clear(); + if(byCategory){ + QHash<QString, QList<XDGDesktop*> > APPS = LXDG::sortDesktopCats( this->apps(false,false) ); + QStringList cats = APPS.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, topmenu); + menu->setIcon(LXDG::findIcon(icon,"")); + QList<XDGDesktop*> appL = APPS.value(cats[i]); + for( int a=0; a<appL.length(); a++){ appL[a]->addToMenu(menu); } + topmenu->addMenu(menu); + } //end loop over cats + }else{ + QList<XDGDesktop*> APPS = this->apps(false, false); + for(int i=0; i<APPS.length(); i++){ APPS[i]->addToMenu(topmenu); } + } +} + //==== LFileInfo Functions ==== //Need some extra information not usually available by a QFileInfo void LFileInfo::loadExtraInfo(){ @@ -617,7 +704,14 @@ XDGDesktop* LFileInfo::XDG(){ return desk; } -// -- Check if this is a readable image file (for thumbnail support) +// -- Check if this is a readable video file (for thumbnail support) +bool LFileInfo::isVideo(){ + if(!mime.startsWith("video/")){ return false; } + //Check the hardcoded list of known supported video formats to see if the thumbnail can be generated + return ( !LUtils::videoExtensions().filter(this->suffix().toLower()).isEmpty() ); +} + +// -- Check if this is a readable image file bool LFileInfo::isImage(){ if(!mime.startsWith("image/")){ return false; } //quick return for non-image files //Check the Qt subsystems to see if this image file can be read diff --git a/src-qt5/core/libLumina/LuminaXDG.h b/src-qt5/core/libLumina/LuminaXDG.h index cc250c7e..0f7e7c48 100644 --- a/src-qt5/core/libLumina/LuminaXDG.h +++ b/src-qt5/core/libLumina/LuminaXDG.h @@ -28,7 +28,8 @@ #include <QTextStream> #include <QDateTime> #include <QDebug> - +#include <QMenu> +#include <QAction> // ====================== // FreeDesktop Desktop Actions Framework (data structure) @@ -82,6 +83,9 @@ public: bool saveDesktopFile(bool merge = true); //This will use the "filePath" variable for where to save the file bool setAutoStarted(bool autostart = true); + + //Create a menu entry for this application + void addToMenu(QMenu*); }; // ======================== @@ -93,8 +97,13 @@ public: //Functions XDGDesktopList(QObject *parent = 0, bool watchdirs = false); ~XDGDesktopList(); + + static XDGDesktopList* instance(); + //Main Interface functions QList<XDGDesktop*> apps(bool showAll, bool showHidden); //showAll: include invalid files, showHidden: include NoShow/Hidden files + XDGDesktop* findAppFile(QString filename); + void populateMenu(QMenu *, bool byCategory = true); //Administration variables (not typically used directly) QDateTime lastCheck; @@ -150,6 +159,7 @@ public: //Other file type identification routines bool isImage(); //Is a readable image file (for thumbnail support) + bool isVideo(); //Is a readable video file (for thumbnail support) bool isAVFile(); //Is an audio/video file }; typedef QList<LFileInfo> LFileInfoList; diff --git a/src-qt5/core/libLumina/NativeEmbedWidget.cpp b/src-qt5/core/libLumina/NativeEmbedWidget.cpp index 487d1040..ff0f4734 100644 --- a/src-qt5/core/libLumina/NativeEmbedWidget.cpp +++ b/src-qt5/core/libLumina/NativeEmbedWidget.cpp @@ -8,31 +8,75 @@ #include <QPainter> #include <QX11Info> +#include <QApplication> +#include <QScreen> #include <QDebug> #include <xcb/xproto.h> #include <xcb/xcb_aux.h> +#include <xcb/xcb_event.h> #include <xcb/xcb_image.h> +//#include <xcb/render.h> +//#include <xcb/xcb_renderutil.h> #include <xcb/composite.h> #include <X11/extensions/Xdamage.h> #define DISABLE_COMPOSITING true -#define NORMAL_WIN_EVENT_MASK (XCB_EVENT_MASK_BUTTON_PRESS | \ - XCB_EVENT_MASK_BUTTON_RELEASE | \ - XCB_EVENT_MASK_POINTER_MOTION | \ - XCB_EVENT_MASK_BUTTON_MOTION | \ - XCB_EVENT_MASK_EXPOSURE | \ - XCB_EVENT_MASK_STRUCTURE_NOTIFY | \ - XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT | \ - XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY | \ - XCB_EVENT_MASK_ENTER_WINDOW| \ - XCB_EVENT_MASK_PROPERTY_CHANGE) +/*inline xcb_render_pictformat_t get_pictformat(){ + static xcb_render_pictformat_t format = 0; + if(format==0){ + xcb_render_query_pict_formats_reply_t *reply = xcb_render_query_pict_formats_reply( QX11Info::connection(), xcb_render_query_pict_formats(QX11Info::connection()), NULL); + format = xcb_render_util_find_standard_format(reply, XCB_PICT_STANDARD_ARGB_32)->id; + free(reply); + } + return format; +} + +inline void renderWindowToWidget(WId id, QWidget *widget, bool hastransparency = true){ + //window and widget are assumed to be the same size + //Pull the XCB pixmap out of the compositing layer + xcb_pixmap_t pix = xcb_generate_id(QX11Info::connection()); + xcb_composite_name_window_pixmap(QX11Info::connection(), WIN->id(), pix); + if(pix==0){ qDebug() << "Got blank pixmap!"; return; } -inline void registerClientEvents(WId id){ - uint32_t value_list[1] = {NORMAL_WIN_EVENT_MASK}; - xcb_change_window_attributes(QX11Info::connection(), id, XCB_CW_EVENT_MASK, value_list); + xcb_render_picture_t pic_id = xcb_generate_id(QX11Info::connection()); + xcb_render_create_picture_aux(QX11Info::connection(), pic_id, pix, get_pictformat() , 0, NULL); + // + xcb_render_composite(QX11Info::connection(), hastransparency ? XCB_RENDER_PICT_OP_OVER : XCB_RENDER_PICT_OP_SRC, pic_id, XCB_RENDER_PICTURE_NONE, widget->x11RenderHandle(), + 0, 0, 0, 0, 0, 0, (uint16_t) widget->width(), (uint16_t) widget->height() ); +}*/ + +#define CLIENT_EVENT_MASK (XCB_EVENT_MASK_PROPERTY_CHANGE | \ + XCB_EVENT_MASK_STRUCTURE_NOTIFY | \ + XCB_EVENT_MASK_FOCUS_CHANGE | \ + XCB_EVENT_MASK_POINTER_MOTION) + +#define FRAME_EVENT_MASK (XCB_EVENT_MASK_BUTTON_PRESS | \ + XCB_EVENT_MASK_BUTTON_RELEASE | \ + XCB_EVENT_MASK_POINTER_MOTION | \ + XCB_EVENT_MASK_EXPOSURE | \ + XCB_EVENT_MASK_STRUCTURE_NOTIFY | \ + XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT | \ + XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY | \ + XCB_EVENT_MASK_ENTER_WINDOW) + +inline void registerClientEvents(WId id, bool client = true){ + uint32_t values[] = {XCB_NONE}; + values[0] = client ? CLIENT_EVENT_MASK : FRAME_EVENT_MASK ; + /*{ (XCB_EVENT_MASK_PROPERTY_CHANGE + | XCB_EVENT_MASK_BUTTON_PRESS + | XCB_EVENT_MASK_BUTTON_RELEASE + | XCB_EVENT_MASK_POINTER_MOTION + | XCB_EVENT_MASK_BUTTON_MOTION + | XCB_EVENT_MASK_EXPOSURE + | XCB_EVENT_MASK_STRUCTURE_NOTIFY + | XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT + | XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY + | XCB_EVENT_MASK_ENTER_WINDOW) + };*/ + xcb_change_window_attributes(QX11Info::connection(), id, XCB_CW_EVENT_MASK, values); } // ============ @@ -40,12 +84,14 @@ inline void registerClientEvents(WId id){ // ============ //Simplification functions for the XCB/XLib interactions void NativeEmbedWidget::syncWinSize(QSize sz){ - if(WIN==0 ){ return; } + if(WIN==0){ return; } else if(!sz.isValid()){ sz = this->size(); } //use the current widget size //qDebug() << "Sync Window Size:" << sz; - if(sz == winSize){ return; } //no change - const uint32_t valList[2] = {(uint32_t) sz.width(), (uint32_t) sz.height()}; - const uint32_t mask = XCB_CONFIG_WINDOW_WIDTH | XCB_CONFIG_WINDOW_HEIGHT; + //if(sz == winSize){ return; } //no change + QPoint pt(0,0); + if(!DISABLE_COMPOSITING){ pt = this->mapToGlobal(QPoint(0,0)); } + const uint32_t valList[4] = {(uint32_t) pt.x(), (uint32_t) pt.y(), (uint32_t) sz.width(), (uint32_t) sz.height()}; + const uint32_t mask = XCB_CONFIG_WINDOW_X | XCB_CONFIG_WINDOW_Y | XCB_CONFIG_WINDOW_WIDTH | XCB_CONFIG_WINDOW_HEIGHT; xcb_configure_window(QX11Info::connection(), WIN->id(), mask, valList); winSize = sz; //save this for checking later } @@ -56,47 +102,74 @@ void NativeEmbedWidget::syncWidgetSize(QSize sz){ } void NativeEmbedWidget::hideWindow(){ + //qDebug() << "Hide Embed Window"; xcb_unmap_window(QX11Info::connection(), WIN->id()); } void NativeEmbedWidget::showWindow(){ + //qDebug() << "Show Embed Window"; xcb_map_window(QX11Info::connection(), WIN->id()); - QTimer::singleShot(0,this, SLOT(repaintWindow())); + reregisterEvents(); + if(!DISABLE_COMPOSITING){ + QTimer::singleShot(0,this, SLOT(repaintWindow())); + } } QImage NativeEmbedWidget::windowImage(QRect geom){ - //Pull the XCB pixmap out of the compositing layer - xcb_pixmap_t pix = xcb_generate_id(QX11Info::connection()); - xcb_composite_name_window_pixmap(QX11Info::connection(), WIN->id(), pix); - if(pix==0){ qDebug() << "Got blank pixmap!"; return QImage(); } - - //Convert this pixmap into a QImage - xcb_image_t *ximg = xcb_image_get(QX11Info::connection(), pix, geom.x(), geom.y(), geom.width(), geom.height(), ~0, XCB_IMAGE_FORMAT_Z_PIXMAP); - if(ximg == 0){ qDebug() << "Got blank image!"; return QImage(); } - QImage img(ximg->data, ximg->width, ximg->height, ximg->stride, QImage::Format_ARGB32_Premultiplied); - img = img.copy(); //detach this image from the XCB data structures - xcb_image_destroy(ximg); + //if(DISABLE_COMPOSITING){ + if(!this->isVisible()){ return QImage(); } //nothing to grab yet + QList<QScreen*> screens = static_cast<QApplication*>( QApplication::instance() )->screens(); + //for(int i=0; i<screens.length(); i++){ + //if(screens[i]->contains(this)){ + if(!screens.isEmpty()){ + return screens[0]->grabWindow(WIN->id(), geom.x(), geom.y(), geom.width(), geom.height()).toImage(); + } + //} + //} + return QImage(); + /*}else{ + //Pull the XCB pixmap out of the compositing layer + xcb_pixmap_t pix = xcb_generate_id(QX11Info::connection()); + xcb_composite_name_window_pixmap(QX11Info::connection(), WIN->id(), pix); + if(pix==0){ qDebug() << "Got blank pixmap!"; return QImage(); } - //Cleanup the XCB data structures - xcb_free_pixmap(QX11Info::connection(), pix); + //Convert this pixmap into a QImage + //xcb_image_t *ximg = xcb_image_get(QX11Info::connection(), pix, 0, 0, this->width(), this->height(), ~0, XCB_IMAGE_FORMAT_Z_PIXMAP); + xcb_image_t *ximg = xcb_image_get(QX11Info::connection(), pix, geom.x(), geom.y(), geom.width(), geom.height(), ~0, XCB_IMAGE_FORMAT_Z_PIXMAP); + if(ximg == 0){ qDebug() << "Got blank image!"; return QImage(); } + QImage img(ximg->data, ximg->width, ximg->height, ximg->stride, QImage::Format_ARGB32_Premultiplied); + img = img.copy(); //detach this image from the XCB data structures before we clean them up, otherwise the QImage will try to clean it up a second time on window close and crash + xcb_image_destroy(ximg); - return img; + //Cleanup the XCB data structures + xcb_free_pixmap(QX11Info::connection(), pix); + return img; + }*/ +} +void NativeEmbedWidget::setWinUnpaused(){ + paused = false; + winImage = QImage(); + if(!DISABLE_COMPOSITING){ + repaintWindow(); //update the cached image right away + }else if(this->isVisible()){ + showWindow(); + } + resyncWindow(); //make sure the window knows about the new location } - // ============ // PUBLIC // ============ NativeEmbedWidget::NativeEmbedWidget(QWidget *parent) : QWidget(parent){ WIN = 0; //nothing embedded yet paused = false; + this->setMouseTracking(true); //this->setSizeIncrement(2,2); } bool NativeEmbedWidget::embedWindow(NativeWindow *window){ WIN = window; - //PIXBACK = xcb_generate_id(QX11Info::connection()); - xcb_reparent_window(QX11Info::connection(), WIN->id(), this->winId(), 0, 0); + //Now send the embed event to the app //qDebug() << " - send _XEMBED event"; /*xcb_client_message_event_t event; @@ -115,7 +188,7 @@ bool NativeEmbedWidget::embedWindow(NativeWindow *window){ //Now setup any redirects and return if(!DISABLE_COMPOSITING){ xcb_composite_redirect_window(QX11Info::connection(), WIN->id(), XCB_COMPOSITE_REDIRECT_MANUAL); //XCB_COMPOSITE_REDIRECT_[MANUAL/AUTOMATIC]); - xcb_composite_redirect_subwindows(QX11Info::connection(), WIN->id(), XCB_COMPOSITE_REDIRECT_MANUAL); //XCB_COMPOSITE_REDIRECT_[MANUAL/AUTOMATIC]); + xcb_composite_redirect_subwindows(QX11Info::connection(), WIN->id(), XCB_COMPOSITE_REDIRECT_MANUAL); //AUTOMATIC); //XCB_COMPOSITE_REDIRECT_[MANUAL/AUTOMATIC]); //Now create/register the damage handler // -- XCB (Note: The XCB damage registration is completely broken at the moment - 9/15/15, Ken Moore) @@ -126,19 +199,28 @@ bool NativeEmbedWidget::embedWindow(NativeWindow *window){ Damage dmgID = XDamageCreate(QX11Info::display(), WIN->id(), XDamageReportRawRectangles); WIN->addDamageID( (uint) dmgID); //save this for later + connect(WIN, SIGNAL(VisualChanged()), this, SLOT(repaintWindow()) ); //make sure we repaint the widget on visual change + }else{ + xcb_reparent_window(QX11Info::connection(), WIN->id(), this->winId(), 0, 0); + registerClientEvents(this->winId()); //child events get forwarded through the frame - watch this for changes too + //Also use a partial-composite here - make sure the window pixmap is available even when the window is obscured + xcb_composite_redirect_window(QX11Info::connection(), WIN->id(), XCB_COMPOSITE_REDIRECT_AUTOMATIC); + //xcb_composite_redirect_subwindows(QX11Info::connection(), WIN->id(), XCB_COMPOSITE_REDIRECT_MANUAL); + //Also alert us when the window visual changes + Damage dmgID = XDamageCreate(QX11Info::display(), WIN->id(), XDamageReportRawRectangles); + + WIN->addDamageID( (uint) dmgID); //save this for later + connect(WIN, SIGNAL(VisualChanged()), this, SLOT(repaintWindow()) ); //make sure we repaint the widget on visual change } WIN->addFrameWinID(this->winId()); - connect(WIN, SIGNAL(VisualChanged()), this, SLOT(repaintWindow()) ); //make sure we repaint the widget on visual change - registerClientEvents(WIN->id()); - registerClientEvents(this->winId()); - qDebug() << "Events Registered:" << WIN->id() << this->winId(); + //qDebug() << "Events Registered:" << WIN->id() << this->winId(); return true; } bool NativeEmbedWidget::detachWindow(){ xcb_reparent_window(QX11Info::connection(), WIN->id(), QX11Info::appRootWindow(), -1, -1); - WIN = 0; + //WIN = 0; return true; } @@ -146,69 +228,94 @@ bool NativeEmbedWidget::isEmbedded(){ return (WIN!=0); } +void NativeEmbedWidget::raiseWindow(){ + if(DISABLE_COMPOSITING){ return; } + uint32_t val = XCB_STACK_MODE_ABOVE; + xcb_configure_window(QX11Info::connection(), WIN->id(), XCB_CONFIG_WINDOW_STACK_MODE, &val); +} + +void NativeEmbedWidget::lowerWindow(){ + if(DISABLE_COMPOSITING){ return; } + uint32_t val = XCB_STACK_MODE_BELOW; + xcb_configure_window(QX11Info::connection(), WIN->id(), XCB_CONFIG_WINDOW_STACK_MODE, &val); +} + // ============== // PUBLIC SLOTS // ============== //Pause/resume void NativeEmbedWidget::pause(){ - if(winImage.isNull()){ repaintWindow(); } //make sure we have one image already cached first + if(DISABLE_COMPOSITING){ + winImage = windowImage(QRect(QPoint(0,0), this->size())); + hideWindow(); + }else{ + if(winImage.isNull()){ repaintWindow(); } //make sure we have one image already cached first + } paused = true; } void NativeEmbedWidget::resume(){ - paused = false; - //syncWinSize(); - //showWindow(); - repaintWindow(); //update the cached image right away + //paused = false; + syncWinSize(); + if(DISABLE_COMPOSITING){ + //showWindow(); + }else{ + repaintWindow(); //update the cached image right away + } + QTimer::singleShot(10, this, SLOT(setWinUnpaused()) ); } void NativeEmbedWidget::resyncWindow(){ if(WIN==0){ return; } - /*return; //skip the stuff below (not working) - QRect geom = WIN->geometry(); - //Send an artificial configureNotify event to the window with the global position/size included - xcb_configure_notify_event_t event; - event.x = geom.x() + this->pos().x(); - event.y = geom.y() + this->pos().y(); - event.width = this->width(); - event.height = this->height(); - event.border_width = 0; - event.above_sibling = XCB_NONE; - event.override_redirect = false; - event.window = WIN->id(); - event.event = WIN->id(); - event.response_type = XCB_CONFIGURE_NOTIFY; - xcb_send_event(QX11Info::connection(), false, WIN->id(), XCB_EVENT_MASK_STRUCTURE_NOTIFY | XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY, (const char *) &event); - */ - //Just jitter the window size by 1 pixel really quick so the window knows to update it's geometry - QSize sz = this->size(); - uint32_t valList[2] = {(uint32_t) sz.width()-1, (uint32_t) sz.height()}; - uint32_t mask = XCB_CONFIG_WINDOW_WIDTH | XCB_CONFIG_WINDOW_HEIGHT; - xcb_configure_window(QX11Info::connection(), WIN->id(), mask, valList); - xcb_flush(QX11Info::connection()); - valList[0] = (uint32_t) sz.width(); - xcb_configure_window(QX11Info::connection(), WIN->id(), mask, valList); + //syncWinSize(); + //if(DISABLE_COMPOSITING){ + // Specs say to send an artificial configure event to the window if the window was reparented into the frame + QPoint loc = this->mapToGlobal( QPoint(0,0) ); + //Send an artificial configureNotify event to the window with the global position/size included + xcb_configure_notify_event_t *event = (xcb_configure_notify_event_t*) calloc(32,1); //always 32-byes long, even if we don't need all of it + event->x = loc.x(); + event->y = loc.y(); + event->width = this->width(); + event->height = this->height(); + event->border_width = 0; + event->above_sibling = XCB_NONE; + event->override_redirect = false; + event->window = WIN->id(); + event->event = WIN->id(); + event->response_type = XCB_CONFIGURE_NOTIFY; + xcb_send_event(QX11Info::connection(), false, WIN->id(), XCB_EVENT_MASK_STRUCTURE_NOTIFY | XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY, (char *) event); xcb_flush(QX11Info::connection()); - syncWinSize(); - QTimer::singleShot(10, this, SLOT(repaintWindow()) ); + free(event); + /*}else{ + //Window is floating invisibly - make sure it is in the right place + //Make sure the window size is syncronized and visual up to date + //syncWinSize(); + QTimer::singleShot(10, this, SLOT(repaintWindow()) ); + }*/ + } void NativeEmbedWidget::repaintWindow(){ - if(DISABLE_COMPOSITING){ return; } + //if(DISABLE_COMPOSITING){ return; } //qDebug() << "Update Window Image:" << !paused; if(paused){ return; } - QImage tmp = windowImage( QRect(QPoint(0,0), this->size()) ); + /*QImage tmp = windowImage( QRect(QPoint(0,0), this->size()) ); if(!tmp.isNull()){ winImage = tmp; - }else{ qDebug() << "Got Null Image!!"; } - this->parentWidget()->update(); + }else{ qDebug() << "Got Null Image!!"; }*/ + this->parentWidget()->update(); //visual changed - need to update the image on the widget +} + +void NativeEmbedWidget::reregisterEvents(){ + if(WIN!=0){ registerClientEvents(WIN->id()); } } + // ============== // PROTECTED // ============== void NativeEmbedWidget::resizeEvent(QResizeEvent *ev){ QWidget::resizeEvent(ev); - if(WIN!=0){ + if(WIN!=0 && !paused){ syncWinSize(ev->size()); } //syncronize the window with the new widget size } @@ -224,30 +331,106 @@ void NativeEmbedWidget::hideEvent(QHideEvent *ev){ } void NativeEmbedWidget::paintEvent(QPaintEvent *ev){ - if(WIN==0 || DISABLE_COMPOSITING){ QWidget::paintEvent(ev); return; } - else if( winImage.isNull() ){ /*QTimer::singleShot(0, this, SLOT(repaintWindow()) );*/ return; } - else if(paused){ return; } - //else if(this->size()!=winSize){ QTimer::singleShot(0,this, SLOT(syncWinSize())); return; } //do not paint here - waiting to re-sync the sizes - //else if(this->size() != winImage.size()){ QTimer::singleShot(0, this, SLOT(repaintWindow()) ); return; } - //Need to paint the image from the window onto the widget as an overlay + if(WIN==0){ return; } QRect geom = ev->rect(); //atomic updates - geom.adjust(-10,-10,10,10); //add an additional few pixels in each direction to be painted - geom = geom.intersected(QRect(0,0,this->width(), this->height())); //ensure intersection with actual window - if( !QRect(QPoint(0,0),winImage.size()).contains(geom) ){ QTimer::singleShot(0,this, SLOT(repaintWindow()) );return; } + //qDebug() << "Paint Rect:" << geom; + //geom.adjust(-10,-10,10,10); //add an additional few pixels in each direction to be painted + //geom = geom.intersected(QRect(0,0,this->width(), this->height())); //ensure intersection with actual window + QImage img; + if(!paused){ img = windowImage(geom); } + else if(!winImage.isNull()){ + if(winImage.size() == this->size()){ img = winImage.copy(geom); } + else{ img = winImage.scaled(geom.size()); } //this is a fast transformation - might be slightly distorted + } + //Need to paint the image from the window onto the widget as an overlay + QPainter P(this); P.setClipping(true); P.setClipRect(0,0,this->width(), this->height()); + //if(DISABLE_COMPOSITING){ P.fillRect(geom, Qt::black); } //get weird effects when partial-compositing is enabled if you layer transparent window frames above other windows //qDebug() << "Paint Embed Window:" << geom << winImage.size(); - if(winImage.size() == this->size()){ - P.drawImage( geom , winImage, geom, Qt::NoOpaqueDetection); //1-to-1 mapping + //if(winImage.size() == this->size()){ + P.drawImage( geom , img, QRect(QPoint(0,0), img.size()), Qt::NoOpaqueDetection); //1-to-1 mapping //Note: Qt::NoOpaqueDetection Speeds up the paint by bypassing the checks to see if there are [semi-]transparent pixels // Since this is an embedded image - we fully expect there to be transparency all/most of the time. - }else{ - P.drawImage( geom , winImage); - } + // }else{ + //P.drawImage( geom , winImage); //auto-scale it to fit (transforming a static image while paused?) + // } //else{ QImage scaled = winImage.scaled(geom.size()); P.drawImage(geom, scaled); } //P.drawImage( geom , winImage, geom, Qt::NoOpaqueDetection); //1-to-1 mapping //Note: Qt::NoOpaqueDetection Speeds up the paint by bypassing the checks to see if there are [semi-]transparent pixels // Since this is an embedded image - we fully expect there to be transparency all/most of the time. } + +void NativeEmbedWidget::enterEvent(QEvent *ev){ + QWidget::enterEvent(ev); + //qDebug() << "Enter Embed Widget"; + //raiseWindow(); //this->grabMouse(); +} + +void NativeEmbedWidget::leaveEvent(QEvent *ev){ + QWidget::leaveEvent(ev); + /*qDebug() << "Leave Embed Widget"; + QPoint pt = QCursor::pos(); + QPoint relpt = this->parentWidget()->mapFromGlobal(pt); + qDebug() << " - Geom:" << this->geometry() << "Global pt:" << pt << "Relative pt:" << relpt; + if(!this->geometry().contains(relpt) ){ lowerWindow(); }*/ +} + +void NativeEmbedWidget::mouseMoveEvent(QMouseEvent *ev){ + QWidget::mouseMoveEvent(ev); + //Forward this event on to the window +} + +void NativeEmbedWidget::mousePressEvent(QMouseEvent *ev){ + QWidget::mousePressEvent(ev); + //Forward this event on to the window +} + +void NativeEmbedWidget::mouseReleaseEvent(QMouseEvent *ev){ + QWidget::mouseReleaseEvent(ev); + //Forward this event on to the window +} + +/*bool NativeEmbedWidget::nativeEvent(const QByteArray &eventType, void *message, long *result){ + if(eventType=="xcb_generic_event_t" && WIN!=0){ + //Convert to known event type (for X11 systems) + xcb_generic_event_t *ev = static_cast<xcb_generic_event_t *>(message); + //qDebug() << "Got Embed Window Event:" << xcb_event_get_label(ev->response_type & XCB_EVENT_RESPONSE_TYPE_MASK) << xcb_event_get_request_label(ev->response_type); + uint32_t mask = 0; + switch( ev->response_type & XCB_EVENT_RESPONSE_TYPE_MASK){ + case XCB_BUTTON_PRESS: + //This is a mouse button press + mask = XCB_EVENT_MASK_BUTTON_PRESS; + break; + case XCB_BUTTON_RELEASE: + //This is a mouse button release + //qDebug() << "Button Release Event"; + mask = XCB_EVENT_MASK_BUTTON_RELEASE; + break; + case XCB_MOTION_NOTIFY: + //This is a mouse movement event + mask = XCB_EVENT_MASK_POINTER_MOTION; + break; + case XCB_ENTER_NOTIFY: + //This is a mouse movement event when mouse goes over a new window + mask = XCB_EVENT_MASK_ENTER_WINDOW; + break; + case XCB_LEAVE_NOTIFY: + //This is a mouse movement event when mouse goes leaves a window + mask = XCB_EVENT_MASK_LEAVE_WINDOW; + break; + default: + mask = 0; + } + + //Now forward this event on to the embedded window + if(mask!=0){ + qDebug() << " - Got a mouse event"; + xcb_send_event(QX11Info::connection(), true, WIN->id(),mask, (char*) ev); + return true; + } + } + return false; +}*/ diff --git a/src-qt5/core/libLumina/NativeEmbedWidget.h b/src-qt5/core/libLumina/NativeEmbedWidget.h index 65e03c51..16bb46dc 100644 --- a/src-qt5/core/libLumina/NativeEmbedWidget.h +++ b/src-qt5/core/libLumina/NativeEmbedWidget.h @@ -18,6 +18,7 @@ #include <QShowEvent> #include <QHideEvent> #include <QPaintEvent> +#include <QMouseEvent> class NativeEmbedWidget : public QWidget{ Q_OBJECT @@ -25,7 +26,7 @@ private: NativeWindow *WIN; QSize winSize; QImage winImage; - bool paused; + bool paused, hasAlphaChannel; private slots: //Simplification functions @@ -35,6 +36,7 @@ private slots: void showWindow(); QImage windowImage(QRect geom); + void setWinUnpaused(); public: NativeEmbedWidget(QWidget *parent); @@ -42,22 +44,31 @@ public: bool embedWindow(NativeWindow *window); bool detachWindow(); bool isEmbedded(); //status of the embed - - + bool isPaused(){ return paused; } public slots: + void raiseWindow(); + void lowerWindow(); + //Pause/resume void pause(); void resume(); void resyncWindow(); void repaintWindow(); + void reregisterEvents(); protected: void resizeEvent(QResizeEvent *ev); void showEvent(QShowEvent *ev); void hideEvent(QHideEvent *ev); void paintEvent(QPaintEvent *ev); + void enterEvent(QEvent *ev); + void leaveEvent(QEvent *ev); + void mouseMoveEvent(QMouseEvent *ev); + void mousePressEvent(QMouseEvent *ev); + void mouseReleaseEvent(QMouseEvent *ev); + //bool nativeEvent(const QByteArray &eventType, void *message, long *result); }; #endif diff --git a/src-qt5/core/libLumina/NativeEventFilter.cpp b/src-qt5/core/libLumina/NativeEventFilter.cpp index 354dbe76..c13c1fc8 100644 --- a/src-qt5/core/libLumina/NativeEventFilter.cpp +++ b/src-qt5/core/libLumina/NativeEventFilter.cpp @@ -65,7 +65,7 @@ static xcb_ewmh_connection_t EWMH; static xcb_atom_t _NET_SYSTEM_TRAY_OPCODE = 0; inline void ParsePropertyEvent(xcb_property_notify_event_t *ev, NativeEventFilter *obj){ - qDebug() << "Got Property Event:" << ev->window << ev->atom; + //qDebug() << "Got Property Event:" << ev->window << ev->atom; NativeWindow::Property prop = NativeWindow::None; //Now determine which properties are getting changed, and update the native window as appropriate if(ev->atom == EWMH._NET_WM_NAME){ prop = NativeWindow::Title; } @@ -76,11 +76,14 @@ inline void ParsePropertyEvent(xcb_property_notify_event_t *ev, NativeEventFilte else if( ev->atom == EWMH._NET_WM_STATE){ prop = NativeWindow::States; } //Send out the signal if necessary if(prop!=NativeWindow::None){ - //if(DEBUG){ - qDebug() << "Detected Property Change:" << ev->window << prop; + //if(DEBUG){ + //qDebug() << "Detected Property Change:" << ev->window << prop; //} obj->emit WindowPropertyChanged(ev->window, prop); }else{ + //Quick re-check of the simple properties (nothing like the icon or other graphics) + obj->emit WindowPropertiesChanged(ev->window, QList<NativeWindow::Property>() << NativeWindow::Title + << NativeWindow::ShortTitle << NativeWindow::Workspace ); //qDebug() << "Unknown Property Change:" << ev->window << ev->atom; } } @@ -98,7 +101,7 @@ inline void ParseClientMessageEvent(xcb_client_message_event_t *ev, NativeEventF else if(ev->type==EWMH._NET_WM_STATE){ prop = NativeWindow::States; } if(prop!=NativeWindow::None){ - //if(DEBUG){ + //if(DEBUG){ qDebug() << "Detected Property Change Request:" << ev->window << prop; //} if(val.isNull()){ obj->emit WindowPropertyChanged(ev->window, prop); } else{ obj->emit RequestWindowPropertyChange(ev->window, prop, val); } diff --git a/src-qt5/core/libLumina/NativeEventFilter.h b/src-qt5/core/libLumina/NativeEventFilter.h index 2b184f99..a3be3ef1 100644 --- a/src-qt5/core/libLumina/NativeEventFilter.h +++ b/src-qt5/core/libLumina/NativeEventFilter.h @@ -34,6 +34,7 @@ signals: void WindowCreated(WId); void WindowDestroyed(WId); void WindowPropertyChanged(WId, NativeWindow::Property); + void WindowPropertiesChanged(WId, QList<NativeWindow::Property>); void WindowPropertyChanged(WId, NativeWindow::Property, QVariant); void WindowPropertiesChanged(WId, QList<NativeWindow::Property>, QList<QVariant>); void RequestWindowPropertyChange(WId, NativeWindow::Property, QVariant); diff --git a/src-qt5/core/libLumina/NativeWindow.cpp b/src-qt5/core/libLumina/NativeWindow.cpp index 3c76ed00..02cc001e 100644 --- a/src-qt5/core/libLumina/NativeWindow.cpp +++ b/src-qt5/core/libLumina/NativeWindow.cpp @@ -106,6 +106,10 @@ QRect NativeWindow::geometry(){ return geom; } // ==== PUBLIC SLOTS === +void NativeWindow::toggleVisibility(){ + setProperty(NativeWindow::Visible, !property(NativeWindow::Visible).toBool() ); +} + void NativeWindow::requestClose(){ emit RequestClose(winid); } diff --git a/src-qt5/core/libLumina/NativeWindow.h b/src-qt5/core/libLumina/NativeWindow.h index d04815ce..67436259 100644 --- a/src-qt5/core/libLumina/NativeWindow.h +++ b/src-qt5/core/libLumina/NativeWindow.h @@ -78,6 +78,7 @@ public: QRect geometry(); //this returns the "full" geometry of the window (window + frame) public slots: + void toggleVisibility(); void requestClose(); //ask the app to close the window (may/not depending on activity) void requestKill(); //ask the WM to kill the app associated with this window (harsh - only use if not responding) void requestPing(); //ask the app if it is still active (a WindowNotResponding signal will get sent out if there is no reply); diff --git a/src-qt5/core/libLumina/NativeWindow.pri b/src-qt5/core/libLumina/NativeWindow.pri index c2ac0137..c906d6fd 100644 --- a/src-qt5/core/libLumina/NativeWindow.pri +++ b/src-qt5/core/libLumina/NativeWindow.pri @@ -2,6 +2,7 @@ # Files QT *= x11extras LIBS *= -lc -lxcb -lxcb-ewmh -lxcb-icccm -lxcb-image -lxcb-composite -lxcb-damage -lxcb-util -lxcb-keysyms -lXdamage +#QT *= -lxcb-render -lxcb-render-util SOURCES *= $${PWD}/NativeWindow.cpp \ $${PWD}/NativeWindowSystem.cpp \ diff --git a/src-qt5/core/libLumina/NativeWindowSystem.cpp b/src-qt5/core/libLumina/NativeWindowSystem.cpp index 71e95a0e..0ee65929 100644 --- a/src-qt5/core/libLumina/NativeWindowSystem.cpp +++ b/src-qt5/core/libLumina/NativeWindowSystem.cpp @@ -45,7 +45,6 @@ #define ROOT_WIN_EVENT_MASK (XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT | \ XCB_EVENT_MASK_BUTTON_PRESS | \ XCB_EVENT_MASK_STRUCTURE_NOTIFY | \ - XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT | \ XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY | \ XCB_EVENT_MASK_POINTER_MOTION | \ XCB_EVENT_MASK_PROPERTY_CHANGE | \ @@ -60,13 +59,45 @@ XCB_EVENT_MASK_STRUCTURE_NOTIFY | \ XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT | \ XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY | \ - XCB_EVENT_MASK_ENTER_WINDOW| \ - XCB_EVENT_MASK_PROPERTY_CHANGE) + XCB_EVENT_MASK_ENTER_WINDOW | \ + XCB_EVENT_MASK_PROPERTY_CHANGE | \ + XCB_EVENT_MASK_FOCUS_CHANGE) + +#define CLIENT_EVENT_MASK (XCB_EVENT_MASK_PROPERTY_CHANGE | \ + XCB_EVENT_MASK_STRUCTURE_NOTIFY | \ + XCB_EVENT_MASK_FOCUS_CHANGE | \ + XCB_EVENT_MASK_POINTER_MOTION) + +#define FRAME_EVENT_MASK (XCB_EVENT_MASK_BUTTON_PRESS | \ + XCB_EVENT_MASK_BUTTON_RELEASE | \ + XCB_EVENT_MASK_POINTER_MOTION | \ + XCB_EVENT_MASK_EXPOSURE | \ + XCB_EVENT_MASK_STRUCTURE_NOTIFY | \ + XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT | \ + XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY | \ + XCB_EVENT_MASK_ENTER_WINDOW) -inline void registerClientEvents(WId id){ +inline void registerClientEvents(WId id, bool client = true){ + uint32_t values[] = {XCB_NONE}; + values[0] = client ? CLIENT_EVENT_MASK : FRAME_EVENT_MASK ; + /*{ (XCB_EVENT_MASK_PROPERTY_CHANGE + | XCB_EVENT_MASK_BUTTON_PRESS + | XCB_EVENT_MASK_BUTTON_RELEASE + | XCB_EVENT_MASK_POINTER_MOTION + | XCB_EVENT_MASK_BUTTON_MOTION + | XCB_EVENT_MASK_EXPOSURE + | XCB_EVENT_MASK_STRUCTURE_NOTIFY + | XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT + | XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY + | XCB_EVENT_MASK_ENTER_WINDOW) + };*/ + xcb_change_window_attributes(QX11Info::connection(), id, XCB_CW_EVENT_MASK, values); +} + +/*inline void registerClientEvents(WId id){ uint32_t value_list[1] = {NORMAL_WIN_EVENT_MASK}; xcb_change_window_attributes(QX11Info::connection(), id, XCB_CW_EVENT_MASK, value_list); -} +}*/ //Internal XCB private objects class class NativeWindowSystem::p_objects{ @@ -255,7 +286,7 @@ NativeWindow* NativeWindowSystem::findWindow(WId id, bool checkRelated){ //qDebug() << "Find Window:" << id; for(int i=0; i<NWindows.length(); i++){ if(id==NWindows[i]->id() ){ return NWindows[i]; } - else if(id==NWindows[i]->frameId() ){ qDebug() << "Matched Frame:" << id; return NWindows[i]; } + else if(id==NWindows[i]->frameId() ){ return NWindows[i]; } //if(checkRelated && NWindows[i]->isRelatedTo(id)){ return NWindows[i]; } //else if(!checkRelated && id==NWindows[i]->id()){ return NWindows[i]; } } @@ -479,27 +510,27 @@ void NativeWindowSystem::ChangeWindowProperties(NativeWindow* win, QList< Native } if(props.contains(NativeWindow::Size) || props.contains(NativeWindow::GlobalPos) ){ - xcb_configure_window_value_list_t valList; - valList.x = 0; //Note that this is the relative position - should always be 0,0 relative to the embed widget - valList.y = 0; + /*xcb_configure_window_value_list_t valList; + //valList.x = 0; //Note that this is the relative position - should always be 0,0 relative to the embed widget + //valList.y = 0; QSize sz = win->property(NativeWindow::Size).toSize(); if(props.contains(NativeWindow::Size)){ sz = vals[ props.indexOf(NativeWindow::Size) ] .toSize(); } valList.width = sz.width(); valList.height = sz.height(); - /*if(props.contains(NativeWindow::GlobalPos)){ + if(props.contains(NativeWindow::GlobalPos)){ QPoint pt = vals[ props.indexOf(NativeWindow::GlobalPos) ] .toPoint(); valList.x = pt.x(); valList.y = pt.y(); }else{ valList.x = win->property(NativeWindow::GlobalPos).toPoint().x(); valList.y = win->property(NativeWindow::GlobalPos).toPoint().y(); - }*/ + } uint16_t mask = 0; - mask = mask | XCB_CONFIG_WINDOW_WIDTH | XCB_CONFIG_WINDOW_HEIGHT;// | XCB_CONFIG_WINDOW_X | XCB_CONFIG_WINDOW_Y; - qDebug() << "Configure window Geometry:" << sz; - xcb_configure_window_aux(QX11Info::connection(), win->id(), mask, &valList); + mask = mask | XCB_CONFIG_WINDOW_WIDTH | XCB_CONFIG_WINDOW_HEIGHT | XCB_CONFIG_WINDOW_X | XCB_CONFIG_WINDOW_Y; + //qDebug() << "Configure window Geometry:" << sz; + xcb_configure_window_aux(QX11Info::connection(), win->id(), mask, &valList);*/ } if(props.contains(NativeWindow::Name)){ @@ -524,10 +555,20 @@ void NativeWindowSystem::ChangeWindowProperties(NativeWindow* win, QList< Native if(props.contains(NativeWindow::Active)){ //Only one window can be "Active" at a time - so only do anything if this window wants to be active if(vals[props.indexOf(NativeWindow::Active)].toBool() ){ - xcb_ewmh_set_active_window(&obj->EWMH, QX11Info::appScreen(), (win->frameId()==0 ?win->id() : win->frameId())); + //Lower the currently active window (invisible window) to the bottom of the stack + xcb_window_t cactive; + if( 1 == xcb_ewmh_get_active_window_reply( &obj->EWMH, + xcb_ewmh_get_active_window_unchecked(&obj->EWMH, QX11Info::appScreen()), + &cactive, NULL) ){ + uint32_t val = XCB_STACK_MODE_BELOW; + xcb_configure_window(QX11Info::connection(), cactive, XCB_CONFIG_WINDOW_STACK_MODE, &val); + } + + xcb_ewmh_set_active_window(&obj->EWMH, QX11Info::appScreen(), win->id() ); //Also send the active window a message to take input focus + xcb_set_input_focus(QX11Info::connection(), XCB_INPUT_FOCUS_PARENT, win->id(), XCB_CURRENT_TIME); //Send the window a WM_TAKE_FOCUS message - xcb_client_message_event_t event; +/* xcb_client_message_event_t event; event.response_type = XCB_CLIENT_MESSAGE; event.format = 32; event.window = win->id(); @@ -540,6 +581,7 @@ void NativeWindowSystem::ChangeWindowProperties(NativeWindow* win, QList< Native xcb_send_event(QX11Info::connection(), 0, win->id(), XCB_EVENT_MASK_STRUCTURE_NOTIFY | XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT, (const char *) &event); xcb_flush(QX11Info::connection()); +*/ } } @@ -553,6 +595,9 @@ void NativeWindowSystem::RegisterVirtualRoot(WId id){ array[0] = id; //Set the property xcb_ewmh_set_virtual_roots(&obj->EWMH, QX11Info::appScreen(), 1, array); + //Now also enable automatic compositing for children of this window + //xcb_composite_redirect_window(QX11Info::connection(), id, XCB_COMPOSITE_REDIRECT_AUTOMATIC); + //xcb_composite_redirect_subwindows(QX11Info::connection(), id, XCB_COMPOSITE_REDIRECT_AUTOMATIC); } void NativeWindowSystem::setRoot_supportedActions(){ @@ -561,7 +606,7 @@ void NativeWindowSystem::setRoot_supportedActions(){ obj->EWMH._NET_WM_ICON, obj->EWMH._NET_WM_ICON_NAME, obj->EWMH._NET_WM_DESKTOP, - obj->ATOMS["_NET_WM_WINDOW_OPACITY"], + /*obj->ATOMS["_NET_WM_WINDOW_OPACITY"],*/ /*_NET_WINDOW_TYPE (and all the various types - 15 in total*/ obj->EWMH._NET_WM_WINDOW_TYPE, obj->EWMH._NET_WM_WINDOW_TYPE_DESKTOP, obj->EWMH._NET_WM_WINDOW_TYPE_DOCK, obj->EWMH._NET_WM_WINDOW_TYPE_TOOLBAR, obj->EWMH._NET_WM_WINDOW_TYPE_MENU, obj->EWMH._NET_WM_WINDOW_TYPE_UTILITY, @@ -625,7 +670,7 @@ void NativeWindowSystem::setRoot_desktopWorkarea(QList<QRect> list){ } void NativeWindowSystem::setRoot_activeWindow(WId win){ - xcb_ewmh_set_active_window(&obj->EWMH, QX11Info::appScreen(), win); + /*xcb_ewmh_set_active_window(&obj->EWMH, QX11Info::appScreen(), win); //Also send the active window a message to take input focus //Send the window a WM_TAKE_FOCUS message xcb_client_message_event_t event; @@ -640,7 +685,7 @@ void NativeWindowSystem::setRoot_activeWindow(WId win){ event.data.data32[4] = 0; xcb_send_event(QX11Info::connection(), 0, win, XCB_EVENT_MASK_STRUCTURE_NOTIFY | XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT, (const char *) &event); - xcb_flush(QX11Info::connection()); + xcb_flush(QX11Info::connection());*/ } int NativeWindowSystem::currentWorkspace(){ @@ -656,7 +701,7 @@ int NativeWindowSystem::currentWorkspace(){ //NativeWindowEventFilter interactions void NativeWindowSystem::NewWindowDetected(WId id){ //Make sure this can be managed first - if(findWindow(id, false) != 0){ qDebug() << "Window Already Managed!!!!"; findWindow(id,false)->setProperty(NativeWindow::Visible, true, true); return; } //already managed + if(findWindow(id, false) != 0){ findWindow(id,false)->setProperty(NativeWindow::Visible, true, true); return; } //already managed xcb_get_window_attributes_cookie_t cookie = xcb_get_window_attributes(QX11Info::connection(), id); xcb_get_window_attributes_reply_t *attr = xcb_get_window_attributes_reply(QX11Info::connection(), cookie, NULL); if(attr == 0){ return; } //could not get attributes of window @@ -668,7 +713,7 @@ void NativeWindowSystem::NewWindowDetected(WId id){ registerClientEvents(win->id()); NWindows << win; UpdateWindowProperties(win, NativeWindow::allProperties()); - qDebug() << "New Window [& associated ID's]:" << win->id() << win->frameId() << win->property(NativeWindow::RelatedWindows); + qDebug() << "New Window [& associated ID's]:" << win->id() << win->property(NativeWindow::Name).toString(); //Now setup the connections with this window connect(win, SIGNAL(RequestClose(WId)), this, SLOT(RequestClose(WId)) ); connect(win, SIGNAL(RequestKill(WId)), this, SLOT(RequestKill(WId)) ); @@ -733,6 +778,27 @@ void NativeWindowSystem::WindowPropertyChanged(WId id, NativeWindow::Property pr if(win==0){ win = findTrayWindow(id); } if(win!=0){ UpdateWindowProperties(win, QList<NativeWindow::Property>() << prop); + }else if(prop != 0){ + //Could not find the window for a specific property with an undefined value + // - update this property for all the windows just in case + for(int i=0; i<NWindows.length(); i++){ + UpdateWindowProperties( NWindows[i], QList<NativeWindow::Property>() << prop); + } + } +} + +void NativeWindowSystem::WindowPropertiesChanged(WId id, QList<NativeWindow::Property> props){ + //NOTE: This is triggered by the NativeEventFilter - not by changes to the NativeWindow objects themselves + NativeWindow *win = findWindow(id); + if(win==0){ win = findTrayWindow(id); } + if(win!=0){ + UpdateWindowProperties(win, props); + }else{ + //Could not find the window for a specific property with an undefined value + // - update this property for all the windows just in case + for(int i=0; i<NWindows.length(); i++){ + UpdateWindowProperties( NWindows[i], props); + } } } diff --git a/src-qt5/core/libLumina/NativeWindowSystem.h b/src-qt5/core/libLumina/NativeWindowSystem.h index 97208c2f..b67ecc94 100644 --- a/src-qt5/core/libLumina/NativeWindowSystem.h +++ b/src-qt5/core/libLumina/NativeWindowSystem.h @@ -105,6 +105,7 @@ public slots: void NewTrayWindowDetected(WId); //will automatically create the new NativeWindow object void WindowCloseDetected(WId); //will update the lists and make changes if needed void WindowPropertyChanged(WId, NativeWindow::Property); //will rescan the window and update the object as needed + void WindowPropertiesChanged(WId, QList<NativeWindow::Property>); void WindowPropertyChanged(WId, NativeWindow::Property, QVariant); //will save that property/value to the right object void WindowPropertiesChanged(WId, QList<NativeWindow::Property>, QList<QVariant>); void RequestPropertyChange(WId, NativeWindow::Property, QVariant); diff --git a/src-qt5/core/libLumina/RootSubWindow-animations.cpp b/src-qt5/core/libLumina/RootSubWindow-animations.cpp index ac813e3a..efab20fe 100644 --- a/src-qt5/core/libLumina/RootSubWindow-animations.cpp +++ b/src-qt5/core/libLumina/RootSubWindow-animations.cpp @@ -11,16 +11,20 @@ QStringList RootSubWindow::validAnimations(NativeWindow::Property prop){ QStringList valid; if(prop == NativeWindow::Visible){ valid << "zoom" << "wipe-center-vertical" << "wipe-center-horizontal" << "shade-top" << "shade-right" << "shade-left" << "shade-bottom"; + }else if(prop == NativeWindow::Size){ + //Note: this is used for pretty much all geometry changes to the window where it is visible both before/after animation + valid << "direct"; } return valid; } void RootSubWindow::loadAnimation(QString name, NativeWindow::Property prop, QVariant nval){ + if(anim->state()==QAbstractAnimation::Running){ return; } //already running animResetProp.clear(); //Special case - random animation each time if(name=="random"){ QStringList valid = validAnimations(prop); - name = valid.at(qrand()%valid.length()); + if(!valid.isEmpty()){ name = valid.at(qrand()%valid.length()); } } //Now setup the animation if(prop == NativeWindow::Visible){ @@ -57,6 +61,7 @@ void RootSubWindow::loadAnimation(QString name, NativeWindow::Property prop, QVa } if(nval.toBool()){ this->setGeometry( anim->startValue().toRect() ); //ensure the window is the initial geom before it becomes visible + //QTimer::singleShot( anim->duration()+5, this, SLOT(activate()) ); }else{ QVariant tmp = anim->startValue(); anim->setStartValue(anim->endValue()); @@ -68,6 +73,19 @@ void RootSubWindow::loadAnimation(QString name, NativeWindow::Property prop, QVa anim->start(); this->show(); } //end of Visibility animation + else if(prop == NativeWindow::Size){ + //This is pretty much all geometry animations where the window is visible->visible + anim->setPropertyName("geometry"); + anim->setStartValue(this->geometry()); + anim->setEndValue(nval.toRect()); + /*if(name==""){ + // TO-DO modify the path from beginning->end somehow + }*/ + // Now start the animation + WinWidget->pause(); + anim->start(); + this->show(); + } } void RootSubWindow::animFinished(){ @@ -87,11 +105,12 @@ void RootSubWindow::animFinished(){ //qDebug() << "Sub Window geometry:" << clientg; WIN->setProperties(QList< NativeWindow::Property>() << NativeWindow::Size << NativeWindow::GlobalPos, QList<QVariant>() << clientg.size() << clientg.topLeft() ); - WinWidget->resyncWindow(); //also let the window know about the current geometry } } + WinWidget->resyncWindow(); //also let the window know about the current geometry } animResetProp = QVariant(); //clear the variable - WinWidget->resume(); - + //QTimer::singleShot(10, WinWidget, SLOT(resume()) ); + WinWidget->resume(); + emit windowAnimFinished(); } diff --git a/src-qt5/core/libLumina/RootSubWindow.cpp b/src-qt5/core/libLumina/RootSubWindow.cpp index 6341f923..5fb8ece4 100644 --- a/src-qt5/core/libLumina/RootSubWindow.cpp +++ b/src-qt5/core/libLumina/RootSubWindow.cpp @@ -10,6 +10,7 @@ #include <QVBoxLayout> #include <QHBoxLayout> #include <QTimer> +#include <QScreen> #define WIN_BORDER 5 @@ -56,7 +57,7 @@ RootSubWindow::ModState RootSubWindow::getStateAtPoint(QPoint pt, bool setoffset if(setoffset){ offset.setX(pt.x()); offset.setY(pt.y()); } //difference from top-left corner return ResizeTopLeft; }else if(pt.x() > (this->width()*4.0/5.0)){ - if(setoffset){ offset.setX(this->width()-pt.x()); offset.setY(pt.y()); } //difference from top-right corner + if(setoffset){ offset.setX(pt.x()-this->width()); offset.setY(pt.y()); } //difference from top-right corner return ResizeTopRight; }else{ if(setoffset){ offset.setX(0); offset.setY(pt.y()); } //difference from top edge (X does not matter) @@ -65,13 +66,13 @@ RootSubWindow::ModState RootSubWindow::getStateAtPoint(QPoint pt, bool setoffset }else if(pt.y() > (this->height()-WIN_BORDER) ){ //One of the bottom options if(pt.x() < this->width()/5){ - if(setoffset){ offset.setX(pt.x()); offset.setY(this->height()-pt.y()); } //difference from bottom-left corner + if(setoffset){ offset.setX(pt.x()); offset.setY(pt.y()-this->height()); } //difference from bottom-left corner return ResizeBottomLeft; }else if(pt.x() > (this->width()*4.0/5.0)){ - if(setoffset){ offset.setX(this->width()-pt.x()); offset.setY(this->height()-pt.y()); } //difference from bottom-right corner + if(setoffset){ offset.setX(pt.x()-this->width()); offset.setY(pt.y()-this->height()); } //difference from bottom-right corner return ResizeBottomRight; }else{ - if(setoffset){ offset.setX(0); offset.setY(this->height() - pt.y()); } //difference from bottom edge (X does not matter) + if(setoffset){ offset.setX(0); offset.setY(pt.y()-this->height()); } //difference from bottom edge (X does not matter) return ResizeBottom; } }else if(pt.x() < WIN_BORDER){ @@ -80,7 +81,7 @@ RootSubWindow::ModState RootSubWindow::getStateAtPoint(QPoint pt, bool setoffset if(setoffset){ offset.setX(pt.x()); offset.setY(pt.y()); } //difference from top-left corner return ResizeTopLeft; }else if(pt.y() > (this->height()*4.0/5.0)){ - if(setoffset){ offset.setX(pt.x()); offset.setY(this->height()-pt.y()); } //difference from bottom-left corner + if(setoffset){ offset.setX(pt.x()); offset.setY(pt.y()-this->height()); } //difference from bottom-left corner return ResizeBottomLeft; }else{ if(setoffset){ offset.setX(pt.x()); offset.setY(0); } //difference from left edge (Y does not matter) @@ -89,13 +90,13 @@ RootSubWindow::ModState RootSubWindow::getStateAtPoint(QPoint pt, bool setoffset }else if(pt.x() > (this->width()-WIN_BORDER) ){ //Right side options if(pt.y() < this->height()/5){ - if(setoffset){ offset.setX(this->width()-pt.x()); offset.setY(pt.y()); } //difference from top-right corner + if(setoffset){ offset.setX(pt.x()-this->width()); offset.setY(pt.y()); } //difference from top-right corner return ResizeTopRight; }else if(pt.y() > (this->height()*4.0/5.0)){ - if(setoffset){ offset.setX(this->width()-pt.x()); offset.setY(this->height()-pt.y()); } //difference from bottom-right corner + if(setoffset){ offset.setX(pt.x()-this->width()); offset.setY(pt.y()-this->height()); } //difference from bottom-right corner return ResizeBottomRight; }else{ - if(setoffset){ offset.setX(this->width()-pt.x()); offset.setY(0); } //difference from right edge (Y does not matter) + if(setoffset){ offset.setX(pt.x()-this->width()); offset.setY(0); } //difference from right edge (Y does not matter) return ResizeRight; } }else{ @@ -186,12 +187,14 @@ void RootSubWindow::initWindowFrame(){ titleBar->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); mainLayout->addWidget(titleBar); mainLayout->addWidget(WinWidget); + mainLayout->setAlignment(titleBar, Qt::AlignTop); //Setup the cursors for the buttons closeB->setCursor(Qt::ArrowCursor); minB->setCursor(Qt::ArrowCursor); maxB->setCursor(Qt::ArrowCursor); - otherM->setCursor(Qt::ArrowCursor); + otherB->setCursor(Qt::ArrowCursor); titleLabel->setCursor(Qt::ArrowCursor); + WinWidget->setCursor(Qt::ArrowCursor); //Now all the stylesheet options this->setObjectName("WindowFrame"); closeB->setObjectName("Button_Close"); @@ -277,12 +280,44 @@ void RootSubWindow::LoadAllProperties(){ //Button Actions - public so they can be tied to key shortcuts and stuff as well void RootSubWindow::toggleMinimize(){ - WIN->setProperty(NativeWindow::Visible, false); - QTimer::singleShot(2000, this, SLOT(toggleMaximize()) ); + WIN->toggleVisibility(); } void RootSubWindow::toggleMaximize(){ - WIN->setProperty(NativeWindow::Visible, true); + //Get the current screen that this window is on + QList<QScreen*> screens = QApplication::screens(); + QRect rect; + int primaryscreen = 0; //fallback value + for(int i=0; i<screens.length(); i++){ + QRect intersect = screens[i]->geometry().intersected(this->geometry()); + if( (intersect.width()-rect.width() + intersect.height()-rect.height()) > 0){ + rect = intersect; + primaryscreen = i; + } + } + //Now that we have the screen dimensions, lets check/change the window + rect = screens[primaryscreen]->availableGeometry(); + QList< NativeWindow::State > states = WIN->property(NativeWindow::States).value< QList< NativeWindow::State> >(); + if(rect == this->geometry() || states.contains(NativeWindow::S_MAX_VERT) || states.contains(NativeWindow::S_MAX_HORZ)){ + //Already maximized - try to restore it to the previous size/location + if(!lastMaxGeom.isNull()){ + rect = lastMaxGeom; + }else{ + // no last geometry - started out maximized? + // make it half the screen size and centered on the screen + QPoint center = rect.center(); + rect.setWidth( rect.width()/2 ); + rect.setHeight( rect.height()/2 ); + rect.moveTopLeft( center - QPoint(rect.width()/2, rect.height()/2) ); + } + lastMaxGeom = QRect(); //clear this saved geom + }else{ + //Not maximized yet - go ahead and make it so + lastMaxGeom = this->geometry(); //save this for later; + } + //qDebug() << "Toggle Maximize:" << this->geometry() << rect; + QString anim_type = DesktopSettings::instance()->value(DesktopSettings::Animation, "window/move", "random").toString(); + loadAnimation(anim_type, NativeWindow::Size, rect); } void RootSubWindow::triggerClose(){ @@ -290,11 +325,18 @@ void RootSubWindow::triggerClose(){ } void RootSubWindow::toggleSticky(){ - + QList< NativeWindow::State> states = WIN->property(NativeWindow::States).value< QList< NativeWindow::State > >(); + if(states.contains(NativeWindow::S_STICKY)){ + states.removeAll(NativeWindow::S_STICKY); + }else{ + states << NativeWindow::S_STICKY; + } + WIN->requestProperty(NativeWindow::States, QVariant::fromValue<QList <NativeWindow::State> >(states) ); } void RootSubWindow::activate(){ - WIN->requestProperty(NativeWindow::Active, true); + //WinWidget->raiseWindow(); + WIN->requestProperty(NativeWindow::Active, true, true); } //Mouse Interactivity @@ -309,13 +351,15 @@ void RootSubWindow::startMoving(){ activeState = Move; offset = this->mapFromGlobal(curpt); setMouseCursor(activeState, true); //this one is an override cursor - //WinWidget->pause(); - //Also need to capture the mouse + WinWidget->pause(); this->grabMouse(); } void RootSubWindow::startResizing(){ - + activeState = getStateAtPoint( this->mapFromGlobal(QCursor::pos()), true); //also have it set the offset variable + setMouseCursor(activeState, true); //this one is an override cursor + WinWidget->pause(); + this->grabMouse(); } // === PRIVATE SLOTS === @@ -325,9 +369,11 @@ void RootSubWindow::propertiesChanged(QList<NativeWindow::Property> props, QList //qDebug() << "RootSubWindow: Property Changed:" << props[i] << vals[i]; switch(props[i]){ case NativeWindow::Visible: - //qDebug() << "Got Visibility Change:" << vals[i] << this->geometry() << WIN->geometry(); - if(vals[i].toBool()){ loadAnimation( DesktopSettings::instance()->value(DesktopSettings::Animation, "window/appear", "random").toString(), NativeWindow::Visible, vals[i]); } - else{ loadAnimation( DesktopSettings::instance()->value(DesktopSettings::Animation, "window/disappear", "random").toString(), NativeWindow::Visible, vals[i]); } + if(!WinWidget->isPaused() && (this->isVisible()!=vals[i].toBool()) && activeState==Normal ){ + qDebug() << "Got Visibility Change:" << vals[i] << this->geometry() << WIN->geometry(); + if(vals[i].toBool()){ loadAnimation( DesktopSettings::instance()->value(DesktopSettings::Animation, "window/appear", "random").toString(), NativeWindow::Visible, vals[i]); } + else{ loadAnimation( DesktopSettings::instance()->value(DesktopSettings::Animation, "window/disappear", "random").toString(), NativeWindow::Visible, vals[i]); } + } break; case NativeWindow::Title: titleLabel->setText(vals[i].toString()); @@ -338,6 +384,10 @@ void RootSubWindow::propertiesChanged(QList<NativeWindow::Property> props, QList else{ otherB->setIcon(vals[i].value<QIcon>()); } break; case NativeWindow::GlobalPos: + if(vals[i].toPoint()!=QPoint(0,0)){ + WinWidget->resyncWindow(); + } + break; case NativeWindow::Size: //qDebug() << " - SIZE CHANGE"; if(WIN->property(NativeWindow::FrameExtents).isNull() && (i<props.indexOf(NativeWindow::FrameExtents)) ){ @@ -345,9 +395,11 @@ void RootSubWindow::propertiesChanged(QList<NativeWindow::Property> props, QList props << props.takeAt(i); vals << vals.takeAt(i); i--; - }else if(anim->state() != QPropertyAnimation::Running ){ - if(WIN->property(NativeWindow::Size).toSize() != WinWidget->size() && activeState==Normal ){ - this->setGeometry(WIN->geometry()); + }else if(!WinWidget->isPaused() && activeState==Normal){ + if(WIN->property(NativeWindow::Size).toSize() != WinWidget->size()){ + qDebug() << "Got Direct Geometry Change:" << WIN->geometry(); + this->setGeometry( QRect(this->geometry().topLeft(), WIN->geometry().size()) ); + WinWidget->resyncWindow(); } } break; @@ -370,7 +422,7 @@ void RootSubWindow::propertiesChanged(QList<NativeWindow::Property> props, QList WinWidget->setMaximumSize(vals[i].toSize()); break; case NativeWindow::Active: - //if(vals[i].toBool()){ WinWidget->setFocus(); } + if(vals[i].toBool()){ activate(); } //WinWidget->raiseWindow(); } break; /*case NativeWindow::FrameExtents: qDebug() << " - FRAME CHANGE"; @@ -382,6 +434,7 @@ void RootSubWindow::propertiesChanged(QList<NativeWindow::Property> props, QList mainLayout->setContentsMargins( vals[i].value< QList<int> >().at(0),vals[i].value< QList<int> >().at(2) - titleLabel->height(),vals[i].value< QList<int> >().at(1),vals[i].value< QList<int> >().at(3)); break;*/ case NativeWindow::WinTypes: + qDebug() << "Got Window Types:" << vals[i].value< QList<NativeWindow::Type> >(); enableFrame(vals[i].value< QList<NativeWindow::Type> >().contains(NativeWindow::T_NORMAL) ); break; default: @@ -394,27 +447,24 @@ void RootSubWindow::propertiesChanged(QList<NativeWindow::Property> props, QList void RootSubWindow::mousePressEvent(QMouseEvent *ev){ activate(); this->raise(); + QFrame::mousePressEvent(ev); //qDebug() << "Frame Mouse Press Event"; - offset.setX(0); offset.setY(0); if(activeState != Normal){ return; } // do nothing - already in a state of grabbed mouse - //this->activate(); - if(this->childAt(ev->pos())!=0){ - //Check for any non-left-click event and skip it - if(ev->button()!=Qt::LeftButton){ return; } - activeState = Move; - offset.setX(ev->pos().x()); offset.setY(ev->pos().y()); - }else{ - //Clicked on the frame somewhere - activeState = getStateAtPoint(ev->pos(), true); //also have it set the offset variable + offset.setX(0); offset.setY(0); + if(ev->button()==Qt::LeftButton){ + if(this->childAt(ev->pos())!=0){ + //Clicked on the titlebar + startMoving(); + }else{ + //Clicked on the frame somewhere + startResizing(); + } } - setMouseCursor(activeState, true); //this one is an override cursor - //if(activeState!=Normal){WinWidget->pause(); } - if(activeState!=Normal && activeState!=Move){WinWidget->pause(); } - QFrame::mousePressEvent(ev); + } void RootSubWindow::mouseMoveEvent(QMouseEvent *ev){ - activate(); //make sure this window is "Active" + QFrame::mouseMoveEvent(ev); if(activeState == Normal){ setMouseCursor( getStateAtPoint(ev->pos()) ); //just update the mouse cursor }else{ @@ -489,10 +539,15 @@ void RootSubWindow::mouseMoveEvent(QMouseEvent *ev){ break; } //if( (geom.width()%2==0 && geom.height()%2==0) || activeState==Move){ - this->setGeometry(geom); + //qDebug() << " Change Window:" << this->geometry() << geom; + if(activeState==Move){ this->setGeometry(geom); } + else{ + //qDebug() << " Change Window Dimensions:" << this->geometry() << geom; + //qDebug() << " - Mouse Pos:" << ev->globalPos() << ev->pos() << "Offset" << offset; + this->setGeometry(geom); + } //} } - QFrame::mouseMoveEvent(ev); } void RootSubWindow::mouseReleaseEvent(QMouseEvent *ev){ @@ -500,28 +555,37 @@ void RootSubWindow::mouseReleaseEvent(QMouseEvent *ev){ //qDebug() << "Frame Mouse Release Event"; QFrame::mouseReleaseEvent(ev); if( (activeState==Normal) && (titleBar->geometry().contains(ev->pos())) && (ev->button()==Qt::RightButton) ){ + //WinWidget->raiseWindow();//need to ensure the native window is always on top of this frame but under the menu otherM->popup(ev->globalPos()); return; } - if(activeState!=Normal){ WinWidget->resume(); } - if(activeState!=Normal && activeState!=Move){WinWidget->resume(); } - activeState = Normal; - QApplication::restoreOverrideCursor(); - setMouseCursor( getStateAtPoint(ev->pos()) ); + if(activeState!=Normal){ + if(WinWidget->isPaused()){ WinWidget->resume(); } + activeState = Normal; + QApplication::restoreOverrideCursor(); + setMouseCursor( getStateAtPoint(ev->pos()) ); + } if(QFrame::mouseGrabber() == this){ this->releaseMouse(); } + activate(); + //QTimer::singleShot(0, WinWidget, SLOT(raiseWindow()) ); } -void RootSubWindow::leaveEvent(QEvent *ev){ +/*void RootSubWindow::enterEvent(QEvent *ev){ + QFrame::enterEvent(ev); + WinWidget->raiseWindow(); +}*/ +/*void RootSubWindow::leaveEvent(QEvent *ev){ QFrame::leaveEvent(ev); if(activeState == Normal){ setMouseCursor(Normal); } -} + if(!QRect(QPoint(0,0),this->size()).contains( this->mapFromGlobal(QCursor::pos())) ){ WinWidget->lowerWindow(); } +}*/ void RootSubWindow::moveEvent(QMoveEvent *ev){ //qDebug() << "Got Move Event:" << ev->pos() << WinWidget->geometry(); QFrame::moveEvent(ev); - if(!closing && anim->state()!=QAbstractAnimation::Running){ + if(!closing && !WinWidget->isPaused()){ moveTimer->start(); } } diff --git a/src-qt5/core/libLumina/RootSubWindow.h b/src-qt5/core/libLumina/RootSubWindow.h index 0af77009..c1964724 100644 --- a/src-qt5/core/libLumina/RootSubWindow.h +++ b/src-qt5/core/libLumina/RootSubWindow.h @@ -55,7 +55,7 @@ private: QPropertyAnimation *anim; QVariant animResetProp; QTimer *moveTimer; - QRect lastGeom; //frame coordinates + QRect lastGeom, lastMaxGeom; //frame coordinates void initWindowFrame(); void enableFrame(bool); @@ -65,6 +65,10 @@ private: static QStringList validAnimations(NativeWindow::Property); public slots: + void giveMouseFocus(){ WinWidget->raiseWindow(); } + void removeMouseFocus(){ WinWidget->lowerWindow(); } + void giveKeyboardFocus(){ WIN->requestProperty(NativeWindow::Active, true, true); } + void clientClosed(); void LoadAllProperties(); @@ -91,11 +95,13 @@ protected: void mousePressEvent(QMouseEvent*); void mouseMoveEvent(QMouseEvent*); void mouseReleaseEvent(QMouseEvent*); - void leaveEvent(QEvent *ev); - + //void leaveEvent(QEvent *ev); + //void enterEvent(QEvent *ev); void moveEvent(QMoveEvent *ev); - +signals: + void windowMoved(RootSubWindow*); + void windowAnimFinished(); }; #endif diff --git a/src-qt5/core/libLumina/RootWindow-mgmt.cpp b/src-qt5/core/libLumina/RootWindow-mgmt.cpp index 00b3e336..24ea639b 100644 --- a/src-qt5/core/libLumina/RootWindow-mgmt.cpp +++ b/src-qt5/core/libLumina/RootWindow-mgmt.cpp @@ -7,13 +7,59 @@ #include "RootWindow.h" //Primary/private function -void RootWindow::arrangeWindows(RootSubWindow *primary, QString type){ +void RootWindow::arrangeWindows(RootSubWindow *primary, QString type, bool primaryonly){ + if(type.isEmpty()){ type = "center"; } if(primary==0){ //Get the currently active window and treat that as the primary - + for(int i=0; i<WINDOWS.length(); i++){ + if(WINDOWS[i]->nativeWindow()->property(NativeWindow::Active).toBool()){ primary = WINDOWS[i]; } + } + if(primary==0 && !WINDOWS.isEmpty()){ primary = WINDOWS[0]; } //just use the first one in the list + } + //Now get the current screen that the mouse cursor is over (and valid area) + QScreen *screen = screenUnderMouse(); + QRect desktopArea = screen->availableGeometry(); + //qDebug() << "Arrange Windows:" << primary->geometry() << type << primaryonly << desktopArea; + //Now start filtering out all the windows that need to be ignored + int wkspace = primary->nativeWindow()->property(NativeWindow::Workspace).toInt(); + QList<RootSubWindow*> winlist = WINDOWS; + for(int i=0; i<winlist.length(); i++){ + if(winlist[i]->nativeWindow()->property(NativeWindow::Workspace).toInt()!=wkspace + || !winlist[i]->nativeWindow()->property(NativeWindow::Visible).toBool() + || desktopArea.intersected(winlist[i]->geometry()).isNull() ){ + //window is outside of the desired area or invisible - ignore it + winlist.removeAt(i); + i--; + } } - //Now loop over the windows and arrange them as needed + if(!winlist.contains(primary)){ winlist << primary; } //could be doing this on a window right before it is shown + else if(primaryonly){ winlist.removeAll(primary); winlist << primary; } //move primary window to last + //QRegion used; + for(int i=0; i<winlist.length(); i++){ + if(primaryonly && winlist[i]!=primary){ continue; } //skip this window + //Now loop over the windows and arrange them as needed + QRect geom = winlist[i]->geometry(); + //verify that the window is contained by the desktop area + if(geom.width()>desktopArea.width()){ geom.setWidth(desktopArea.width()); } + if(geom.height()>desktopArea.height()){ geom.setHeight(desktopArea.height()); } + //Now apply the proper placement routine + if(type=="center"){ + QPoint ct = desktopArea.center(); + winlist[i]->setGeometry( ct.x()-(geom.width()/2), ct.y()-(geom.height()/2), geom.width(), geom.height()); + }else if(type=="snap"){ + + }else if(type=="single_max"){ + winlist[i]->setGeometry( desktopArea.x(), desktopArea.y(), desktopArea.width(), desktopArea.height()); + }else if(type=="under-mouse"){ + QPoint ct = QCursor::pos(); + geom = QRect(ct.x()-(geom.width()/2), ct.y()-(geom.height()/2), geom.width(), geom.height() ); + //Now verify that the top of the window is still contained within the desktop area + if(geom.y() < desktopArea.y() ){ geom.moveTop(desktopArea.y()); } + winlist[i]->setGeometry(geom); + } + //qDebug() << " - New Geometry:" << winlist[i]->geometry(); + } //end loop over winlist } // ================ @@ -21,13 +67,13 @@ void RootWindow::arrangeWindows(RootSubWindow *primary, QString type){ // ================ void RootWindow::ArrangeWindows(WId primary, QString type){ RootSubWindow* win = windowForId(primary); - if(type.isEmpty()){ type = ""; } //grab the default arrangement format + if(type.isEmpty()){ type = "center"; } //grab the default arrangement format arrangeWindows(win, type); } void RootWindow::TileWindows(WId primary, QString type){ RootSubWindow* win = windowForId(primary); - if(type.isEmpty()){ type = ""; } //grab the default arrangement format for tiling + if(type.isEmpty()){ type = "single_max"; } //grab the default arrangement format for tiling arrangeWindows(win, type); } @@ -45,5 +91,5 @@ void RootWindow::CheckWindowPosition(WId id, bool newwindow){ if(geom.height() < 20){ changed = true; geom.setHeight(100); } if(changed){ win->setGeometry(geom); } //Now run it through the window arrangement routine - ArrangeWindows(id); + arrangeWindows(win, newwindow ?"center" : "snap", true); } diff --git a/src-qt5/core/libLumina/RootWindow.cpp b/src-qt5/core/libLumina/RootWindow.cpp index 48c37c86..fdbc1eb8 100644 --- a/src-qt5/core/libLumina/RootWindow.cpp +++ b/src-qt5/core/libLumina/RootWindow.cpp @@ -10,12 +10,14 @@ #include <QScreen> #include <QDebug> -#define DEBUG 1 +#define DEBUG 0 // === PUBLIC === RootWindow::RootWindow() : QWidget(0, Qt::Window | Qt::BypassWindowManagerHint | Qt::WindowStaysOnBottomHint){ qRegisterMetaType<WId>("WId"); autoResizeTimer = 0; + lastActiveMouse = 0; + mouseFocusTimer = 0; this->setMouseTracking(true); } @@ -33,6 +35,12 @@ void RootWindow::start(){ connect(QApplication::desktop(), SIGNAL(resized(int)), autoResizeTimer, SLOT(start()) ); connect(QApplication::desktop(), SIGNAL(screenCountChanged(int)), autoResizeTimer, SLOT(start()) ); } + if(mouseFocusTimer==0){ + mouseFocusTimer = new QTimer(this); + mouseFocusTimer->setInterval(100); + connect(mouseFocusTimer, SIGNAL(timeout()), this, SLOT(checkMouseFocus()) ); + + } this->show(); ResizeRoot(); emit RegisterVirtualRoot(this->winId()); @@ -108,6 +116,16 @@ RootSubWindow* RootWindow::windowForId(WId id){ return tmp; } +QScreen* RootWindow::screenUnderMouse(){ + QPoint mpos = QCursor::pos(); + QList<QScreen*> scrns = QApplication::screens(); + for(int i=0; i<scrns.length(); i++){ + if(scrns[i]->geometry().contains(mpos)){ return scrns[i]; } + } + //Could not find an exact match - just return the first one + return scrns.first(); +} + // === PUBLIC SLOTS === void RootWindow::ResizeRoot(){ if(DEBUG){ qDebug() << "Resize Root..."; } @@ -182,6 +200,32 @@ void RootWindow::ChangeWallpaper(QString id, RootWindow::ScaleType scale, QStrin } +void RootWindow::checkMouseFocus(){ + QPoint cpos = QCursor::pos(); + if(lastCursorPos != cpos){ emit MouseMoved(); } + lastCursorPos = cpos; + QWidget *child = this->childAt(QCursor::pos()); + while(child!=0 && child->whatsThis()!="RootSubWindow"){ + child = child->parentWidget(); + if(child==this){ child = 0;} //end of the line + } + + if(child==lastActiveMouse){ return; } //nothing new to do + //Make sure the child is actually a RootSubWindow + if(lastActiveMouse!=0){ lastActiveMouse->removeMouseFocus(); lastActiveMouse = 0; } + if(child!=0){ + lastActiveMouse = static_cast<RootSubWindow*>(child); + + if(DesktopSettings::instance()->value(DesktopSettings::WM, "focusFollowsMouse", true).toBool()){ + lastActiveMouse->giveKeyboardFocus(); + if(DesktopSettings::instance()->value(DesktopSettings::WM, "raiseOnFocus", false).toBool()){ + lastActiveMouse->raise(); + } + } + lastActiveMouse->giveMouseFocus(); //always give mouse focus on mouseover + } +} + void RootWindow::NewWindow(NativeWindow *win){ RootSubWindow *subwin = 0; //qDebug() << "Got New Window:" << win->property(NativeWindow::Title); @@ -190,19 +234,27 @@ void RootWindow::NewWindow(NativeWindow *win){ } if(subwin==0){ subwin = new RootSubWindow(this, win); + subwin->setWhatsThis("RootSubWindow"); connect(win, SIGNAL(WindowClosed(WId)), this, SLOT(CloseWindow(WId)) ); + connect(subwin, SIGNAL(windowAnimFinished()), this, SLOT(checkMouseFocus()) ); WINDOWS << subwin; } CheckWindowPosition(win->id(), true); //first-time run - //win->setProperty(NativeWindow::Visible, true); + win->setProperty(NativeWindow::Visible, true); //win->requestProperty( NativeWindow::Active, true); - win->requestProperties(QList<NativeWindow::Property>() << NativeWindow::Visible << NativeWindow::Active, QList<QVariant>() << true << true); + //win->requestProperties(QList<NativeWindow::Property>() << NativeWindow::Visible << NativeWindow::Active, QList<QVariant>() << true << true, true); + if(!mouseFocusTimer->isActive()){ mouseFocusTimer->start(); } } void RootWindow::CloseWindow(WId win){ for(int i=0; i<WINDOWS.length(); i++){ - if(WINDOWS[i]->id() == win){ WINDOWS.takeAt(i)->clientClosed(); break; } + if(WINDOWS[i]->id() == win){ + if(lastActiveMouse==WINDOWS[i]){ lastActiveMouse = 0; } //no longer valid + WINDOWS.takeAt(i)->clientClosed(); + break; + } } + if(WINDOWS.isEmpty()){ mouseFocusTimer->stop(); } //no windows to look for } // === PRIVATE SLOTS === @@ -210,11 +262,11 @@ void RootWindow::CloseWindow(WId win){ // === PROTECTED === void RootWindow::paintEvent(QPaintEvent *ev){ //qDebug() << "RootWindow: PaintEvent:" << ev->rect(); //<< QDateTime::currentDateTime()->toString(QDateTime::ShortDate); - QWidget::paintEvent(ev); + //QWidget::paintEvent(ev); bool found = false; QPainter painter(this); QRect geom = ev->rect(); - geom.adjust(-10,-10,10,10); //give it a few more pixels in each direction to repaint (noticing some issues in Qt 5.7.1) + geom.adjust(-100,-100,100,100); //give it a few more pixels in each direction to repaint (noticing some issues in Qt 5.7.1) for(int i=0; i<WALLPAPERS.length(); i++){ if(WALLPAPERS[i].area.intersects(geom) ){ found = true; diff --git a/src-qt5/core/libLumina/RootWindow.h b/src-qt5/core/libLumina/RootWindow.h index 9b1334dc..c5cd44a0 100644 --- a/src-qt5/core/libLumina/RootWindow.h +++ b/src-qt5/core/libLumina/RootWindow.h @@ -18,6 +18,8 @@ #include <QTimer> #include <QApplication> #include <QPaintEvent> +#include <QScreen> +#include <QDebug> #include "RootSubWindow.h" @@ -43,7 +45,9 @@ private: ScaleType scale; QPixmap wallpaper; //Note: This pixmap will always be the same size as "area" }; - QTimer *autoResizeTimer; + QTimer *autoResizeTimer, *mouseFocusTimer; + RootSubWindow *lastActiveMouse; + QPoint lastCursorPos; QList<screeninfo> WALLPAPERS; void updateScreenPixmap(screeninfo *info); //used for recalculating the wallpaper pixmap based on file/area/scale as needed @@ -51,12 +55,16 @@ private: //Window Management QList<RootSubWindow*> WINDOWS; RootSubWindow* windowForId(WId id); - void arrangeWindows(RootSubWindow *primary = 0, QString type = ""); + void arrangeWindows(RootSubWindow *primary = 0, QString type = "", bool primaryonly = false); + + QScreen* screenUnderMouse(); + public slots: void ResizeRoot(); void ChangeWallpaper(QString id, RootWindow::ScaleType scale, QString file); //Note: for "SingleColor" scaling the "file" variable should be "rgb(R,G,B)" or "#hexcode" + void checkMouseFocus(); void NewWindow(NativeWindow*); void CloseWindow(WId); //automatically connected for any new native window @@ -76,6 +84,8 @@ signals: void RootResized(QRect); void NewScreens(QStringList); // [screen_id_1, screen_id_2, etc..] void RemovedScreens(QStringList); // [screen_id_1, screen_id_2, etc..] + void WorkspaceChanged(int); + void MouseMoved(); }; diff --git a/src-qt5/core/libLumina/XDGMime.cpp b/src-qt5/core/libLumina/XDGMime.cpp index 3983f6b5..cbbeff75 100644 --- a/src-qt5/core/libLumina/XDGMime.cpp +++ b/src-qt5/core/libLumina/XDGMime.cpp @@ -12,6 +12,9 @@ static QStringList mimeglobs; static qint64 mimechecktime; QString XDGMime::fromFileName(QString filename){ + if(QFile::exists(filename) && QFileInfo(filename).isDir()){ + return "inode/directory"; + } //Convert a filename into a mimetype return findAppMimeForFile(filename.section("/",-1),false); } diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/JsonMenu.h b/src-qt5/core/lumina-desktop-unified/JsonMenu.h index 5a6b2237..2624153d 100644 --- a/src-qt5/core/lumina-desktop-unified/src-DE/JsonMenu.h +++ b/src-qt5/core/lumina-desktop-unified/JsonMenu.h @@ -4,21 +4,13 @@ // Available under the 3-clause BSD license // See the LICENSE file for full details //=========================================== -// This menu is used to automatically generate menu contents +// This menu is used to automatically generate menu contents // based on the JSON output of an external script/utility //=========================================== #ifndef _LUMINA_DESKTOP_JSON_MENU_H #define _LUMINA_DESKTOP_JSON_MENU_H -#include <QMenu> -#include <QString> -#include <QJsonDocument> -#include <QJsonObject> -#include <QJsonArray> - -#include <LUtils.h> -#include <LuminaXDG.h> -#include "LSession.h" +#include <global-objects.h> class JsonMenu : public QMenu{ Q_OBJECT @@ -38,7 +30,7 @@ private slots: QString type = obj.value("type").toString(); if(type.toLower()=="item"){ QAction *act = this->addAction(label); - if(obj.contains("icon")){ act->setIcon( LXDG::findIcon(obj.value("icon").toString(),"") ); } + if(obj.contains("icon")){ LIconCache::instance()->loadIcon(act, obj.value("icon").toString()); } if(obj.contains("action")){ act->setWhatsThis( obj.value("action").toString() ); } else{ act->setEnabled(false); } //not interactive }else if(type.toLower()=="menu"){ @@ -48,7 +40,7 @@ private slots: if(!obj.contains("exec")){ return; } JsonMenu *menu = new JsonMenu(obj.value("exec").toString(), this); menu->setTitle(label); - if(obj.contains("icon")){ menu->setIcon(LXDG::findIcon(obj.value("icon").toString(),"") ); } + if(obj.contains("icon")){ LIconCache::instance()->loadIcon(menu, obj.value("icon").toString()); } this->addMenu(menu); } } @@ -73,7 +65,7 @@ private slots: QString cmd = act->whatsThis(); QString bin = cmd.section(" ",0,0); if( !LUtils::isValidBinary(bin) ){ cmd.prepend("lumina-open "); } - LSession::handle()->LaunchApplication(cmd); + LSession::instance()->LaunchApplication(cmd); } }; #endif diff --git a/src-qt5/core/lumina-desktop-unified/LSession.cpp b/src-qt5/core/lumina-desktop-unified/LSession.cpp index c6f79584..d70ff973 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 @@ -28,6 +28,7 @@ LSession::LSession(int &argc, char ** argv) : LSingleApplication(argc, argv, "lu qRegisterMetaType< Qt::Key >("Qt::Key"); qRegisterMetaType< NativeWindow::Property >("NativeWindow::Property"); qRegisterMetaType< QList< NativeWindow::Property > >("QList<NativeWindow::Property>"); + qRegisterMetaType< NativeWindowSystem::MouseButton >("NativeWindowSystem::MouseButton"); mediaObj = 0; //private object used for playing login/logout chimes if(this->isPrimaryProcess()){ @@ -50,10 +51,10 @@ LSession::LSession(int &argc, char ** argv) : LSingleApplication(argc, argv, "lu Lumina::SS = new LScreenSaver(); //Now put the Native Window System into it's own thread to keep things snappy Lumina::EVThread = new QThread(); - Lumina::NWS->moveToThread(Lumina::EVThread); - Lumina::EVThread->start(); + //Lumina::NWS->moveToThread(Lumina::EVThread); + //Lumina::EVThread->start(); + Lumina::APPLIST = XDGDesktopList::instance(); Lumina::ROOTWIN = new RootWindow(); - Lumina::APPLIST = new XDGDesktopList(0, true); //keep this list up to date Lumina::SHORTCUTS = new LShortcutEvents(); //this can be moved to it's own thread eventually as well setupGlobalConnections(); @@ -133,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(); @@ -165,6 +166,7 @@ void LSession::setupSession(){ if(DEBUG){ qDebug() << " - Init Finished:" << timer->elapsed(); delete timer;} Lumina::SHORTCUTS->start(); //Startup the shortcut handler now + //for(int i=0; i<4; i++){ LSession::processEvents(); } //Again, just a few event loops here so thing can settle before we close the splash screen //launchStartupApps(); QTimer::singleShot(500, this, SLOT(launchStartupApps()) ); @@ -226,11 +228,13 @@ void LSession::setupGlobalConnections(){ //Root window connections connect(Lumina::ROOTWIN, SIGNAL(RegisterVirtualRoot(WId)), Lumina::NWS, SLOT(RegisterVirtualRoot(WId)) ); connect(Lumina::ROOTWIN, SIGNAL(RootResized(QRect)), Lumina::NWS, SLOT(setRoot_desktopGeometry(QRect)) ); + connect(Lumina::ROOTWIN, SIGNAL(MouseMoved()), Lumina::SS, SLOT(newInputEvent()) ); //Native Window Class connections connect(Lumina::NEF, SIGNAL(WindowCreated(WId)), Lumina::NWS, SLOT(NewWindowDetected(WId))); connect(Lumina::NEF, SIGNAL(WindowDestroyed(WId)), Lumina::NWS, SLOT(WindowCloseDetected(WId))); connect(Lumina::NEF, SIGNAL(WindowPropertyChanged(WId, NativeWindow::Property)), Lumina::NWS, SLOT(WindowPropertyChanged(WId, NativeWindow::Property))); + connect(Lumina::NEF, SIGNAL(WindowPropertiesChanged(WId, QList<NativeWindow::Property>)), Lumina::NWS, SLOT(WindowPropertiesChanged(WId, QList<NativeWindow::Property>)) ); connect(Lumina::NEF, SIGNAL(WindowPropertyChanged(WId, NativeWindow::Property, QVariant)), Lumina::NWS, SLOT(WindowPropertyChanged(WId, NativeWindow::Property, QVariant))); connect(Lumina::NEF, SIGNAL(WindowPropertiesChanged(WId, QList<NativeWindow::Property>, QList<QVariant>)), Lumina::NWS, SLOT(WindowPropertiesChanged(WId, QList<NativeWindow::Property>, QList<QVariant>)) ); connect(Lumina::NEF, SIGNAL(RequestWindowPropertyChange(WId, NativeWindow::Property, QVariant)), Lumina::NWS, SLOT(RequestPropertyChange(WId, NativeWindow::Property, QVariant))); @@ -288,7 +292,7 @@ void LSession::playAudioFile(QString filepath){ if( !QFile::exists(filepath) ){ return; } //Setup the audio output systems for the desktop if(DEBUG){ qDebug() << "Play Audio File"; } - if(mediaObj==0){ qDebug() << " - Initialize media player"; mediaObj = new QMediaPlayer(); } + if(mediaObj==0){ qDebug() << " - Initialize media player"; mediaObj = new QMediaPlayer(0,QMediaPlayer::LowLatency); } if(mediaObj !=0 ){ if(DEBUG){ qDebug() << " - starting playback:" << filepath; } mediaObj->setVolume(100); @@ -382,10 +386,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 @@ -393,24 +415,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 @@ -418,8 +434,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 } } diff --git a/src-qt5/core/lumina-desktop-unified/LSession.h b/src-qt5/core/lumina-desktop-unified/LSession.h index 85cc050c..61da559b 100644 --- a/src-qt5/core/lumina-desktop-unified/LSession.h +++ b/src-qt5/core/lumina-desktop-unified/LSession.h @@ -15,6 +15,9 @@ public: LSession(int &argc, char **argv); ~LSession(); + static LSession* instance(){ + return ( static_cast<LSession*>(QApplication::instance()) ); + } private: void CleanupSession(); void setupGlobalConnections(); @@ -33,6 +36,7 @@ public slots: void StartShutdown(bool skipupdates = false); void StartReboot(bool skipupdates = false); void LaunchApplication(QString exec); + void LaunchDesktopApplication(QString app, QString action = ""); void LaunchStandardApplication(QString app, QStringList args = QStringList()); void reloadIconTheme(); //will emit the IconThemeChanged signal when ready diff --git a/src-qt5/core/lumina-desktop-unified/defaults/compton.conf b/src-qt5/core/lumina-desktop-unified/defaults/compton.conf deleted file mode 100644 index a14fee29..00000000 --- a/src-qt5/core/lumina-desktop-unified/defaults/compton.conf +++ /dev/null @@ -1,89 +0,0 @@ -# Shadow -shadow = true; -no-dnd-shadow = true; -no-dock-shadow = true; -clear-shadow = true; -shadow-radius = 5; -shadow-offset-x = -5; -shadow-offset-y = -5; -# shadow-opacity = 0.7; -# shadow-red = 0.0; -# shadow-green = 0.0; -# shadow-blue = 0.0; -shadow-exclude = [ - "name = 'Notification'", - "class_g = 'Conky'", - "class_g ?= 'Notify-osd'", - "class_g = 'Cairo-clock'", - "_GTK_FRAME_EXTENTS@:c" -]; -# shadow-exclude = "n:e:Notification"; -# shadow-exclude-reg = "x10+0+0"; -# xinerama-shadow-crop = true; - -# Opacity -menu-opacity = 0.9; -inactive-opacity = 0.9; -# active-opacity = 0.8; -frame-opacity = 1.0; -inactive-opacity-override = false; -alpha-step = 0.06; -# inactive-dim = 0.2; -# inactive-dim-fixed = true; -# blur-background = true; -# blur-background-frame = true; -blur-kern = "3x3box" -# blur-kern = "5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1" -# blur-background-fixed = true; -blur-background-exclude = [ - "window_type = 'dock'", - "window_type = 'desktop'", - "_GTK_FRAME_EXTENTS@:c" -]; -# opacity-rule = [ "80:class_g = 'URxvt'" ]; - -# Fading -fading = true; -# fade-delta = 30; -fade-in-step = 0.2; -fade-out-step = 0.2; -# no-fading-openclose = true; -# no-fading-destroyed-argb = true; -fade-exclude = [ ]; - -# Other -backend = "xrender" -mark-wmwin-focused = true; -mark-ovredir-focused = true; -# use-ewmh-active-win = true; -detect-rounded-corners = true; -detect-client-opacity = true; -refresh-rate = 0; -vsync = "none"; -dbe = false; -paint-on-overlay = true; -# sw-opti = true; -# unredir-if-possible = true; -# unredir-if-possible-delay = 5000; -# unredir-if-possible-exclude = [ ]; -focus-exclude = [ "class_g = 'Cairo-clock'" ]; -detect-transient = true; -detect-client-leader = true; -invert-color-include = [ ]; -# resize-damage = 1; - -# GLX backend -# glx-no-stencil = true; -glx-copy-from-front = false; -# glx-use-copysubbuffermesa = true; -# glx-no-rebind-pixmap = true; -glx-swap-method = "undefined"; -# glx-use-gpushader4 = true; -# xrender-sync = true; -# xrender-sync-fence = true; - -# Window type settings -wintypes: -{ - tooltip = { fade = true; shadow = true; opacity = 0.85; focus = true; }; -}; diff --git a/src-qt5/core/lumina-desktop-unified/defaults/desktop/keys.conf b/src-qt5/core/lumina-desktop-unified/defaults/desktop/keys.conf index 59959194..1a993ca3 100644 --- a/src-qt5/core/lumina-desktop-unified/defaults/desktop/keys.conf +++ b/src-qt5/core/lumina-desktop-unified/defaults/desktop/keys.conf @@ -2,7 +2,5 @@ Ctrl+Alt+Backspace=Logout Pause=Lockscreen Alt+L=Lockscreen - -[desktop] Alt+F1=Launch: --terminal Print=Launch: --screenshot diff --git a/src-qt5/core/lumina-desktop-unified/defaults/desktop/screensaver.conf b/src-qt5/core/lumina-desktop-unified/defaults/desktop/screensaver.conf new file mode 100644 index 00000000..89f4e488 --- /dev/null +++ b/src-qt5/core/lumina-desktop-unified/defaults/desktop/screensaver.conf @@ -0,0 +1,3 @@ +[General] +default_plugin="fireflies" +plugin_VGA-0="fireflies" diff --git a/src-qt5/core/lumina-desktop-unified/global-includes.h b/src-qt5/core/lumina-desktop-unified/global-includes.h index 8b8cd16c..184f5b8d 100644 --- a/src-qt5/core/lumina-desktop-unified/global-includes.h +++ b/src-qt5/core/lumina-desktop-unified/global-includes.h @@ -50,6 +50,10 @@ #include <QMediaPlayer> #include <QVideoWidget> #include <QMediaPlaylist> +#include <QJsonObject> +#include <QJsonArray> +#include <QJsonDocument> + // libLumina includes #include <LuminaX11.h> @@ -66,6 +70,7 @@ #include <NativeWindowSystem.h> #include <NativeEventFilter.h> #include <XDGMime.h> +#include <LIconCache.h> // Standard C includes #include <unistd.h> diff --git a/src-qt5/core/lumina-desktop-unified/global-objects.h b/src-qt5/core/lumina-desktop-unified/global-objects.h index 474412eb..0c990dc6 100644 --- a/src-qt5/core/lumina-desktop-unified/global-objects.h +++ b/src-qt5/core/lumina-desktop-unified/global-objects.h @@ -25,6 +25,7 @@ #include "src-screensaver/LScreenSaver.h" //#include "src-WM/LWindowManager.h" +#include "LSession.h" //Any special defines for settings/testing #define ANIMTIME 80 //animation time in milliseconds diff --git a/src-qt5/core/lumina-desktop-unified/lumina-desktop.pro b/src-qt5/core/lumina-desktop-unified/lumina-desktop.pro index 04d5b602..e8cf2f28 100644 --- a/src-qt5/core/lumina-desktop-unified/lumina-desktop.pro +++ b/src-qt5/core/lumina-desktop-unified/lumina-desktop.pro @@ -20,6 +20,7 @@ include(../libLumina/RootWindow.pri) include(../libLumina/ExternalProcess.pri) include(../libLumina/NativeWindow.pri) include(../libLumina/XDGMime.pri) +include(../libLumina/LIconCache.pri) #include all the main individual source groups include(src-screensaver/screensaver.pri) @@ -35,7 +36,8 @@ SOURCES += main.cpp \ HEADERS += global-includes.h \ global-objects.h \ LSession.h \ - BootSplash.h + BootSplash.h \ + JsonMenu.h FORMS += BootSplash.ui diff --git a/src-qt5/core/lumina-desktop-unified/main.cpp b/src-qt5/core/lumina-desktop-unified/main.cpp index ef15cfcd..ed2b9b4c 100644 --- a/src-qt5/core/lumina-desktop-unified/main.cpp +++ b/src-qt5/core/lumina-desktop-unified/main.cpp @@ -29,7 +29,7 @@ int main(int argc, char ** argv) setenv("DESKTOP_SESSION","Lumina",1); setenv("XDG_CURRENT_DESKTOP","Lumina",1); setenv("QT_NO_GLIB", "1", 1); //Disable the glib event loop within Qt at runtime (performance hit + bugs) - //unsetenv("QT_QPA_PLATFORMTHEME"); //causes issues with Lumina themes - not many people have this by default... + setenv("QT_QPA_PLATFORMTHEME", "lthemeengine",1); //causes issues with Lumina themes - not many people have this by default... unsetenv("QT_AUTO_SCREEN_SCALE_FACTOR"); //need exact-pixel measurements (no fake scaling) //Startup the session diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/AppMenu.cpp b/src-qt5/core/lumina-desktop-unified/src-DE/AppMenu.cpp deleted file mode 100644 index 798d8b6d..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-DE/AppMenu.cpp +++ /dev/null @@ -1,183 +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 "AppMenu.h" -#include "LSession.h" -#include <LuminaOS.h> - -AppMenu::AppMenu(QWidget* parent) : QMenu(parent){ - appstorelink = LOS::AppStoreShortcut(); //Default application "store" to display (AppCafe in TrueOS) - controlpanellink = LOS::ControlPanelShortcut(); //Default control panel - sysApps = new XDGDesktopList(this, true); //have this one automatically keep in sync - APPS.clear(); - //watcher = new QFileSystemWatcher(this); - //connect(watcher, SIGNAL(directoryChanged(QString)), this, SLOT(watcherUpdate()) ); - //QTimer::singleShot(200, this, SLOT(start()) ); //Now start filling the menu - start(); //do the initial run during session init so things are responsive immediately. - connect(QApplication::instance(), SIGNAL(LocaleChanged()), this, SLOT(watcherUpdate()) ); - connect(QApplication::instance(), SIGNAL(IconThemeChanged()), this, SLOT(watcherUpdate()) ); -} - -AppMenu::~AppMenu(){ - -} - -QHash<QString, QList<XDGDesktop*> >* AppMenu::currentAppHash(){ - return &APPS; -} - -//=========== -// PRIVATE -//=========== -void AppMenu::updateAppList(){ - //watcher->removePaths(watcher->directories()); - //Make sure the title/icon are updated as well (in case of locale/icon change) - this->setTitle(tr("Applications")); - this->setIcon( LXDG::findIcon("system-run","") ); - //Now update the lists - this->clear(); - APPS.clear(); //NOTE: Don't delete these pointers - the pointers are managed by the sysApps class and these are just references to them - //qDebug() << "New Apps List:"; - if(LSession::handle()->sessionSettings()->value("AutomaticDesktopAppLinks",true).toBool() && !lastHashUpdate.isNull() ){ - QString desktop = QDir::homePath()+"/"+tr("Desktop")+"/"; //translated desktop folder - if(!QFile::exists(desktop)){ - desktop = QDir::homePath()+"/Desktop/"; //desktop folder - if(!QFile::exists(desktop)){ - desktop = QDir::homePath()+"/desktop/"; //lowercase desktop folder - if(!QFile::exists(desktop)){ desktop.clear(); } - } - } - //qDebug() << "Update Desktop Folder:" << desktop << sysApps->removedApps << sysApps->newApps; - QStringList tmp = sysApps->removedApps; - for(int i=0; i<tmp.length() && !desktop.isEmpty(); i++){ - //Remove any old symlinks first - QString filename = tmp[i].section("/",-1); - //qDebug() << "Check for symlink:" << filename; - if( QFileInfo(desktop+filename).isSymLink() ){ QFile::remove(desktop+filename); } - } - tmp = sysApps->newApps; - for(int i=0; i<tmp.length() && !desktop.isEmpty(); i++){ - XDGDesktop *desk = sysApps->files.value(tmp[i]); - if(desk->isHidden || !desk->isValid(false) ){ continue; } //skip this one - //qDebug() << "New App: " << tmp[i] << desk.filePath << "Hidden:" << desk.isHidden; - //Create a new symlink for this file if one does not exist - QString filename = tmp[i].section("/",-1); - //qDebug() << "Check for symlink:" << filename; - if(!QFile::exists(desktop+filename) ){ QFile::link(tmp[i], desktop+filename); } - } - } - QList<XDGDesktop*> allfiles = sysApps->apps(false,false); //only valid, non-hidden apps - APPS = LXDG::sortDesktopCats(allfiles); - APPS.insert("All", LXDG::sortDesktopNames(allfiles)); - lastHashUpdate = QDateTime::currentDateTime(); - //Now fill the menu - //Add link to the file manager - //this->addAction( LXDG::findIcon("user-home", ""), tr("Browse Files"), this, SLOT(launchFileManager()) ); - //--Look for the app store - XDGDesktop store(appstorelink); - if(store.isValid()){ - this->addAction( LXDG::findIcon(store.icon, ""), tr("Manage Applications"), this, SLOT(launchStore()) ); - } - //--Look for the control panel - XDGDesktop controlp(controlpanellink); - if(controlp.isValid()){ - this->addAction( LXDG::findIcon(controlp.icon, ""), tr("Control Panel"), this, SLOT(launchControlPanel()) ); - } - this->addSeparator(); - //--Now create the sub-menus - QStringList cats = APPS.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,"")); - connect(menu, SIGNAL(triggered(QAction*)), this, SLOT(launchApp(QAction*)) ); - QList<XDGDesktop*> appL = APPS.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, this); - 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, this); - 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, this); - 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); - } - } - this->addMenu(menu); - } - // watcher->addPaths(LXDG::systemApplicationDirs()); - emit AppMenuUpdated(); -} - -//================= -// PRIVATE SLOTS -//================= -void AppMenu::start(){ - //Setup the watcher - connect(sysApps, SIGNAL(appsUpdated()), this, SLOT(watcherUpdate()) ); - sysApps->updateList(); - //Now fill the menu the first time - updateAppList(); -} - -void AppMenu::watcherUpdate(){ - updateAppList(); //Update the menu listings -} - -void AppMenu::launchStore(){ - LSession::LaunchApplication("lumina-open \""+appstorelink+"\""); -} - -void AppMenu::launchControlPanel(){ - LSession::LaunchApplication("lumina-open \""+controlpanellink+"\""); -} - -void AppMenu::launchFileManager(){ - QString fm = "lumina-open \""+QDir::homePath()+"\""; - LSession::LaunchApplication(fm); -} - -void AppMenu::launchApp(QAction *act){ - QString appFile = act->whatsThis(); - if(appFile.startsWith("-action")){ - LSession::LaunchApplication("lumina-open "+appFile); //already has quotes put in place properly - }else{ - LSession::LaunchApplication("lumina-open \""+appFile+"\""); - } -} diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/AppMenu.h b/src-qt5/core/lumina-desktop-unified/src-DE/AppMenu.h deleted file mode 100644 index 5baaab7a..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-DE/AppMenu.h +++ /dev/null @@ -1,58 +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 menu auto-updates to keep the list of available applications -// current at all times - and can launch them as necessary -//=========================================== -#ifndef _LUMINA_DESKTOP_APP_MENU_H -#define _LUMINA_DESKTOP_APP_MENU_H - -// Qt includes -#include <QMenu> -#include <QFileSystemWatcher> -#include <QString> -#include <QList> -#include <QTimer> -#include <QDateTime> -#include <QHash> -#include <QAction> -#include <QSettings> -//#include <QProcess> - -// libLumina includes -#include <LuminaXDG.h> - -class AppMenu : public QMenu{ - Q_OBJECT -public: - AppMenu(QWidget *parent = 0); - ~AppMenu(); - - QHash<QString, QList<XDGDesktop*> > *currentAppHash(); - QDateTime lastHashUpdate; - -private: - //QFileSystemWatcher *watcher; - QString appstorelink, controlpanellink; - QList<QMenu> MLIST; - XDGDesktopList *sysApps; - QHash<QString, QList<XDGDesktop*> > APPS; - - void updateAppList(); //completely update the menu lists - -private slots: - void start(); //This is called in a new thread after initialization - void watcherUpdate(); - void launchStore(); - void launchControlPanel(); - void launchFileManager(); - void launchApp(QAction *act); - -signals: - void AppMenuUpdated(); -}; - -#endif diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/LDesktop.cpp b/src-qt5/core/lumina-desktop-unified/src-DE/LDesktop.cpp deleted file mode 100644 index de7d086e..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-DE/LDesktop.cpp +++ /dev/null @@ -1,553 +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 "LDesktop.h" -#include "LSession.h" - -#include <LuminaOS.h> -#include <LuminaX11.h> -#include "LWinInfo.h" -#include "JsonMenu.h" - -#include <QScreen> - -#define DEBUG 0 - -LDesktop::LDesktop(int deskNum, bool setdefault) : QObject(){ - screenID = QApplication::screens().at(deskNum)->name(); - DPREFIX = "desktop-"+screenID+"/"; - //desktopnumber = deskNum; - //desktop = QApplication::desktop(); - defaultdesktop = setdefault; //(desktop->screenGeometry(desktopnumber).x()==0); - //desktoplocked = true; - issyncing = bgupdating = false; - usewinmenu=false; - - //Setup the internal variables - settings = new QSettings(QSettings::UserScope, "lumina-desktop","desktopsettings", this); - //qDebug() << " - Desktop Settings File:" << settings->fileName(); - if(!QFile::exists(settings->fileName())){ settings->setValue(DPREFIX+"background/filelist",QStringList()<<"default"); settings->sync(); } - //bgWindow = 0; - bgDesktop = 0; - QTimer::singleShot(1,this, SLOT(InitDesktop()) ); - -} - -LDesktop::~LDesktop(){ - delete deskMenu; - delete winMenu; - //delete bgWindow; - delete workspacelabel; - delete wkspaceact; -} - -int LDesktop::Screen(){ - QList<QScreen*> scrns = QApplication::screens(); - for(int i=0; i<scrns.length(); i++){ - if(scrns[i]->name()==screenID){ return i; } - } - return -1; -} - -void LDesktop::show(){ - //if(bgWindow!=0){ bgWindow->show(); } - if(bgDesktop!=0){ bgDesktop->show(); } - for(int i=0; i<PANELS.length(); i++){ PANELS[i]->show(); } -} - -void LDesktop::hide(){ - //if(bgWindow!=0){ bgWindow->hide(); } - if(bgDesktop!=0){ bgDesktop->hide(); } - for(int i=0; i<PANELS.length(); i++){ PANELS[i]->hide(); } -} - -void LDesktop::prepareToClose(){ - //Get any panels ready to close - issyncing = true; //Stop handling any watcher events - for(int i=0; i<PANELS.length(); i++){ PANELS[i]->prepareToClose(); PANELS.takeAt(i)->deleteLater(); i--; } - //Now close down any desktop plugins - //desktoplocked = true; //make sure that plugin settings are preserved during removal - //Remove all the current containers - bgDesktop->cleanup(); -} - -WId LDesktop::backgroundID(){ - if(bgDesktop!=0){ return bgDesktop->winId(); } - else{ return QX11Info::appRootWindow(); } -} - -QRect LDesktop::availableScreenGeom(){ - //Return a QRect containing the (global) screen area that is available (not under any panels) - if(bgDesktop!=0){ - return globalWorkRect; //saved from previous calculations - }else{ - return LSession::handle()->screenGeom( Screen() ); - } -} - -void LDesktop::UpdateGeometry(){ - //First make sure there is something different about the geometry - //if(desktop->screenGeometry(Screen())==bgWindow->geometry()){ return; } - //Now update the screen - // NOTE: This functionality is highly event-driven based on X changes - so we need to keep things in order (no signals/slots) - //qDebug() << "Changing Desktop Geom:" << Screen(); - //bgWindow->setGeometry(desktop->screenGeometry(Screen())); - /*for(int i=0; i<PANELS.length(); i++){ - PANELS[i]->UpdatePanel(true); //geom only updates - do this before adjusting the background - }*/ - //qDebug() << " - Update Desktop Plugin Area"; - UpdateDesktopPluginArea(); - //qDebug() << " - Done With Desktop Geom Updates"; - QTimer::singleShot(0, this, SLOT(UpdatePanels())); -} - -void LDesktop::SystemLock(){ - QProcess::startDetached("xscreensaver-command -lock"); -} - -void LDesktop::SystemLogout(){ - LSession::handle()->systemWindow(); -} - -void LDesktop::SystemTerminal(){ - LSession::handle()->sessionSettings()->sync(); //make sure it is up to date - QString term = LXDG::findDefaultAppForMime("application/terminal"); //LSession::handle()->sessionSettings()->value("default-terminal","xterm").toString(); - if(term.isEmpty() ||(!term.endsWith(".desktop") && !LUtils::isValidBinary(term)) ){ term = "xterm"; } - LSession::LaunchApplication("lumina-open \""+term+"\""); -} - -void LDesktop::SystemFileManager(){ - //Just open the home directory - QString fm = "lumina-open \""+QDir::homePath()+"\""; - LSession::LaunchApplication(fm); -} - -void LDesktop::SystemApplication(QAction* act){ - if(!act->whatsThis().isEmpty() && act->parent()==deskMenu){ - LSession::LaunchApplication("lumina-open \""+act->whatsThis()+"\""); - } -} - -void LDesktop::checkResolution(){ - //Compare the current screen resolution with the last one used/saved and adjust config values *only* - //NOTE: This is only run the first time this desktop is created (before loading all the interface) - not on each desktop change - int oldWidth = settings->value(DPREFIX+"screen/lastWidth",-1).toInt(); - int oldHeight = settings->value(DPREFIX+"screen/lastHeight",-1).toInt(); - QRect scrn = LSession::handle()->screenGeom( Screen() ); - if(scrn.isNull()){ return; } - issyncing = true; - settings->setValue(DPREFIX+"screen/lastWidth",scrn.width()); - settings->setValue(DPREFIX+"screen/lastHeight",scrn.height()); - - if(oldWidth<1 || oldHeight<1 || scrn.width()<1 || scrn.height()<1){ - //nothing to do - something invalid - }else if(scrn.width()==oldWidth && scrn.height()==oldHeight){ - //nothing to do - same as before - }else{ - //Calculate the scale factor between the old/new sizes in each dimension - // and forward that on to all the interface elements - double xscale = scrn.width()/((double) oldWidth); - double yscale = scrn.height()/((double) oldHeight); - if(DEBUG){ - qDebug() << "Screen Resolution Changed:" << screenID; - qDebug() << " - Old:" << QString::number(oldWidth)+"x"+QString::number(oldHeight); - qDebug() << " - New:" << QString::number(scrn.width())+"x"+QString::number(scrn.height()); - qDebug() << " - Scale Factors:" << xscale << yscale; - } - //Update any panels in the config file - for(int i=0; i<4; i++){ - QString PPREFIX = "panel"+QString::number(Screen())+"."+QString::number(i)+"/"; - int ht = settings->value(PPREFIX+"height",-1).toInt(); - if(ht<1){ continue; } //no panel height defined - QString loc = settings->value(PPREFIX+"location","top").toString().toLower(); - if(loc=="top" || loc=="bottom"){ - settings->setValue(PPREFIX+"height", (int) ht*yscale); //vertical dimension - }else{ - settings->setValue(PPREFIX+"height", (int) ht*xscale); //horizontal dimension - } - } - //Update any desktop plugins - QStringList plugs = settings->value(DPREFIX+"pluginlist").toStringList(); - QFileInfoList files = LSession::handle()->DesktopFiles(); - for(int i=0; i<files.length(); i++){ - plugs << "applauncher::"+files[i].absoluteFilePath()+"---"+DPREFIX; - } - //QString pspath = QDir::homePath()+"/.lumina/desktop-plugins/%1.conf"; - QSettings *DP = LSession::handle()->DesktopPluginSettings(); - QStringList keys = DP->allKeys(); - for(int i=0; i<plugs.length(); i++){ - QStringList filter = keys.filter(plugs[i]); - for(int j=0; j<filter.length(); j++){ - //Has existing settings - need to adjust it - if(filter[j].endsWith("location/height")){ DP->setValue( filter[j], qRound(DP->value(filter[j]).toInt()*yscale) ); } - if(filter[j].endsWith("location/width")){ DP->setValue( filter[j], qRound(DP->value(filter[j]).toInt()*xscale) ); } - if(filter[j].endsWith("location/x")){ DP->setValue( filter[j], qRound(DP->value(filter[j]).toInt()*xscale) ); } - if(filter[j].endsWith("location/y")){ DP->setValue( filter[j], qRound(DP->value(filter[j]).toInt()*yscale) ); } - if(filter[j].endsWith("IconSize")){ DP->setValue( filter[j], qRound(DP->value(filter[j]).toInt()*yscale) ); } - if(filter[j].endsWith("iconsize")){ DP->setValue( filter[j], qRound(DP->value(filter[j]).toInt()*yscale) ); } - } - } - DP->sync(); //make sure it gets saved to disk right away - - } - issyncing = false; -} - -// ===================== -// PRIVATE SLOTS -// ===================== -void LDesktop::InitDesktop(){ - //This is called *once* during the main initialization routines - checkResolution(); //Adjust the desktop config file first (if necessary) - if(DEBUG){ qDebug() << "Init Desktop:" << Screen(); } - //connect(desktop, SIGNAL(resized(int)), this, SLOT(UpdateGeometry(int))); - if(DEBUG){ qDebug() << "Desktop #"<<Screen()<<" -> "<< LSession::desktop()->screenGeometry(Screen()) << LSession::handle()->screenGeom(Screen()); } - deskMenu = new QMenu(0); - connect(deskMenu, SIGNAL(triggered(QAction*)), this, SLOT(SystemApplication(QAction*)) ); - winMenu = new QMenu(0); - winMenu->setTitle(tr("Window List")); - winMenu->setIcon( LXDG::findIcon("preferences-system-windows","") ); - connect(winMenu, SIGNAL(triggered(QAction*)), this, SLOT(winClicked(QAction*)) ); - workspacelabel = new QLabel(0); - workspacelabel->setAlignment(Qt::AlignCenter); - wkspaceact = new QWidgetAction(0); - wkspaceact->setDefaultWidget(workspacelabel); - bgtimer = new QTimer(this); - bgtimer->setSingleShot(true); - connect(bgtimer, SIGNAL(timeout()), this, SLOT(UpdateBackground()) ); - - connect(QApplication::instance(), SIGNAL(DesktopConfigChanged()), this, SLOT(SettingsChanged()) ); - connect(QApplication::instance(), SIGNAL(DesktopFilesChanged()), this, SLOT(UpdateDesktop()) ); - connect(QApplication::instance(), SIGNAL(LocaleChanged()), this, SLOT(LocaleChanged()) ); - connect(QApplication::instance(), SIGNAL(WorkspaceChanged()), this, SLOT(UpdateBackground()) ); - //if(DEBUG){ qDebug() << "Create bgWindow"; } - /*bgWindow = new QWidget(); //LDesktopBackground(); - bgWindow->setObjectName("bgWindow"); - bgWindow->setContextMenuPolicy(Qt::CustomContextMenu); - bgWindow->setFocusPolicy(Qt::StrongFocus); - bgWindow->setWindowFlags(Qt::WindowStaysOnBottomHint | Qt::CustomizeWindowHint | Qt::FramelessWindowHint); - LSession::handle()->XCB->SetAsDesktop(bgWindow->winId()); - bgWindow->setGeometry(LSession::handle()->screenGeom(Screen())); - bgWindow->setWindowOpacity(0.0); - connect(bgWindow, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(ShowMenu()) );*/ - if(DEBUG){ qDebug() << "Create bgDesktop"; } - bgDesktop = new LDesktopPluginSpace(); - int grid = settings->value(DPREFIX+"GridSize",-1).toInt(); - if(grid<0 && LSession::desktop()->screenGeometry(Screen()).height() > 2000){ grid = 200; } - else if(grid<0){ grid = 100; } - bgDesktop->SetIconSize( grid ); - bgDesktop->setContextMenuPolicy(Qt::CustomContextMenu); - //LSession::handle()->XCB->SetAsDesktop(bgDesktop->winId()); - connect(bgDesktop, SIGNAL(PluginRemovedByUser(QString)), this, SLOT(RemoveDeskPlugin(QString)) ); - connect(bgDesktop, SIGNAL(IncreaseIcons()), this, SLOT(IncreaseDesktopPluginIcons()) ); - connect(bgDesktop, SIGNAL(DecreaseIcons()), this, SLOT(DecreaseDesktopPluginIcons()) ); - connect(bgDesktop, SIGNAL(HideDesktopMenu()), deskMenu, SLOT(hide())); - connect(bgDesktop, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(ShowMenu()) ); - if(DEBUG){ qDebug() << " - Desktop Init Done:" << screenID; } - //Start the update processes - QTimer::singleShot(10,this, SLOT(UpdateMenu()) ); - QTimer::singleShot(0,this, SLOT(UpdateBackground()) ); - QTimer::singleShot(1,this, SLOT(UpdateDesktop()) ); - QTimer::singleShot(2,this, SLOT(UpdatePanels()) ); -} - -void LDesktop::SettingsChanged(){ - if(issyncing){ return; } //don't refresh for internal modifications to the - issyncing = true; - qDebug() << "Found Settings Change:" << screenID; - settings->sync(); //make sure to sync with external settings changes - UpdateBackground(); - UpdateDesktop(); - UpdatePanels(); - UpdateMenu(); - issyncing = false; - QTimer::singleShot(100, this, SLOT(UnlockSettings()) ); //give it a few moments to settle before performing another sync -} - -void LDesktop::LocaleChanged(){ - //Update any elements which require a re-translation - UpdateMenu(false); //do the full menu refresh -} - -void LDesktop::UpdateMenu(bool fast){ - if(DEBUG){ qDebug() << " - Update Menu:" << screenID; } - //Put a label at the top - int num = LSession::handle()->XCB->CurrentWorkspace(); //LX11::GetCurrentDesktop(); - if(DEBUG){ qDebug() << "Found workspace number:" << num; } - if(num < 0){ workspacelabel->setText( "<b>"+tr("Lumina Desktop")+"</b>"); } - else{ workspacelabel->setText( "<b>"+QString(tr("Workspace %1")).arg(QString::number(num+1))+"</b>"); } - if(fast && usewinmenu){ UpdateWinMenu(); } - if(fast){ return; } //already done - deskMenu->clear(); //clear it for refresh - deskMenu->addAction(wkspaceact); - deskMenu->addSeparator(); - //Now load the user's menu setup and fill the menu - QStringList items = settings->value("menu/itemlist", QStringList()<< "terminal" << "filemanager" <<"applications" << "line" << "settings" ).toStringList(); - usewinmenu=false; - for(int i=0; i<items.length(); i++){ - if(items[i]=="terminal"){ deskMenu->addAction(LXDG::findIcon("utilities-terminal",""), tr("Terminal"), this, SLOT(SystemTerminal()) ); } - else if(items[i]=="lockdesktop"){ deskMenu->addAction(LXDG::findIcon("system-lock-screen",""), tr("Lock Session"), this, SLOT(SystemLock()) ); } - else if(items[i]=="filemanager"){ deskMenu->addAction( LXDG::findIcon("user-home",""), tr("Browse Files"), this, SLOT(SystemFileManager()) ); } - else if(items[i]=="applications"){ deskMenu->addMenu( LSession::handle()->applicationMenu() ); } - else if(items[i]=="line"){ deskMenu->addSeparator(); } - else if(items[i]=="settings"){ deskMenu->addMenu( LSession::handle()->settingsMenu() ); } - else if(items[i]=="windowlist"){ deskMenu->addMenu( winMenu); usewinmenu=true;} - else if(items[i].startsWith("app::::") && items[i].endsWith(".desktop")){ - //Custom *.desktop application - QString file = items[i].section("::::",1,1).simplified(); - XDGDesktop xdgf(file);// = LXDG::loadDesktopFile(file, ok); - if(xdgf.type!=XDGDesktop::BAD){ - deskMenu->addAction( LXDG::findIcon(xdgf.icon,""), xdgf.name)->setWhatsThis(file); - }else{ - qDebug() << "Could not load application file:" << file; - } - }else if(items[i].startsWith("jsonmenu::::")){ - //Custom JSON menu system (populated on demand via external scripts/tools - QStringList info = items[i].split("::::"); //FORMAT:[ "jsonmenu",exec,name, icon(optional)] - if(info.length()>=3){ - qDebug() << "Custom JSON Menu Loaded:" << info; - JsonMenu *tmp = new JsonMenu(info[1], deskMenu); - tmp->setTitle(info[2]); - connect(tmp, SIGNAL(triggered(QAction*)), this, SLOT(SystemApplication(QAction*)) ); - if(info.length()>=4){ tmp->setIcon( LXDG::findIcon(info[3],"") ); } - deskMenu->addMenu(tmp); - } - } - } - //Now add the system quit options - deskMenu->addSeparator(); - deskMenu->addAction(LXDG::findIcon("system-log-out",""), tr("Leave"), this, SLOT(SystemLogout()) ); -} - -void LDesktop::UpdateWinMenu(){ - winMenu->clear(); - //Get the current list of windows - QList<WId> wins = LSession::handle()->XCB->WindowList(); - //Now add them to the menu - for(int i=0; i<wins.length(); i++){ - LWinInfo info(wins[i]); - bool junk; - QAction *act = winMenu->addAction( info.icon(junk), info.text() ); - act->setData( QString::number(wins[i]) ); - } -} - -void LDesktop::winClicked(QAction* act){ - LSession::handle()->XCB->ActivateWindow( act->data().toString().toULong() ); -} - -void LDesktop::UpdateDesktop(){ - if(DEBUG){ qDebug() << " - Update Desktop Plugins for screen:" << screenID; } - QStringList plugins = settings->value(DPREFIX+"pluginlist", QStringList()).toStringList(); - if(defaultdesktop && plugins.isEmpty()){ - //plugins << "sample" << "sample" << "sample"; - } - bool changed=false; //in case the plugin list needs to be changed - //First make sure all the plugin names are unique - for(int i=0; i<plugins.length(); i++){ - if(!plugins[i].contains("---") ){ - int num=1; - while( plugins.contains(plugins[i]+"---"+QString::number(Screen())+"."+QString::number(num)) ){ - num++; - } - plugins[i] = plugins[i]+"---"+screenID+"."+QString::number(num); - //plugins[i] = plugins[i]+"---"+QString::number(Screen())+"."+QString::number(num); - changed=true; - } - } - if(changed){ - //save the modified plugin list to file (so per-plugin settings are preserved) - issyncing=true; //don't let the change cause a refresh - settings->setValue(DPREFIX+"pluginlist", plugins); - settings->sync(); - QTimer::singleShot(200, this, SLOT(UnlockSettings()) ); - } - //If generating desktop file launchers, add those in - QStringList filelist; - if(settings->value(DPREFIX+"generateDesktopIcons",false).toBool()){ - QFileInfoList files = LSession::handle()->DesktopFiles(); - for(int i=0; i<files.length(); i++){ - filelist << files[i].absoluteFilePath(); - } - } - UpdateDesktopPluginArea(); - bgDesktop->LoadItems(plugins, filelist); -} - -void LDesktop::RemoveDeskPlugin(QString ID){ - //This is called after a plugin is manually removed by the user - // just need to ensure that the plugin is also removed from the settings file - QStringList plugs = settings->value(DPREFIX+"pluginlist", QStringList()).toStringList(); - if(plugs.contains(ID)){ - plugs.removeAll(ID); - issyncing=true; //don't let the change cause a refresh - settings->setValue(DPREFIX+"pluginlist", plugs); - settings->sync(); - QTimer::singleShot(200, this, SLOT(UnlockSettings()) ); - } -} - -void LDesktop::IncreaseDesktopPluginIcons(){ - int cur = settings->value(DPREFIX+"GridSize",-1).toInt(); - if(cur<0 &&LSession::desktop()->screenGeometry(Screen()).height() > 2000){ cur = 200; } - else if(cur<0){ cur = 100; } - cur+=16; - issyncing=true; //don't let the change cause a refresh - settings->setValue(DPREFIX+"GridSize",cur); - settings->sync(); - QTimer::singleShot(200, this, SLOT(UnlockSettings()) ); - bgDesktop->SetIconSize(cur); -} - -void LDesktop::DecreaseDesktopPluginIcons(){ - int cur = settings->value(DPREFIX+"GridSize",-1).toInt(); - if(cur<0 &&LSession::desktop()->screenGeometry(Screen()).height() > 2000){ cur = 200; } - else if(cur<0){ cur = 100; } - if(cur<32){ return; } //cannot get smaller than 16x16 - cur-=16; - issyncing=true; //don't let the change cause a refresh - settings->setValue(DPREFIX+"GridSize",cur); - settings->sync(); - QTimer::singleShot(200, this, SLOT(UnlockSettings()) ); - bgDesktop->SetIconSize(cur); -} - -void LDesktop::UpdatePanels(){ - if(DEBUG){ qDebug() << " - Update Panels For Screen:" << Screen(); } - int panels = settings->value(DPREFIX+"panels", -1).toInt(); - //if(panels==-1 && defaultdesktop){ panels=1; } //need at least 1 panel on the primary desktop - //Remove all extra panels - for(int i=0; i<PANELS.length(); i++){ - if(panels <= PANELS[i]->number()){ - if(DEBUG){ qDebug() << " -- Remove Panel:" << PANELS[i]->number(); } - PANELS[i]->prepareToClose(); - PANELS.takeAt(i)->deleteLater(); - i--; - } - } - for(int i=0; i<panels; i++){ - //Check for a panel with this number - bool found = false; - for(int p=0; p<PANELS.length() && !found; p++){ - if(PANELS[p]->number() == i){ - found = true; - if(DEBUG){ qDebug() << " -- Update panel "<< i; } - //panel already exists - just update it - QTimer::singleShot(0, PANELS[p], SLOT(UpdatePanel()) ); - } - } - if(!found){ - if(DEBUG){ qDebug() << " -- Create panel "<< i; } - //New panel - LPanel *pan = new LPanel(settings, screenID, i, bgDesktop); - PANELS << pan; - pan->show(); - } - } - //Give it a 1/2 second before ensuring that the visible desktop area is correct - QTimer::singleShot(500, this, SLOT(UpdateDesktopPluginArea()) ); -} - -void LDesktop::UpdateDesktopPluginArea(){ - QRegion visReg(LSession::desktop()->screenGeometry(Screen()) ); //visible region (not hidden behind a panel) - QRect rawRect = visReg.boundingRect(); //initial value (screen size) - //qDebug() << "Update Desktop Plugin Area:" << bgWindow->geometry(); - for(int i=0; i<PANELS.length(); i++){ - QRegion shifted = visReg; - QString loc = settings->value(PANELS[i]->prefix()+"location","top").toString().toLower(); - int vis = PANELS[i]->visibleWidth(); - if(loc=="top"){ - if(!shifted.contains(QRect(rawRect.x(), rawRect.y(), rawRect.width(), vis))){ continue; } - shifted.translate(0, (rawRect.top()+vis)-shifted.boundingRect().top() ); - }else if(loc=="bottom"){ - if(!shifted.contains(QRect(rawRect.x(), rawRect.bottom()-vis, rawRect.width(), vis))){ continue; } - shifted.translate(0, (rawRect.bottom()-vis)-shifted.boundingRect().bottom()); - }else if(loc=="left"){ - if( !shifted.contains(QRect(rawRect.x(), rawRect.y(), vis,rawRect.height())) ){ continue; } - shifted.translate((rawRect.left()+vis)-shifted.boundingRect().left() ,0); - }else{ //right - if(!shifted.contains(QRect(rawRect.right()-vis, rawRect.y(), vis,rawRect.height())) ){ continue; } - shifted.translate((rawRect.right()-vis)-shifted.boundingRect().right(),0); - } - visReg = visReg.intersected( shifted ); - } - //Now make sure the desktop plugin area is only the visible area - QRect rec = visReg.boundingRect(); - //qDebug() << " - DPArea: Panel-Adjusted rectangle:" << rec; - //LSession::handle()->XCB->SetScreenWorkArea((unsigned int) Screen(), rec); - //Now remove the X offset to place it on the current screen (needs widget-coords, not global) - globalWorkRect = rec; //save this for later - rec.moveTopLeft( QPoint( rec.x()-LSession::desktop()->screenGeometry(Screen()).x() , rec.y()-LSession::desktop()->screenGeometry(Screen()).y() ) ); - //qDebug() << "DPlug Area:" << rec << bgDesktop->geometry() << LSession::handle()->desktop()->availableGeometry(bgDesktop); - if(rec.size().isNull() || rec == bgDesktop->geometry()){return; } //nothing changed - bgDesktop->setGeometry( LSession::desktop()->screenGeometry(Screen())); - bgDesktop->setDesktopArea( rec ); - bgDesktop->UpdateGeom(); //just in case the plugin space itself needs to do anything - QTimer::singleShot(10, this, SLOT(UpdateBackground()) ); - //Re-paint the panels (just in case a plugin was underneath it and the panel is transparent) - //for(int i=0; i<PANELS.length(); i++){ PANELS[i]->update(); } - //Make sure to re-disable any WM control flags - LSession::handle()->XCB->SetDisableWMActions(bgDesktop->winId()); -} - -void LDesktop::UpdateBackground(){ - //Get the current Background - if(bgupdating || bgDesktop==0){ return; } //prevent multiple calls to this at the same time - bgupdating = true; - if(DEBUG){ qDebug() << " - Update Desktop Background for screen:" << Screen(); } - //Get the list of background(s) to show - QStringList bgL = settings->value(DPREFIX+"background/filelist-workspace-"+QString::number( LSession::handle()->XCB->CurrentWorkspace()), QStringList()).toStringList(); - if(bgL.isEmpty()){ bgL = settings->value(DPREFIX+"background/filelist", QStringList()).toStringList(); } - - //qDebug() << " - List:" << bgL << CBG; - //Remove any invalid files - for(int i=0; i<bgL.length(); i++){ - if( (!QFile::exists(bgL[i]) && bgL[i]!="default" && !bgL[i].startsWith("rgb(") ) || bgL[i].isEmpty()){ bgL.removeAt(i); i--; } - } - if(bgL.isEmpty()){ bgL << "default"; } //always fall back on the default - //Determine if the background needs to be changed - //qDebug() << "BG List:" << bgL << oldBGL << CBG << bgtimer->isActive(); - if(bgL==oldBGL && !CBG.isEmpty() && bgtimer->isActive()){ - //No background change scheduled - just update the widget - bgDesktop->update(); - bgupdating=false; - return; - } - oldBGL = bgL; //save this for later - //Determine which background to use next - int index ( qrand() % bgL.length() ); - if(index== bgL.indexOf(CBG)){ //if the current wallpaper was selected by the randomization again - //Go to the next in the list - if(index < 0 || index >= bgL.length()-1){ index = 0; } //if invalid or last item in the list - go to first - else{ index++; } //go to next - } - QString bgFile = bgL[index]; - //Save this file as the current background - CBG = bgFile; - //qDebug() << " - Set Background to:" << CBG << index << bgL; - if( (bgFile.toLower()=="default")){ bgFile = LOS::LuminaShare()+"desktop-background.jpg"; } - //Now set this file as the current background - QString format = settings->value(DPREFIX+"background/format","stretch").toString(); - //bgWindow->setBackground(bgFile, format); - QPixmap backPix = LDesktopBackground::setBackground(bgFile, format, LSession::handle()->screenGeom(Screen())); - bgDesktop->setBackground(backPix); - //Now reset the timer for the next change (if appropriate) - if(bgtimer->isActive()){ bgtimer->stop(); } - if(bgL.length() > 1){ - //get the length of the timer (in minutes) - int min = settings->value(DPREFIX+"background/minutesToChange",5).toInt(); - //restart the internal timer - if(min > 0){ - bgtimer->start(min*60000); //convert from minutes to milliseconds - } - } - //Now update the panel backgrounds - for(int i=0; i<PANELS.length(); i++){ - PANELS[i]->update(); - PANELS[i]->show(); - } - bgupdating=false; -} diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/LDesktop.h b/src-qt5/core/lumina-desktop-unified/src-DE/LDesktop.h deleted file mode 100644 index b6034c18..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-DE/LDesktop.h +++ /dev/null @@ -1,107 +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_LDESKTOP_H -#define _LUMINA_DESKTOP_LDESKTOP_H - -#include <QCoreApplication> - - -#include <QSettings> -#include <QFile> -#include <QList> -#include <QDebug> -#include <QTimer> -#include <QFileSystemWatcher> -#include <QLabel> -#include <QWidgetAction> -#include <QMdiArea> -#include <QMdiSubWindow> -#include <QRegion> - - -#include <LuminaXDG.h> - -#include "LPanel.h" -//#include "Globals.h" -#include "AppMenu.h" -#include "LDesktopPluginSpace.h" -#include "desktop-plugins/LDPlugin.h" -//#include "desktop-plugins/NewDP.h" -#include "LDesktopBackground.h" - -class LDesktop : public QObject{ - Q_OBJECT -public: - LDesktop(int deskNum=0, bool setdefault = false); - ~LDesktop(); - - int Screen(); //return the screen number this object is managing - void show(); - void hide(); - void prepareToClose(); - - WId backgroundID(); - QRect availableScreenGeom(); - - void UpdateGeometry(); - -public slots: - void SystemLock(); - void SystemLogout(); - void SystemTerminal(); - void SystemFileManager(); - void SystemApplication(QAction*); - - void checkResolution(); - -private: - QSettings *settings; - QTimer *bgtimer; - //QDesktopWidget *desktop; - QString DPREFIX, screenID; - //int desktopnumber; - QRegion availDPArea; - bool defaultdesktop, issyncing, usewinmenu, bgupdating; - QStringList oldBGL; - QList<LPanel*> PANELS; - LDesktopPluginSpace *bgDesktop; //desktop plugin area - //QWidget *bgWindow; //full screen background - QMenu *deskMenu, *winMenu; - QLabel *workspacelabel; - QWidgetAction *wkspaceact; - QList<LDPlugin*> PLUGINS; - QString CBG; //current background - QRect globalWorkRect; - -private slots: - void InitDesktop(); - void SettingsChanged(); - void UnlockSettings(){ issyncing=false; } - void LocaleChanged(); - - //Menu functions - void UpdateMenu(bool fast = false); - void ShowMenu(){ - UpdateMenu(true); //run the fast version - deskMenu->popup(QCursor::pos()); //} - } - void UpdateWinMenu(); - void winClicked(QAction*); - - //Desktop plugin system functions - void UpdateDesktop(); - void RemoveDeskPlugin(QString); - void IncreaseDesktopPluginIcons(); - void DecreaseDesktopPluginIcons(); - - void UpdatePanels(); - - void UpdateDesktopPluginArea(); //make sure the area is not underneath any panels - - void UpdateBackground(); -}; -#endif diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/LDesktopBackground.cpp b/src-qt5/core/lumina-desktop-unified/src-DE/LDesktopBackground.cpp deleted file mode 100644 index 6b458c24..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-DE/LDesktopBackground.cpp +++ /dev/null @@ -1,90 +0,0 @@ -//=========================================== -// Lumina-DE source code -// Copyright (c) 2016, Henry Hu -// Available under the 3-clause BSD license -// See the LICENSE file for full details -//=========================================== -#include "LDesktopBackground.h" - -#include <QPainter> -#include <QPaintEvent> -#include <QDebug> - -#include "LSession.h" - -void LDesktopBackground::paintEvent(QPaintEvent *ev) { - //return; //do nothing - always invisible - if (bgPixmap != NULL) { - //qDebug() << "Wallpaper paint Event:" << ev->rect(); - //QPainter painter(this); - //painter.setBrush(*bgPixmap); - //painter.drawRect(ev->rect().adjusted(-1,-1,2,2)); - }else{ - QWidget::paintEvent(ev); - } -} - -QPixmap LDesktopBackground::setBackground(const QString& bgFile, const QString& format, QRect geom) { - //if (bgPixmap != NULL) delete bgPixmap; - QPixmap bgPixmap(geom.size());// = new QPixmap(size()); - - if (bgFile.startsWith("rgb(")) { - QStringList colors = bgFile.section(")",0,0).section("(",1,1).split(","); - QColor color = QColor(colors[0].toInt(), colors[1].toInt(), colors[2].toInt()); - bgPixmap.fill(color); - } else { - bgPixmap.fill(Qt::black); - - // Load the background file and scale - QPixmap bgImage(bgFile); - if (format == "stretch" || format == "full" || format == "fit") { - Qt::AspectRatioMode mode; - if (format == "stretch") { - mode = Qt::IgnoreAspectRatio; - } else if (format == "full") { - mode = Qt::KeepAspectRatioByExpanding; - } else { - mode = Qt::KeepAspectRatio; - } - if(bgImage.height() != geom.height() && bgImage.width() != geom.width() ){ bgImage = bgImage.scaled(geom.size(), mode); } - //bgImage = bgImage.scaled(size(), mode); - } - - // Calculate the offset - int dx = 0, dy = 0; - int drawWidth = bgImage.width(), drawHeight = bgImage.height(); - if (format == "fit" || format == "center" || format == "full") { - dx = (geom.width() - bgImage.width()) / 2; - dy = (geom.height() - bgImage.height()) / 2; - } else if (format == "tile") { - drawWidth = geom.width(); - drawHeight = geom.height(); - } else { - if (format.endsWith("right")) { - dx = geom.width() - bgImage.width(); - } - if (format.startsWith("bottom")) { - dy = geom.height() - bgImage.height(); - } - } - - // Draw the background image - QPainter painter(&bgPixmap); - painter.setBrush(bgImage); - painter.setBrushOrigin(dx, dy); - painter.drawRect(dx, dy, drawWidth, drawHeight); - } - //this->repaint(); //make sure the entire thing gets repainted right away - //LSession::handle()->XCB->paintRoot(geom, &bgPixmap); - return bgPixmap; - //show(); -} - -LDesktopBackground::LDesktopBackground() : QWidget() { - bgPixmap = NULL; - this->setWindowOpacity(0); -} - -LDesktopBackground::~LDesktopBackground() { - if (bgPixmap != NULL) delete bgPixmap; -} diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/LDesktopBackground.h b/src-qt5/core/lumina-desktop-unified/src-DE/LDesktopBackground.h deleted file mode 100644 index a2e46748..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-DE/LDesktopBackground.h +++ /dev/null @@ -1,27 +0,0 @@ -//=========================================== -// Lumina-DE source code -// Copyright (c) 2016, Henry Hu -// Available under the 3-clause BSD license -// See the LICENSE file for full details -//=========================================== -#ifndef _LUMINA_DESKTOP_LDESKTOPBACKGROUND_H_ -#define _LUMINA_DESKTOP_LDESKTOPBACKGROUND_H_ - -#include <QString> -#include <QWidget> -#include <QPixmap> - -class LDesktopBackground: public QWidget { - Q_OBJECT -public: - LDesktopBackground(); - virtual ~LDesktopBackground(); - - virtual void paintEvent(QPaintEvent*); - static QPixmap setBackground(const QString&, const QString&, QRect geom); - -private: - QPixmap *bgPixmap; -}; - -#endif // _LUMINA_DESKTOP_LDESKTOPBACKGROUND_H_ diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/LDesktopPluginSpace.cpp b/src-qt5/core/lumina-desktop-unified/src-DE/LDesktopPluginSpace.cpp deleted file mode 100644 index 18126dfa..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-DE/LDesktopPluginSpace.cpp +++ /dev/null @@ -1,333 +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 "LDesktopPluginSpace.h" -#include "LSession.h" -#include "desktop-plugins/NewDP.h" - -#include <LuminaXDG.h> -#include <QDesktopWidget> - -#define DEBUG 0 - -// =================== -// PUBLIC -// =================== -LDesktopPluginSpace::LDesktopPluginSpace() : QWidget(){ - this->setObjectName("LuminaDesktopPluginSpace"); - this->setAttribute(Qt::WA_TranslucentBackground); - //this->setAttribute(Qt::WA_NoSystemBackground); - this->setAutoFillBackground(false); - this->setStyleSheet("QWidget#LuminaDesktopPluginSpace{ border: none; background: transparent; }"); - this->setWindowFlags(Qt::WindowStaysOnBottomHint | Qt::CustomizeWindowHint | Qt::FramelessWindowHint); - this->setAcceptDrops(true); - this->setContextMenuPolicy(Qt::NoContextMenu); - this->setMouseTracking(true); - TopToBottom = true; - GRIDSIZE = 100.0; //default value if not set - plugsettings = LSession::handle()->DesktopPluginSettings(); - LSession::handle()->XCB->SetAsDesktop(this->winId()); - //this->setWindowOpacity(0.0); -} - -LDesktopPluginSpace::~LDesktopPluginSpace(){ - -} - -void LDesktopPluginSpace::LoadItems(QStringList plugs, QStringList files){ - if(DEBUG){ qDebug() << "Loading Desktop Items:" << plugs << files << "Area:" << this->size() << GRIDSIZE; } - bool changes = false; - if(plugs != plugins){ plugins = plugs; changes = true; } - if(files != deskitems){ deskitems = files; changes = true; } - if(changes){ QTimer::singleShot(0,this, SLOT(reloadPlugins())); } - this->show(); -} - -void LDesktopPluginSpace::SetIconSize(int size){ - if(DEBUG){ qDebug() << "Set Desktop Icon Size:" << size; } - //QSize newsize = calculateItemSize(size); - int oldsize = GRIDSIZE; - GRIDSIZE = size; //turn the int into a float; - //itemSize = QSize(1,1); //save this for all the later icons which are generated (grid size) - UpdateGeom(oldsize); - //Now re-set the item icon size - //reloadPlugins(true); -} - -void LDesktopPluginSpace::cleanup(){ - //Perform any final cleanup actions here - for(int i=0; i<ITEMS.length(); i++){ - ITEMS.takeAt(i)->deleteLater(); - i--; - } - plugins.clear(); - deskitems.clear(); - this->hide(); -} - -void LDesktopPluginSpace::setBackground(QPixmap pix){ - wallpaper = pix; - this->repaint(); -} - -void LDesktopPluginSpace::setDesktopArea(QRect area){ - desktopRect = area; -} - -// =================== -// PUBLIC SLOTS -// =================== -void LDesktopPluginSpace::UpdateGeom(int oldgrid){ - if(DEBUG){ qDebug() << "Updated Desktop Geom:" << desktopRect.size() << GRIDSIZE << desktopRect.size()/GRIDSIZE; } - //Go through and check the locations/sizes of all items (particularly the ones on the bottom/right edges) - //bool reload = false; - for(int i=0; i<ITEMS.length(); i++){ - QRect grid = geomToGrid(ITEMS[i]->geometry(), oldgrid); - if(DEBUG){ qDebug() << " - Check Plugin:" << ITEMS[i]->whatsThis() << grid; } - if( !ValidGrid(grid) ){ - //This plugin is too far out of the screen - find new location for it - if(DEBUG){ qDebug() << " -- Out of bounds - Find a new spot"; } - grid = findOpenSpot(grid, ITEMS[i]->whatsThis(), true); //Reverse lookup spot - } - if(!ValidGrid(grid)){ - qDebug() << "No Place for plugin:" << ITEMS[i]->whatsThis(); - qDebug() << " - Removing it for now..."; - ITEMS.takeAt(i)->deleteLater(); - i--; - }else{ - //NOTE: We are not doing the ValidGeometry() checks because we are only resizing existing plugin with pre-set & valid grid positions - grid = gridToGeom(grid); //convert to pixels before saving/sizing - MovePlugin(ITEMS[i], grid); - /*ITEMS[i]->setGeometry( grid ); - ITEMS[i]->setFixedSize(grid.size()); - ITEMS[i]->savePluginGeometry(grid);*/ - } - } - //if(reload){ QTimer::singleShot(0,this, SLOT(reloadPlugins())); } -} - -// =================== -// PRIVATE -// =================== -void LDesktopPluginSpace::addDesktopItem(QString filepath){ - addDesktopPlugin("applauncher::"+filepath+"---dlink"+QString::number(LSession::handle()->desktop()->screenNumber(this)) ); -} - -void LDesktopPluginSpace::addDesktopPlugin(QString plugID){ - //This is used for generic plugins (QWidget-based) - if(DEBUG){ qDebug() << "Adding Desktop Plugin:" << plugID; } - LDPlugin *plug = NewDP::createPlugin(plugID, this); - if(plug==0){ return; } //invalid plugin - //plug->setAttribute(Qt::WA_TranslucentBackground); - plug->setWhatsThis(plugID); - //Now get the geometry for the plugin - QRect geom = plug->loadPluginGeometry(); //in pixel coords - if(!geom.isNull()){ geom = geomToGrid(geom); } //convert to grid coordinates - if(geom.isNull()){ - //No previous location - need to calculate initial geom - QSize sz = plug->defaultPluginSize(); //in grid coordinates - geom.setSize(sz); - //if an applauncher - add from top-left, otherwise add in from bottom-right - if(plugID.startsWith("applauncher")){ geom = findOpenSpot(geom.width(), geom.height() ); } - else{ geom = findOpenSpot(geom.width(), geom.height(), RoundUp(this->height()/GRIDSIZE), RoundUp(this->width()/GRIDSIZE), true); } - }else if(!ValidGeometry(plugID, gridToGeom(geom)) ){ - //Find a new location for the plugin (saved location is invalid) - geom = findOpenSpot(geom.width(), geom.height(), geom.y(), geom.x(), false); //try to get it within the same general area first - } - if(geom.x() < 0 || geom.y() < 0){ - qDebug() << "No available space for desktop plugin:" << plugID << " - IGNORING"; - delete plug; - }else{ - if(DEBUG){ qDebug() << " - New Plugin Geometry (grid):" << geom; } - //Now place the item in the proper spot/size - MovePlugin(plug, gridToGeom(geom)); - //plug->setGeometry( gridToGeom(geom) ); - plug->show(); - if(DEBUG){ qDebug() << " - New Plugin Geometry (px):" << plug->geometry(); } - ITEMS << plug; - connect(plug, SIGNAL(StartMoving(QString)), this, SLOT(StartItemMove(QString)) ); - connect(plug, SIGNAL(StartResizing(QString)), this, SLOT(StartItemResize(QString)) ); - connect(plug, SIGNAL(RemovePlugin(QString)), this, SLOT(RemoveItem(QString)) ); - connect(plug, SIGNAL(IncreaseIconSize()), this, SIGNAL(IncreaseIcons()) ); - connect(plug, SIGNAL(DecreaseIconSize()), this, SIGNAL(DecreaseIcons()) ); - connect(plug, SIGNAL(CloseDesktopMenu()), this, SIGNAL(HideDesktopMenu()) ); - } -} - -QRect LDesktopPluginSpace::findOpenSpot(int gridwidth, int gridheight, int startRow, int startCol, bool reversed, QString plugID){ - //Note about the return QPoint: x() is the column number, y() is the row number - QPoint pt(0,0); - //qDebug() << "FIND OPEN SPOT:" << gridwidth << gridheight << startRow << startCol << reversed; - int row = startRow; int col = startCol; - if(row<0){ row = 0; } //just in case - since this can be recursively called - if(col<0){ col = 0; } //just in case - since this can be recursively called - bool found = false; - int rowCount, colCount; - rowCount = RoundUp(desktopRect.height()/GRIDSIZE); - colCount = RoundUp(desktopRect.width()/GRIDSIZE); - if( (row+gridheight)>rowCount){ row = rowCount-gridheight; startRow = row; } - if( (col+gridwidth)>colCount){ col = colCount-gridwidth; startCol = col; } - QRect geom(0, 0, gridwidth*GRIDSIZE, gridheight*GRIDSIZE); //origin point will be adjusted in a moment - if(DEBUG){ qDebug() << "Search for plugin space:" << rowCount << colCount << gridheight << gridwidth << this->size(); } - if(TopToBottom && reversed && (startRow>0 || startCol>0) ){ - //Arrange Top->Bottom (work backwards) - //qDebug() << "Search backwards for space:" << rowCount << colCount << startRow << startCol << gridheight << gridwidth; - while(col>=0 && !found){ - while(row>=0 && !found){ - bool ok = true; - geom.moveTo(col*GRIDSIZE, row*GRIDSIZE); - //qDebug() << " - Check Geom:" << geom << col << row; - //Check all the existing items to ensure no overlap - for(int i=0; i<ITEMS.length() && ok; i++){ - if(ITEMS[i]->whatsThis()==plugID){ continue; } //same plugin - this is not a conflict - if(geom.intersects(ITEMS[i]->geometry())){ - //Collision - move the next searchable row/column index - ok = false; - //qDebug() << "Collision:" << col << row; - row = ((ITEMS[i]->geometry().y()-GRIDSIZE/2)/GRIDSIZE) -gridheight; //use top edge for next search (minus item height) - //qDebug() << " - new row:" << row; - } - } - if(ok){ pt = QPoint(col,row); found = true; } //found an open spot - } - if(!found){ col--; row=rowCount-gridheight; } //go to the previous column - } - }else if(TopToBottom){ - //Arrange Top->Bottom - while(col<(colCount-gridwidth) && !found){ - while(row<(rowCount-gridheight) && !found){ - bool ok = true; - geom.moveTo(col*GRIDSIZE, row*GRIDSIZE); - //qDebug() << " - Check Geom:" << geom << col << row; - //Check all the existing items to ensure no overlap - for(int i=0; i<ITEMS.length() && ok; i++){ - if(ITEMS[i]->whatsThis()==plugID){ continue; } //same plugin - this is not a conflict - if(geom.intersects(ITEMS[i]->geometry())){ - //Collision - move the next searchable row/column index - ok = false; - row = posToGrid(ITEMS[i]->geometry().bottomLeft()).y(); //use bottom edge for next search - } - } - if(ok){ pt = QPoint(col,row); found = true; } //found an open spot - //else{ row++; } - } - if(!found){ col++; row=0; } //go to the next column - } - }else if(reversed && (startRow>0 || startCol>0) ){ - //Arrange Left->Right (work backwards) - while(row>=0 && !found){ - while(col>=0 && !found){ - bool ok = true; - geom.moveTo(col*GRIDSIZE, row*GRIDSIZE); - //Check all the existing items to ensure no overlap - for(int i=0; i<ITEMS.length() && ok; i++){ - if(ITEMS[i]->whatsThis()==plugID){ continue; } //same plugin - this is not a conflict - if(geom.intersects(ITEMS[i]->geometry())){ - //Collision - move the next searchable row/column index - ok = false; - col = (ITEMS[i]->geometry().x()-GRIDSIZE/2)/GRIDSIZE - gridwidth; // Fill according to row/column - } - } - if(ok){ pt = QPoint(col,row); found = true; } //found an open spot - //else{ col++; } - } - if(!found){ row--; col=colCount-gridwidth;} //go to the previous row - } - }else{ - //Arrange Left->Right - while(row<(rowCount-gridheight) && !found){ - while(col<(colCount-gridwidth) && !found){ - bool ok = true; - geom.moveTo(col*GRIDSIZE, row*GRIDSIZE); - //Check all the existing items to ensure no overlap - for(int i=0; i<ITEMS.length() && ok; i++){ - if(ITEMS[i]->whatsThis()==plugID){ continue; } //same plugin - this is not a conflict - if(geom.intersects(ITEMS[i]->geometry())){ - //Collision - move the next searchable row/column index - ok = false; - col = posToGrid(ITEMS[i]->geometry().topRight()).x(); // Fill according to row/column - } - } - if(ok){ pt = QPoint(col,row); found = true; } //found an open spot - //else{ col++; } - } - if(!found){ row++; col=0;} //go to the next row - } - } - if(!found){ - //qDebug() << "Could not find a spot:" << startRow << startCol << gridheight << gridwidth; - if( (startRow!=0 || startCol!=0) && !reversed){ - //Did not check the entire screen yet - gradually work it's way back to the top/left corner - //qDebug() << " - Start backwards search"; - return findOpenSpot(gridwidth, gridheight,startRow,startCol, true); //reverse the scan - }else if(gridwidth>1 && gridheight>1){ - //Decrease the size of the item by 1x1 grid points and try again - //qDebug() << " - Out of space: Decrease item size and try again..."; - return findOpenSpot(gridwidth-1, gridheight-1, 0, 0); - }else{ - //qDebug() << " - Could not find an open spot for a desktop plugin:" << gridwidth << gridheight << startRow << startCol; - return QRect(-1,-1,-1,-1); - } - }else{ - return QRect(pt,QSize(gridwidth,gridheight)); - } -} - -QRect LDesktopPluginSpace::findOpenSpot(QRect grid, QString plugID, bool recursive){ //Reverse lookup spotc{ - //This is just an overloaded simplification for checking currently existing plugins - return findOpenSpot(grid.width(), grid.height(), grid.y(), grid.x(), recursive, plugID); -} - -// =================== -// PRIVATE SLOTS -// =================== -void LDesktopPluginSpace::reloadPlugins(bool ForceIconUpdate ){ - //Remove any plugins as necessary - QStringList plugs = plugins; - QStringList items = deskitems; - for(int i=0; i<ITEMS.length(); i++){ - - if( ITEMS[i]->whatsThis().startsWith("applauncher") && ForceIconUpdate){ - //Change the size of the existing plugin - preserving the location if possible - /*QRect geom = ITEMS[i]->loadPluginGeometry(); //pixel coords - if(!geom.isNull()){ - geom = geomToGrid(geom); //convert to grid coords - geom.setSize(itemSize); //Reset back to default size (does not change location) - ITEMS[i]->savePluginGeometry( gridToGeom(geom)); //save it back in pixel coords - }*/ - //Now remove the plugin for the moment - run it through the re-creation routine below - ITEMS.takeAt(i)->deleteLater(); - i--; - } - else if(plugs.contains(ITEMS[i]->whatsThis())){ plugs.removeAll(ITEMS[i]->whatsThis()); } - else if(items.contains(ITEMS[i]->whatsThis().section("---",0,0).section("::",1,50))){ items.removeAll(ITEMS[i]->whatsThis().section("---",0,0).section("::",1,50)); } - else{ ITEMS[i]->removeSettings(true); ITEMS.takeAt(i)->deleteLater(); i--; } //this is considered a permanent removal (cleans settings) - } - - //Now create any new items - //First load the plugins (almost always have fixed locations) - for(int i=0; i<plugs.length(); i++){ - addDesktopPlugin(plugs[i]); - } - //Now load the desktop shortcuts (fill in the gaps as needed) - for(int i=0; i<items.length(); i++){ - addDesktopItem(items[i]); - } -} - - -//================= -// PROTECTED -//================= -void LDesktopPluginSpace::paintEvent(QPaintEvent*ev){ - if(!wallpaper.isNull()){ - QPainter painter(this); - painter.setBrush(wallpaper); - painter.drawRect(ev->rect().adjusted(-1,-1,2,2)); - }else{ - QWidget::paintEvent(ev); - } -} diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/LDesktopPluginSpace.h b/src-qt5/core/lumina-desktop-unified/src-DE/LDesktopPluginSpace.h deleted file mode 100644 index abc34878..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-DE/LDesktopPluginSpace.h +++ /dev/null @@ -1,303 +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_LDESKTOP_PLUGIN_SPACE_H -#define _LUMINA_DESKTOP_LDESKTOP_PLUGIN_SPACE_H - -#include <QListWidget> -#include <QDropEvent> -#include <QDrag> //includes all the QDrag*Event classes -#include <QUrl> -#include <QMimeData> -#include <QSettings> -#include <QDebug> -#include <QFile> -#include <QDir> -#include <QFileInfo> -#include <QProcess> - -#include "desktop-plugins/LDPlugin.h" - -#define MIMETYPE QString("x-special/lumina-desktop-plugin") - -class LDesktopPluginSpace : public QWidget{ - Q_OBJECT - -signals: - void PluginRemovedByUser(QString ID); - void IncreaseIcons(); //increase default icon sizes - void DecreaseIcons(); //decrease default icon sizes - void HideDesktopMenu(); - -public: - LDesktopPluginSpace(); - ~LDesktopPluginSpace(); - - void LoadItems(QStringList plugs, QStringList files); - //void setShowGrid(bool show); This is already implemented in QTableView (inherited) - void SetIconSize(int size); - void ArrangeTopToBottom(bool ttb); //if false, will arrange left->right - void cleanup(); - - void setBackground(QPixmap pix); //should already be sized appropriately for this widget - void setDesktopArea(QRect area); - -public slots: - void UpdateGeom(int oldgrid = -1); - -private: - QSettings *plugsettings; - QStringList plugins, deskitems; - QList<LDPlugin*> ITEMS; - QPixmap wallpaper; - QRect desktopRect; - bool TopToBottom; - float GRIDSIZE; - - int RoundUp(double num){ - int out = num; //This will truncate the number - if(out < num){ out++; } //need to increase by 1 - return out; - } - - void addDesktopItem(QString filepath); //This will convert it into a valid Plugin ID automatically - void addDesktopPlugin(QString plugID); - - - QRect findOpenSpot(int gridwidth = 1, int gridheight = 1, int startRow = 0, int startCol = 0, bool reversed = false, QString plugID = ""); - QRect findOpenSpot(QRect grid, QString plugID, bool recursive = false); - - QPoint posToGrid(QPoint pos){ - //This assumes a point in widget-relative coordinates - pos.setX( RoundUp(pos.x()/GRIDSIZE)); - pos.setY( RoundUp(pos.y()/GRIDSIZE)); - return pos; - } - - QRect geomToGrid(QRect geom, int grid = -1){ - if(grid<0){ - //use the current grid size - return QRect( RoundUp(geom.x()/GRIDSIZE), RoundUp(geom.y()/GRIDSIZE), \ - RoundUp(geom.width()/GRIDSIZE), RoundUp(geom.height()/GRIDSIZE) ); - }else{ - //use the input grid size - return QRect( RoundUp(geom.x()/((double) grid)), RoundUp(geom.y()/((double) grid)), \ - RoundUp(geom.width()/((double) grid)), RoundUp(geom.height()/((double) grid)) ); - } - } - - QRect gridToGeom(QRect grid){ - //This function incorporates the bottom/right edge matchins procedures (for incomplete last grid) - QRect geom(grid.x()*GRIDSIZE, grid.y()*GRIDSIZE, grid.width()*GRIDSIZE, grid.height()*GRIDSIZE); - //Now check the edge conditions (last right/bottom grid points might be smaller than GRIDSIZE) - QSize areaSize = desktopRect.size(); //use the size of the area instead of the geometry - because we need this in child coordinates like "geom" above - //qDebug() << "GridToGeom:" << grid << geom << "Area size:" << areaSize; - if(geom.right() > areaSize.width() && (geom.right()-areaSize.width())<GRIDSIZE ){ - geom.setRight(areaSize.width()-1); //match up with the edge - } - if(geom.bottom() > areaSize.height() && (geom.bottom() -areaSize.height())<GRIDSIZE ){ - geom.setBottom(areaSize.height()-1); //match up with the edge - } - //qDebug() << " - Adjusted:" << geom; - return geom; - } - - //Internal simplification for setting up a drag event - void setupDrag(QString id, QString type){ - QMimeData *mime = new QMimeData; - mime->setData(MIMETYPE, QString(type+"::::"+id).toLocal8Bit() ); - //If this is a desktop file - also add it to the generic URI list mimetype - if(id.startsWith("applauncher::")){ - QList<QUrl> urilist; - urilist << QUrl::fromLocalFile( id.section("---",0,0).section("::",1,50) ); - mime->setUrls(urilist); - } - //Create the drag structure - QDrag *drag = new QDrag(this); - drag->setMimeData(mime); - drag->exec(Qt::CopyAction); - } - - bool ValidGrid(QRect grid){ - //qDebug() << "Check Valid Grid:" << grid << RoundUp(this->width()/GRIDSIZE) << RoundUp(this->height()/GRIDSIZE); - //This just checks that the grid coordinates are not out of bounds - should still run ValidGeometry() below with the actual pixel geom - if(grid.x()<0 || grid.y()<0 || grid.width()<0 || grid.height()<0){ return false; } - else if( (grid.x()+grid.width()) > RoundUp(desktopRect.width()/GRIDSIZE) ){ return false; } - else if( (grid.y()+grid.height()) > RoundUp(desktopRect.height()/GRIDSIZE) ){ return false; } - return true; - } - - bool ValidGeometry(QString id, QRect geom){ - //First check that it is within the desktop area completely - // Note that "this->geometry()" is not in the same coordinate space as the geometry inputs - if(!QRect(0,0,desktopRect.width(), desktopRect.height()).contains(geom)){ return false; } - //Now check that it does not collide with any other items - for(int i=0; i<ITEMS.length(); i++){ - if(ITEMS[i]->whatsThis()==id){ continue; } - else if(geom.intersects(ITEMS[i]->geometry())){ return false; } - } - return true; - } - - LDPlugin* ItemFromID(QString ID){ - for(int i=0; i<ITEMS.length(); i++){ - if(ITEMS[i]->whatsThis()==ID){ return ITEMS[i]; } - } - return 0; - } - - void MovePlugin(LDPlugin* plug, QRect geom){ - plug->setGeometry( geom ); - plug->setFixedSize(geom.size()); //needed for some plugins - plug->savePluginGeometry(geom); - } - -private slots: - void reloadPlugins(bool ForceIconUpdate = false); - - void StartItemMove(QString ID){ - setupDrag(ID, "move"); - } - void StartItemResize(QString ID){ - setupDrag(ID, "resize"); - } - void RemoveItem(QString ID){ - //Special case - desktop file/dir link using the "applauncher" plugin - if(ID.startsWith("applauncher::")){ - QFileInfo info(ID.section("---",0,0).section("::",1,50) ); - if(info.exists() && info.absolutePath()==QDir::homePath()+"/Desktop"){ - qDebug() << "Deleting Desktop Item:" << info.absoluteFilePath(); - if(!info.isSymLink() && info.isDir()){ QProcess::startDetached("rm -r \""+info.absoluteFilePath()+"\""); } - else{ QFile::remove(info.absoluteFilePath()); } //just remove the file/symlink directly - emit PluginRemovedByUser(ID); - return; - } - } - //Any other type of plugin - for(int i=0; i<ITEMS.length(); i++){ - if(ITEMS[i]->whatsThis()==ID){ - ITEMS[i]->Cleanup(); - ITEMS.takeAt(i)->deleteLater(); - break; - } - } - emit PluginRemovedByUser(ID); - } - -protected: - void focusInEvent(QFocusEvent *ev){ - this->lower(); //make sure we stay on the bottom of the window stack - QWidget::focusInEvent(ev); //do normal handling - } - void paintEvent(QPaintEvent*ev); - - //Need Drag and Drop functionality (internal movement) - void dragEnterEvent(QDragEnterEvent *ev){ - if(ev->mimeData()->hasFormat(MIMETYPE) ){ - ev->acceptProposedAction(); //allow this to be dropped here - }else if(ev->mimeData()->hasUrls()){ - ev->acceptProposedAction(); //allow this to be dropped here - }else{ - ev->ignore(); - } - } - - void dragMoveEvent(QDragMoveEvent *ev){ - if(ev->mimeData()->hasFormat(MIMETYPE) ){ - //Internal move/resize - Check for validity - QString act = QString( ev->mimeData()->data(MIMETYPE) ); - LDPlugin *item = ItemFromID(act.section("::::",1,50)); - //qDebug() << "Internal Move Event:" << act << ev->pos(); - if(item!=0){ - QRect geom = item->geometry(); - QPoint grid = posToGrid(ev->pos()); - if(act.section("::::",0,0)=="move"){ - QPoint diff = grid - posToGrid(geom.center()); //difference in grid coords - //qDebug() << "Move Event:" << "Diff:" << diff << "Geom:" << geom << grid << ev->pos(); - geom = geomToGrid(geom); //convert to grid coords - //qDebug() << "Move Event:" << "Old geom (grid):" << geom; - geom.moveTo( (geom.topLeft()+diff) ); - //qDebug() << " - After Move:" << geom; - bool valid = ValidGrid(geom); - if(valid){ - //Convert to pixel coordinates and check validity again - geom = gridToGeom(geom); //convert back to px coords with edge matching - valid = ValidGeometry(act.section("::::",1,50), geom); - } - if(valid){ - MovePlugin(item, geom); - //item->setGeometry(geom); - //item->setFixedSize(geom.size()); //needed due to resizing limitations and such for some plugins - ev->acceptProposedAction(); - //item->savePluginGeometry(geom); //save in pixel coords - }else{ ev->ignore(); } //invalid location - - }else{ - //Resize operation - QPoint diff = ev->pos() - (geom.center()-QPoint(1,1)); //need difference from center (pixels) - //Note: Use the 1x1 pixel offset to ensure that the center point is not exactly on a grid point intersection (2x2, 4x4, etc) - //qDebug() << "Resize Plugin:" << geom << grid << posToGrid(geom.center()) << diff; - geom = geomToGrid(geom); //convert to grid coordinates now - //qDebug() << " - Grid Geom:" << geom; - if(diff.x()<0){ geom.setLeft(ev->pos().x()/GRIDSIZE); } //expanding to the left (round down) - else if(diff.x()>0){ geom.setRight( ev->pos().x()/GRIDSIZE); } //expanding to the right (round down) - if(diff.y()<0){ geom.setTop( ev->pos().y()/GRIDSIZE); } //expanding above (round down) - else if(diff.y()>0){ geom.setBottom( ev->pos().y()/GRIDSIZE); } //expanding below (round down) - //qDebug() << " - Adjusted:" << geom; - bool valid = ValidGrid(geom); - if(valid){ - //Convert to pixel coordinates and check validity again - geom = gridToGeom(geom); //convert back to px coords with edge matching - valid = ValidGeometry(act.section("::::",1,50), geom); - } - if(valid){ - MovePlugin(item, geom); - //item->setGeometry(geom); - //item->setFixedSize(geom.size()); //needed due to resizing limitations and such for some plugins - ev->acceptProposedAction(); - //item->savePluginGeometry(geom); //save in pixel coords - }else{ ev->ignore(); } //invalid location - } - } - }else if(ev->mimeData()->hasUrls()){ - ev->acceptProposedAction(); //allow this to be dropped here - }else{ - ev->ignore(); - } - } - - void dropEvent(QDropEvent *ev){ - //QPoint grid = posToGrid(ev->pos()); - if(ev->mimeData()->hasFormat(MIMETYPE)){ - //Desktop Items getting moved around - already performed in the dragMoveEvent - ev->accept(); - }else if(ev->mimeData()->hasUrls()){ - ev->accept(); - //Files getting dropped here - QList<QUrl> urls = ev->mimeData()->urls(); - qDebug() << "Desktop Drop Event:" << urls; - for(int i=0; i<urls.length(); i++){ - //If this file is not in the desktop folder, move/copy it here - if(urls[i].isLocalFile()){ - QFileInfo info(urls[i].toLocalFile()); - if(info.exists() && !QFile::exists(QDir::homePath()+"/Desktop/"+info.fileName())){ - //Make a link to the file here - QFile::link(info.absoluteFilePath(), QDir::homePath()+"/Desktop/"+info.fileName()); - }else{ - qWarning() << "Invalid desktop file drop (ignored):" << urls[i].toString(); - } - } - - } - }else{ - //Ignore this event - ev->ignore(); - } - } - -}; - -#endif diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/LPanel.cpp b/src-qt5/core/lumina-desktop-unified/src-DE/LPanel.cpp deleted file mode 100644 index 5df1fcb6..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-DE/LPanel.cpp +++ /dev/null @@ -1,399 +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 "LPanel.h" -#include "LSession.h" -#include <QScreen> - -#include "panel-plugins/systemtray/LSysTray.h" - -#define DEBUG 0 - -LPanel::LPanel(QSettings *file, QString scr, int num, QWidget *parent) : QWidget(){ - //Take care of inputs - this->setMouseTracking(true); - hascompositer = false; //LUtils::isValidBinary("xcompmgr"); //NOT WORKING YET - xcompmgr issue with special window flags? - if(DEBUG){ qDebug() << " - Creating Panel:" << scr << num; } - bgWindow = parent; //save for later - //Setup the widget overlay for the entire panel to provide transparency effects - panelArea = new QWidget(this); - //panelArea->setAttribute(Qt::WA_TranslucentBackground); - QBoxLayout *tmp = new QBoxLayout(QBoxLayout::LeftToRight); - tmp->setContentsMargins(0,0,0,0); - this->setLayout(tmp); - tmp->addWidget(panelArea); - settings = file; - screenID = scr; - panelnum = num; //save for later - screen = LSession::desktop(); - QString screenID = QApplication::screens().at(Screen())->name(); - PPREFIX = "panel_"+screenID+"."+QString::number(num)+"/"; - defaultpanel = (LSession::handle()->screenGeom(Screen()).x()==0 && num==0); - horizontal=true; //use this by default initially - hidden = false; //use this by default - //Setup the panel - if(DEBUG){ qDebug() << " -- Setup Panel"; } - this->setContentsMargins(0,0,0,0); - this->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); - //panels cannot get keyboard focus otherwise it upsets the task manager window detection - //this->setAttribute(Qt::WA_X11DoNotAcceptFocus); - this->setAttribute(Qt::WA_X11NetWmWindowTypeDock); - this->setAttribute(Qt::WA_AlwaysShowToolTips); - this->setAttribute(Qt::WA_TranslucentBackground); - //this->setAttribute(Qt::WA_NoSystemBackground); - this->setAutoFillBackground(false); - this->setWindowFlags(Qt::FramelessWindowHint | Qt::CustomizeWindowHint | Qt::WindowStaysOnTopHint); - //this->setWindowFlags(Qt::X11BypassWindowManagerHint | Qt::WindowStaysOnTopHint); - - this->setWindowTitle("LuminaPanel"); - this->setObjectName("LuminaPanelBackgroundWidget"); - this->setStyleSheet("QToolButton::menu-indicator{ image: none; } QWidget#LuminaPanelBackgroundWidget{ background: transparent; }"); - panelArea->setObjectName("LuminaPanelColor"); - layout = new QBoxLayout(QBoxLayout::LeftToRight); - layout->setContentsMargins(0,0,0,0); - layout->setSpacing(1); - //layout->setSizeConstraint(QLayout::SetFixedSize); - panelArea->setLayout(layout); - //Set special window flags on the panel for proper usage - this->show(); - LSession::handle()->XCB->SetAsPanel(this->winId()); - LSession::handle()->XCB->SetAsSticky(this->winId()); - if(hascompositer){ - //qDebug() << "Enable Panel compositing"; - //this->setStyleSheet("QWidget#LuminaPanelBackgroundWidget{ background: transparent; }"); - //this->setWindowOpacity(0.5); //fully transparent background for the main widget - //panelArea->setWindowOpacity(1.0); //fully opaque for the widget on top (apply stylesheet transparencies) - } - QTimer::singleShot(1,this, SLOT(UpdatePanel()) ); - //connect(screen, SIGNAL(resized(int)), this, SLOT(UpdatePanel()) ); //in case the screen resolution changes -} - -LPanel::~LPanel(){ - -} - -int LPanel::Screen(){ - // Find the screen number associated with this ID - QList<QScreen*> scrns = QApplication::screens(); - for(int i=0; i<scrns.length(); i++){ - if(scrns[i]->name() == screenID){ return i; } - } - return -1; -} - -void LPanel::prepareToClose(){ - //Go through and remove all the plugins - for(int i=0; i<PLUGINS.length(); i++){ - PLUGINS[i]->AboutToClose(); //any last cleanup for this plugin - layout->takeAt(i); //remove from the layout - PLUGINS.takeAt(i)->deleteLater(); //delete the actual widget - LSession::processEvents(); - i--; //need to back up one space to not miss another plugin - } - this->hide(); -} - -void LPanel::scalePanel(double xscale, double yscale){ - int ht = settings->value(PPREFIX+"height", 30).toInt(); //this is technically the distance into the screen from the edge - QString loc = settings->value(PPREFIX+"location","").toString().toLower(); - if(loc=="top" || loc=="bottom"){ - ht = qRound(ht*yscale); - }else{ - ht = qRound(ht*xscale); - } - settings->setValue(PPREFIX+"height", ht); - settings->sync(); - QTimer::singleShot(0, this, SLOT(UpdatePanel()) ); -} - -//=========== -// PUBLIC SLOTS -//=========== -void LPanel::UpdatePanel(bool geomonly){ - //Create/Update the panel as designated in the Settings file - settings->sync(); //make sure to catch external settings changes - //First set the geometry of the panel and send the EWMH message to reserve that space - if(DEBUG){ qDebug() << "Update Panel: Geometry only=" << geomonly << "Screen Size:" << LSession::handle()->screenGeom(Screen()); } - hidden = settings->value(PPREFIX+"hidepanel",false).toBool(); - QString loc = settings->value(PPREFIX+"location","").toString().toLower(); - if(loc.isEmpty() && defaultpanel){ loc="top"; } - if(loc=="top" || loc=="bottom"){ - horizontal=true; - layout->setAlignment(Qt::AlignLeft); - layout->setDirection(QBoxLayout::LeftToRight); - }else{ - horizontal=false; - layout->setAlignment(Qt::AlignTop); - layout->setDirection(QBoxLayout::TopToBottom); - } - int ht = qRound(settings->value(PPREFIX+"height", 30).toDouble()); //this is technically the distance into the screen from the edge - fullwidth = ht; //save this for later - if(ht<=1){ ht = 30; } //some kind of error in the saved height - use the default value - int hidesize = qRound(ht*0.01); //use 1% of the panel size - if(hidesize<2){ hidesize=2; } //minimum of 2 pixels (need space for the mouse to go over it) - if(hidden){ viswidth = hidesize; } - else{ viswidth = ht; } - if(DEBUG){ qDebug() << "Hidden Panel size:" << hidesize << "pixels"; } - //qDebug() << " - set Geometry"; - int xwid = LSession::handle()->screenGeom(Screen()).width(); - int xhi = LSession::handle()->screenGeom(Screen()).height(); - int xloc = LSession::handle()->screenGeom(Screen()).x(); - int yloc = LSession::handle()->screenGeom(Screen()).y(); - double panelPercent = settings->value(PPREFIX+"lengthPercent",100).toInt(); - if(panelPercent<1 || panelPercent>100){ panelPercent = 100; } - panelPercent = panelPercent/100.0; - QString panelPinLoc = settings->value(PPREFIX+"pinLocation","center").toString().toLower(); //[left/right/center] possible values (assume center otherwise) - if(DEBUG){ qDebug() << " - Panel settings:" << QString::number(panelPercent)+QString("%") << panelPinLoc << loc; } - //xloc=xoffset; - if(loc=="top"){ //top of screen - QSize sz = QSize(xwid*panelPercent, ht); - if(panelPinLoc=="left"){} // no change to xloc - else if(panelPinLoc=="right"){ xloc = xloc+xwid-sz.width(); } - else{ xloc = xloc+((xwid-sz.width())/2) ; } //centered - //qDebug() << " - Panel Sizing:" << xloc << sz; - this->setMinimumSize(sz); - this->setMaximumSize(sz); - this->setGeometry(xloc,yloc,sz.width(), sz.height()); - //qDebug() << " - Reserve Panel Localation"; - if(!hidden){ LSession::handle()->XCB->ReserveLocation(this->winId(), this->geometry(), "top"); } - else{ - LSession::handle()->XCB->ReserveLocation(this->winId(), QRect(xloc, yloc, this->width(), hidesize), "top"); - hidepoint = QPoint(xloc, yloc); - showpoint = QPoint(xloc, yloc); - this->move(hidepoint); - this->resize( this->width(), viswidth); - } - }else if(loc=="bottom"){ //bottom of screen - QSize sz = QSize(xwid*panelPercent, ht); - if(panelPinLoc=="left"){} // no change to xloc - else if(panelPinLoc=="right"){ xloc = xloc+xwid-sz.width(); } - else{ xloc = xloc+((xwid-sz.width())/2) ; } //centered - this->setMinimumSize(sz); - this->setMaximumSize(sz); - this->setGeometry(xloc,yloc+xhi-ht,sz.width(), ht ); - if(!hidden){ LSession::handle()->XCB->ReserveLocation(this->winId(), this->geometry(), "bottom"); } - else{ - LSession::handle()->XCB->ReserveLocation(this->winId(), QRect(xloc,yloc+ xhi-hidesize, this->width(), hidesize), "bottom"); - hidepoint = QPoint(xloc, yloc+xhi-hidesize); - showpoint = QPoint(xloc, yloc+xhi-ht); - this->move(hidepoint); //Could bleed over onto the screen below - this->resize( this->width(), viswidth); - } - }else if(loc=="left"){ //left side of screen - QSize sz = QSize(ht, xhi*panelPercent); - if(panelPinLoc=="left"){} //this is actually the top (left of center in length dimension) - else if(panelPinLoc=="right"){ yloc = yloc+xhi-sz.height(); } - else{ yloc = yloc+((xhi-sz.height())/2) ; } //centered - this->setMinimumSize(sz); - this->setMaximumSize(sz); - this->setGeometry(xloc,yloc, ht, sz.height()); - if(!hidden){ LSession::handle()->XCB->ReserveLocation(this->winId(), this->geometry(), "left"); } - else{ - LSession::handle()->XCB->ReserveLocation(this->winId(), QRect(xloc, yloc, hidesize, sz.height()), "left"); - hidepoint = QPoint(xloc, yloc); - showpoint = QPoint(xloc, yloc); - this->move(hidepoint); //Could bleed over onto the screen left - this->resize( viswidth, this->height()); - } - }else{ //right side of screen - QSize sz = QSize(ht, xhi*panelPercent); - if(panelPinLoc=="left"){} //this is actually the top (left of center in length dimension) - else if(panelPinLoc=="right"){ yloc = yloc+xhi-sz.height(); } - else{ yloc = yloc+((xhi-sz.height())/2) ; } //centered - this->setMinimumSize(sz); - this->setMaximumSize(sz); - this->setGeometry(xloc+xwid-ht,yloc,ht, sz.height()); - if(!hidden){ LSession::handle()->XCB->ReserveLocation(this->winId(), this->geometry(), "right"); } - else{ - LSession::handle()->XCB->ReserveLocation(this->winId(), QRect(xloc+xwid-hidesize, yloc, hidesize, sz.height()), "right"); - hidepoint = QPoint(xloc+xwid-hidesize, yloc); - showpoint = QPoint(xloc+xwid-ht, yloc); - this->move(hidepoint); //Could bleed over onto the screen right - this->resize( viswidth, this->height()); - } - } - if(DEBUG){ qDebug() << " - Done with panel geometry"; } - //Double check that the "sticky" bit is set on the window state - bool needsticky = !LSession::handle()->XCB->WM_Get_Window_States(this->winId()).contains(LXCB::S_STICKY); - if(needsticky){ LSession::handle()->XCB->SetAsSticky(this->winId()); } - if(geomonly){ return; } - //Now update the appearance of the toolbar - if(settings->value(PPREFIX+"customColor", false).toBool()){ - QString color = settings->value(PPREFIX+"color", "rgba(255,255,255,160)").toString(); - QString style = "QWidget#LuminaPanelColor{ background: %1; border-radius: 3px; border: 1px solid %1; }"; - style = style.arg(color); - panelArea->setStyleSheet(style); - }else{ - panelArea->setStyleSheet(""); //clear it and use the one from the theme - } - - //Then go through the plugins and create them as necessary - QStringList plugins = settings->value(PPREFIX+"pluginlist", QStringList()).toStringList(); - /*if(defaultpanel && plugins.isEmpty()){ - plugins << "userbutton" << "taskmanager" << "spacer" << "systemtray" << "clock" << "systemdashboard"; - }*/ - if(DEBUG){ qDebug() << " - Initialize Plugins: " << plugins; } - for(int i=0; i<plugins.length(); i++){ - //Ensure this plugin has a unique ID (NOTE: this numbering does not persist between sessions) - if(!plugins[i].contains("---")){ - int num=1; - while( plugins.contains(plugins[i]+"---"+QString::number(Screen())+"."+QString::number(this->number())+"."+QString::number(num)) ){ - num++; - } - - plugins[i] = plugins[i]+"---"+QString::number(Screen())+"."+QString::number(this->number())+"."+QString::number(num); - //qDebug() << "Adjust Plugin ID:" << plugins[i]; - } - //See if this plugin is already there or in a different spot - bool found = false; - for(int p=0; p<PLUGINS.length(); p++){ - if(PLUGINS[p]->type()==plugins[i]){ - found = true; //already exists - //Make sure the plugin layout has the correct orientation - if(horizontal){PLUGINS[p]->layout()->setDirection(QBoxLayout::LeftToRight); } - else{ PLUGINS[p]->layout()->setDirection(QBoxLayout::TopToBottom); } - PLUGINS[p]->OrientationChange(); - //Now check the location of the plugin in the panel - if(p!=i){ //wrong place in the panel - layout->takeAt(p); //remove the item from the current location - layout->insertWidget(i, PLUGINS[p]); //add the item into the correct location - PLUGINS.move(p,i); //move the identifier in the list to match - } - break; - } - } - if(!found){ - //New Plugin - if(DEBUG){ qDebug() << " -- New Plugin:" << plugins[i] << i; } - LPPlugin *plug = NewPP::createPlugin(plugins[i], panelArea, horizontal); - if(plug != 0){ - PLUGINS.insert(i, plug); - layout->insertWidget(i, PLUGINS[i]); - connect(plug, SIGNAL(MenuClosed()), this, SLOT(checkPanelFocus())); - }else{ - //invalid plugin type - plugins.removeAt(i); //remove this invalid plugin from the list - i--; //make sure we don't miss the next item with the re-order - } - } - //LSession::processEvents(); - } - //Now remove any extra plugins from the end - //qDebug() << "plugins:" << plugins; - //qDebug() << "PLUGINS length:" << PLUGINS.length(); - for(int i=0; i<PLUGINS.length(); i++){ - if(plugins.contains(PLUGINS[i]->type())){ continue; } //good plugin - skip it - if(DEBUG){ qDebug() << " -- Remove Plugin: " << PLUGINS[i]->type(); } - //If this is the system tray - stop it first - if( PLUGINS[i]->type().startsWith("systemtray---") ){ - static_cast<LSysTray*>(PLUGINS[i])->stop(); - } - layout->takeAt(i); //remove from the layout - PLUGINS.takeAt(i)->deleteLater(); //delete the actual widget - //LSession::processEvents(); - i--; //need to back up one space to not miss another plugin - } - this->update(); - this->show(); //make sure the panel is visible now - if(hidden){ this->move(hidepoint); } - //Now go through and send the orientation update signal to each plugin - for(int i=0; i<PLUGINS.length(); i++){ - QTimer::singleShot(0,PLUGINS[i], SLOT(OrientationChange())); - } - checkPanelFocus(); - //LSession::processEvents(); -} - -void LPanel::UpdateLocale(){ - //The panel itself has no text to translate, just forward the signal to all the plugins - for(int i=0; i<PLUGINS.length(); i++){ - QTimer::singleShot(1,PLUGINS[i], SLOT(LocaleChange())); - } -} - -void LPanel::UpdateTheme(){ - //The panel itself has no theme-based icons, just forward the signal to all the plugins - for(int i=0; i<PLUGINS.length(); i++){ - QTimer::singleShot(1,PLUGINS[i], SLOT(ThemeChange())); - } -} - -// =================== -// PRIVATE SLOTS -// =================== -void LPanel::checkPanelFocus(){ - qDebug() << "Check Panel Focus:" << panelnum << viswidth << fullwidth << this->size(); - if( !this->geometry().contains(QCursor::pos()) ){ - //Move the panel back to it's "hiding" spot - if(hidden){ - QSize sz(horizontal ? this->width() : viswidth, horizontal ? viswidth : this->height() ); - this->setMinimumSize(sz); - this->setMaximumSize(sz); - this->setGeometry( QRect(hidepoint, sz) ); - } - //Re-active the old window - if(LSession::handle()->activeWindow()!=0){ - LSession::handle()->XCB->ActivateWindow(LSession::handle()->activeWindow()); - } - }else if(hidden){ - QSize sz(horizontal ? this->width() : fullwidth, horizontal ? fullwidth : this->height() ); - this->setMinimumSize(sz); - this->setMaximumSize(sz); - this->setGeometry( QRect(showpoint, sz) ); - } -} - -//=========== -// PROTECTED -//=========== -void LPanel::resizeEvent(QResizeEvent *event){ - QWidget::resizeEvent(event); - for(int i=0; i<PLUGINS.length(); i++){ PLUGINS[i]->OrientationChange(); } -} - -void LPanel::paintEvent(QPaintEvent *event){ - if(!hascompositer){ - QPainter *painter = new QPainter(this); - //qDebug() << "Paint Panel:" << PPREFIX; - //Make sure the base background of the event rectangle is the associated rectangle from the BGWindow - QRect rec = event->rect();//this->geometry(); //start with the global geometry of the panel - rec.adjust(-1,-1,2,2); //add 1 more pixel on each side - //Need to translate that rectangle to the background image coordinates - //qDebug() << " - Rec:" << rec << hidden << this->geometry() << bgWindow->geometry(); - rec.moveTo( bgWindow->mapFromGlobal( this->mapToGlobal(rec.topLeft()) ) ); //(rec.x()-LSession::handle()->screenGeom(Screen()).x(), rec.y()-LSession::handle()->screenGeom(Screen()).y() ); - //qDebug() << " - Adjusted Window Rec:" << rec; - painter->drawPixmap(event->rect().adjusted(-1,-1,2,2), bgWindow->grab(rec)); - //painter->drawPixmap(event->rect().adjusted(-1,-1,2,2), QApplication::screens().at(Screen())->grabWindow(QX11Info::appRootWindow(), rec.x(), rec.y(), rec.width(), rec.height()) ); - delete(painter); - } - QWidget::paintEvent(event); //now pass the event along to the normal painting event -} - -void LPanel::enterEvent(QEvent *event){ - //qDebug() << "Panel Enter Event:"; - checkPanelFocus(); - /*if(hidden){ - //Move the panel out so it is fully available - this->move(showpoint); - this->resize( horizontal ? this->width() : fullwidth, horizontal ? fullwidth : this->height() ); - this->update(); - }*/ - //this->activateWindow(); - event->accept(); //just to quiet the compile warning -} - -void LPanel::leaveEvent(QEvent *event){ - /*qDebug() << "Panel Leave Event:"; - qDebug() << "Panel Geom:" << this->geometry().x() << this->geometry().y() << this->geometry().width() << this->geometry().height() ; - QPoint pt = QCursor::pos(); - qDebug() << "Mouse Point (global):" << pt.x() << pt.y(); - //pt = this->mapFromGlobal(pt); - //qDebug() << "Mouse Point (local):" << pt.x() << pt.y(); - qDebug() << "Contained:" << this->geometry().contains(pt);*/ - checkPanelFocus(); - QWidget::leaveEvent(event); - //event->accept(); //just to quiet the compile warning -} diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/LPanel.h b/src-qt5/core/lumina-desktop-unified/src-DE/LPanel.h deleted file mode 100644 index bcea8eaf..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-DE/LPanel.h +++ /dev/null @@ -1,81 +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 -//=========================================== -// This is the generic class for creating a full-width panel that stays -// on top of all other windows (top or bottom of the screen only) -//=========================================== -#ifndef _LUMINA_DESKTOP_PANEL_H -#define _LUMINA_DESKTOP_PANEL_H - -#include <QWidget> -#include <QBoxLayout> -#include <QSettings> -#include <QString> -#include <QStringList> -#include <QTimer> -#include <QMoveEvent> -#include <QDesktopWidget> -#include <QPainter> -#include <QPaintEvent> - -#include "panel-plugins/NewPP.h" -#include "panel-plugins/LPPlugin.h" - -#include <LuminaX11.h> -#include <LuminaOS.h> - -class LPanel : public QWidget{ - Q_OBJECT -private: - QBoxLayout *layout; - QSettings *settings; - QString PPREFIX; //internal prefix for all settings - QDesktopWidget *screen; - QWidget *bgWindow, *panelArea; - //QRect hidegeom, showgeom; //for hidden panels - QPoint hidepoint, showpoint; //for hidden panels: locations when hidden/visible - bool defaultpanel, horizontal, hidden, hascompositer; - QString screenID; - int panelnum; - int viswidth, fullwidth; - QList<LPPlugin*> PLUGINS; - - int Screen(); //Turn the screenID into the appropriate number - -public: - LPanel(QSettings *file, QString scr = 0, int num =0, QWidget *parent=0); //settings file, screen number, panel number - ~LPanel(); - - int number(){ - return panelnum; - } - - QString prefix(){ - return PPREFIX; - } - - int visibleWidth(){ - return viswidth; - } - void prepareToClose(); - void scalePanel(double xscale, double yscale); - -public slots: - void UpdatePanel(bool geomonly = false); //Load the settings file and update the panel appropriately - void UpdateLocale(); //Locale Changed externally - void UpdateTheme(); //Theme Changed externally - -private slots: - void checkPanelFocus(); - -protected: - void resizeEvent(QResizeEvent *event); - void paintEvent(QPaintEvent *event); - void enterEvent(QEvent *event); - void leaveEvent(QEvent *event); -}; - -#endif diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/LSession.cpp b/src-qt5/core/lumina-desktop-unified/src-DE/LSession.cpp deleted file mode 100644 index 0387555a..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-DE/LSession.cpp +++ /dev/null @@ -1,798 +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 "LSession.h" -#include <LuminaOS.h> - -#include <QTime> -#include <QScreen> -#include <QtConcurrent> -#include "LXcbEventFilter.h" -#include "BootSplash.h" - -//LibLumina X11 class -#include <LuminaX11.h> -#include <LUtils.h> - -#include <unistd.h> //for usleep() usage - -#ifndef DEBUG -#define DEBUG 0 -#endif - -XCBEventFilter *evFilter = 0; - -LSession::LSession(int &argc, char ** argv) : LSingleApplication(argc, argv, "lumina-desktop"){ - if(this->isPrimaryProcess()){ - connect(this, SIGNAL(InputsAvailable(QStringList)), this, SLOT(NewCommunication(QStringList)) ); - this->setApplicationName("Lumina Desktop Environment"); - this->setApplicationVersion( LDesktopUtils::LuminaDesktopVersion() ); - this->setOrganizationName("LuminaDesktopEnvironment"); - this->setQuitOnLastWindowClosed(false); //since the LDesktop's are not necessarily "window"s - //Enabled a few of the simple effects by default - this->setEffectEnabled( Qt::UI_AnimateMenu, true); - this->setEffectEnabled( Qt::UI_AnimateCombo, true); - this->setEffectEnabled( Qt::UI_AnimateTooltip, true); - //this->setAttribute(Qt::AA_UseDesktopOpenGL); - //this->setAttribute(Qt::AA_UseHighDpiPixmaps); //allow pixmaps to be scaled up as well as down - //this->setStyle( new MenuProxyStyle); //QMenu icon size override - SystemTrayID = 0; VisualTrayID = 0; - sysWindow = 0; - TrayDmgEvent = 0; - TrayDmgError = 0; - lastActiveWin = 0; - cleansession = true; - TrayStopping = false; - screenTimer = new QTimer(this); - screenTimer->setSingleShot(true); - screenTimer->setInterval(50); - connect(screenTimer, SIGNAL(timeout()), this, SLOT(updateDesktops()) ); - for(int i=1; i<argc; i++){ - if( QString::fromLocal8Bit(argv[i]) == "--noclean" ){ cleansession = false; break; } - } - XCB = new LXCB(); //need access to XCB data/functions right away - //initialize the empty internal pointers to 0 - appmenu = 0; - settingsmenu = 0; - currTranslator=0; - mediaObj=0; - sessionsettings=0; - //Setup the event filter for Qt5 - evFilter = new XCBEventFilter(this); - this->installNativeEventFilter( evFilter ); - connect(this, SIGNAL(screenAdded(QScreen*)), this, SLOT(screensChanged()) ); - connect(this, SIGNAL(screenRemoved(QScreen*)), this, SLOT(screensChanged()) ); - connect(this, SIGNAL(primaryScreenChanged(QScreen*)), this, SLOT(screensChanged()) ); - } //end check for primary process -} - -LSession::~LSession(){ - if(this->isPrimaryProcess()){ - //WM->stopWM(); - for(int i=0; i<DESKTOPS.length(); i++){ - DESKTOPS[i]->deleteLater(); - } - //delete WM; - settingsmenu->deleteLater(); - appmenu->deleteLater(); - delete currTranslator; - if(mediaObj!=0){delete mediaObj;} - } -} - -void LSession::setupSession(){ - //Seed random number generator (if needed) - qsrand( QTime::currentTime().msec() ); - - BootSplash splash; - splash.showScreen("init"); - qDebug() << "Initializing Session"; - if(QFile::exists("/tmp/.luminastopping")){ QFile::remove("/tmp/.luminastopping"); } - QTime* timer = 0; - //if(DEBUG){ timer = new QTime(); timer->start(); qDebug() << " - Init srand:" << timer->elapsed();} - - //Setup the QSettings default paths - splash.showScreen("settings"); - if(DEBUG){ qDebug() << " - Init QSettings:" << timer->elapsed();} - sessionsettings = new QSettings("lumina-desktop", "sessionsettings"); - DPlugSettings = new QSettings("lumina-desktop","pluginsettings/desktopsettings"); - //Load the proper translation files - if(sessionsettings->value("ForceInitialLocale",false).toBool()){ - //Some system locale override it in place - change the env first - LUtils::setLocaleEnv( sessionsettings->value("InitLocale/LANG","").toString(), \ - sessionsettings->value("InitLocale/LC_MESSAGES","").toString(), \ - sessionsettings->value("InitLocale/LC_TIME","").toString(), \ - sessionsettings->value("InitLocale/LC_NUMERIC","").toString(), \ - sessionsettings->value("InitLocale/LC_MONETARY","").toString(), \ - sessionsettings->value("InitLocale/LC_COLLATE","").toString(), \ - sessionsettings->value("InitLocale/LC_CTYPE","").toString() ); - } - currTranslator = LUtils::LoadTranslation(this, "lumina-desktop"); -//use the system settings - //Setup the user's lumina settings directory as necessary - splash.showScreen("user"); - if(DEBUG){ qDebug() << " - Init User Files:" << timer->elapsed();} - checkUserFiles(); //adds these files to the watcher as well - - //Initialize the internal variables - DESKTOPS.clear(); - - //Start the background system tray - splash.showScreen("systray"); - if(DEBUG){ qDebug() << " - Init System Tray:" << timer->elapsed();} - startSystemTray(); - - //Initialize the global menus - qDebug() << " - Initialize system menus"; - splash.showScreen("apps"); - if(DEBUG){ qDebug() << " - Init AppMenu:" << timer->elapsed();} - appmenu = new AppMenu(); - - splash.showScreen("menus"); - if(DEBUG){ qDebug() << " - Init SettingsMenu:" << timer->elapsed();} - settingsmenu = new SettingsMenu(); - if(DEBUG){ qDebug() << " - Init SystemWindow:" << timer->elapsed();} - sysWindow = new SystemWindow(); - - //Initialize the desktops - splash.showScreen("desktop"); - if(DEBUG){ qDebug() << " - Init Desktops:" << timer->elapsed();} - desktopFiles = QDir(QDir::homePath()+"/Desktop").entryInfoList(QDir::NoDotAndDotDot | QDir::Files | QDir::Dirs, QDir::Name | QDir::IgnoreCase | QDir::DirsFirst); - updateDesktops(); - for(int i=0; i<6; i++){ LSession::processEvents(); } //Run through this a few times so the interface systems get up and running - - //Now setup the system watcher for changes - splash.showScreen("final"); - qDebug() << " - Initialize file system watcher"; - if(DEBUG){ qDebug() << " - Init QFileSystemWatcher:" << timer->elapsed();} - watcher = new QFileSystemWatcher(this); - QString confdir = sessionsettings->fileName().section("/",0,-2); - watcherChange(sessionsettings->fileName() ); - watcherChange( confdir+"/desktopsettings.conf" ); - watcherChange( confdir+"/fluxbox-init" ); - watcherChange( confdir+"/fluxbox-keys" ); - watcherChange( confdir+"/favorites.list" ); - //Try to watch the localized desktop folder too - if(QFile::exists(QDir::homePath()+"/"+tr("Desktop"))){ watcherChange( QDir::homePath()+"/"+tr("Desktop") ); } - watcherChange( QDir::homePath()+"/Desktop" ); - - //connect internal signals/slots - connect(watcher, SIGNAL(directoryChanged(QString)), this, SLOT(watcherChange(QString)) ); - connect(watcher, SIGNAL(fileChanged(QString)), this, SLOT(watcherChange(QString)) ); - connect(this, SIGNAL(aboutToQuit()), this, SLOT(SessionEnding()) ); - if(DEBUG){ qDebug() << " - Init Finished:" << timer->elapsed(); delete timer;} - for(int i=0; i<4; i++){ LSession::processEvents(); } //Again, just a few event loops here so thing can settle before we close the splash screen - //launchStartupApps(); - QTimer::singleShot(500, this, SLOT(launchStartupApps()) ); - splash.hide(); - LSession::processEvents(); - splash.close(); - LSession::processEvents(); -} - -void LSession::CleanupSession(){ - //Close any running applications and tray utilities (Make sure to keep the UI interactive) - LSession::processEvents(); - QDateTime time = QDateTime::currentDateTime(); - qDebug() << "Start closing down the session: " << time.toString( Qt::SystemLocaleShortDate); - //Create a temporary flag to prevent crash dialogs from opening during cleanup - LUtils::writeFile("/tmp/.luminastopping",QStringList() << "yes", true); - //Start the logout chimes (if necessary) - LOS::setAudioVolume( LOS::audioVolume() ); //make sure the audio volume is saved in the backend for the next login - bool playaudio = sessionsettings->value("PlayLogoutAudio",true).toBool(); - if( playaudio ){ playAudioFile(LOS::LuminaShare()+"Logout.ogg"); } - //Stop the background system tray (detaching/closing apps as necessary) - stopSystemTray(!cleansession); - //Now perform any other cleanup - if(cleansession){ - //Close any open windows - //qDebug() << " - Closing any open windows"; - QList<WId> WL = XCB->WindowList(true); - for(int i=0; i<WL.length(); i++){ - qDebug() << " - Closing window:" << XCB->WindowClass(WL[i]) << WL[i]; - XCB->CloseWindow(WL[i]); - LSession::processEvents(); - } - //Now wait a moment for things to close down before quitting - for(int i=0; i<20; i++){ LSession::processEvents(); usleep(25); } //1/2 second pause - //Kill any remaining windows - WL = XCB->WindowList(true); //all workspaces - for(int i=0; i<WL.length(); i++){ - qDebug() << " - Window did not close, killing application:" << XCB->WindowClass(WL[i]) << WL[i]; - XCB->KillClient(WL[i]); - LSession::processEvents(); - } - } - evFilter->StopEventHandling(); - //Stop the window manager - //qDebug() << " - Stopping the window manager"; - //WM->stopWM(); - //Now close down the desktop - qDebug() << " - Closing down the desktop elements"; - for(int i=0; i<DESKTOPS.length(); i++){ - DESKTOPS[i]->prepareToClose(); - //don't actually close them yet - that will happen when the session exits - // this will leave the wallpapers up for a few moments (preventing black screens) - } - //Now wait a moment for things to close down before quitting - if(playaudio){ - //wait a max of 5 seconds for audio to finish - bool waitmore = true; - for(int i=0; i<100 && waitmore; i++){ - usleep(50000); //50ms = 50000 us - waitmore = (mediaObj->state()==QMediaPlayer::PlayingState); - LSession::processEvents(); - } - if(waitmore){ mediaObj->stop(); } //timed out - }else{ - for(int i=0; i<20; i++){ LSession::processEvents(); usleep(25000); } //1/2 second pause - } - //Clean up the temporary flag - if(QFile::exists("/tmp/.luminastopping")){ QFile::remove("/tmp/.luminastopping"); } -} - -int LSession::VersionStringToNumber(QString version){ - version = version.section("-",0,0); //trim any extra labels off the end - int maj, mid, min; //major/middle/minor version numbers (<Major>.<Middle>.<Minor>) - maj = mid = min = 0; - bool ok = true; - maj = version.section(".",0,0).toInt(&ok); - if(ok){ mid = version.section(".",1,1).toInt(&ok); }else{ maj = 0; } - if(ok){ min = version.section(".",2,2).toInt(&ok); }else{ mid = 0; } - if(!ok){ min = 0; } - //Now assemble the number - //NOTE: This format allows numbers to be anywhere from 0->999 without conflict - return (maj*1000000 + mid*1000 + min); -} - -void LSession::NewCommunication(QStringList list){ - if(DEBUG){ qDebug() << "New Communications:" << list; } - for(int i=0; i<list.length(); i++){ - if(list[i]=="--check-geoms"){ - screensChanged(); - }else if(list[i]=="--show-start"){ - emit StartButtonActivated(); - } - } -} - -void LSession::launchStartupApps(){ - //First start any system-defined startups, then do user defined - qDebug() << "Launching startup applications"; - - //Enable Numlock - if(LUtils::isValidBinary("numlockx")){ //make sure numlockx is installed - if(sessionsettings->value("EnableNumlock",false).toBool()){ - QProcess::startDetached("numlockx on"); - }else{ - QProcess::startDetached("numlockx off"); - } - } - int tmp = LOS::ScreenBrightness(); - if(tmp>0){ - LOS::setScreenBrightness( tmp ); - qDebug() << " - - Screen Brightness:" << QString::number(tmp)+"%"; - } - QProcess::startDetached("nice lumina-open -autostart-apps"); - - //Re-load the screen brightness and volume settings from the previous session - // Wait until after the XDG-autostart functions, since the audio system might be started that way - qDebug() << " - Loading previous settings"; - tmp = LOS::audioVolume(); - LOS::setAudioVolume(tmp); - qDebug() << " - - Audio Volume:" << QString::number(tmp)+"%"; - - //Now play the login music since we are finished - if(sessionsettings->value("PlayStartupAudio",true).toBool()){ - //Make sure to re-set the system volume to the last-used value at outset - int vol = LOS::audioVolume(); - if(vol>=0){ LOS::setAudioVolume(vol); } - LSession::playAudioFile(LOS::LuminaShare()+"Login.ogg"); - } - qDebug() << " - Finished with startup routines"; -} - -void LSession::StartLogout(){ - CleanupSession(); - QCoreApplication::exit(0); -} - -void LSession::StartShutdown(bool skipupdates){ - CleanupSession(); - LOS::systemShutdown(skipupdates); - QCoreApplication::exit(0); -} - -void LSession::StartReboot(bool skipupdates){ - CleanupSession(); - LOS::systemRestart(skipupdates); - QCoreApplication::exit(0); -} - -void LSession::reloadIconTheme(){ - //Wait a moment for things to settle before sending out the signal to the interfaces - QApplication::processEvents(); - QApplication::processEvents(); - emit IconThemeChanged(); -} - -void LSession::watcherChange(QString changed){ - if(DEBUG){ qDebug() << "Session Watcher Change:" << changed; } - //if(changed.endsWith("fluxbox-init") || changed.endsWith("fluxbox-keys")){ refreshWindowManager(); } - if(changed.endsWith("sessionsettings.conf") ){ - sessionsettings->sync(); - //qDebug() << "Session Settings Changed"; - if(sessionsettings->contains("Qt5_theme_engine")){ - QString engine = sessionsettings->value("Qt5_theme_engine","").toString(); - //qDebug() << "Set Qt5 theme engine: " << engine; - if(engine.isEmpty()){ unsetenv("QT_QPA_PLATFORMTHEME"); } - else{ setenv("QT_QPA_PLATFORMTHEME", engine.toUtf8().data(),1); } - } - emit SessionConfigChanged(); - }else if(changed.endsWith("desktopsettings.conf") ){ emit DesktopConfigChanged(); } - else if(changed == QDir::homePath()+"/Desktop" || changed == QDir::homePath()+"/"+tr("Desktop") ){ - desktopFiles = QDir(changed).entryInfoList(QDir::NoDotAndDotDot | QDir::Files | QDir::Dirs ,QDir::Name | QDir::IgnoreCase | QDir::DirsFirst); - if(DEBUG){ qDebug() << "New Desktop Files:" << desktopFiles.length(); } - emit DesktopFilesChanged(); - }else if(changed.endsWith("favorites.list")){ emit FavoritesChanged(); } - //Now ensure this file was not removed from the watcher - if(!watcher->files().contains(changed) && !watcher->directories().contains(changed)){ - if(!QFile::exists(changed)){ - //Create the file really quick to ensure it can be watched - //TODO - } - watcher->addPath(changed); - } -} - -void LSession::screensChanged(){ - qDebug() << "Screen Number Changed"; - if(screenTimer->isActive()){ screenTimer->stop(); } - screenTimer->start(); -} - -void LSession::screenResized(int scrn){ - qDebug() << "Screen Resized:" << scrn; - if(screenTimer->isActive()){ screenTimer->stop(); } - screenTimer->start(); -} - -void LSession::checkWindowGeoms(){ - //Only do one window per run (this will be called once per new window - with time delays between) - if(checkWin.isEmpty()){ return; } - WId win = checkWin.takeFirst(); - if(RunningApps.contains(win) ){ //just to make sure it did not close during the delay - adjustWindowGeom( win ); - } -} - -void LSession::checkUserFiles(){ - //internal version conversion examples: - // [1.0.0 -> 1000000], [1.2.3 -> 1002003], [0.6.1 -> 6001] - QString OVS = sessionsettings->value("DesktopVersion","0").toString(); //Old Version String - bool changed = LDesktopUtils::checkUserFiles(OVS); - if(changed){ - //Save the current version of the session to the settings file (for next time) - sessionsettings->setValue("DesktopVersion", this->applicationVersion()); - } -} - -void LSession::refreshWindowManager(){ - LUtils::runCmd("touch \""+QString(getenv("XDG_CONFIG_HOME"))+"/lumina-desktop/fluxbox-init\"" ); -} - -void LSession::updateDesktops(){ - qDebug() << " - Update Desktops"; - QDesktopWidget *DW = this->desktop(); - int sC = DW->screenCount(); - qDebug() << " Screen Count:" << sC; - qDebug() << " DESKTOPS Length:" << DESKTOPS.length(); - if(sC<1){ return; } //stop here - no screens available temporarily (displayport/4K issue) - - for(int i=0; i<sC; i++){ qDebug() << " -- Screen["+QString::number(i)+"]:" << DW->screenGeometry(i); } - - bool firstrun = (DESKTOPS.length()==0); - bool numchange = DESKTOPS.length()!=sC; - - // If the screen count is changing on us - if ( sC != DW->screenCount() ) { - qDebug() << "Screen Count changed while running"; - return; - } - - //First clean up any current desktops - QList<int> dnums; //keep track of which screens are already managed - QList<QRect> geoms; - for(int i=0; i<DESKTOPS.length(); i++){ - if ( DESKTOPS[i]->Screen() < 0 || DESKTOPS[i]->Screen() >= sC || geoms.contains(DW->screenGeometry(DESKTOPS[i]->Screen())) ) { - //qDebug() << " - Close desktop:" << i; - qDebug() << " - Close desktop on screen:" << DESKTOPS[i]->Screen(); - DESKTOPS[i]->prepareToClose(); - DESKTOPS.takeAt(i)->deleteLater(); - i--; - } else { - //qDebug() << " - Show desktop:" << i; - qDebug() << " - Show desktop on screen:" << DESKTOPS[i]->Screen(); - DESKTOPS[i]->UpdateGeometry(); - DESKTOPS[i]->show(); - dnums << DESKTOPS[i]->Screen(); - geoms << DW->screenGeometry(DESKTOPS[i]->Screen()); - } - } - - //Now add any new desktops - for(int i=0; i<sC; i++){ - if(!dnums.contains(i) && !geoms.contains(DW->screenGeometry(i)) ){ - //Start the desktop on this screen - qDebug() << " - Start desktop on screen:" << i; - DESKTOPS << new LDesktop(i); - geoms << DW->screenGeometry(i); - } - } - - //Make sure fluxbox also gets prompted to re-load screen config if the number of screens changes in the middle of a session - if(numchange && !firstrun) { - qDebug() << "Update WM"; - refreshWindowManager(); - } - - //Make sure all the background windows are registered on the system as virtual roots - QTimer::singleShot(100,this, SLOT(registerDesktopWindows())); -} - -void LSession::registerDesktopWindows(){ - QList<WId> wins; - for(int i=0; i<DESKTOPS.length(); i++){ - wins << DESKTOPS[i]->backgroundID(); - } - XCB->RegisterVirtualRoots(wins); -} - -void LSession::adjustWindowGeom(WId win, bool maximize){ - //return; //temporary disable - if(DEBUG){ qDebug() << "AdjustWindowGeometry():" << win << maximize << XCB->WindowClass(win); } - if(XCB->WindowIsFullscreen(win) >=0 ){ return; } //don't touch it - //Quick hack for making sure that new windows are not located underneath any panels - // Get the window location - QRect geom = XCB->WindowGeometry(win, false); - //Get the frame size - QList<int> frame = XCB->WindowFrameGeometry(win); //[top,bottom,left,right] sizes of the frame - //Calculate the full geometry (window + frame) - QRect fgeom = QRect(geom.x()-frame[2], geom.y()-frame[0], geom.width()+frame[2]+frame[3], geom.height()+frame[0]+frame[1]); - if(DEBUG){ - qDebug() << "Check Window Geometry:" << XCB->WindowClass(win) << !geom.isNull() << geom << fgeom; - } - if(geom.isNull()){ return; } //Could not get geometry for some reason - //Get the available geometry for the screen the window is on - QRect desk; - for(int i=0; i<DESKTOPS.length(); i++){ - if( this->desktop()->screenGeometry(DESKTOPS[i]->Screen()).contains(geom.center()) ){ - //Window is on this screen - if(DEBUG){ qDebug() << " - On Screen:" << DESKTOPS[i]->Screen(); } - desk = DESKTOPS[i]->availableScreenGeom(); - if(DEBUG){ qDebug() << " - Screen Geom:" << desk; } - break; - } - } - if(desk.isNull()){ return; } //Unable to determine screen - //Adjust the window location if necessary - if(maximize){ - if(DEBUG){ qDebug() << " - Maximizing New Window:" << desk.width() << desk.height(); } - geom = desk; //Use the full screen - XCB->MoveResizeWindow(win, geom); - XCB->MaximizeWindow(win, true); //directly set the appropriate "maximized" flags (bypassing WM) - - }else if(!desk.contains(fgeom) ){ - //Adjust origin point for left/top margins - if(fgeom.y() < desk.y()){ geom.moveTop(desk.y()+frame[0]); fgeom.moveTop(desk.y()); } //move down to the edge (top panel) - if(fgeom.x() < desk.x()){ geom.moveLeft(desk.x()+frame[2]); fgeom.moveLeft(desk.x()); } //move right to the edge (left panel) - //Adjust size for bottom margins (within reason, since window titles are on top normally) - // if(geom.right() > desk.right() && (geom.width() > 100)){ geom.setRight(desk.right()); } - if(fgeom.bottom() > desk.bottom() && geom.height() > 10){ - if(DEBUG){ qDebug() << "Adjust Y:" << fgeom << geom << desk; } - int diff = fgeom.bottom()-desk.bottom(); //amount of overlap - if(DEBUG){ qDebug() << "Y-Diff:" << diff; } - if(diff < 0){ diff = -diff; } //need a positive value - if( (fgeom.height()+ diff)< desk.height()){ - //just move the window - there is room for it above - geom.setBottom(desk.bottom()-frame[1]); - fgeom.setBottom(desk.bottom()); - }else if(geom.height() > diff){ //window bigger than the difference - //Need to resize the window - keeping the origin point the same - geom.setHeight( geom.height()-diff-1 ); //shrink it by the difference (need an extra pixel somewhere) - fgeom.setHeight( fgeom.height()-diff ); - } - } - //Now move/resize the window - if(DEBUG){ - qDebug() << " - New Geom:" << geom << fgeom; - } - XCB->WM_Request_MoveResize_Window(win, geom); - } - -} - -void LSession::SessionEnding(){ - stopSystemTray(); //just in case it was not stopped properly earlier -} - -//=============== -// SYSTEM ACCESS -//=============== -void LSession::LaunchApplication(QString cmd){ - LSession::setOverrideCursor(QCursor(Qt::BusyCursor)); - QProcess::startDetached(cmd); -} - -QFileInfoList LSession::DesktopFiles(){ - return desktopFiles; -} - -QRect LSession::screenGeom(int num){ - if(num < 0 || num >= this->desktop()->screenCount() ){ return QRect(); } - QRect geom = this->desktop()->screenGeometry(num); - return geom; -} - -AppMenu* LSession::applicationMenu(){ - return appmenu; -} - -SettingsMenu* LSession::settingsMenu(){ - return settingsmenu; -} - -QSettings* LSession::sessionSettings(){ - return sessionsettings; -} - -QSettings* LSession::DesktopPluginSettings(){ - return DPlugSettings; -} - -WId LSession::activeWindow(){ - //Check the last active window pointer first - WId active = XCB->ActiveWindow(); - //qDebug() << "Check Active Window:" << active << lastActiveWin; - if(RunningApps.contains(active)){ lastActiveWin = active; } - else if(RunningApps.contains(lastActiveWin) && XCB->WindowState(lastActiveWin) >= LXCB::VISIBLE){} //no change needed - else if(RunningApps.contains(lastActiveWin) && RunningApps.length()>1){ - int start = RunningApps.indexOf(lastActiveWin); - if(start<1){ lastActiveWin = RunningApps.length()-1; } //wrap around to the last item - else{ lastActiveWin = RunningApps[start-1]; } - }else{ - //Need to change the last active window - find the first one which is visible - lastActiveWin = 0; //fallback value - nothing active - for(int i=0; i<RunningApps.length(); i++){ - if(XCB->WindowState(RunningApps[i]) >= LXCB::VISIBLE){ - lastActiveWin = RunningApps[i]; - break; - } - } - //qDebug() << " -- New Last Active Window:" << lastActiveWin; - } - return lastActiveWin; -} - -//Temporarily change the session locale (nothing saved between sessions) -void LSession::switchLocale(QString localeCode){ - currTranslator = LUtils::LoadTranslation(this, "lumina-desktop", localeCode, currTranslator); - if(currTranslator!=0 || localeCode=="en_US"){ - LUtils::setLocaleEnv(localeCode); //will set everything to this locale (no custom settings) - } - emit LocaleChanged(); -} - -void LSession::systemWindow(){ - if(sysWindow==0){ sysWindow = new SystemWindow(); } - else{ sysWindow->updateWindow(); } - sysWindow->show(); - //LSession::processEvents(); -} - -//Play System Audio -void LSession::playAudioFile(QString filepath){ - if( !QFile::exists(filepath) ){ return; } - //Setup the audio output systems for the desktop - if(DEBUG){ qDebug() << "Play Audio File"; } - if(mediaObj==0){ qDebug() << " - Initialize media player"; mediaObj = new QMediaPlayer(); } - if(mediaObj !=0 ){ - if(DEBUG){ qDebug() << " - starting playback:" << filepath; } - mediaObj->setVolume(100); - mediaObj->setMedia(QUrl::fromLocalFile(filepath)); - mediaObj->play(); - LSession::processEvents(); - } - if(DEBUG){ qDebug() << " - Done with Audio File"; } -} -// ======================= -// XCB EVENT FILTER FUNCTIONS -// ======================= -void LSession::RootSizeChange(){ - qDebug() << "Got Root Size Change"; - if(DESKTOPS.isEmpty()){ return; } //Initial setup not run yet - screenTimer->start(); -} - -void LSession::WindowPropertyEvent(){ - if(DEBUG){ qDebug() << "Window Property Event"; } - QList<WId> newapps = XCB->WindowList(); - if(RunningApps.length() < newapps.length()){ - //New Window found - //qDebug() << "New window found"; - LSession::restoreOverrideCursor(); //restore the mouse cursor back to normal (new window opened?) - //Perform sanity checks on any new window geometries - for(int i=0; i<newapps.length() && !TrayStopping; i++){ - if(!RunningApps.contains(newapps[i])){ - checkWin << newapps[i]; - XCB->SelectInput(newapps[i]); //make sure we get property/focus events for this window - if(DEBUG){ qDebug() << "New Window - check geom in a moment:" << XCB->WindowClass(newapps[i]); } - QTimer::singleShot(50, this, SLOT(checkWindowGeoms()) ); - } - } - } - - //Now save the list and send out the event - RunningApps = newapps; - emit WindowListEvent(); -} - -void LSession::WindowPropertyEvent(WId win){ - //Emit the single-app signal if the window in question is one used by the task manager - if(RunningApps.contains(win)){ - if(DEBUG){ qDebug() << "Single-window property event"; } - //emit WindowListEvent(); - WindowPropertyEvent(); //Run through the entire routine for window checks - }else if(RunningTrayApps.contains(win)){ - emit TrayIconChanged(win); - } -} - -void LSession::SysTrayDockRequest(WId win){ - if(TrayStopping){ return; } - attachTrayWindow(win); //Check to see if the window is already registered -} - -void LSession::WindowClosedEvent(WId win){ - if(TrayStopping){ return; } - removeTrayWindow(win); //Check to see if the window is a tray app -} - -void LSession::WindowConfigureEvent(WId win){ - if(TrayStopping){ return; } - if(RunningTrayApps.contains(win)){ - if(DEBUG){ qDebug() << "SysTray: Configure Event"; } - emit TrayIconChanged(win); //trigger a repaint event - }else if(RunningApps.contains(win)){ - WindowPropertyEvent(); - } -} - -void LSession::WindowDamageEvent(WId win){ - if(TrayStopping){ return; } - if(RunningTrayApps.contains(win)){ - if(DEBUG){ qDebug() << "SysTray: Damage Event"; } - emit TrayIconChanged(win); //trigger a repaint event - } -} - -void LSession::WindowSelectionClearEvent(WId win){ - if(win==SystemTrayID && !TrayStopping){ - qDebug() << "Stopping system tray"; - stopSystemTray(true); //make sure to detach all windows - } -} - - -//====================== -// SYSTEM TRAY FUNCTIONS -//====================== -bool LSession::registerVisualTray(WId visualTray){ - //Only one visual tray can be registered at a time - // (limitation of how tray apps are embedded) - if(TrayStopping){ return false; } - else if(VisualTrayID==0){ VisualTrayID = visualTray; return true; } - else if(VisualTrayID==visualTray){ return true; } - else{ return false; } -} - -void LSession::unregisterVisualTray(WId visualTray){ - if(VisualTrayID==visualTray){ - qDebug() << "Unregistered Visual Tray"; - VisualTrayID=0; - if(!TrayStopping){ emit VisualTrayAvailable(); } - } -} - -QList<WId> LSession::currentTrayApps(WId visualTray){ - if(visualTray==VisualTrayID){ - //Check the validity of all the current tray apps (make sure nothing closed erratically) - for(int i=0; i<RunningTrayApps.length(); i++){ - if(XCB->WindowClass(RunningTrayApps[i]).isEmpty()){ RunningTrayApps.removeAt(i); i--; } - } - return RunningTrayApps; - }else if( registerVisualTray(visualTray) ){ - return RunningTrayApps; - }else{ - return QList<WId>(); - } -} - -void LSession::startSystemTray(){ - if(SystemTrayID!=0){ return; } - RunningTrayApps.clear(); //nothing running yet - SystemTrayID = XCB->startSystemTray(0); - TrayStopping = false; - if(SystemTrayID!=0){ - XCB->SelectInput(SystemTrayID); //make sure TrayID events get forwarded here - TrayDmgEvent = XCB->GenerateDamageID(SystemTrayID); - evFilter->setTrayDamageFlag(TrayDmgEvent); - qDebug() << "System Tray Started Successfully"; - if(DEBUG){ qDebug() << " - System Tray Flags:" << TrayDmgEvent << TrayDmgError; } - } -} - -void LSession::stopSystemTray(bool detachall){ - if(TrayStopping){ return; } //already run - qDebug() << "Stopping system tray..."; - TrayStopping = true; //make sure the internal list does not modified during this - //Close all the running Tray Apps - QList<WId> tmpApps = RunningTrayApps; - RunningTrayApps.clear(); //clear this ahead of time so tray's do not attempt to re-access the apps - if(!detachall){ - for(int i=0; i<tmpApps.length(); i++){ - qDebug() << " - Stopping tray app:" << XCB->WindowClass(tmpApps[i]); - //Tray apps are special and closing the window does not close the app - XCB->KillClient(tmpApps[i]); - LSession::processEvents(); - } - } - //Now close down the tray backend - XCB->closeSystemTray(SystemTrayID); - SystemTrayID = 0; - TrayDmgEvent = 0; - TrayDmgError = 0; - evFilter->setTrayDamageFlag(0); //turn off tray event handling - emit TrayListChanged(); - LSession::processEvents(); -} - -void LSession::attachTrayWindow(WId win){ - //static int appnum = 0; - if(TrayStopping){ return; } - if(RunningTrayApps.contains(win)){ return; } //already managed - qDebug() << "Session Tray: Window Added"; - RunningTrayApps << win; - LSession::restoreOverrideCursor(); - if(DEBUG){ qDebug() << "Tray List Changed"; } - emit TrayListChanged(); -} - -void LSession::removeTrayWindow(WId win){ - if(SystemTrayID==0){ return; } - for(int i=0; i<RunningTrayApps.length(); i++){ - if(win==RunningTrayApps[i]){ - qDebug() << "Session Tray: Window Removed"; - RunningTrayApps.removeAt(i); - emit TrayListChanged(); - break; - } - } -} -//========================= -// START MENU FUNCTIONS -//========================= -bool LSession::registerStartButton(QString ID){ - if(StartButtonID.isEmpty()){ StartButtonID = ID; } - return (StartButtonID==ID); -} - -void LSession::unregisterStartButton(QString ID){ - if(StartButtonID == ID){ - StartButtonID.clear(); - emit StartButtonAvailable(); - } -} diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/LSession.h b/src-qt5/core/lumina-desktop-unified/src-DE/LSession.h deleted file mode 100644 index bd93289a..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-DE/LSession.h +++ /dev/null @@ -1,193 +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_SESSION_H -#define _LUMINA_DESKTOP_SESSION_H - -#include <QApplication> -#include <QDebug> -#include <QString> -#include <QX11Info> -#include <QEvent> -#include <QTranslator> -#include <QSettings> -#include <QProxyStyle> -#include <QDesktopWidget> -#include <QList> -#include <QThread> -#include <QMediaPlayer> -#include <QThread> -#include <QUrl> - -#include "Globals.h" -#include "AppMenu.h" -#include "SettingsMenu.h" -#include "SystemWindow.h" -#include "LDesktop.h" -//#include "WMProcess.h" -//#include "BootSplash.h" - -#include <LuminaX11.h> -#include <LuminaSingleApplication.h> - -//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<WId> currentTrayApps(WId visualTray); - bool registerVisualTray(WId); - void unregisterVisualTray(WId); - - //Public start menu buttons - bool registerStartButton(QString ID); - void unregisterStartButton(QString ID); - - //Special functions for XCB event filter parsing only - // (DO NOT USE MANUALLY) - void RootSizeChange(); - 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*>(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<LDesktop*> 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<QRect> savedScreens; - - //System Tray Variables - WId SystemTrayID, VisualTrayID; - int TrayDmgEvent, TrayDmgError; - QList<WId> RunningTrayApps; - bool TrayStopping; - //Start Button Variables - QString StartButtonID; - - //Task Manager Variables - WId lastActiveWin; - QList<WId> RunningApps; - QList<WId> checkWin; - QFileInfoList desktopFiles; - - void CleanupSession(); - - int VersionStringToNumber(QString version); - -public slots: - void StartLogout(); - void StartShutdown(bool skipupdates = false); - void StartReboot(bool skipupdates = false); - - 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 - //Start Button signals - void StartButtonAvailable(); - void StartButtonActivated(); - //Task Manager Signals - void WindowListEvent(WId); - void WindowListEvent(); - //General Signals - void LocaleChanged(); - void IconThemeChanged(); - void DesktopConfigChanged(); - void SessionConfigChanged(); - void FavoritesChanged(); - void DesktopFilesChanged(); - void WorkspaceChanged(); - -}; - -#endif diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/LWinInfo.cpp b/src-qt5/core/lumina-desktop-unified/src-DE/LWinInfo.cpp deleted file mode 100644 index 6a6cea0b..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-DE/LWinInfo.cpp +++ /dev/null @@ -1,48 +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 "LWinInfo.h" - -#include <LuminaX11.h> - -#include "LSession.h" - -//Information Retrieval - // Don't cache these results because they can change regularly -QString LWinInfo::text(){ - if(window==0){ return ""; } - QString nm = LSession::handle()->XCB->WindowVisibleIconName(window); - if(nm.simplified().isEmpty()){ nm = LSession::handle()->XCB->WindowIconName(window); } - if(nm.simplified().isEmpty()){ nm = LSession::handle()->XCB->WindowVisibleName(window); } - if(nm.simplified().isEmpty()){ nm = LSession::handle()->XCB->WindowName(window); } - if(nm.simplified().isEmpty()){ nm = LSession::handle()->XCB->OldWindowIconName(window); } - if(nm.simplified().isEmpty()){ nm = LSession::handle()->XCB->OldWindowName(window); } - //Make sure that the text is a reasonable size (40 char limit) - //if(nm.length()>40){ nm = nm.left(40)+"..."; } - return nm; -} - -QIcon LWinInfo::icon(bool &noicon){ - if(window==0){ noicon = true; return QIcon();} - noicon = false; - QIcon ico = LSession::handle()->XCB->WindowIcon(window); - //Check for a null icon, and supply one if necessary - if(ico.isNull()){ ico = LXDG::findIcon( this->Class().toLower(),""); } - if(ico.isNull()){ico = LXDG::findIcon("preferences-system-windows",""); noicon=true;} - return ico; -} - -QString LWinInfo::Class(){ - return LSession::handle()->XCB->WindowClass(window); -} - -LXCB::WINDOWVISIBILITY LWinInfo::status(bool update){ - if(window==0){ return LXCB::IGNORE; } - if(update || cstate == LXCB::IGNORE){ - cstate = LSession::handle()->XCB->WindowState(window); - } - return cstate; -} diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/LWinInfo.h b/src-qt5/core/lumina-desktop-unified/src-DE/LWinInfo.h deleted file mode 100644 index 3d2ea65a..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-DE/LWinInfo.h +++ /dev/null @@ -1,50 +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_WINDOW_INFO_H -#define _LUMINA_DESKTOP_WINDOW_INFO_H - -// Qt includes -#include <QString> -#include <QPixmap> -#include <QIcon> -#include <QPainter> - -// libLumina includes -#include <LuminaX11.h> -#include <LuminaXDG.h> - -// Local includes -//#include "Globals.h" //For the STATES enumeration definition -//#include "LSession.h" - - -class LWinInfo{ -private: - WId window; - LXCB::WINDOWVISIBILITY cstate; //current window state - -public: - LWinInfo(WId id = 0){ - window = id; - cstate = LXCB::IGNORE; //make sure this gets updates with the first "status" call - } - ~LWinInfo(){}; - - //The current window ID - WId windowID(){ - return window; - } - - //Information Retrieval - // Don't cache these results because they can change regularly - QString text(); - QIcon icon(bool &noicon); - QString Class(); - LXCB::WINDOWVISIBILITY status(bool update = false); -}; - -#endif
\ No newline at end of file diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/LXcbEventFilter.cpp b/src-qt5/core/lumina-desktop-unified/src-DE/LXcbEventFilter.cpp deleted file mode 100644 index ca7fb38d..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-DE/LXcbEventFilter.cpp +++ /dev/null @@ -1,118 +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 -//=========================================== -#include "LXcbEventFilter.h" - -//For all the XCB interactions and atoms -// is accessed via -// session->XCB->EWMH.(atom name) -// session->XCB->(do something) -#include <LuminaX11.h> -#include <QDebug> - -XCBEventFilter::XCBEventFilter(LSession *sessionhandle) : QAbstractNativeEventFilter(){ - session = sessionhandle; //save this for interaction with the session later - TrayDmgFlag = 0; - stopping = false; - session->XCB->SelectInput(QX11Info::appRootWindow()); //make sure we get root window events - InitAtoms(); -} - -void XCBEventFilter::setTrayDamageFlag(int flag){ - //Special flag for system tray damage events - TrayDmgFlag = flag + XCB_DAMAGE_NOTIFY; //save the whole flag (no calculations later) -} - -//This function format taken directly from the Qt5.3 documentation -bool XCBEventFilter::nativeEventFilter(const QByteArray &eventType, void *message, long *){ - if(stopping){ return false; } //don't do any parsing - //qDebug() << "New Event"; - if(eventType=="xcb_generic_event_t"){ - //qDebug() << " - XCB event"; - //Convert to known event type (for X11 systems) - xcb_generic_event_t *ev = static_cast<xcb_generic_event_t *>(message); - //Now parse the event and emit signals as necessary - switch( ev->response_type & ~0x80){ -//============================== - case XCB_PROPERTY_NOTIFY: - //qDebug() << "Property Notify Event:"; - //qDebug() << " - Root Window:" << QX11Info::appRootWindow(); - //qDebug() << " - Given Window:" << ((xcb_property_notify_event_t*)ev)->window; - //System-specific proprty change - if( ((xcb_property_notify_event_t*)ev)->window == QX11Info::appRootWindow() \ - && ( ( ((xcb_property_notify_event_t*)ev)->atom == session->XCB->EWMH._NET_DESKTOP_GEOMETRY) \ - || (((xcb_property_notify_event_t*)ev)->atom == session->XCB->EWMH._NET_WORKAREA) )){ - session->RootSizeChange(); - }else if( ((xcb_property_notify_event_t*)ev)->window == QX11Info::appRootWindow() \ - && ( ( ((xcb_property_notify_event_t*)ev)->atom == session->XCB->EWMH._NET_CURRENT_DESKTOP) )){ - //qDebug() << "Got Workspace Change"; - session->emit WorkspaceChanged(); - }else if( SysNotifyAtoms.contains( ((xcb_property_notify_event_t*)ev)->atom ) ){ - //Update the status/list of all running windows - session->WindowPropertyEvent(); - - //window-specific property change - }else if( WinNotifyAtoms.contains( ((xcb_property_notify_event_t*)ev)->atom ) ){ - //Ping only that window - //session->WindowPropertyEvent( ((xcb_property_notify_event_t*)ev)->window ); - session->WindowPropertyEvent(); - } - break; -//============================== - case XCB_CLIENT_MESSAGE: - //qDebug() << "Client Message Event"; - //qDebug() << " - Root Window:" << QX11Info::appRootWindow(); - //qDebug() << " - Given Window:" << ((xcb_client_message_event_t*)ev)->window; - if( TrayDmgFlag!=0 && ((xcb_client_message_event_t*)ev)->type == _NET_SYSTEM_TRAY_OPCODE && ((xcb_client_message_event_t*)ev)->format == 32){ - //data32[0] is timestamp, [1] is opcode, [2] is window handle - if(SYSTEM_TRAY_REQUEST_DOCK == ((xcb_client_message_event_t*)ev)->data.data32[1]){ - session->SysTrayDockRequest( ((xcb_client_message_event_t*)ev)->data.data32[2] ); - } - //Ignore the System Tray messages at the moment (let the WM handle it) - - //window-specific property changes - /*}else if( ((xcb_client_message_event_t*)ev)->type == session->XCB->EWMH._NET_WM_STATE ){ - if( session->XCB->WindowIsMaximized( ((xcb_client_message_event_t*)ev)->window ) ){ - //Quick fix for maximized windows (since Fluxbox is not doing the STRUT detection properly) - session->adjustWindowGeom( ((xcb_client_message_event_t*)ev)->window ); - } - session->WindowPropertyEvent( ((xcb_client_message_event_t*)ev)->window );*/ - }else if( WinNotifyAtoms.contains( ((xcb_client_message_event_t*)ev)->type ) ){ - //Ping only that window - //session->WindowPropertyEvent( ((xcb_client_message_event_t*)ev)->window ); - session->WindowPropertyEvent(); - } - break; -//============================== - case XCB_DESTROY_NOTIFY: - //qDebug() << "Window Closed Event"; - session->WindowClosedEvent( ( (xcb_destroy_notify_event_t*)ev )->window ); - break; -//============================== - case XCB_CONFIGURE_NOTIFY: - //qDebug() << "Configure Notify Event"; - session->WindowConfigureEvent( ((xcb_configure_notify_event_t*)ev)->window ); - break; -//============================== - case XCB_SELECTION_CLEAR: - //qDebug() << "Selection Clear Event"; - session->WindowSelectionClearEvent( ((xcb_selection_clear_event_t*)ev)->owner ); - break; -//============================== - default: - if(TrayDmgFlag!=0){ - //if( (ev->response_type & ~0x80)==TrayDmgFlag){ - session->WindowDamageEvent( ((xcb_damage_notify_event_t*)ev)->drawable ); - //} - }/*else{ - qDebug() << "Default Event:" << (ev->response_type & ~0x80); - }*/ -//============================== - } - } - //qDebug() << " - finished event"; - return false; //make sure the handling keeps going (transparent watching of events) -} diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/LXcbEventFilter.h b/src-qt5/core/lumina-desktop-unified/src-DE/LXcbEventFilter.h deleted file mode 100644 index c56471c9..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-DE/LXcbEventFilter.h +++ /dev/null @@ -1,104 +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 class provides the XCB ->Xlib conversion necessary for Qt5 usage -//=========================================== -#ifndef _LUMINA_DESKTOP_XCB_FILTER_H -#define _LUMINA_DESKTOP_XCB_FILTER_H - -#include <QAbstractNativeEventFilter> -#include <QList> -#include <QStringList> -#include <QX11Info> - -#include <xcb/xcb.h> -#include <xcb/xproto.h> -#include <xcb/damage.h> -#include <xcb/xcb_atom.h> -#include "LSession.h" - -/* -List of XCB response types (since almost impossible to find good docs on XCB) -switch (xcb_generic_event_t*->response_type & ~0x80) -case values: -XCB_KEY_[PRESS | RELEASE] -XCB_BUTTON_[PRESS | RELEASE] -XCB_MOTION_NOTIFY -XCB_ENTER_NOTIFY -XCB_LEAVE_NOTIFY -XCB_FOCUS_[IN | OUT] -XCB_KEYMAP_NOTIFY -XCB_EXPOSE -XCB_GRAPHICS_EXPOSURE -XCB_VISIBILITY_NOTIFY -XCB_CREATE_NOTIFY -XCB_DESTROY_NOTIFY -XCB_UNMAP_NOTIFY -XCB_MAP_[NOTIFY | REQUEST] -XCB_REPARENT_NOTIFY -XCB_CONFIGURE_[NOTIFY | REQUEST] -XCB_GRAVITY_NOTIFY -XCB_RESIZE_REQUEST -XCB_CIRCULATE_[NOTIFY | REQUEST] -XCB_PROPERTY_NOTIFY -XCB_SELECTION_[CLEAR | REQUEST | NOTIFY] -XCB_COLORMAP_NOTIFY -XCB_CLIENT_MESSAGE - -*/ - -//SYSTEM TRAY STANDARD DEFINITIONS -#define SYSTEM_TRAY_REQUEST_DOCK 0 -#define SYSTEM_TRAY_BEGIN_MESSAGE 1 -#define SYSTEM_TRAY_CANCEL_MESSAGE 2 - -class XCBEventFilter : public QAbstractNativeEventFilter{ -private: - LSession *session; - xcb_atom_t _NET_SYSTEM_TRAY_OPCODE; - QList<xcb_atom_t> WinNotifyAtoms, SysNotifyAtoms; - int TrayDmgFlag; //internal damage event offset value for the system tray - bool stopping; - - void InitAtoms(){ - //Initialize any special atoms that we need to save/use regularly - //NOTE: All the EWMH atoms are already saved in session->XCB->EWMH - WinNotifyAtoms.clear(); - WinNotifyAtoms << session->XCB->EWMH._NET_WM_NAME \ - << session->XCB->EWMH._NET_WM_VISIBLE_NAME \ - << session->XCB->EWMH._NET_WM_ICON_NAME \ - << session->XCB->EWMH._NET_WM_VISIBLE_ICON_NAME \ - << session->XCB->EWMH._NET_WM_ICON \ - << session->XCB->EWMH._NET_WM_ICON_GEOMETRY; - - SysNotifyAtoms.clear(); - SysNotifyAtoms << session->XCB->EWMH._NET_CLIENT_LIST \ - << session->XCB->EWMH._NET_CLIENT_LIST_STACKING \ - << session->XCB->EWMH._NET_CURRENT_DESKTOP \ - << session->XCB->EWMH._NET_WM_STATE \ - << session->XCB->EWMH._NET_ACTIVE_WINDOW \ - << session->XCB->EWMH._NET_WM_ICON \ - << session->XCB->EWMH._NET_WM_ICON_GEOMETRY; - //_NET_SYSTEM_TRAY_OPCODE - xcb_intern_atom_cookie_t cookie = xcb_intern_atom(QX11Info::connection(), 0, 23,"_NET_SYSTEM_TRAY_OPCODE"); - xcb_intern_atom_reply_t *r = xcb_intern_atom_reply(QX11Info::connection(), cookie, NULL); - if(r){ - _NET_SYSTEM_TRAY_OPCODE = r->atom; - free(r); - } - } - -public: - XCBEventFilter(LSession *sessionhandle); - void setTrayDamageFlag(int flag); - void StopEventHandling(){ stopping = true; } - - //This function format taken directly from the Qt5.3 documentation - virtual bool nativeEventFilter(const QByteArray &eventType, void *message, long *) Q_DECL_OVERRIDE; - -}; - -#endif diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/SettingsMenu.cpp b/src-qt5/core/lumina-desktop-unified/src-DE/SettingsMenu.cpp deleted file mode 100644 index 58208931..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-DE/SettingsMenu.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 "SettingsMenu.h" -#include "LSession.h" - -#include <LuminaOS.h> - -SettingsMenu::SettingsMenu() : QMenu(){ - this->setObjectName("SettingsMenu"); - connect(this, SIGNAL(triggered(QAction*)), this, SLOT(runApp(QAction*)) ); - connect(QApplication::instance(), SIGNAL(LocaleChanged()), this, SLOT(UpdateMenu()) ); - connect(QApplication::instance(), SIGNAL(IconThemeChanged()), this, SLOT(UpdateMenu()) ); - QTimer::singleShot(100, this, SLOT(UpdateMenu()) ); -} - -SettingsMenu::~SettingsMenu(){ - -} - -void SettingsMenu::UpdateMenu(){ - //Change the title/icon to account for locale/icon changes - this->setTitle( tr("Preferences") ); - this->setIcon( LXDG::findIcon("configure","") ); - this->clear(); - //Now setup the possible configuration options - QAction *act = new QAction(LXDG::findIcon("preferences-desktop-screensaver",""), tr("Screensaver"), this); - act->setWhatsThis("xscreensaver-demo"); - this->addAction(act); - act = new QAction( LXDG::findIcon("preferences-desktop-wallpaper",""), tr("Wallpaper"), this); - act->setWhatsThis("lumina-config --page wallpaper"); - this->addAction(act); - act = new QAction( LXDG::findIcon("preferences-other",""), tr("Display"), this); - act->setWhatsThis("lumina-xconfig"); - this->addAction(act); - act = new QAction( LXDG::findIcon("preferences-desktop",""), tr("All Desktop Settings"), this); - act->setWhatsThis("lumina-config"); - this->addAction(act); - this->addSeparator(); - /*QString qtconfig = LOS::QtConfigShortcut(); - if(QFile::exists(qtconfig) && !qtconfig.isEmpty()){ - act = new QAction( LXDG::findIcon("preferences-desktop-theme",""), tr("Window Theme"), this); - act->setWhatsThis(qtconfig); - this->addAction(act); - }*/ - QString CONTROLPANEL = LOS::ControlPanelShortcut(); - if(QFile::exists(CONTROLPANEL) && !CONTROLPANEL.isEmpty()){ - //Now load the info - XDGDesktop cpan(CONTROLPANEL); - if(cpan.isValid()){ - act = new QAction( LXDG::findIcon(cpan.icon,""), tr("Control Panel"), this); - act->setWhatsThis("lumina-open \""+CONTROLPANEL+"\""); - this->addAction(act); - } - } - act = new QAction( LXDG::findIcon("lumina",""), tr("About Lumina"), this); - act->setWhatsThis("lumina-info"); - this->addAction(act); -} - - -void SettingsMenu::runApp(QAction* act){ - LSession::LaunchApplication(act->whatsThis()); -} diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/SettingsMenu.h b/src-qt5/core/lumina-desktop-unified/src-DE/SettingsMenu.h deleted file mode 100644 index eeabab85..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-DE/SettingsMenu.h +++ /dev/null @@ -1,28 +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_SETTINGS_MENU_H -#define _LUMINA_DESKTOP_SETTINGS_MENU_H - -#include <QMenu> -#include <QProcess> -#include <QAction> - -#include <LuminaXDG.h> - -class SettingsMenu : public QMenu{ - Q_OBJECT -public: - SettingsMenu(); - ~SettingsMenu(); - -private slots: - void UpdateMenu(); - void runApp(QAction* act); - -}; - -#endif
\ No newline at end of file diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/SystemWindow.cpp b/src-qt5/core/lumina-desktop-unified/src-DE/SystemWindow.cpp deleted file mode 100644 index 1c0b59a5..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-DE/SystemWindow.cpp +++ /dev/null @@ -1,104 +0,0 @@ -#include "SystemWindow.h" -#include "ui_SystemWindow.h" - -#include "LSession.h" -#include <LuminaOS.h> -#include <QPoint> -#include <QCursor> -#include <QDebug> -#include <QProcess> -#include <QDesktopWidget> -#include <QMessageBox> - -SystemWindow::SystemWindow() : QDialog(), ui(new Ui::SystemWindow){ - ui->setupUi(this); //load the designer file - //Setup the window flags - this->setWindowFlags( Qt::Tool | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint); - //Setup the icons based on the current theme - 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","") ); - ui->push_cancel->setIcon( LXDG::findIcon("dialog-cancel","") ); - ui->push_lock->setIcon( LXDG::findIcon("system-lock-screen","") ); - //Connect the signals/slots - connect(ui->tool_logout, SIGNAL(clicked()), this, SLOT(sysLogout()) ); - connect(ui->tool_restart, SIGNAL(clicked()), this, SLOT(sysRestart()) ); - connect(ui->tool_shutdown, SIGNAL(clicked()), this, SLOT(sysShutdown()) ); - connect(ui->tool_suspend, SIGNAL(clicked()), this, SLOT(sysSuspend()) ); - connect(ui->push_cancel, SIGNAL(clicked()), this, SLOT(sysCancel()) ); - connect(ui->push_lock, SIGNAL(clicked()), this, SLOT(sysLock()) ); - //Disable buttons if necessary - updateWindow(); - ui->tool_suspend->setVisible(LOS::systemCanSuspend()); //does not change with time - just do a single check - connect(QApplication::instance(), SIGNAL(LocaleChanged()), this, SLOT(updateWindow()) ); - connect(QApplication::instance(), SIGNAL(IconThemeChanged()), this, SLOT(updateWindow()) ); -} - -SystemWindow::~SystemWindow(){ - -} - -void SystemWindow::updateWindow(){ - //Disable the shutdown/restart buttons if necessary - ui->retranslateUi(this); - bool ok = LOS::userHasShutdownAccess(); - ui->tool_restart->setEnabled(ok); - ui->tool_shutdown->setEnabled(ok); - //Center this window on the current screen - QPoint center = QApplication::desktop()->screenGeometry(QCursor::pos()).center(); //get the center of the current screen - this->move(center.x() - this->width()/2, center.y() - this->height()/2); -} - -bool SystemWindow::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; -} - -void SystemWindow::sysLogout(){ - this->close(); - LSession::processEvents(); - QTimer::singleShot(0, LSession::handle(), SLOT(StartLogout()) ); -} - -void SystemWindow::sysRestart(){ - bool skip = false; - if(!promptAboutUpdates(skip)){ this->close(); return; } //cancelled - this->close(); - LSession::processEvents(); - LSession::handle()->StartReboot(skip); -} - -void SystemWindow::sysShutdown(){ - bool skip = false; - if(!promptAboutUpdates(skip)){ this->close(); return; } //cancelled - this->close(); - LSession::processEvents(); - LSession::handle()->StartShutdown(skip); -} - -void SystemWindow::sysSuspend(){ - this->hide(); - LSession::processEvents(); - //Make sure to lock the system first (otherwise anybody can access it again) - LUtils::runCmd("xscreensaver-command -lock"); - //Now suspend the system - LOS::systemSuspend(); -} - -void SystemWindow::sysLock(){ - this->hide(); - LSession::processEvents(); - qDebug() << "Locking the desktop..."; - QProcess::startDetached("xscreensaver-command -lock"); -} diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/SystemWindow.h b/src-qt5/core/lumina-desktop-unified/src-DE/SystemWindow.h deleted file mode 100644 index bbef36a3..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-DE/SystemWindow.h +++ /dev/null @@ -1,46 +0,0 @@ -#ifndef _LUMINA_DESKTOP_SYSTEM_WINDOW_H -#define _LUMINA_DESKTOP_SYSTEM_WINDOW_H - -#include <QDialog> - -#include "ui_SystemWindow.h" - - - - -namespace Ui{ - class SystemWindow; -}; - -class SystemWindow : public QDialog{ - Q_OBJECT -public: - SystemWindow(); - ~SystemWindow(); - -public slots: - void updateWindow(); - -private: - Ui::SystemWindow *ui; - - //void closeAllWindows(); - bool promptAboutUpdates(bool &skip); //main bool return: continue/cancel, skip: skip updates or not - -private slots: - void sysLogout(); - - void sysRestart(); - - void sysShutdown(); - - void sysSuspend(); - - void sysCancel(){ - this->close(); - } - - void sysLock(); -}; - -#endif diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/SystemWindow.ui b/src-qt5/core/lumina-desktop-unified/src-DE/SystemWindow.ui deleted file mode 100644 index 9e25509b..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-DE/SystemWindow.ui +++ /dev/null @@ -1,194 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>SystemWindow</class> - <widget class="QDialog" name="SystemWindow"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>289</width> - <height>135</height> - </rect> - </property> - <property name="windowTitle"> - <string>System Options</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout"> - <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="QFrame" name="frame"> - <property name="frameShape"> - <enum>QFrame::StyledPanel</enum> - </property> - <property name="frameShadow"> - <enum>QFrame::Raised</enum> - </property> - <layout class="QVBoxLayout" name="verticalLayout_2"> - <property name="leftMargin"> - <number>3</number> - </property> - <property name="topMargin"> - <number>3</number> - </property> - <property name="rightMargin"> - <number>3</number> - </property> - <property name="bottomMargin"> - <number>0</number> - </property> - <item> - <layout class="QHBoxLayout" name="horizontalLayout"> - <item> - <widget class="QToolButton" name="tool_logout"> - <property name="text"> - <string>Log Out</string> - </property> - <property name="iconSize"> - <size> - <width>64</width> - <height>64</height> - </size> - </property> - <property name="toolButtonStyle"> - <enum>Qt::ToolButtonTextUnderIcon</enum> - </property> - </widget> - </item> - <item> - <widget class="QToolButton" name="tool_restart"> - <property name="text"> - <string>Restart</string> - </property> - <property name="iconSize"> - <size> - <width>64</width> - <height>64</height> - </size> - </property> - <property name="toolButtonStyle"> - <enum>Qt::ToolButtonTextUnderIcon</enum> - </property> - </widget> - </item> - <item> - <widget class="QToolButton" name="tool_shutdown"> - <property name="text"> - <string>Shutdown</string> - </property> - <property name="iconSize"> - <size> - <width>64</width> - <height>64</height> - </size> - </property> - <property name="toolButtonStyle"> - <enum>Qt::ToolButtonTextUnderIcon</enum> - </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>40</height> - </size> - </property> - </spacer> - </item> - <item> - <widget class="Line" name="line"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - </widget> - </item> - <item> - <layout class="QHBoxLayout" name="horizontalLayout_2"> - <item> - <widget class="QToolButton" name="push_cancel"> - <property name="text"> - <string>Cancel</string> - </property> - <property name="iconSize"> - <size> - <width>32</width> - <height>32</height> - </size> - </property> - <property name="toolButtonStyle"> - <enum>Qt::ToolButtonTextUnderIcon</enum> - </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="push_lock"> - <property name="text"> - <string>Lock</string> - </property> - <property name="iconSize"> - <size> - <width>32</width> - <height>32</height> - </size> - </property> - <property name="toolButtonStyle"> - <enum>Qt::ToolButtonTextUnderIcon</enum> - </property> - </widget> - </item> - <item> - <widget class="QToolButton" name="tool_suspend"> - <property name="text"> - <string>Suspend</string> - </property> - <property name="iconSize"> - <size> - <width>32</width> - <height>32</height> - </size> - </property> - <property name="toolButtonStyle"> - <enum>Qt::ToolButtonTextUnderIcon</enum> - </property> - </widget> - </item> - </layout> - </item> - </layout> - </widget> - </item> - </layout> - </widget> - <resources/> - <connections/> -</ui> diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/LDPlugin.cpp b/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/LDPlugin.cpp deleted file mode 100644 index 545ba430..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/LDPlugin.cpp +++ /dev/null @@ -1,63 +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 "LDPlugin.h" - -#include "../LSession.h" -#include <LuminaXDG.h> - -LDPlugin::LDPlugin(QWidget *parent, QString id) : QFrame(parent){ - PLUGID=id; - prefix = id.replace("/","_")+"/"; - //qDebug() << "ID:" << PLUGID << prefix; - settings = LSession::handle()->DesktopPluginSettings(); - //Setup the plugin system control menu - menu = new QMenu(this); - setupMenu(); - //Setup the internal timer for when to start/stop drag events - dragTimer = new QTimer(this); - dragTimer->setSingleShot(true); - dragTimer->setInterval(500); //1/2 second to show the plugin menu - connect(dragTimer, SIGNAL(timeout()), this, SLOT(showPluginMenu())); - //Use plugin-specific values for stylesheet control (applauncher, desktopview, etc...) - this->setObjectName(id.section("---",0,0).section("::",0,0)); - this->setContextMenuPolicy(Qt::CustomContextMenu); - this->setMouseTracking(false); //only catch mouse movement events if the mouse is clicked/held on the plugin - connect(QApplication::instance(), SIGNAL(LocaleChanged()), this, SLOT(LocaleChange()) ); - connect(QApplication::instance(), SIGNAL(IconThemeChanged()), this, SLOT(ThemeChange()) ); - connect(this, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(showPluginMenu()) ); -} - -void LDPlugin::setupMenu(){ - menu->clear(); - //SPECIAL CONTEXT MENU OPTIONS FOR PARTICULAR PLUGIN TYPES - if(PLUGID.startsWith("applauncher::")){ - menu->addAction( LXDG::findIcon("quickopen",""), tr("Launch Item"), this, SIGNAL(PluginActivated()) ); - menu->addSeparator(); - } - //General Options - menu->addAction( LXDG::findIcon("transform-move",""), tr("Start Moving Item"), this, SLOT(slotStartMove()) ); - menu->addAction( LXDG::findIcon("transform-scale",""), tr("Start Resizing Item"), this, SLOT(slotStartResize()) ); - menu->addSeparator(); - menu->addAction( LXDG::findIcon("zoom-in",""), tr("Increase Item Sizes"), this, SIGNAL(IncreaseIconSize()) ); - menu->addAction( LXDG::findIcon("zoom-out",""), tr("Decrease Item Sizes"), this, SIGNAL(DecreaseIconSize()) ); - menu->addSeparator(); - menu->addAction( LXDG::findIcon("edit-delete",""), tr("Remove Item"), this, SLOT(slotRemovePlugin()) ); -} - -/*void LDPlugin::setInitialSize(int width, int height){ - //Note: Only run this in the plugin initization routine: - // if the plugin is completely new (first time used), it will be this size - if(settings->allKeys().filter(prefix+"location").isEmpty()){ - //Brand new plugin: set initial size - //qDebug() << "Setting Initial Size:" << PLUGID << width << height; - settings->setValue(prefix+"location/width",width); - settings->setValue(prefix+"location/height",height); - settings->sync(); - } - //Now make sure the plugin is the saved size right away - this->resize( settings->value(prefix+"location/width").toInt(), settings->value(prefix+"location/height").toInt()); -}*/ diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/LDPlugin.h b/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/LDPlugin.h deleted file mode 100644 index 820880ed..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/LDPlugin.h +++ /dev/null @@ -1,156 +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 desktop plugins -// Simply subclass this when creating a new plugin to enable correct -// visibility and usage within the desktop window -//=========================================== -// WARNING: Do *not* setup a custom context menu for the entire plugins area! -// This can prevent access to the general desktop context menu if -// the plugin was maximized to fill the desktop area! -//=========================================== -#ifndef _LUMINA_DESKTOP_DESKTOP_PLUGIN_H -#define _LUMINA_DESKTOP_DESKTOP_PLUGIN_H - -#include <QObject> -#include <QFrame> -#include <QWidget> -#include <QString> -#include <QDebug> -#include <QSettings> -#include <QMoveEvent> -#include <QResizeEvent> -#include <QMouseEvent> -#include <QTimer> -#include <QMenu> - -class LDPlugin : public QFrame{ - Q_OBJECT - -private: - QString PLUGID, prefix; - QSettings *settings; - QMenu *menu; - QTimer *dragTimer; - - void setupMenu(); - -public: - LDPlugin(QWidget *parent = 0, QString id="unknown"); - - ~LDPlugin(){} - - QString ID(){ - return PLUGID; - } - - virtual QSize defaultPluginSize(){ - //This needs to be re-implemented in the subclassed plugin - // The returned QSize is in grid points (typically 100 or 200 pixels square) - return QSize(1,1); //1x1 grid size - } - - void savePluginGeometry(QRect geom){ - settings->setValue(prefix+"geometry/desktopGridPoints", geom); - settings->sync(); - } - - QRect loadPluginGeometry(){ - return settings->value(prefix+"geometry/desktopGridPoints", QRect()).toRect(); - } - - void saveSetting(QString var, QVariant val){ - //qDebug() << "Saving Setting:" << prefix+var+QString(" = ")+val.toString(); - settings->setValue(prefix+var, val); - settings->sync(); - } - - QVariant readSetting(QString var, QVariant defaultval){ - return settings->value(prefix+var, defaultval); - } - - virtual void Cleanup(){ - //This needs to be re-implemented in the subclassed plugin - //This is where any last-minute changes are performed before a plugin is removed permanently - //Note1: This is *not* called if the plugin is being temporarily closed - //Note2: All the settings for this plugin will be automatically removed after this is finished - } - - void removeSettings(bool permanent = false){ //such as when a plugin is deleted - if(permanent){ Cleanup(); } - QStringList list = settings->allKeys().filter(prefix); - for(int i=0; i<list.length(); i++){ settings->remove(list[i]); } - - } - -public slots: - virtual void LocaleChange(){ - //This needs to be re-implemented in the subclassed plugin - //This is where all text is set/translated - setupMenu(); - } - virtual void ThemeChange(){ - //This needs to be re-implemented in the subclassed plugin - //This is where all the visuals are set if using Theme-dependant icons. - setupMenu(); - } - void showPluginMenu(){ - emit CloseDesktopMenu(); - menu->popup( QCursor::pos() ); - } - -signals: - void OpenDesktopMenu(); - void CloseDesktopMenu(); - void PluginResized(); - void PluginActivated(); - - //Signals for communication with the desktop layout system (not generally used by hand) - void StartMoving(QString); //ID of plugin - void StartResizing(QString); //ID of plugin - void RemovePlugin(QString); //ID of plugin - void IncreaseIconSize(); // only used for desktop icons - void DecreaseIconSize(); // only used for desktop icons - -private slots: - void slotStartMove(){ - QCursor::setPos( this->mapToGlobal(QPoint(this->width()/2, this->height()/2)) ); - emit StartMoving(PLUGID); - } - - void slotStartResize(){ - QCursor::setPos( this->mapToGlobal(QPoint(this->width()/2, this->height()/2)) ); - emit StartResizing(PLUGID); - } - - void slotRemovePlugin(){ - removeSettings(true); - emit RemovePlugin(PLUGID); - } - -protected: - void mousePressEvent(QMouseEvent *ev){ - if(!dragTimer->isActive() && ev->buttons().testFlag(Qt::LeftButton) ){ dragTimer->start(); } - QWidget::mousePressEvent(ev); - } - void mouseReleaseEvent(QMouseEvent *ev){ - if(dragTimer->isActive()){ dragTimer->stop(); } - QWidget::mouseReleaseEvent(ev); - } - void mouseMoveEvent(QMouseEvent *ev){ - if(ev->buttons().testFlag(Qt::LeftButton)){ - if(dragTimer->isActive()){ dragTimer->stop(); } - slotStartMove(); - } - QWidget::mouseMoveEvent(ev); - } - void resizeEvent(QResizeEvent *ev){ - emit PluginResized(); - QFrame::resizeEvent(ev); //do normal processing - } -}; - -#endif diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/NewDP.h b/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/NewDP.h deleted file mode 100644 index e28b8c61..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/NewDP.h +++ /dev/null @@ -1,63 +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 the interface to load all the different desktop plugins -//=========================================== -#ifndef _LUMINA_DESKTOP_NEW_DESKTOP_PLUGIN_H -#define _LUMINA_DESKTOP_NEW_DESKTOP_PLUGIN_H - -#include <QDebug> - -//List all the individual plugin includes here -#include "LDPlugin.h" -//#include "SamplePlugin.h" -#include "calendar/CalendarPlugin.h" -#include "applauncher/AppLauncherPlugin.h" -#include "desktopview/DesktopViewPlugin.h" -#include "notepad/NotepadPlugin.h" -#include "audioplayer/PlayerWidget.h" -#include "systemmonitor/MonitorWidget.h" -//#include "quickcontainer/QuickDPlugin.h" -//#include "messagecenter/MessageCenter.h" -#include "rssreader/RSSFeedPlugin.h" - -class NewDP{ -public: - static LDPlugin* createPlugin(QString plugin, QWidget* parent=0){ - //qDebug() << "Create Plugin:" << plugin; - LDPlugin *plug = 0; - /*if(plugin.section("---",0,0)=="sample"){ - plug = new SamplePlugin(parent, plugin); - }else */ - if(plugin.section("---",0,0)=="calendar"){ - plug = new CalendarPlugin(parent, plugin); - }else if(plugin.section("---",0,0).section("::",0,0)=="applauncher"){ - //This plugin can be pre-initialized to a file path after the "::" delimiter - plug = new AppLauncherPlugin(parent, plugin); - }else if(plugin.section("---",0,0)=="desktopview"){ - plug = new DesktopViewPlugin(parent, plugin); - }else if(plugin.section("---",0,0)=="notepad"){ - plug = new NotePadPlugin(parent, plugin); - }else if(plugin.section("---",0,0)=="audioplayer"){ - plug = new AudioPlayerPlugin(parent, plugin); - }else if(plugin.section("---",0,0)=="systemmonitor"){ - plug = new SysMonitorPlugin(parent, plugin); - //}else if(plugin.section("---",0,0)=="messagecenter"){ - //plug = new MessageCenterPlugin(parent, plugin); - //}else if(plugin.section("---",0,0).startsWith("quick-") && LUtils::validQuickPlugin(plugin.section("---",0,0)) ){ - //plug = new QuickDPlugin(parent, plugin); - }else if(plugin.section("---",0,0)=="rssreader"){ - plug = new RSSFeedPlugin(parent, plugin); - }else{ - qWarning() << "Invalid Desktop Plugin:"<<plugin << " -- Ignored"; - } - //qDebug() << " -- done"; - return plug; - } - -}; - -#endif diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/SamplePlugin.h b/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/SamplePlugin.h deleted file mode 100644 index 4a790c2d..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/SamplePlugin.h +++ /dev/null @@ -1,38 +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 quick sample desktop plugin -//=========================================== -#ifndef _LUMINA_DESKTOP_DESKTOP_PLUGIN_SAMPLE_H -#define _LUMINA_DESKTOP_DESKTOP_PLUGIN_SAMPLE_H - -#include <QPushButton> -#include <QMessageBox> -#include <QVBoxLayout> -#include "LDPlugin.h" - -class SamplePlugin : public LDPlugin{ - Q_OBJECT -public: - SamplePlugin(QWidget* parent, QString ID) : LDPlugin(parent, ID){ - this->setLayout( new QVBoxLayout()); - this->layout()->setContentsMargins(0,0,0,0); - button = new QPushButton("sample"); - this->layout()->addWidget(button); - connect(button, SIGNAL(clicked()), this, SLOT(showMessage()) ); - } - - ~SamplePlugin(){} - -private: - QPushButton *button; - -private slots: - void showMessage(){ - QMessageBox::information(this,"sample","sample desktop plugin works"); - } -}; -#endif diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/applauncher/AppLauncherPlugin.cpp b/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/applauncher/AppLauncherPlugin.cpp deleted file mode 100644 index 3be19faa..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/applauncher/AppLauncherPlugin.cpp +++ /dev/null @@ -1,145 +0,0 @@ -#include "AppLauncherPlugin.h" -#include "../../LSession.h" -#include "OutlineToolButton.h" - -#define OUTMARGIN 10 //special margin for fonts due to the outlining effect from the OutlineToolbutton - -AppLauncherPlugin::AppLauncherPlugin(QWidget* parent, QString ID) : LDPlugin(parent, ID){ - QVBoxLayout *lay = new QVBoxLayout(); - this->setLayout(lay); - lay->setContentsMargins(0,0,0,0); - button = new OutlineToolButton(this); - button->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); - button->setAutoRaise(true); - button->setText("...\n..."); //Need to set something here so that initial sizing works properly - button->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Expanding); - lay->addWidget(button, 0, Qt::AlignCenter); - connect(button, SIGNAL(DoubleClicked()), this, SLOT(buttonClicked()) ); - button->setContextMenuPolicy(Qt::NoContextMenu); - watcher = new QFileSystemWatcher(this); - connect(watcher, SIGNAL(fileChanged(QString)), this, SLOT( loadButton()) ); - - connect(this, SIGNAL(PluginActivated()), this, SLOT(buttonClicked()) ); //in case they use the context menu to launch it. - loadButton(); - //QTimer::singleShot(0,this, SLOT(loadButton()) ); -} - -void AppLauncherPlugin::Cleanup(){ - //This is run only when the plugin was forcibly closed/removed - -} - -void AppLauncherPlugin::loadButton(){ - QString def = this->ID().section("::",1,50).section("---",0,0).simplified(); - QString path = this->readSetting("applicationpath",def).toString(); //use the default if necessary - //qDebug() << "Default Application Launcher:" << def << path; - bool ok = QFile::exists(path); - if(!ok){ emit RemovePlugin(this->ID()); return;} - int icosize = this->height()-4 - 2.2*button->fontMetrics().height(); - button->setFixedSize( this->width()-4, this->height()-4); - button->setIconSize( QSize(icosize,icosize) ); - QString txt; - if(path.endsWith(".desktop") && ok){ - XDGDesktop file(path); - ok = !file.name.isEmpty(); - if(!ok){ - button->setWhatsThis(""); - button->setIcon( QIcon(LXDG::findIcon("quickopen-file","").pixmap(QSize(icosize,icosize)).scaledToHeight(icosize, Qt::SmoothTransformation) ) ); - txt = tr("Click to Set"); - if(!watcher->files().isEmpty()){ watcher->removePaths(watcher->files()); } - }else{ - button->setWhatsThis(file.filePath); - button->setIcon( QIcon(LXDG::findIcon(file.icon,"system-run").pixmap(QSize(icosize,icosize)).scaledToHeight(icosize, Qt::SmoothTransformation) ) ); - txt = file.name; - if(!watcher->files().isEmpty()){ watcher->removePaths(watcher->files()); } - watcher->addPath(file.filePath); //make sure to update this shortcut if the file changes - } - }else if(ok){ - QFileInfo info(path); - button->setWhatsThis(info.absoluteFilePath()); - if(info.isDir()){ - button->setIcon( LXDG::findIcon("folder","") ); - }else if(LUtils::imageExtensions().contains(info.suffix().toLower()) ){ - QPixmap pix; - if(pix.load(path)){ button->setIcon( QIcon(pix.scaled(256,256)) ); } //max size for thumbnails in memory - else{ button->setIcon( LXDG::findIcon("dialog-cancel","") ); } - }else{ - button->setIcon( QIcon(LXDG::findMimeIcon(path).pixmap(QSize(icosize,icosize)).scaledToHeight(icosize, Qt::SmoothTransformation) ) ); - } - txt = info.fileName(); - if(!watcher->files().isEmpty()){ watcher->removePaths(watcher->files()); } - watcher->addPath(path); //make sure to update this shortcut if the file changes - }else{ - //InValid File - button->setWhatsThis(""); - button->setIcon( QIcon(LXDG::findIcon("quickopen","dialog-cancel").pixmap(QSize(icosize,icosize)).scaledToHeight(icosize, Qt::SmoothTransformation) ) ); - button->setText( tr("Click to Set") ); - if(!watcher->files().isEmpty()){ watcher->removePaths(watcher->files()); } - } - //If the file is a symlink, put the overlay on the icon - if(QFileInfo(path).isSymLink()){ - QImage img = button->icon().pixmap(QSize(icosize,icosize)).toImage(); - int oSize = icosize/3; //overlay size - QPixmap overlay = LXDG::findIcon("emblem-symbolic-link").pixmap(oSize,oSize).scaled(oSize,oSize, Qt::KeepAspectRatio, Qt::SmoothTransformation); - QPainter painter(&img); - painter.drawPixmap(icosize-oSize,icosize-oSize,overlay); //put it in the bottom-right corner - button->setIcon( QIcon(QPixmap::fromImage(img)) ); - } - //Now adjust the visible text as necessary based on font/grid sizing - button->setToolTip(txt); - //Double check that the visual icon size matches the requested size - otherwise upscale the icon - if(button->fontMetrics().width(txt) > (button->width()-OUTMARGIN) ){ - //Text too long, try to show it on two lines - //txt = button->fontMetrics().elidedText(txt, Qt::ElideRight, 2*(button->width()-OUTMARGIN), Qt::TextWordWrap); - txt =txt.section(" ",0,2).replace(" ","\n"); //First take care of any natural breaks - //Go through and combine any lines - if(txt.contains("\n")){ - //need to check each line - QStringList txtL = txt.split("\n"); - for(int i=0; i<txtL.length(); i++){ - if(( i+1<txtL.length()) && (button->fontMetrics().width(txtL[i]) < button->width()/2) ){ - txtL[i] = txtL[i]+" "+txtL[i+1]; - txtL.removeAt(i+1); - } - } - txt = txtL.join("\n").section("\n",0,2); - } - - if(txt.contains("\n")){ - //need to check each line - QStringList txtL = txt.split("\n"); - for(int i=0; i<txtL.length(); i++){ - if(i>1){ txtL.removeAt(i); i--; } //Only take the first two lines - else{ txtL[i] = button->fontMetrics().elidedText(txtL[i], Qt::ElideRight, (button->width()-OUTMARGIN) ); } - } - txt = txtL.join("\n"); - }else{ - txt = this->fontMetrics().elidedText(txt,Qt::ElideRight, 2*(button->width()-OUTMARGIN)); - //Now split the line in half for the two lines - txt.insert( ((txt.count())/2), "\n"); - } - } - if(!txt.contains("\n")){ txt.append("\n "); } //always use two lines - //qDebug() << " - Setting Button Text:" << txt; - button->setText(txt); - - QTimer::singleShot(100, this, SLOT(update()) ); //Make sure to re-draw the image in a moment -} - -void AppLauncherPlugin::buttonClicked(){ - QString path = button->whatsThis(); - if(path.isEmpty() || !QFile::exists(path) ){ - //prompt for the user to select an application - QList<XDGDesktop*> apps = LSession::handle()->applicationMenu()->currentAppHash()->value("All"); //LXDG::sortDesktopNames( LXDG::systemDesktopFiles() ); - 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 - this->saveSetting("applicationpath", apps[ names.indexOf(app) ]->filePath); - QTimer::singleShot(0,this, SLOT(loadButton())); - }else{ - LSession::LaunchApplication("lumina-open \""+path+"\""); - } - -} diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/applauncher/AppLauncherPlugin.h b/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/applauncher/AppLauncherPlugin.h deleted file mode 100644 index a0f6a7cd..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/applauncher/AppLauncherPlugin.h +++ /dev/null @@ -1,59 +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 quick sample desktop plugin -//=========================================== -#ifndef _LUMINA_DESKTOP_DESKTOP_PLUGIN_APPLICATION_LAUNCHER_H -#define _LUMINA_DESKTOP_DESKTOP_PLUGIN_APPLICATION_LAUNCHER_H - -#include <QToolButton> -#include <QInputDialog> -#include <QVBoxLayout> -#include <QProcess> -#include <QFile> -#include <QFileSystemWatcher> -#include <QTimer> -#include <QMenu> -#include <QCursor> - -#include "../LDPlugin.h" - -#include <LuminaXDG.h> - -class AppLauncherPlugin : public LDPlugin{ - Q_OBJECT -public: - AppLauncherPlugin(QWidget* parent, QString ID); - ~AppLauncherPlugin(){} - - void Cleanup(); //special function for final cleanup - -private: - QToolButton *button; - QFileSystemWatcher *watcher; - //QMenu *menu; - -private slots: - void loadButton(); - void buttonClicked(); - //void openContextMenu(); - - //void increaseIconSize(); - //void decreaseIconSize(); - //void deleteFile(); - -public slots: - void LocaleChange(){ - loadButton(); //force reload - } - -protected: - void resizeEvent(QResizeEvent *ev){ - LDPlugin::resizeEvent(ev); - QTimer::singleShot(100, this, SLOT(loadButton()) ); - } -}; -#endif diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/applauncher/OutlineToolButton.h b/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/applauncher/OutlineToolButton.h deleted file mode 100644 index 24410e75..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/applauncher/OutlineToolButton.h +++ /dev/null @@ -1,99 +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 is a simple subclass for a QToolButton with black/white text (for transparent backgrounds) -//=========================================== -#ifndef _LUMINA_DESKTOP_PLUGIN_APPLAUNCHER_OUTLINE_TOOLBUTTON_H -#define _LUMINA_DESKTOP_PLUGIN_APPLAUNCHER_OUTLINE_TOOLBUTTON_H - -#include <QToolButton> -#include <QPainter> -#include <QPainterPath> -#include <QPen> -#include <QStyle> -#include <QStyleOption> -#include <QStylePainter> -#include <QFont> -#include <QDebug> -#include <QMouseEvent> - - -class OutlineToolButton : public QToolButton{ - Q_OBJECT -public: - OutlineToolButton(QWidget *parent=0) : QToolButton(parent){ - //This button needs slightly different font settings - do this in the constructor so that other widgets can take it into account. - QFont font = this->font(); - font.setStyleStrategy(QFont::PreferAntialias); //Always set the font strategy (just in case it starts working down the road) - this->setFont(font); - this->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); - } - ~OutlineToolButton(){} - -signals: - void DoubleClicked(); - -protected: - void mouseDoubleClickEvent(QMouseEvent *ev){ - ev->accept(); - emit DoubleClicked(); - } - void mousePressEvent(QMouseEvent *ev){ - ev->ignore(); - } - void mouseReleaseEvent(QMouseEvent *ev){ - ev->ignore(); - } - - 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); - */ - - //Modify the standard QToolButton routine to paint the text differently - QStylePainter p(this); - QStyleOptionToolButton opt; - initStyleOption(&opt); - opt.font = this->property("font").value<QFont>(); //This ensures that the stylesheet values are incorporated - opt.font.setStyleStrategy(QFont::PreferAntialias); //Always set the font strategy (just in case it starts working down the road) - opt.font.setKerning(true); - opt.fontMetrics = QFontMetrics(opt.font); - opt.text.clear(); //Don't paint the text yet - just the background/icon - p.drawComplexControl(QStyle::CC_ToolButton, opt); //This does all the normal QToolButton stuff - just not text - //Now get the text rectangle for the widget - QRect box = p.style()->itemTextRect(opt.fontMetrics, opt.rect, Qt::AlignHCenter | Qt::AlignBottom, true, this->text()); - //Get the QColors for the outline/text - QColor textC = opt.palette.text().color().toHsl(); //need the lightness value in a moment - QColor outC = textC; - //qDebug() << "Font Color Values:" << textC << textC.lightness() << textC.lightnessF(); - if(textC.lightnessF() > 0.5){ outC.setHsl(textC.hue(), textC.hslSaturation(), 0, 90); } - else{outC.setHsl(textC.hue(), textC.hslSaturation(), 255, 50); } - //qDebug() << "Outline Color Values:" << outC; - //Now get the size of the outline border (need to scale for high-res monitors) - qreal OWidth = opt.fontMetrics.width("o")/2.0; - //qDebug() << "Outline Width:" << OWidth; - //Now generate a QPainterPath for the text - QPainterPath path; - QStringList txt = this->text().split("\n"); //need each line independently, the newline actually gets painted otherwise - for(int i=0; i<txt.length(); i++){ - path.addText(box.center().x() - (opt.fontMetrics.width(txt[i])/2), box.y()+((i+1)*(box.height()/txt.length()))-opt.fontMetrics.descent(), opt.font, txt[i] ); - } - path.setFillRule(Qt::WindingFill); - //Now paint the text - QRadialGradient RG(box.center(), box.width()*1.5); //width is always going to be greater than height - RG.setColorAt(0, outC); - RG.setColorAt(1, Qt::transparent); - p.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing); //need antialiasing for this to work well (sub-pixel painting) - p.strokePath(path, QPen(QBrush(RG),OWidth, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin) ); //This will be the outline - 1pixel thick, semi-transparent - p.fillPath(path, QBrush(textC)); //this will be the inside/text color - - } - -}; -#endif diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/audioplayer/PlayerWidget.cpp b/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/audioplayer/PlayerWidget.cpp deleted file mode 100644 index 722a5865..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/audioplayer/PlayerWidget.cpp +++ /dev/null @@ -1,271 +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 "PlayerWidget.h" -#include "ui_PlayerWidget.h" - -#include <QDir> -#include <QUrl> -#include <QInputDialog> -#include <QFileDialog> -#include <LuminaXDG.h> -#include <QDebug> -#include <QDesktopWidget> - -PlayerWidget::PlayerWidget(QWidget *parent) : QWidget(parent), ui(new Ui::PlayerWidget()){ - 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()) ); - -} - -PlayerWidget::~PlayerWidget(){ - //qDebug() << "Removing PlayerWidget"; -} - -void PlayerWidget::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 PlayerWidget::playClicked(){ - PLAYER->play(); -} - -void PlayerWidget::pauseClicked(){ - PLAYER->pause(); -} - -void PlayerWidget::stopClicked(){ - PLAYER->stop(); -} - -void PlayerWidget::nextClicked(){ - PLAYLIST->next(); -} - -void PlayerWidget::prevClicked(){ - PLAYLIST->previous(); -} - -void PlayerWidget::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 PlayerWidget::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 PlayerWidget::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 PlayerWidget::ClearPlaylist(){ - PLAYER->stop(); - PLAYLIST->clear(); - playlistChanged(); -} - -void PlayerWidget::ShufflePlaylist(){ - PLAYLIST->shuffle(); -} - - -void PlayerWidget::userlistSelectionChanged(){ //front-end combobox was changed by the user - if(updatinglists){ return; } - PLAYLIST->setCurrentIndex( ui->combo_playlist->currentIndex() ); -} - -void PlayerWidget::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 PlayerWidget::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 PlayerWidget::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 PlayerWidget::updateProgress(qint64 val){ - //qDebug() << "Update Progress Bar:" << val; - ui->progressBar->setValue(val); -} - -void PlayerWidget::updateMaxProgress(qint64 val){ - ui->progressBar->setRange(0,val); -} - - -AudioPlayerPlugin::AudioPlayerPlugin(QWidget *parent, QString ID) : LDPlugin(parent, ID){ - player = new PlayerWidget(this); - this->setLayout( new QVBoxLayout() ); - this->layout()->setContentsMargins(0,0,0,0); - this->layout()->addWidget(player); - -} - -AudioPlayerPlugin::~AudioPlayerPlugin(){ - //qDebug() << "Remove AudioPlayerPlugin"; -} diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/audioplayer/PlayerWidget.h b/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/audioplayer/PlayerWidget.h deleted file mode 100644 index 6aaeac4c..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/audioplayer/PlayerWidget.h +++ /dev/null @@ -1,84 +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_DESKTOP_PLUGIN_AUDIO_PLAYER_WIDGET_H -#define _LUMINA_DESKTOP_PLUGIN_AUDIO_PLAYER_WIDGET_H - -#include <QMediaPlaylist> -#include <QMediaPlayer> -#include <QTimer> -#include <QWidget> -#include <QMenu> - -#include "../LDPlugin.h" - -namespace Ui{ - class PlayerWidget; -}; - -class PlayerWidget : public QWidget{ - Q_OBJECT -public: - PlayerWidget(QWidget *parent = 0); - ~PlayerWidget(); - -public slots: - void LoadIcons(); - -private: - Ui::PlayerWidget *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); -}; - -// Wrapper class to put this into a desktop plugin container -class AudioPlayerPlugin : public LDPlugin{ - Q_OBJECT -public: - AudioPlayerPlugin(QWidget* parent, QString ID); - ~AudioPlayerPlugin(); - - virtual QSize defaultPluginSize(){ - // The returned QSize is in grid points (typically 100 or 200 pixels square) - return QSize(3,1); - } - -private: - PlayerWidget *player; - -public slots: - void LocaleChange(){ - QTimer::singleShot(0,player, SLOT(LoadIcons())); - } - void ThemeChange(){ - QTimer::singleShot(0,player, SLOT(LoadIcons())); - } -}; - -#endif diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/audioplayer/PlayerWidget.ui b/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/audioplayer/PlayerWidget.ui deleted file mode 100644 index b1e7ee59..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/audioplayer/PlayerWidget.ui +++ /dev/null @@ -1,182 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>PlayerWidget</class> - <widget class="QWidget" name="PlayerWidget"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>346</width> - <height>81</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/desktop-plugins/calendar/CalendarPlugin.h b/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/calendar/CalendarPlugin.h deleted file mode 100644 index abb138f7..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/calendar/CalendarPlugin.h +++ /dev/null @@ -1,59 +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 quick sample desktop plugin -//=========================================== -#ifndef _LUMINA_DESKTOP_DESKTOP_PLUGIN_CALENDAR_H -#define _LUMINA_DESKTOP_DESKTOP_PLUGIN_CALENDAR_H - -#include <QCalendarWidget> -#include <QVBoxLayout> -#include <QDate> -#include <QTimer> -#include "../LDPlugin.h" - -class CalendarPlugin : public LDPlugin{ - Q_OBJECT -private: - QCalendarWidget *cal; - QTimer *timer; - -public: - CalendarPlugin(QWidget* parent, QString ID) : LDPlugin(parent, ID){ - this->setLayout( new QVBoxLayout()); - this->layout()->setContentsMargins(0,0,0,0); - cal = new QCalendarWidget(this); - cal->setSelectionMode(QCalendarWidget::NoSelection); - this->layout()->addWidget(cal); - timer = new QTimer(this); - timer->setInterval(1800000); //30 minute refresh timer - timer->start(); - connect(timer, SIGNAL(timeout()), this, SLOT(updateDate()) ); - QTimer::singleShot(0,this, SLOT(updateDate()) ); - connect(this, SIGNAL(PluginResized()), this, SLOT(UpdateCalendarSize())); - } - - ~CalendarPlugin(){ timer->stop(); } - - virtual QSize defaultPluginSize(){ - // The returned QSize is in grid points (typically 100 or 200 pixels square) - return QSize(3,2); - } - -private slots: - void updateDate(){ - if(cal->selectedDate() != QDate::currentDate()){ - cal->setSelectedDate(QDate::currentDate()); - cal->showSelectedDate(); - } - } - void UpdateCalendarSize(){ - cal->setFixedSize(this->size()); - } - - -}; -#endif diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/desktop-plugins.pri b/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/desktop-plugins.pri deleted file mode 100644 index 8376316a..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/desktop-plugins.pri +++ /dev/null @@ -1,24 +0,0 @@ -SOURCES += $$PWD/applauncher/AppLauncherPlugin.cpp \ - $$PWD/desktopview/DesktopViewPlugin.cpp \ - $$PWD/notepad/NotepadPlugin.cpp \ - $$PWD/audioplayer/PlayerWidget.cpp \ - $$PWD/systemmonitor/MonitorWidget.cpp \ - $$PWD/rssreader/RSSFeedPlugin.cpp \ - $$PWD/rssreader/RSSObjects.cpp -# $$PWD/messagecenter/MessageCenter.cpp - -HEADERS += $$PWD/calendar/CalendarPlugin.h \ - $$PWD/applauncher/AppLauncherPlugin.h \ - $$PWD/applauncher/OutlineToolButton.h \ - $$PWD/desktopview/DesktopViewPlugin.h \ - $$PWD/notepad/NotepadPlugin.h \ - $$PWD/audioplayer/PlayerWidget.h \ - $$PWD/systemmonitor/MonitorWidget.h \ - $$PWD/rssreader/RSSFeedPlugin.h \ - $$PWD/rssreader/RSSObjects.h -# $$PWD/quickcontainer/QuickDPlugin.h -# $$PWD/messagecenter/MessageCenter.h - -FORMS += $$PWD/audioplayer/PlayerWidget.ui \ - $$PWD/systemmonitor/MonitorWidget.ui \ - $$PWD/rssreader/RSSFeedPlugin.ui diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/desktopview/DesktopViewPlugin.cpp b/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/desktopview/DesktopViewPlugin.cpp deleted file mode 100644 index 90f3374b..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/desktopview/DesktopViewPlugin.cpp +++ /dev/null @@ -1,214 +0,0 @@ -#include "DesktopViewPlugin.h" - -#include <QFileInfo> -#include <QDir> -#include <QClipboard> -#include <QMimeData> -#include <QImageReader> - -#include <LuminaXDG.h> -#include "LSession.h" - - -DesktopViewPlugin::DesktopViewPlugin(QWidget* parent, QString ID) : LDPlugin(parent, ID){ - this->setLayout( new QVBoxLayout()); - this->layout()->setContentsMargins(0,0,0,0); - - list = new QListWidget(this); - list->setViewMode(QListView::IconMode); - list->setFlow(QListWidget::TopToBottom); //Qt bug workaround - need the opposite flow in the widget constructor - list->setWrapping(true); - list->setSpacing(4); - list->setSelectionBehavior(QAbstractItemView::SelectItems); - list->setSelectionMode(QAbstractItemView::ExtendedSelection); - list->setContextMenuPolicy(Qt::CustomContextMenu); - list->setMovement(QListView::Snap); //make sure items are "stuck" in the grid - - menu = new QMenu(this); - menu->addAction( LXDG::findIcon("run-build-file",""), tr("Open"), this, SLOT(runItems()) ); - menu->addSeparator(); - menu->addAction( LXDG::findIcon("edit-cut",""), tr("Cut"), this, SLOT(cutItems()) ); - menu->addAction( LXDG::findIcon("edit-copy",""), tr("Copy"), this, SLOT(copyItems()) ); - menu->addSeparator(); - menu->addAction( LXDG::findIcon("zoom-in",""), tr("Increase Icons"), this, SLOT(increaseIconSize()) ); - menu->addAction( LXDG::findIcon("zoom-out",""), tr("Decrease Icons"), this, SLOT(decreaseIconSize()) ); - menu->addSeparator(); - menu->addAction( LXDG::findIcon("edit-delete",""), tr("Delete"), this, SLOT(deleteItems()) ); - menu->addSeparator(); - if(LUtils::isValidBinary("lumina-fileinfo")){ - menu->addAction( LXDG::findIcon("system-search",""), tr("Properties"), this, SLOT(displayProperties()) ); - } - this->layout()->addWidget(list); - - connect(QApplication::instance(), SIGNAL(DesktopFilesChanged()), this, SLOT(updateContents()) ); - connect(list, SIGNAL(itemActivated(QListWidgetItem*)), this, SLOT(runItems()) ); - connect(list, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(showMenu(const QPoint&)) ); - QTimer::singleShot(1000,this, SLOT(updateContents()) ); //wait a second before loading contents -} - -DesktopViewPlugin::~DesktopViewPlugin(){ - -} - -void DesktopViewPlugin::runItems(){ - QList<QListWidgetItem*> sel = list->selectedItems(); - for(int i=0; i<sel.length(); i++){ - LSession::LaunchApplication("lumina-open \""+sel[i]->whatsThis()+"\""); - } -} - -void DesktopViewPlugin::copyItems(){ - QList<QListWidgetItem*> sel = list->selectedItems(); - if(sel.isEmpty()){ return; } //nothing selected - QStringList items; - //Format the data string - for(int i=0; i<sel.length(); i++){ - items << "copy::::"+sel[i]->whatsThis(); - } - //Now save that data to the global clipboard - QMimeData *dat = new QMimeData; - dat->clear(); - dat->setData("x-special/lumina-copied-files", items.join("\n").toLocal8Bit()); - QApplication::clipboard()->clear(); - QApplication::clipboard()->setMimeData(dat); -} - -void DesktopViewPlugin::cutItems(){ - QList<QListWidgetItem*> sel = list->selectedItems(); - if(sel.isEmpty()){ return; } //nothing selected - QStringList items; - //Format the data string - for(int i=0; i<sel.length(); i++){ - items << "cut::::"+sel[i]->whatsThis(); - } - //Now save that data to the global clipboard - QMimeData *dat = new QMimeData; - dat->clear(); - dat->setData("x-special/lumina-copied-files", items.join("\n").toLocal8Bit()); - QApplication::clipboard()->clear(); - QApplication::clipboard()->setMimeData(dat); -} - -void DesktopViewPlugin::deleteItems(){ - QList<QListWidgetItem*> sel = list->selectedItems(); - for(int i=0; i<sel.length(); i++){ - if(QFileInfo(sel[i]->whatsThis()).isDir()){ - QProcess::startDetached("rm -r \""+sel[i]->whatsThis()+"\""); - }else{ - QFile::remove(sel[i]->whatsThis()); - } - } -} - -void DesktopViewPlugin::showMenu(const QPoint &pos){ - //Make sure there is an item underneath the mouse first - if(list->itemAt(pos)!=0){ - menu->popup(this->mapToGlobal(pos)); - }else{ - //Pass the context menu request on to the desktop (emit it from the plugin) - this->showPluginMenu(); - //emit OpenDesktopMenu(); - } -} - -void DesktopViewPlugin::increaseIconSize(){ - int icosize = this->readSetting("IconSize",64).toInt(); - icosize+=16; //go in orders of 16 pixels - //list->setIconSize(QSize(icosize,icosize)); - this->saveSetting("IconSize",icosize); - QTimer::singleShot(10, this, SLOT(updateContents())); -} - -void DesktopViewPlugin::decreaseIconSize(){ - int icosize = this->readSetting("IconSize",64).toInt(); - if(icosize < 20){ return; } //too small to decrease more - icosize-=16; //go in orders of 16 pixels - //list->setIconSize(QSize(icosize,icosize)); - this->saveSetting("IconSize",icosize); - QTimer::singleShot(10,this, SLOT(updateContents())); -} - -void DesktopViewPlugin::updateContents(){ - list->clear(); - - int icosize = this->readSetting("IconSize",64).toInt(); - QSize gridSZ = QSize(qRound(1.8*icosize),icosize+4+(2*this->fontMetrics().height()) ); - //qDebug() << "Icon Size:" << icosize <<"Grid Size:" << gridSZ.width() << gridSZ.height(); - list->setGridSize(gridSZ); - list->setIconSize(QSize(icosize,icosize)); - QDir dir(QDir::homePath()+"/Desktop"); - QFileInfoList files = dir.entryInfoList(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot, QDir::Name | QDir::Type | QDir::DirsFirst); - for(int i=0; i<files.length(); i++){ - QListWidgetItem *it = new QListWidgetItem; - it->setSizeHint(gridSZ); //ensure uniform item sizes - //it->setForeground(QBrush(Qt::black, Qt::Dense2Pattern)); //Try to use a font color which will always be visible - it->setTextAlignment(Qt::AlignCenter); - it->setWhatsThis(files[i].absoluteFilePath()); - QString txt; - if(files[i].isDir()){ - it->setIcon( LXDG::findIcon("folder","") ); - txt = files[i].fileName(); - }else if(files[i].suffix() == "desktop" ){ - XDGDesktop desk(files[i].absoluteFilePath()); - if(desk.isValid()){ - it->setIcon( LXDG::findIcon(desk.icon,"unknown") ); - if(desk.name.isEmpty()){ - txt = files[i].fileName(); - }else{ - txt = desk.name; - } - }else{ - //Revert back to a standard file handling - it->setIcon( LXDG::findMimeIcon(files[i].fileName()) ); - txt = files[i].fileName(); - } - }else if(LUtils::imageExtensions().contains(files[i].suffix().toLower()) ){ - it->setIcon( QIcon( QPixmap(files[i].absoluteFilePath()).scaled(icosize,icosize,Qt::IgnoreAspectRatio, Qt::SmoothTransformation) ) ); - txt = files[i].fileName(); - }else{ - it->setIcon( LXDG::findMimeIcon( files[i].fileName() ) ); - txt = files[i].fileName(); - } - //Add the sym-link overlay to the icon as necessary - if(files[i].isSymLink()){ - QImage img = it->icon().pixmap(QSize(icosize,icosize)).toImage(); - int oSize = icosize/2; //overlay size - QPixmap overlay = LXDG::findIcon("emblem-symbolic-link").pixmap(oSize,oSize).scaled(oSize,oSize, Qt::KeepAspectRatio, Qt::SmoothTransformation); - QPainter painter(&img); - painter.drawPixmap(icosize-oSize,icosize-oSize,overlay); //put it in the bottom-right corner - it->setIcon( QIcon(QPixmap::fromImage(img)) ); - } - //Now adjust the visible text as necessary based on font/grid sizing - it->setToolTip(txt); - if(this->fontMetrics().width(txt) > (gridSZ.width()-4) ){ - //int dash = this->fontMetrics().width("-"); - //Text too long, try to show it on two lines - txt = txt.section(" ",0,2).replace(" ","\n"); //First take care of any natural breaks - if(txt.contains("\n")){ - //need to check each line - QStringList txtL = txt.split("\n"); - for(int i=0; i<txtL.length(); i++){ txtL[i] = this->fontMetrics().elidedText(txtL[i], Qt::ElideRight, gridSZ.width()-4); } - txt = txtL.join("\n"); - if(txtL.length()>2){ txt = txt.section("\n",0,1); } //only keep the first two lines - }else{ - txt = this->fontMetrics().elidedText(txt,Qt::ElideRight, 2*(gridSZ.width()-4)); - //Now split the line in half for the two lines - txt.insert( (txt.count()/2), "\n"); - } - }else{ - txt.append("\n "); //ensure two lines (2nd one invisible) - keeps formatting sane - } - it->setText(txt); - list->addItem(it); - if( (i%10) == 0){ QApplication::processEvents(); }//keep the UI snappy, every 10 items - } - list->setFlow(QListWidget::TopToBottom); //To ensure this is consistent - issues with putting it in the constructor - list->update(); //Re-paint the widget after all items are added -} - -void DesktopViewPlugin::displayProperties(){ - QList<QListWidgetItem*> sel = list->selectedItems(); - for(int i=0; i<sel.length(); i++){ - LSession::LaunchApplication("lumina-fileinfo \""+sel[i]->whatsThis()); - } -} diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/desktopview/DesktopViewPlugin.h b/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/desktopview/DesktopViewPlugin.h deleted file mode 100644 index 046b6e5c..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/desktopview/DesktopViewPlugin.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 -//=========================================== -// This plugin is a listing/launcher for things in the ~/Desktop folder -//=========================================== -#ifndef _LUMINA_DESKTOP_DESKTOP_VIEW_PLUGIN_H -#define _LUMINA_DESKTOP_DESKTOP_VIEW_PLUGIN_H - -#include <QListWidget> -#include <QVBoxLayout> -#include <QTimer> -#include <QFileSystemWatcher> -#include <QMouseEvent> - -#include "../LDPlugin.h" - -class DesktopViewPlugin : public LDPlugin{ - Q_OBJECT -public: - DesktopViewPlugin(QWidget* parent, QString ID); - ~DesktopViewPlugin(); - - virtual QSize defaultPluginSize(){ - // The returned QSize is in grid points (typically 100 or 200 pixels square) - return QSize(3,3); - } -private: - QListWidget *list; - QMenu *menu; - -private slots: - void runItems(); - void copyItems(); - void cutItems(); - void deleteItems(); - void showMenu(const QPoint&); - void increaseIconSize(); - void decreaseIconSize(); - void updateContents(); - void displayProperties(); - - -public slots: - void LocaleChange(){ - QTimer::singleShot(0,this, SLOT(updateContents())); - } - void ThemeChange(){ - QTimer::singleShot(0,this, SLOT(updateContents())); - } - -}; -#endif diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/messagecenter/LXDG-DBusNotifier.h b/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/messagecenter/LXDG-DBusNotifier.h deleted file mode 100644 index 64413e95..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/messagecenter/LXDG-DBusNotifier.h +++ /dev/null @@ -1,17 +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 -//=========================================== -// Simple DBUS message handler for the FreeDesktop desktop notifications specification - - -class LXDG-DBusNotifier : public QDBusVirtualObkect{ - Q_OBJECT -public: - -private: - - -}; diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/messagecenter/MessageCenter.cpp b/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/messagecenter/MessageCenter.cpp deleted file mode 100644 index df07a122..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/messagecenter/MessageCenter.cpp +++ /dev/null @@ -1,90 +0,0 @@ -#include "MessageCenter.h" - -#include <LuminaXDG.h> -#include <QVBoxLayout> -#include <QHBoxLayout> -#include <QDBusConnection> -#include <QDBusConnectionInterface> - -MessageCenterPlugin::MessageCenterPlugin(QWidget* parent, QString ID) : LDPlugin(parent, ID){ - //Setup the UI - QVBoxLayout *vlay = new QVBoxLayout(); - this->setLayout( new QVBoxLayout() ); - this->layout()->setContentsMargins(0,0,0,0); - vlay->setContentsMargins(3,3,3,3); - frame = new QFrame(this); - frame->setObjectName("messagecenterbase"); - this->layout()->addWidget(frame); - frame->setLayout(vlay); - - - //Setup the title bar header buttons - QHBoxLayout *hlay = new QHBoxLayout(); - tool_clearall = new QToolButton(this); - tool_clearall->setAutoRaise(true); - tool_clearone = new QToolButton(this); - tool_clearone->setAutoRaise(true); - QWidget *spacer = new QWidget(this); - spacer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); - hlay->addWidget(spacer); - hlay->addWidget(tool_clearone); - hlay->addWidget(tool_clearall); - vlay->addLayout(hlay); - - //Setup the main text widget - list_messages = new QListWidget(this); - list_messages->setSelectionMode(QAbstractItemView::SingleSelection); - list_messages->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); - vlay->addWidget(list_messages); - - //Now setup the initial values - this->setInitialSize(200,300); - //Setup the button connections - connect(tool_clearall, SIGNAL(clicked()), this, SLOT(clearAllMessages()) ); - connect(tool_clearone, SIGNAL(clicked()), this, SLOT(clearSelectedMessage()) ); - - //Setup the DBUS signals/slots - if(QDBusConnection::sessionBus().isConnected()){ - if( QDBusConnection::sessionBus().registerService("org.freedesktop.Notifications") ){ - //Was able to register this service, also register everything it can do... - //SUPPORTED: "body", "body-hyperlinks", "body-markup", "icon-static" - - - } - QDBusConnection::sessionBus().connect("", "", "org.freedesktop.Notifications", "Notify", this, SLOT(newMessage(QString, uint, QString, QString, QString, QStringList, dict, int)) ); - QDBusConnection::sessionBus().interface().call("AddMatch", "interface='org.freedesktop.Notifications',member='Notify',type='method_call',eavesdrop='true'"); - qDebug() << "Available Session DBUS Services:" << QDBusConnection::sessionBus().interface()->registeredServiceNames().value(); - //connect(QString(), QString(), - } - if(QDBusConnection::systemBus().isConnected()){ - qDebug() << "Available System DBUS Services:" << QDBusConnection::systemBus().interface()->registeredServiceNames().value(); - } - - QTimer::singleShot(0,this, SLOT(loadIcons()) ); -} - -MessageCenterPlugin::~MessageCenterPlugin(){ - -} - -void MessageCenterPlugin::newMessage(QString summary, QString body){ - qDebug() << "New Message:" << summary, body; -} - -void MessageCenterPlugin::clearAllMessages(){ - list_messages->clear(); -} - -void MessageCenterPlugin::clearSelectedMessage(){ - if( list_messages->currentItem()==0){ return; } //nothing selected - list_messages->removeItemWidget( list_messages->currentItem() ); -} - - -void MessageCenterPlugin::loadIcons(){ - tool_clearall->setIcon( LXDG::findIcon("edit-clear-list","") ); - tool_clearall->setToolTip( tr("Clear all messages") ); - tool_clearone->setIcon( LXDG::findIcon("edit-delete","") ); - tool_clearone->setToolTip( tr("Clear selected message") ); - -} diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/messagecenter/MessageCenter.h b/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/messagecenter/MessageCenter.h deleted file mode 100644 index 8491546f..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/messagecenter/MessageCenter.h +++ /dev/null @@ -1,48 +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 DBUS monitor which display's messages that come in -//=========================================== -#ifndef _LUMINA_DESKTOP_MESSAGE_CENTER_PLUGIN_H -#define _LUMINA_DESKTOP_MESSAGE_CENTER_PLUGIN_H - -#include <QListWidget> -#include <QToolButton> -#include <QFrame> - -#include <QTimer> -#include "../LDPlugin.h" - -class MessageCenterPlugin : public LDPlugin{ - Q_OBJECT -public: - MessageCenterPlugin(QWidget* parent, QString ID); - ~MessageCenterPlugin(); - -private: - //QDBusConnection *sess, *sys; - QListWidget *list_messages; - QFrame *frame; - QToolButton *tool_clearall; //clear all messages - QToolButton *tool_clearone; //clear selected message - -private slots: - //void newMessage(QDBusMessage *message); - void clearAllMessages(); - void clearSelectedMessage(); - - void loadIcons(); - -public slots: - void LocaleChange(){ - QTimer::singleShot(0,this, SLOT(loadIcons())); - } - void ThemeChange(){ - QTimer::singleShot(0,this, SLOT(loadIcons())); - } - -}; -#endif diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/notepad/NotepadPlugin.cpp b/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/notepad/NotepadPlugin.cpp deleted file mode 100644 index 6d321305..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/notepad/NotepadPlugin.cpp +++ /dev/null @@ -1,330 +0,0 @@ -#include "NotepadPlugin.h" - -#include <LuminaXDG.h> -#include "LSession.h" -#include <LUtils.h> -#include <QDir> -#include <QFileDialog> -#include <QInputDialog> -#include <QtConcurrent> - -NotePadPlugin::NotePadPlugin(QWidget* parent, QString ID) : LDPlugin(parent, ID){ - //qDebug() << "Creating Notepad Plugin:"; - QVBoxLayout *vlay = new QVBoxLayout(); - this->setLayout( new QVBoxLayout() ); - this->layout()->setContentsMargins(0,0,0,0); - vlay->setContentsMargins(3,3,3,3); - frame = new QFrame(this); - frame->setObjectName("notepadbase"); - //frame->setStyleSheet("QFrame#notepadbase{border-width: 1px; background: rgba(255,255,255,50); color: black;} QFrame{ border: none; border-radius: 3px; background: rgba(255,255,255,100); color: black;}"); - this->layout()->addWidget(frame); - frame->setLayout(vlay); - - if(!QFile::exists(QDir::homePath()+"/Notes")){ - //Create the notes directory if non-existant - QDir dir; - dir.mkpath(QDir::homePath()+"/Notes"); - } - watcher = new QFileSystemWatcher(this); - //Always watch the notes directory for new files/changes - watcher->addPath(QDir::homePath()+"/Notes"); - - typeTimer = new QTimer(this); - typeTimer->setInterval(1000); // 1 second before it saves - typeTimer->setSingleShot(true); //compress lots of signals into a single save - - updating = false; - //Setup the title bar header buttons - QHBoxLayout *hlay = new QHBoxLayout(); - config = new QToolButton(this); - config->setAutoRaise(true); - config->setMenu(new QMenu(this)); - config->setPopupMode(QToolButton::InstantPopup); - /*open = new QToolButton(this); - open->setAutoRaise(true); - add = new QToolButton(this); - add->setAutoRaise(true); - rem = new QToolButton(this); - rem->setAutoRaise(true);*/ - cnote = new QComboBox(this); - - hlay->addWidget(cnote); - hlay->addWidget(config); - //hlay->addWidget(open); - //hlay->addWidget(add); - //hlay->addWidget(rem); - vlay->addLayout(hlay); - - //Setup the main text widget - edit = new QPlainTextEdit(this); - edit->setReadOnly(false); - edit->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); - vlay->addWidget(edit); - edit->setContextMenuPolicy(Qt::NoContextMenu); - - //Now load the new file-based system for saving notes - //qDebug() << "Saving a new setting"; - this->saveSetting("customFile",""); //always clear this when the plugin is initialized (only maintained per-session) - //qDebug() << "Loading Notes Dir"; - QTimer::singleShot(10, this, SLOT(notesDirChanged())); - //qDebug() << "Set Sizing"; - - //qDebug() << "Connect Signals/slots"; - //Setup the button connections - /*connect(open, SIGNAL(clicked()), this, SLOT(openNoteClicked()) ); - connect(add, SIGNAL(clicked()), this, SLOT(newNoteClicked()) ); - connect(rem, SIGNAL(clicked()), this, SLOT(remNote()) );*/ - //connect(config, SIGNAL(clicked()), this, SLOT(openConfigMenu()) ); - connect(edit, SIGNAL(textChanged()), this, SLOT(newTextAvailable()) ); - connect(cnote, SIGNAL(currentIndexChanged(QString)), this, SLOT(noteChanged()) ); - connect(typeTimer, SIGNAL(timeout()), this, SLOT(updateContents()) ); - connect(watcher, SIGNAL(directoryChanged(QString)), this, SLOT(notesDirChanged()) ); //re-load the available notes - connect(watcher, SIGNAL(fileChanged(QString)), this, SLOT(noteChanged()) ); //re-load the current file - QTimer::singleShot(0,this, SLOT(loadIcons()) ); - //qDebug() << " - Done with init"; -} - -NotePadPlugin::~NotePadPlugin(){ - -} - - -void NotePadPlugin::openNote(){ - //qDebug() << "Open New Note:"; - //Prompt for a name for the new note - QFileDialog dlg(0, Qt::Dialog | Qt::WindowStaysOnTopHint ); - dlg.setFileMode(QFileDialog::ExistingFile); - dlg.setAcceptMode(QFileDialog::AcceptOpen); - dlg.setNameFilters( QStringList() << tr("Note Files (*.note)") << tr("Text Files (*)")); - dlg.setWindowTitle(tr("Open a note file")); - dlg.setWindowIcon( LXDG::findIcon("document-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(); - } - QStringList sel = dlg.selectedFiles(); - if(sel.isEmpty() || dlg.result()!=QDialog::Accepted){ return; } //cancelled - QString fullpath = sel.first(); - QString name = fullpath.section("/",-1); - //qDebug() << " - Found Note:" << name << fullpath; - int index = cnote->findText(name, Qt::MatchExactly | Qt::MatchCaseSensitive); - if(QFile::exists(fullpath) && index <0){ - //Alternate option of searching for the file in the list - index = cnote->findText(fullpath, Qt::MatchExactly | Qt::MatchCaseSensitive); - } - if(index>=0){ - //This note already exists: just load it - cnote->setCurrentIndex(index); - }else{ - //New note - add it to the end of the list and then load it - cnote->addItem(name, fullpath); - this->saveSetting("customFile", fullpath); //save this as a custom file - cnote->setCurrentIndex( cnote->count()-1 ); - QTimer::singleShot(1000, this, SLOT(notesDirChanged())); //Make sure to refresh the list (only one custom file at a time) - } -} - -QString NotePadPlugin::newNoteName(QString oldname, bool tryagain){ - //Prompt for a name for the new note - //qDebug() << "Create new note"; - QInputDialog dlg(0, Qt::Dialog | Qt::WindowStaysOnTopHint ); - dlg.setInputMode(QInputDialog::TextInput); - dlg.setLabelText(tr("Name:")); - dlg.setTextEchoMode(QLineEdit::Normal); - if(tryagain){ dlg.setWindowTitle(tr("Invalid Note Name: Try Again")); } - else{ dlg.setWindowTitle(tr("Select a Note Name")); } - dlg.setWindowIcon( LXDG::findIcon("document-new","") ); - dlg.setTextValue(oldname); - //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() ){ - //this->thread()->usleep(300000); //300 ms between updates - QApplication::processEvents(); - } - QString name = dlg.textValue(); - //make sure to remove any "bad" characters from the name - name.remove("\""); name.remove(";"); name.remove("\'"); name.replace("/","_"); - if(name.isEmpty() || dlg.result()!=QDialog::Accepted){ return ""; } //cancelled - //Check validity of the new note filename - QString fullpath = QDir::homePath()+"/Notes/"+name; - if(!fullpath.endsWith(".note")){ fullpath.append(".note"); } - if(QFile::exists(fullpath)){ - return newNoteName(name, true); //try again - } - return name; //good name - go ahead and return it -} - -void NotePadPlugin::updateConfigMenu(){ - //Re-create the menu and open it - config->menu()->clear(); - config->menu()->addAction(LXDG::findIcon("document-open",""), tr("Open Text File"), this, SLOT(openNoteClicked()) ); - config->menu()->addAction(LXDG::findIcon("document-new",""), tr("Create a Note"), this, SLOT(newNoteClicked()) ); - if(cnote->currentIndex()>=0){ - config->menu()->addSeparator(); - config->menu()->addAction(LXDG::findIcon("document-edit",""), tr("Rename Note"), this, SLOT(renameNote()) ); - config->menu()->addAction(LXDG::findIcon("document-close",""), tr("Delete Note"), this, SLOT(remNote()) ); - } -} - -void NotePadPlugin::openNoteClicked(){ - openNote(); -} - -void NotePadPlugin::newNoteClicked(){ - //QtConcurrent::run(this, &NotePadPlugin::newNote); - QString name = newNoteName(); - if(name.isEmpty()){ return; } - QString fullpath = QDir::homePath()+"/Notes/"+name; - if(!fullpath.endsWith(".note")){ fullpath.append(".note"); } - //qDebug() << " - New Note:" << name << fullpath; - int index = cnote->findText(name, Qt::MatchExactly | Qt::MatchCaseSensitive); - if(QFile::exists(fullpath) && index <0){ - //Alternate option of searching for the file in the list - index = cnote->findText(fullpath, Qt::MatchExactly | Qt::MatchCaseSensitive); - } - if(index>=0){ - //This note already exists: just load it - cnote->setCurrentIndex(index); - }else{ - //New note - add it to the end of the list and then load it - cnote->addItem(name, fullpath); - cnote->setCurrentIndex( cnote->count()-1 ); - } -} - -void NotePadPlugin::remNote(){ - QString note = cnote->currentData().toString(); - if(note.isEmpty()){ return; } - watcher->removePath(note); //remove this file from the watcher - this->saveSetting("currentFile",""); //reset the internal value - QFile::remove(note); //remove the file - //if(!note.startsWith(QDir::homePath()+"/Notes/") ){ - //If the file was not in the notes directory, need to manually prompt for a re-load - // otherwise, the directory watcher will catch it and trigger a re-load (no need to double-load) - notesDirChanged(); - //} -} - -void NotePadPlugin::renameNote(){ - int item = cnote->currentIndex(); - if(item<0){ return; } //nothing selected - QString oldpath = cnote->currentData().toString(); - if(oldpath.isEmpty() || !oldpath.endsWith(".note")){ return; } - QString name = newNoteName(cnote->currentText()); - if(name.isEmpty()){ return; } - QString fullpath = QDir::homePath()+"/Notes/"+name; - if(!fullpath.endsWith(".note")){ fullpath.append(".note"); } - //qDebug() << " - New Note:" << name << fullpath; - //Update the current item data to point to this file - cnote->setItemText(item, name); - cnote->setItemData(item, fullpath); - //Now move the file over - QFile::rename(oldpath, fullpath); - noteChanged(); -} - -void NotePadPlugin::newTextAvailable(){ - if(updating){ return; } //programmatic change of the widget - if(typeTimer->isActive()){ typeTimer->stop(); } - typeTimer->start(); -} - -void NotePadPlugin::updateContents(){ - if(updating){ return; } //this was a programmatic change to the widget - //The text was changed in the plugin - save it in the file - QString note = cnote->currentData().toString(); - updating = true; - LUtils::writeFile(note, edit->toPlainText().split("\n"), true); - QApplication::processEvents(); //make sure to process/discard the file changed signal before disabling the flag - updating = false; -} - -void NotePadPlugin::notesDirChanged(){ - if(updating){ return; } - QString cfile = this->readSetting("currentFile","").toString(); - QStringList notes; - QDir dir(QDir::homePath()+"/Notes"); - QStringList files = dir.entryList(QStringList() << "*.note", QDir::Files | QDir::NoDotAndDotDot, QDir::Name); - for(int i=0; i<files.length(); i++){ - notes << dir.absoluteFilePath(files[i]); - } - QString custom = this->readSetting("customFile","").toString(); - if(!custom.isEmpty() && QFile::exists(custom) ){ notes << custom; } - //qDebug() << "Available Notes:" << notes << cfile; - //Now update the UI list - updating = true; //don't refresh the UI until done changing lists - cnote->clear(); - bool found = false; - for(int i=0; i<notes.length(); i++){ - QString name = notes[i].section("/",-1); - if(name.endsWith(".note")){ name.chop(5); } - cnote->addItem(name, notes[i]); - if(notes[i]==cfile){ cnote->setCurrentIndex(i); found = true;} - } - if(!found && !cfile.isEmpty() && QFile::exists(cfile)){ - //Current note is a manually-loaded text file - cnote->addItem(cfile.section("/",-1), cfile); - cnote->setCurrentIndex( cnote->count()-1 ); //last item - found = true; - } - if(!found && cnote->count()>0){ cnote->setCurrentIndex(0); } - updating =false; - noteChanged(); -} - -void NotePadPlugin::noteChanged(){ - if(updating){ return; } - updating =true; - QString note; - if(cnote->currentIndex()>=0){ - note = cnote->currentData().toString(); - } - QTimer::singleShot(0, this, SLOT(updateConfigMenu()) ); - if(note.isEmpty() && cnote->count()>0){ - updating=false; - cnote->setCurrentIndex(0); - return; - } - QString oldnote = this->readSetting("currentFile","").toString(); - //qDebug() << "Note Changed:" << note << oldnote; - if( oldnote!=note ){ - //Clear the old note file/setting - if(!oldnote.isEmpty()){ - watcher->removePath(oldnote); - this->saveSetting("currentFile",""); - } - if(!note.isEmpty()){ - this->saveSetting("currentFile",note); - watcher->addPath(note); - } - } - - if(!note.isEmpty()){ - QString text = LUtils::readFile(note).join("\n"); - if(text!=edit->toPlainText()){ - edit->setPlainText( text ); - } - }else{ - edit->clear(); - } - //If no notes available - disable the editor until a new one is created - edit->setEnabled(!note.isEmpty()); - //rem->setEnabled(!note.isEmpty()); - cnote->setEnabled(!note.isEmpty()); - //leave the new/open buttons enabled all the time - updating = false; -} - - -void NotePadPlugin::loadIcons(){ - /*open->setIcon( LXDG::findIcon("document-open","") ); - add->setIcon( LXDG::findIcon("document-new","") ); - rem->setIcon( LXDG::findIcon("document-close","") );*/ - config->setIcon( LXDG::findIcon("configure","") ); -} diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/notepad/NotepadPlugin.h b/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/notepad/NotepadPlugin.h deleted file mode 100644 index 5084dadf..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/notepad/NotepadPlugin.h +++ /dev/null @@ -1,66 +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 plugin is a simple text editor for notes on the desktop -//=========================================== -#ifndef _LUMINA_DESKTOP_NOTEPAD_PLUGIN_H -#define _LUMINA_DESKTOP_NOTEPAD_PLUGIN_H - -#include <QPlainTextEdit> -#include <QToolButton> -#include <QComboBox> -#include <QVBoxLayout> -#include <QTimer> -#include <QFileSystemWatcher> -#include "../LDPlugin.h" - -class NotePadPlugin : public LDPlugin{ - Q_OBJECT -public: - NotePadPlugin(QWidget* parent, QString ID); - ~NotePadPlugin(); - - virtual QSize defaultPluginSize(){ - // The returned QSize is in grid points (typically 100 or 200 pixels square) - return QSize(3,3); - } -private: - QPlainTextEdit *edit; - QToolButton *config; //*open, *add, *rem; - QComboBox *cnote; - QFrame *frame; - QFileSystemWatcher *watcher; - bool updating; - QTimer *typeTimer; - - void openNote(); - QString newNoteName(QString oldname = "", bool tryagain = false); - -private slots: - void updateConfigMenu(); - - void openNoteClicked(); - void newNoteClicked(); - void remNote(); - void renameNote(); - void newTextAvailable(); - void updateContents(); - - void notesDirChanged(); - void noteChanged(); - - void loadIcons(); - -public slots: - void LocaleChange(){ - QTimer::singleShot(0,this, SLOT(noteChanged())); - } - void ThemeChange(){ - QTimer::singleShot(0,this, SLOT(loadIcons())); - } - -}; -#endif diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/quickcontainer/QuickDPlugin.h b/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/quickcontainer/QuickDPlugin.h deleted file mode 100644 index d6039ac0..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/quickcontainer/QuickDPlugin.h +++ /dev/null @@ -1,51 +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_DESKTOP_PLUGIN_QUICK_H -#define _LUMINA_DESKTOP_DESKTOP_PLUGIN_QUICK_H - -#include <QQuickWidget> -#include <QVBoxLayout> -#include "../LDPlugin.h" - -#include <LUtils.h> - -class QuickDPlugin : public LDPlugin{ - Q_OBJECT -public: - QuickDPlugin(QWidget* parent, QString ID) : LDPlugin(parent, ID){ - this->setLayout( new QVBoxLayout()); - this->layout()->setContentsMargins(0,0,0,0); - container = new QQuickWidget(this); - container->setResizeMode(QQuickWidget::SizeRootObjectToView); - connect(container, SIGNAL(statusChanged(QQuickWidget::Status)), this, SLOT(statusChange(QQuickWidget::Status)) ); - this->layout()->addWidget(container); - container->setSource(QUrl::fromLocalFile( LUtils::findQuickPluginFile(ID.section("---",0,0)) )); - QApplication::processEvents(); //to check for errors right away - //this->setInitialSize(container->initialSize().width(), container->initialSize().height()); - } - - ~QuickDPlugin(){} - - virtual QSize defaultPluginSize(){ - // The returned QSize is in grid points (typically 100 or 200 pixels square) - return QSize(2,2); - } -private: - QQuickWidget *container; - -private slots: - void statusChange(QQuickWidget::Status status){ - if(status == QQuickWidget::Error){ - qDebug() << "Quick Widget Error:" << this->ID(); - container->setSource(QUrl()); //clear out the script - experienced an error - } - } - -}; -#endif diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/rssreader/RSSFeedPlugin.cpp b/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/rssreader/RSSFeedPlugin.cpp deleted file mode 100644 index c330d6c0..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/rssreader/RSSFeedPlugin.cpp +++ /dev/null @@ -1,363 +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 -//=========================================== -#include "RSSFeedPlugin.h" -#include "ui_RSSFeedPlugin.h" - -#include <LuminaXDG.h> -#include "LSession.h" -#include <LUtils.h> -#include <QDir> -#include <QFileDialog> -#include <QInputDialog> -#include <QtConcurrent> - -RSSFeedPlugin::RSSFeedPlugin(QWidget* parent, QString ID) : LDPlugin(parent, ID), ui(new Ui::RSSFeedPlugin()){ - ui->setupUi(this); - //Load the global settings - setprefix = "rssreader/"; //this structure/prefix should be used for *all* plugins of this type - RSS = new RSSReader(this, setprefix); - ui->text_feed->setContextMenuPolicy(Qt::NoContextMenu); - //Create the options menu - optionsMenu = new QMenu(this); - ui->tool_options->setMenu(optionsMenu); - presetMenu = new QMenu(this); - ui->tool_add_preset->setMenu(presetMenu); - - //Setup any signal/slot connections - connect(ui->push_back1, SIGNAL(clicked()), this, SLOT(backToFeeds()) ); - connect(ui->push_back2, SIGNAL(clicked()), this, SLOT(backToFeeds()) ); - connect(ui->push_back3, SIGNAL(clicked()), this, SLOT(backToFeeds()) ); - connect(ui->push_save_settings, SIGNAL(clicked()), this, SLOT(saveSettings()) ); - connect(RSS, SIGNAL(rssChanged(QString)), this, SLOT(RSSItemChanged(QString)) ); - connect(RSS, SIGNAL(newChannelsAvailable()), this, SLOT(UpdateFeedList())); - connect(ui->tool_gotosite, SIGNAL(clicked()), this, SLOT(openFeedPage()) ); - connect(ui->push_rm_feed, SIGNAL(clicked()), this, SLOT(removeFeed()) ); - connect(ui->push_add_url, SIGNAL(clicked()), this, SLOT(addNewFeed()) ); - connect(ui->combo_feed, SIGNAL(currentIndexChanged(int)), this, SLOT(currentFeedChanged()) ); - - connect(presetMenu, SIGNAL(triggered(QAction*)), this, SLOT(loadPreset(QAction*)) ); - - updateOptionsMenu(); - QTimer::singleShot(0,this, SLOT(ThemeChange()) ); - //qDebug() << " - Done with init"; - QStringList feeds; - if( !LSession::handle()->DesktopPluginSettings()->contains(setprefix+"currentfeeds") ){ - //First-time run of the plugin - automatically load the default feeds - feeds = LOS::RSSFeeds(); - for(int i=0; i<feeds.length(); i++){ feeds[i] = feeds[i].section("::::",1,-1); } //just need url right now - feeds << "http://lumina-desktop.org/?feed=rss2"; //Lumina Desktop blog feed - LSession::handle()->DesktopPluginSettings()->setValue(setprefix+"currentfeeds", feeds); - }else{ - feeds = LSession::handle()->DesktopPluginSettings()->value(setprefix+"currentfeeds",QStringList()).toStringList(); - } - RSS->addUrls(feeds); - backToFeeds(); //always load the first page -} - -RSSFeedPlugin::~RSSFeedPlugin(){ - -} - -//================ -// PRIVATE -//================ -void RSSFeedPlugin::updateOptionsMenu(){ - optionsMenu->clear(); - optionsMenu->addAction(LXDG::findIcon("list-add",""), tr("Add RSS Feed"), this, SLOT(openFeedNew()) ); - optionsMenu->addAction(LXDG::findIcon("help-about",""), tr("View Feed Details"), this, SLOT(openFeedInfo()) ); - optionsMenu->addAction(LXDG::findIcon("configure",""), tr("Settings"), this, SLOT(openSettings()) ); - optionsMenu->addSeparator(); - optionsMenu->addAction(LXDG::findIcon("download",""), tr("Update Feeds Now"), this, SLOT(resyncFeeds()) ); - - presetMenu->clear(); - QStringList feeds = LOS::RSSFeeds(); - feeds << tr("Lumina Desktop RSS")+"::::http://lumina-desktop.org/?feed=rss2"; - feeds.sort(); - for(int i=0; i<feeds.length(); i++){ - QAction *tmp = presetMenu->addAction(feeds[i].section("::::",0,0) ); - tmp->setWhatsThis( feeds[i].section("::::",1,-1) ); - } -} - -void RSSFeedPlugin::checkFeedNotify(){ - bool notify = false; - for(int i=0; i<ui->combo_feed->count() && !notify; i++){ - if( !ui->combo_feed->itemData(i, Qt::WhatsThisRole).toString().isEmpty()){ notify = true; } - } - QString style; - if(notify){ style = "QComboBox{ background-color: rgba(255,0,0,120); }"; } - ui->combo_feed->setStyleSheet(style); -} - -//Simplification functions for loading feed info onto widgets -void RSSFeedPlugin::updateFeed(QString ID){ - //Now clear/update the feed viewer (HTML) - ui->text_feed->clear(); - if(ID.isEmpty()){ return; } //nothing to show - - //Save the datetime this feed was read - LSession::handle()->DesktopPluginSettings()->setValue(setprefix+"feedReads/"+ID, QDateTime::currentDateTime() ); - //Get the color to use for hyperlinks (need to specify in html) - QString color = ui->text_feed->palette().text().color().name(); //keep the hyperlinks the same color as the main text (different formatting still applies) - QString html; - RSSchannel data = RSS->dataForID(ID); - ui->label_lastupdate->setText( data.lastsync.toString(Qt::DefaultLocaleShortDate) ); - // - generate the html - // html.append("<ul style=\"margin-left: 3px;\">\n"); - for(int i=0; i<data.items.length(); i++){ - //html.append("<li>"); - html.append("<h4><a href=\""+data.items[i].link+"\" style=\"color: "+color+";\">"+data.items[i].title+"</a></h4>"); - if(!data.items[i].pubdate.isNull() || !data.items[i].author.isEmpty()){ - html.append("<i>("); - if(!data.items[i].pubdate.isNull()){ html.append(data.items[i].pubdate.toString(Qt::DefaultLocaleShortDate)); } - if(!data.items[i].author.isEmpty()){ - if(!html.endsWith("(")){ html.append(", "); } //spacing between date/author - if(!data.items[i].author_email.isEmpty()){ html.append("<a href=\"mailto:"+data.items[i].author_email+"\" style=\"color: "+color+";\">"+data.items[i].author+"</a>"); } - else{ html.append(data.items[i].author); } - } - html.append(")</i><br>"); - } - html.append(data.items[i].description); - //html.append("</li>\n"); - if(i+1 < data.items.length()){ html.append("<br>"); } - } - //html.append("</ul>\n"); - // - load that html into the viewer - ui->text_feed->setHtml(html); -} - -void RSSFeedPlugin::updateFeedInfo(QString ID){ - ui->page_feed_info->setWhatsThis(ID); - ui->text_feed_info->clear(); - if(ID.isEmpty()){ return; } - //Get the color to use for hyperlinks (need to specify in html) - QString color = ui->text_feed->palette().text().color().name(); //keep the hyperlinks the same color as the main text (different formatting still applies) - QString html; - RSSchannel data = RSS->dataForID(ID); - // - generate the html - // <a href=\""+LINK+"\" style=\"color: "+color+";\">"+TEXT+"</a> - html.append( QString(tr("Feed URL: %1")).arg("<a href=\""+data.originalURL+"\" style=\"color: "+color+";\">"+data.originalURL+"</a>") +"<br><hr>"); - html.append( QString(tr("Title: %1")).arg(data.title) +"<br>"); - html.append( QString(tr("Description: %1")).arg(data.description) +"<br>"); - html.append( QString(tr("Website: %1")).arg("<a href=\""+data.link+"\" style=\"color: "+color+";\">"+data.link+"</a>") +"<br><hr>"); - if(!data.lastBuildDate.isNull()){ html.append( QString(tr("Last Build Date: %1")).arg(data.lastBuildDate.toString(Qt::DefaultLocaleShortDate)) +"<br>"); } - html.append( QString(tr("Last Sync: %1")).arg(data.lastsync.toString(Qt::DefaultLocaleShortDate)) +"<br>"); - html.append( QString(tr("Next Sync: %1")).arg(data.nextsync.toString(Qt::DefaultLocaleShortDate)) +"<br>"); - // - load that html into the viewer - ui->text_feed_info->setHtml(html); -} - -//================ -// PRIVATE SLOTS -//================ -void RSSFeedPlugin::loadIcons(){ - ui->tool_options->setIcon( LXDG::findIcon("configure","") ); - ui->tool_gotosite->setIcon( LXDG::findIcon("applications-internet","") ); - ui->push_back1->setIcon( LXDG::findIcon("go-previous","") ); - ui->push_back2->setIcon( LXDG::findIcon("go-previous","") ); - ui->push_back3->setIcon( LXDG::findIcon("go-previous","") ); - ui->push_rm_feed->setIcon( LXDG::findIcon("list-remove","") ); - ui->push_add_url->setIcon( LXDG::findIcon("list-add","") ); - ui->push_save_settings->setIcon( LXDG::findIcon("document-save","") ); - ui->tool_add_preset->setIcon( LXDG::findIcon("bookmark-new-list","") ); -} - -//GUI slots -// - Page management -void RSSFeedPlugin::backToFeeds(){ - ui->stackedWidget->setCurrentWidget(ui->page_feed); -} - -void RSSFeedPlugin::openFeedInfo(){ - QString ID = ui->combo_feed->currentData().toString(); - if(ID.isEmpty()){ return; } - updateFeedInfo(ID); - ui->stackedWidget->setCurrentWidget(ui->page_feed_info); - -} - -void RSSFeedPlugin::openFeedNew(){ - ui->line_new_url->setText(""); - ui->stackedWidget->setCurrentWidget(ui->page_new_feed); -} - -void RSSFeedPlugin::openSettings(){ - //Sync the widget with the current settings - QSettings *set = LSession::handle()->DesktopPluginSettings(); - - ui->check_manual_sync->setChecked( set->value(setprefix+"manual_sync_only", false).toBool() ); - int DI = set->value(setprefix+"default_interval_minutes", 60).toInt(); - if(DI<1){ DI = 60; } - if( (DI%60) == 0 ){DI = DI/60; ui->combo_sync_units->setCurrentIndex(1); } //hourly setting - else{ ui->combo_sync_units->setCurrentIndex(1); } //minutes setting - ui->spin_synctime->setValue(DI); - - //Now show the page - ui->stackedWidget->setCurrentWidget(ui->page_settings); -} - -// - Feed Management -void RSSFeedPlugin::addNewFeed(){ - if(ui->line_new_url->text().isEmpty()){ return; } //nothing to add - //Validate the URL - QUrl url(ui->line_new_url->text()); - if(!url.isValid()){ - ui->line_new_url->setFocus(); - return; - } - //Add the URL to the settings file for next login - QStringList feeds = LSession::handle()->DesktopPluginSettings()->value(setprefix+"currentfeeds",QStringList()).toStringList(); - feeds << url.toString(); - LSession::handle()->DesktopPluginSettings()->setValue(setprefix+"currentfeeds", feeds); - - //Set this URL as the current selection - ui->combo_feed->setWhatsThis(url.toString()); //hidden field - will trigger an update in a moment - //Add the URL to the backend - RSS->addUrls(QStringList() << url.toString()); - //UpdateFeedList(); //now re-load the feeds which are available - - //Now go back to the main page - backToFeeds(); -} - -void RSSFeedPlugin::loadPreset(QAction *act){ - ui->line_new_url->setText( act->whatsThis() ); -} - -void RSSFeedPlugin::removeFeed(){ - QString ID = ui->page_feed_info->whatsThis(); - if(ID.isEmpty()){ return; } - //Remove from the RSS feed object - RSSchannel info = RSS->dataForID(ID); - RSS->removeUrl(ID); - //Remove the URL from the settings file for next login - QStringList feeds = LSession::handle()->DesktopPluginSettings()->value(setprefix+"currentfeeds",QStringList()).toStringList(); - feeds.removeAll(info.originalURL); - LSession::handle()->DesktopPluginSettings()->setValue(setprefix+"currentfeeds", feeds); - LSession::handle()->DesktopPluginSettings()->remove(setprefix+"feedReads/"+ID); - //Now go back to the main page - backToFeeds(); -} - -void RSSFeedPlugin::resyncFeeds(){ - RSS->addUrls( LSession::handle()->DesktopPluginSettings()->value(setprefix+"currentfeeds",QStringList()).toStringList() ); - RSS->syncNow(); -} - -// - Feed Interactions -void RSSFeedPlugin::currentFeedChanged(){ - QString ID = ui->combo_feed->currentData().toString(); - //Remove the "unread" color/flag from the feed - ui->combo_feed->setItemData( ui->combo_feed->currentIndex(), QBrush(Qt::transparent) , Qt::BackgroundRole); - ui->combo_feed->setItemData( ui->combo_feed->currentIndex(), "", Qt::WhatsThisRole); - checkFeedNotify(); - updateFeed(ID); -} - -void RSSFeedPlugin::openFeedPage(){ //Open main website for feed - QString ID = ui->combo_feed->currentData().toString(); - //Find the data associated with this feed - RSSchannel data = RSS->dataForID(ID); - QString url = data.link; - //qDebug() << "Open Feed Page:" << url; - //Now launch the browser - if(!url.isEmpty()){ - LSession::LaunchApplication("lumina-open \""+url+"\""); - } -} - -void RSSFeedPlugin::saveSettings(){ - QSettings *set = LSession::handle()->DesktopPluginSettings(); - set->setValue(setprefix+"manual_sync_only", ui->check_manual_sync->isChecked() ); - int DI = ui->spin_synctime->value(); - if(ui->combo_sync_units->currentIndex()==1){ DI = DI*60; } //convert from hours to minutes - set->setValue(setprefix+"default_interval_minutes", DI); - set->sync(); - - //Now go back to the feeds - backToFeeds(); -} - -//Feed Object interactions -void RSSFeedPlugin::UpdateFeedList(){ - - QString activate = ui->combo_feed->whatsThis(); - if(!activate.isEmpty()){ ui->combo_feed->setWhatsThis(""); } - if(activate.isEmpty()){ activate = ui->combo_feed->currentData().toString(); } // keep current item selected - //Now get/list all the available feeds - QStringList IDS = RSS->channels(); //this is pre-sorted by title of the feed - //qDebug() << "Update RSS Feed List:" << IDS << activate; - for(int i=0; i<IDS.length(); i++){ - bool newitem = false; - if(ui->combo_feed->count()<=i){ newitem = true; } - else{ - QString cid = ui->combo_feed->itemData(i).toString(); - if(IDS[i]!=cid){ - if(IDS.contains(cid)){ newitem = true; } //this item is just out of order - else{ ui->combo_feed->removeItem(i); } //item no longer is valid - } - } - if(newitem){ - //Need to add a new item at this point in the menu - RSSchannel info = RSS->dataForID(IDS[i]); - if(info.title.isEmpty()){ - //invalid/empty channel - ui->combo_feed->insertItem(i, IDS[i], IDS[i]); //just show the URL - }else{ - ui->combo_feed->insertItem(i, info.icon, info.title, IDS[i]); - } - } - } - //Remove any extra items on the end of the list - for(int i=IDS.length(); i<ui->combo_feed->count(); i++){ - ui->combo_feed->removeItem(i); i--; - } - //Now activate the proper item as needed - if(IDS.contains(activate)){ - ui->combo_feed->setCurrentIndex( IDS.indexOf(activate) ); - } - checkFeedNotify(); -} - -void RSSFeedPlugin::RSSItemChanged(QString ID){ - for(int i=0; i<ui->combo_feed->count(); i++){ - if(ui->combo_feed->itemData(i).toString()!=ID){ continue; } - RSSchannel info = RSS->dataForID(ID); - if(info.title.isEmpty()){ - ui->combo_feed->setItemText(i, ID); - ui->combo_feed->setItemIcon(i, LXDG::findIcon("dialog-cancel","") ); - }else{ - ui->combo_feed->setItemText(i, info.title); - ui->combo_feed->setItemIcon(i, info.icon ); - QColor color(Qt::transparent); - if( info.lastBuildDate > LSession::handle()->DesktopPluginSettings()->value(setprefix+"feedReads/"+ID,QDateTime()).toDateTime() ){ - color = QColor(255,10,10,100); //semi-transparent red - ui->combo_feed->setItemData(i, "notify", Qt::WhatsThisRole); - }else{ - ui->combo_feed->setItemData(i, "", Qt::WhatsThisRole); - } - ui->combo_feed->setItemData(i, QBrush(color) , Qt::BackgroundRole); - } - } - if(ID == ui->combo_feed->currentData().toString()){ - currentFeedChanged(); //re-load the current feed - }else{ - checkFeedNotify(); - } -} - -//================== -// PUBLIC SLOTS -//================== -void RSSFeedPlugin::LocaleChange(){ - ui->retranslateUi(this); - updateOptionsMenu(); -} -void RSSFeedPlugin::ThemeChange(){ - QTimer::singleShot(0,this, SLOT(loadIcons())); - updateOptionsMenu(); -} diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/rssreader/RSSFeedPlugin.h b/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/rssreader/RSSFeedPlugin.h deleted file mode 100644 index 68b36760..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/rssreader/RSSFeedPlugin.h +++ /dev/null @@ -1,72 +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 -//=========================================== -// This plugin is a simple RSS feed reader for the desktop -//=========================================== -#ifndef _LUMINA_DESKTOP_RSS_FEEDER_PLUGIN_H -#define _LUMINA_DESKTOP_RSS_FEEDER_PLUGIN_H - -#include <QTimer> -#include "../LDPlugin.h" - -#include "RSSObjects.h" - -namespace Ui{ - class RSSFeedPlugin; -}; - -class RSSFeedPlugin : public LDPlugin{ - Q_OBJECT -public: - RSSFeedPlugin(QWidget* parent, QString ID); - ~RSSFeedPlugin(); - - virtual QSize defaultPluginSize(){ - // The returned QSize is in grid points (typically 100 or 200 pixels square) - return QSize(3,3); - } -private: - Ui::RSSFeedPlugin *ui; - QMenu *optionsMenu, *presetMenu; - QString setprefix; //settings prefix - RSSReader *RSS; - - void updateOptionsMenu(); - void checkFeedNotify(); //check if unread feeds are available and change the styling a bit as needed - - //Simplification functions for loading feed info onto widgets - void updateFeed(QString ID); - void updateFeedInfo(QString ID); - -private slots: - void loadIcons(); - - //GUI slots - // - Page management - void backToFeeds(); - void openFeedInfo(); - void openFeedNew(); - void openSettings(); - // - Feed Management - void addNewFeed(); // the "add" button (current url in widget on page) - void loadPreset(QAction*); //the add-preset menu - void removeFeed(); // the "remove" button (current feed for page) - void resyncFeeds(); - // - Feed Interactions - void currentFeedChanged(); - void openFeedPage(); //Open the website in a browser - void saveSettings(); - - //Feed Object interactions - void UpdateFeedList(); - void RSSItemChanged(QString ID); - -public slots: - void LocaleChange(); - void ThemeChange(); - -}; -#endif diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/rssreader/RSSFeedPlugin.ui b/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/rssreader/RSSFeedPlugin.ui deleted file mode 100644 index dc7acd0b..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/rssreader/RSSFeedPlugin.ui +++ /dev/null @@ -1,552 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>RSSFeedPlugin</class> - <widget class="QWidget" name="RSSFeedPlugin"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>238</width> - <height>278</height> - </rect> - </property> - <property name="windowTitle"> - <string>Form</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout"> - <property name="spacing"> - <number>0</number> - </property> - <property name="leftMargin"> - <number>3</number> - </property> - <property name="topMargin"> - <number>3</number> - </property> - <property name="rightMargin"> - <number>3</number> - </property> - <property name="bottomMargin"> - <number>3</number> - </property> - <item> - <widget class="QStackedWidget" name="stackedWidget"> - <property name="currentIndex"> - <number>1</number> - </property> - <widget class="QWidget" name="page_feed"> - <layout class="QVBoxLayout" name="verticalLayout_2"> - <property name="spacing"> - <number>3</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="QComboBox" name="combo_feed"/> - </item> - <item> - <widget class="QToolButton" name="tool_options"> - <property name="toolTip"> - <string>View Options</string> - </property> - <property name="text"> - <string/> - </property> - <property name="popupMode"> - <enum>QToolButton::InstantPopup</enum> - </property> - <property name="autoRaise"> - <bool>true</bool> - </property> - </widget> - </item> - </layout> - </item> - <item> - <layout class="QHBoxLayout" name="horizontalLayout_2"> - <item> - <widget class="QLabel" name="label_lastupdate"> - <property name="text"> - <string notr="true"/> - </property> - </widget> - </item> - <item> - <widget class="QToolButton" name="tool_gotosite"> - <property name="toolTip"> - <string>Open Website</string> - </property> - <property name="text"> - <string>More</string> - </property> - <property name="autoRaise"> - <bool>true</bool> - </property> - <property name="arrowType"> - <enum>Qt::NoArrow</enum> - </property> - </widget> - </item> - </layout> - </item> - <item> - <widget class="QTextBrowser" name="text_feed"> - <property name="undoRedoEnabled"> - <bool>false</bool> - </property> - <property name="readOnly"> - <bool>true</bool> - </property> - <property name="html"> - <string notr="true"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html></string> - </property> - <property name="textInteractionFlags"> - <set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse</set> - </property> - <property name="openExternalLinks"> - <bool>true</bool> - </property> - <property name="openLinks"> - <bool>true</bool> - </property> - </widget> - </item> - </layout> - </widget> - <widget class="QWidget" name="page_feed_info"> - <layout class="QVBoxLayout" name="verticalLayout_3"> - <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>5</number> - </property> - <item> - <layout class="QHBoxLayout" name="horizontalLayout_3"> - <item> - <widget class="QPushButton" name="push_back1"> - <property name="text"> - <string>Back to Feeds</string> - </property> - <property name="flat"> - <bool>true</bool> - </property> - </widget> - </item> - </layout> - </item> - <item> - <widget class="QGroupBox" name="groupBox"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Expanding"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="title"> - <string>Feed Information</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout_4"> - <property name="spacing"> - <number>0</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="QTextBrowser" name="text_feed_info"> - <property name="html"> - <string notr="true"><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> -<html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal;"> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html></string> - </property> - <property name="openExternalLinks"> - <bool>true</bool> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <layout class="QHBoxLayout" name="horizontalLayout_8"> - <item> - <widget class="QPushButton" name="push_rm_feed"> - <property name="text"> - <string>Remove Feed</string> - </property> - <property name="flat"> - <bool>true</bool> - </property> - </widget> - </item> - </layout> - </item> - </layout> - </widget> - <widget class="QWidget" name="page_new_feed"> - <layout class="QVBoxLayout" name="verticalLayout_5"> - <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_4"> - <item> - <widget class="QPushButton" name="push_back2"> - <property name="text"> - <string>Back to Feeds</string> - </property> - <property name="flat"> - <bool>true</bool> - </property> - </widget> - </item> - </layout> - </item> - <item> - <widget class="QGroupBox" name="groupBox_2"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Expanding"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="title"> - <string>New Feed Subscription</string> - </property> - <property name="alignment"> - <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter</set> - </property> - <layout class="QVBoxLayout" name="verticalLayout_6"> - <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"> - <property name="text"> - <string>RSS URL</string> - </property> - <property name="alignment"> - <set>Qt::AlignCenter</set> - </property> - </widget> - </item> - <item> - <layout class="QHBoxLayout" name="horizontalLayout_10"> - <item> - <widget class="QLineEdit" name="line_new_url"/> - </item> - <item> - <widget class="QToolButton" name="tool_add_preset"> - <property name="toolTip"> - <string>Load a preset RSS Feed</string> - </property> - <property name="text"> - <string/> - </property> - <property name="popupMode"> - <enum>QToolButton::InstantPopup</enum> - </property> - </widget> - </item> - </layout> - </item> - <item> - <layout class="QHBoxLayout" name="horizontalLayout_5"> - <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="QPushButton" name="push_add_url"> - <property name="text"> - <string>Add to Feeds</string> - </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> - </layout> - </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>40</height> - </size> - </property> - </spacer> - </item> - </layout> - </widget> - <widget class="QWidget" name="page_settings"> - <layout class="QVBoxLayout" name="verticalLayout_7"> - <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_6"> - <item> - <widget class="QPushButton" name="push_back3"> - <property name="text"> - <string>Back to Feeds</string> - </property> - <property name="flat"> - <bool>true</bool> - </property> - </widget> - </item> - </layout> - </item> - <item> - <widget class="QGroupBox" name="groupBox_3"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Expanding"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="title"> - <string>Feed Reader Settings</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout_8"> - <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="QCheckBox" name="check_manual_sync"> - <property name="text"> - <string>Manual Sync Only</string> - </property> - </widget> - </item> - <item> - <widget class="QGroupBox" name="groupBox_4"> - <property name="toolTip"> - <string>Some RSS feeds may request custom update intervals instead of using this setting</string> - </property> - <property name="title"> - <string>Default Sync Interval</string> - </property> - <layout class="QHBoxLayout" name="horizontalLayout_7"> - <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="QSpinBox" name="spin_synctime"> - <property name="minimum"> - <number>1</number> - </property> - <property name="maximum"> - <number>60</number> - </property> - </widget> - </item> - <item> - <widget class="QComboBox" name="combo_sync_units"> - <property name="currentText"> - <string>Hour(s)</string> - </property> - <property name="currentIndex"> - <number>1</number> - </property> - <item> - <property name="text"> - <string>Minutes</string> - </property> - </item> - <item> - <property name="text"> - <string>Hour(s)</string> - </property> - </item> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <spacer name="verticalSpacer_2"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>20</width> - <height>40</height> - </size> - </property> - </spacer> - </item> - <item> - <layout class="QHBoxLayout" name="horizontalLayout_9"> - <item> - <spacer name="horizontalSpacer_3"> - <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="QPushButton" name="push_save_settings"> - <property name="text"> - <string>Save Settings</string> - </property> - </widget> - </item> - <item> - <spacer name="horizontalSpacer_4"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - </layout> - </item> - </layout> - </widget> - </item> - </layout> - </widget> - </widget> - </item> - </layout> - </widget> - <resources/> - <connections/> -</ui> diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/rssreader/RSSObjects.cpp b/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/rssreader/RSSObjects.cpp deleted file mode 100644 index 0a805252..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/rssreader/RSSObjects.cpp +++ /dev/null @@ -1,287 +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 -//=========================================== -#include "RSSObjects.h" -#include <QNetworkRequest> -#include <QXmlStreamReader> - -#include "LSession.h" - -//============ -// PUBLIC -//============ -RSSReader::RSSReader(QObject *parent, QString settingsPrefix) : QObject(parent){ - NMAN = new QNetworkAccessManager(this); - connect(NMAN, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*)) ); - connect(NMAN, SIGNAL(sslErrors(QNetworkReply*, const QList<QSslError>&)), this, SLOT(sslErrors(QNetworkReply*, const QList<QSslError>&)) ); - - setprefix = settingsPrefix; - syncTimer = new QTimer(this); - syncTimer->setInterval(300000); //5 minutes - connect(syncTimer, SIGNAL(timeout()), this, SLOT(checkTimes())); - syncTimer->start(); -} - -RSSReader::~RSSReader(){ - -} - -//Information retrieval -QStringList RSSReader::channels(){ - QStringList urls = hash.keys(); - QStringList ids; - //sort all the channels by title before output - for(int i=0; i<urls.length(); i++){ - QString title = hash[urls[i]].title; - if(title.isEmpty()){ title = "ZZZ"; } //put currently-invalid ones at the end of the list - ids << title+" : "+hash[urls[i]].originalURL; - } - ids.sort(); - //Now strip off all the titles again to just get the IDs - for(int i=0; i<ids.length(); i++){ - ids[i] = ids[i].section(" : ",-1); - } - return ids; -} - -RSSchannel RSSReader::dataForID(QString ID){ - QString key = keyForUrl(ID); - if(hash.contains(key)){ return hash[key]; } - else{ return RSSchannel(); } -} - -//Initial setup -void RSSReader::addUrls(QStringList urls){ - //qDebug() << "Add URLS:" << urls; - for(int i=0; i<urls.length(); i++){ - //Note: Make sure we get the complete URL form for accurate comparison later - QString url = QUrl(urls[i]).toString(); - QString key = keyForUrl(url); - if(hash.contains(key)){ continue; } //already handled - RSSchannel blank; - blank.originalURL = url; - hash.insert(url, blank); //put the empty struct into the hash for now - requestRSS(url); //startup the initial request for this url - } - emit newChannelsAvailable(); -} - -void RSSReader::removeUrl(QString ID){ - QString key = keyForUrl(ID); - if(hash.contains(key)){ hash.remove(key); } - emit newChannelsAvailable(); -} - -//================= -// PUBLIC SLOTS -//================= -void RSSReader::syncNow(){ - QStringList urls = hash.keys(); - for(int i=0; i<urls.length(); i++){ - requestRSS(hash[urls[i]].originalURL); - } -} - -//================= -// PRIVATE -//================= -QString RSSReader::keyForUrl(QString url){ - //get current hash key for this URL - QStringList keys = hash.keys(); - if(keys.contains(url)){ return url; } //this is already a valid key - for(int i=0; i<keys.length(); i++){ - if(hash[keys[i]].originalURL == url){ return keys[i]; } //this was an original URL - } - return ""; -} - -void RSSReader::requestRSS(QString url){ - if(!outstandingURLS.contains(url)){ - //qDebug() << "Request URL:" << url; - NMAN->get( QNetworkRequest( QUrl(url) ) ); - outstandingURLS << url; - } -} - -//RSS parsing functions -RSSchannel RSSReader::readRSS(QByteArray bytes){ - //Note: We could expand this later to support multiple "channel"s per Feed - // but it seems like there is normally only one channel anyway - //qDebug() << "Read RSS:" << bytes.left(100); - QXmlStreamReader xml(bytes); - RSSchannel rssinfo; - //qDebug() << "Can Read XML Stream:" << !xml.hasError(); - if(xml.readNextStartElement()){ - //qDebug() << " - RSS Element:" << xml.name(); - if(xml.name() == "rss" && (xml.attributes().value("version") =="2.0" || xml.attributes().value("version") =="0.91") ){ - while(xml.readNextStartElement()){ - //qDebug() << " - RSS Element:" << xml.name(); - if(xml.name()=="channel"){ rssinfo = readRSSChannel(&xml); } - else{ xml.skipCurrentElement(); } - } - } - } - if(xml.hasError()){ qDebug() << " - XML Read Error:" << xml.errorString() << "\n" << bytes; } - return rssinfo; -} -RSSchannel RSSReader::readRSSChannel(QXmlStreamReader *rss){ - RSSchannel info; - info.timetolive = -1; - while(rss->readNextStartElement()){ - //qDebug() << " - RSS Element (channel):" <<rss->name(); - if(rss->name()=="item"){ info.items << readRSSItem(rss); } - else if(rss->name()=="title"){ info.title = rss->readElementText(); } - else if(rss->name()=="link"){ - QString txt = rss->readElementText(); - if(!txt.isEmpty()){ info.link = txt; } - } - else if(rss->name()=="description"){ info.description = rss->readElementText(); } - else if(rss->name()=="lastBuildDate"){ info.lastBuildDate = RSSDateTime(rss->readElementText()); } - else if(rss->name()=="pubDate"){ info.lastPubDate = RSSDateTime(rss->readElementText()); } - else if(rss->name()=="image"){ readRSSImage(&info, rss); } - //else if(rss->name()=="skipHours"){ info.link = rss->readElementText(); } - //else if(rss->name()=="skipDays"){ info.link = rss->readElementText(); } - else if(rss->name()=="ttl"){ info.timetolive = rss->readElementText().toInt(); } - else{ rss->skipCurrentElement(); } - } - return info; -} - -RSSitem RSSReader::readRSSItem(QXmlStreamReader *rss){ - RSSitem item; - while(rss->readNextStartElement()){ - //qDebug() << " - RSS Element (Item):" << rss->name(); - if(rss->name()=="title"){ item.title = rss->readElementText(); } - else if(rss->name()=="link"){ item.link = rss->readElementText(); } - else if(rss->name()=="description"){ item.description = rss->readElementText(); } - else if(rss->name()=="comments"){ item.comments_url = rss->readElementText(); } - else if(rss->name()=="author"){ - //Special handling - this field can contain both email and name - QString raw = rss->readElementText(); - if(raw.contains("@")){ - item.author_email = raw.split(" ").filter("@").first(); - item.author = raw.remove(item.author_email).remove("(").remove(")").simplified(); //the name is often put within parentheses after the email - }else{ item.author = raw; } - } - else if(rss->name()=="guid"){ item.guid = rss->readElementText(); } - else if(rss->name()=="pubDate"){ item.pubdate = RSSDateTime(rss->readElementText()); } - else{ rss->skipCurrentElement(); } - } - return item; -} - -void RSSReader::readRSSImage(RSSchannel *item, QXmlStreamReader *rss){ - while(rss->readNextStartElement()){ - //qDebug() << " - RSS Element (Image):" << rss->name(); - if(rss->name()=="url"){ item->icon_url = rss->readElementText(); } - else if(rss->name()=="title"){ item->icon_title = rss->readElementText(); } - else if(rss->name()=="link"){ item->icon_link = rss->readElementText(); } - else if(rss->name()=="width"){ item->icon_size.setWidth(rss->readElementText().toInt()); } - else if(rss->name()=="height"){ item->icon_size.setHeight(rss->readElementText().toInt()); } - else if(rss->name()=="description"){ item->icon_description = rss->readElementText(); } - } - //Go ahead and kick off the request for the icon - if(!item->icon_url.isEmpty()){ requestRSS(item->icon_url); } -} - -QDateTime RSSReader::RSSDateTime(QString datetime){ - return QDateTime::fromString(datetime, Qt::RFC2822Date); -} - -//================= -// PRIVATE SLOTS -//================= -void RSSReader::replyFinished(QNetworkReply *reply){ - QString url = reply->request().url().toString(); - //qDebug() << "Got Reply:" << url; - QString key = keyForUrl(url); //current hash key for this URL - QByteArray data = reply->readAll(); - outstandingURLS.removeAll(url); - if(data.isEmpty()){ - //qDebug() << "No data returned:" << url; - //see if the URL can be adjusted for known issues - bool handled = false; - QUrl redirecturl = reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl(); - if(redirecturl.isValid() && (redirecturl.toString() != url )){ - //New URL redirect - make the change and send a new request - QString newurl = redirecturl.toString(); - //qDebug() << " - Redirect to:" << newurl; - if(hash.contains(key) && !hash.contains(newurl)){ - hash.insert(newurl, hash.take(key) ); //just move the data over to the new url - requestRSS(newurl); - emit newChannelsAvailable(); - handled = true; - } - } - if(!handled && hash.contains(key) ){ - emit rssChanged(hash[key].originalURL); - } - return; - } - - if(!hash.contains(key)){ - //qDebug() << " - hash does not contain URL:" << url; - //URL removed from list while a request was outstanding? - //Could also be an icon fetch response - QStringList keys = hash.keys(); - for(int i=0; i<keys.length(); i++){ - //qDebug() << " - Check for icon URL:" << hash[keys[i]].icon_url; - if(hash[keys[i]].icon_url.toLower() == url.toLower()){ //needs to be case-insensitive - //Icon fetch response - RSSchannel info = hash[keys[i]]; - QImage img = QImage::fromData(data); - info.icon = QIcon( QPixmap::fromImage(img) ); - //qDebug() << "Got Icon response:" << url << info.icon; - hash.insert(keys[i], info); //insert back into the hash - emit rssChanged( hash[keys[i]].originalURL ); - break; - } - } - reply->deleteLater(); - }else{ - //RSS reply - RSSchannel info = readRSS(data); //QNetworkReply can be used as QIODevice - reply->deleteLater(); //clean up - //Validate the info and announce any changes - if(info.title.isEmpty() || info.link.isEmpty() || info.description.isEmpty()){ - qDebug() << "Missing XML Information:" << url << info.title << info.link << info.description; - return; - } //bad info/read - //Update the bookkeeping elements of the info - if(info.timetolive<=0){ info.timetolive = LSession::handle()->DesktopPluginSettings()->value(setprefix+"default_interval_minutes", 60).toInt(); } - if(info.timetolive <=0){ info.timetolive = 60; } //error in integer conversion from settings? - info.lastsync = QDateTime::currentDateTime(); info.nextsync = info.lastsync.addSecs(info.timetolive * 60); - //Now see if anything changed and save the info into the hash - bool changed = (hash[key].lastBuildDate.isNull() || (hash[key].lastBuildDate < info.lastBuildDate) ); - bool newinfo = false; - if(changed){ newinfo = hash[key].title.isEmpty(); } //no previous info from this URL - info.originalURL = hash[key].originalURL; //make sure this info gets preserved across updates - if(!hash[key].icon.isNull()){ info.icon = hash[key].icon; } //copy over the icon from the previous reply - hash.insert(key, info); - if(newinfo){ emit newChannelsAvailable(); } //new channel - else if(changed){ emit rssChanged(info.originalURL); } //update to existing channel - } -} - -void RSSReader::sslErrors(QNetworkReply *reply, const QList<QSslError> &errors){ - int ok = 0; - qDebug() << "SSL Errors Detected (RSS Reader):" << reply->url(); - for(int i=0; i<errors.length(); i++){ - if(errors[i].error()==QSslError::SelfSignedCertificate || errors[i].error()==QSslError::SelfSignedCertificateInChain){ ok++; } - else{ qDebug() << "Unhandled SSL Error:" << errors[i].errorString(); } - } - if(ok==errors.length()){ qDebug() << " - Permitted:" << reply->url(); reply->ignoreSslErrors(); } - else{ qDebug() << " - Denied:" << reply->url(); } -} - -void RSSReader::checkTimes(){ - if(LSession::handle()->DesktopPluginSettings()->value(setprefix+"manual_sync_only", false).toBool()){ return; } - QStringList urls = hash.keys(); - QDateTime cdt = QDateTime::currentDateTime(); - for(int i=0; i<urls.length(); i++){ - if(hash[urls[i]].nextsync < cdt){ requestRSS(urls[i]); } - } -} diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/rssreader/RSSObjects.h b/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/rssreader/RSSObjects.h deleted file mode 100644 index 3069bf8d..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/rssreader/RSSObjects.h +++ /dev/null @@ -1,105 +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_DESKTOP_RSS_READER_PLUGIN_OBJECT_H -#define _LUMINA_DESKTOP_RSS_READER_PLUGIN_OBJECT_H - -#include <QNetworkAccessManager> -#include <QNetworkReply> -#include <QString> -#include <QDateTime> -#include <QList> -#include <QIcon> -#include <QTimer> -#include <QXmlStreamReader> //Contained in the Qt "core" module - don't need the full "xml" module for this -#include <QSslError> - -struct RSSitem{ - //Required Fields - QString title, link, description; - - //Optional Fields - QString comments_url, author_email, author, guid; - QDateTime pubdate; //when the item was published - //IGNORED INFO from RSS2 spec: "category", "source", "enclosure" -}; - -struct RSSchannel{ - //Required fields - QString title, link, description; - - //Optional Fields - QDateTime lastBuildDate, lastPubDate; //last build/publish dates - // - channel refresh information - int timetolive; //in minutes - time until next sync should be performed - //QList<int> skiphours; - //QStringList skipdays; - // - icon info - QIcon icon; - QString icon_url, icon_title, icon_link, icon_description; - QSize icon_size; - //All items within this channel - QList<RSSitem> items; - - //Optional RSS2 elements ignored: - // "cloud", "textInput", "rating", "language", "copyright", "managingEditor", "webMaster", - // "category", "generator", "docs" - - //Internal data for bookkeeping - QDateTime lastsync, nextsync; - QString originalURL; //in case it was redirected to some "fixed" url later -}; - -class RSSReader : public QObject{ - Q_OBJECT -public: - RSSReader(QObject *parent, QString settingsPrefix); - ~RSSReader(); - - //Information retrieval - QStringList channels(); //returns all ID's - RSSchannel dataForID(QString ID); - - //Initial setup - void addUrls(QStringList urls); - void removeUrl(QString ID); - -public slots: - void syncNow(); //not generally needed - -private: - //Internal data objects - QHash<QString, RSSchannel> hash; // ID/data - QString setprefix; - QTimer *syncTimer; - QNetworkAccessManager *NMAN; - QStringList outstandingURLS; - - - //Simple hash data search functions - QString keyForUrl(QString url); - - //Network request function - void requestRSS(QString url); - - //RSS parsing functions - RSSchannel readRSS(QByteArray bytes); - RSSchannel readRSSChannel(QXmlStreamReader *rss); - RSSitem readRSSItem(QXmlStreamReader *rss); - void readRSSImage(RSSchannel *item, QXmlStreamReader *rss); - QDateTime RSSDateTime(QString datetime); - -private slots: - void replyFinished(QNetworkReply *reply); - void sslErrors(QNetworkReply *reply, const QList<QSslError> &errors); - void checkTimes(); - -signals: - void rssChanged(QString); //ID - void newChannelsAvailable(); -}; - -#endif diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/systemmonitor/MonitorWidget.cpp b/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/systemmonitor/MonitorWidget.cpp deleted file mode 100644 index 951bcc98..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/systemmonitor/MonitorWidget.cpp +++ /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 -//=========================================== -#include "MonitorWidget.h" -#include "ui_MonitorWidget.h" - - -#include <LuminaXDG.h> -#include <LuminaOS.h> - -MonitorWidget::MonitorWidget(QWidget *parent) : QWidget(parent), ui(new Ui::MonitorWidget()){ - ui->setupUi(this); //load the designer form - upTimer = new QTimer(this); - upTimer->setInterval(2000); //update every 2 seconds - connect(upTimer, SIGNAL(timeout()), this, SLOT(UpdateStats()) ); - LoadIcons(); - upTimer->start(); -} - -MonitorWidget::~MonitorWidget(){ - //qDebug() << "Removing MonitorWidget"; -} - -void MonitorWidget::LoadIcons(){ - ui->tabWidget->setTabIcon(0,LXDG::findIcon("appointment-recurring","") ); //Summary - ui->tabWidget->setTabIcon(1,LXDG::findIcon("drive-harddisk","") ); //Disk Usage - //ui->tabWidget->setTabIcon(1,LXDG::findIcon("cpu","") ); //CPU Log - //ui->tabWidget->setTabIcon(2,LXDG::findIcon("media-flash-memory-stick","") ); //Mem Log -} - -void MonitorWidget::UpdateStats(){ - //qDebug() << "Updating System statistics..."; - ui->label_temps->setText( LOS::CPUTemperatures().join(", ") ); - if(ui->progress_cpu->isEnabled()){ - int perc = LOS::CPUUsagePercent(); - ui->progress_cpu->setValue(perc); - if(perc<0){ ui->progress_cpu->setEnabled(false); } //disable this for future checks - } - if(ui->progress_mem->isEnabled()){ - int perc = LOS::MemoryUsagePercent(); - ui->progress_mem->setValue(perc); - if(perc<0){ ui->progress_mem->setEnabled(false); } //disable this for future checks - } - ui->label_diskinfo->setText( LOS::DiskUsage().join("\n") ); - //Also perform/update the logs as necessary - // -- TO DO -- -} - -SysMonitorPlugin::SysMonitorPlugin(QWidget *parent, QString ID) : LDPlugin(parent, ID){ - monitor = new MonitorWidget(this); - this->setLayout( new QVBoxLayout() ); - this->layout()->setContentsMargins(0,0,0,0); - this->layout()->addWidget(monitor); - - //this->setInitialSize(monitor->sizeHint().width(),monitor->sizeHint().height()); -} - -SysMonitorPlugin::~SysMonitorPlugin(){ - //qDebug() << "Remove SysMonitorPlugin"; -}
\ No newline at end of file diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/systemmonitor/MonitorWidget.h b/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/systemmonitor/MonitorWidget.h deleted file mode 100644 index 618ac8f4..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/systemmonitor/MonitorWidget.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 plugin is a simple hardware status monitor on the desktop -//=========================================== -#ifndef _LUMINA_DESKTOP_PLUGIN_HW_MONITOR_WIDGET_H -#define _LUMINA_DESKTOP_PLUGIN_HW_MONITOR_WIDGET_H - -#include <QTimer> -#include <QWidget> - -#include "../LDPlugin.h" - -namespace Ui{ - class MonitorWidget; -}; - -class MonitorWidget : public QWidget{ - Q_OBJECT -public: - MonitorWidget(QWidget *parent = 0); - ~MonitorWidget(); - -public slots: - void LoadIcons(); - -private: - Ui::MonitorWidget *ui; - QTimer *upTimer; - -private slots: - void UpdateStats(); -}; - -// Wrapper class to put this into a desktop plugin container -class SysMonitorPlugin : public LDPlugin{ - Q_OBJECT -public: - SysMonitorPlugin(QWidget* parent, QString ID); - ~SysMonitorPlugin(); - - virtual QSize defaultPluginSize(){ - // The returned QSize is in grid points (typically 100 or 200 pixels square) - return QSize(3,2); - } - -private: - MonitorWidget *monitor; - -public slots: - void LocaleChange(){ - QTimer::singleShot(0,monitor, SLOT(LoadIcons())); - } - void ThemeChange(){ - QTimer::singleShot(0,monitor, SLOT(LoadIcons())); - } -}; - -#endif diff --git a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/systemmonitor/MonitorWidget.ui b/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/systemmonitor/MonitorWidget.ui deleted file mode 100644 index 8798bc25..00000000 --- a/src-qt5/core/lumina-desktop-unified/src-DE/desktop-plugins/systemmonitor/MonitorWidget.ui +++ /dev/null @@ -1,143 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>MonitorWidget</class> - <widget class="QWidget" name="MonitorWidget"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>300</width> - <height>122</height> - </rect> - </property> - <property name="windowTitle"> - <string>Form</string> - </property> - <layout class="QHBoxLayout" name="horizontalLayout"> - <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="QTabWidget" name="tabWidget"> - <property name="currentIndex"> - <number>0</number> - </property> - <widget class="QWidget" name="tab_summary"> - <attribute name="title"> - <string>Summary</string> - </attribute> - <layout class="QFormLayout" name="formLayout"> - <item row="0" column="0"> - <widget class="QLabel" name="label"> - <property name="text"> - <string>CPU Temp:</string> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QLabel" name="label_temps"> - <property name="text"> - <string notr="true"/> - </property> - </widget> - </item> - <item row="1" column="0"> - <widget class="QLabel" name="label_2"> - <property name="text"> - <string>CPU Usage:</string> - </property> - </widget> - </item> - <item row="1" column="1"> - <widget class="QProgressBar" name="progress_cpu"> - <property name="value"> - <number>0</number> - </property> - </widget> - </item> - <item row="2" column="0"> - <widget class="QLabel" name="label_3"> - <property name="text"> - <string>Mem Usage:</string> - </property> - </widget> - </item> - <item row="2" column="1"> - <widget class="QProgressBar" name="progress_mem"> - <property name="value"> - <number>0</number> - </property> - </widget> - </item> - </layout> - </widget> - <widget class="QWidget" name="tab_disks"> - <attribute name="title"> - <string>Disk I/O</string> - </attribute> - <layout class="QVBoxLayout" name="verticalLayout"> - <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="QScrollArea" name="scrollArea"> - <property name="frameShape"> - <enum>QFrame::NoFrame</enum> - </property> - <property name="widgetResizable"> - <bool>true</bool> - </property> - <widget class="QWidget" name="scrollAreaWidgetContents"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>292</width> - <height>89</height> - </rect> - </property> - <layout class="QVBoxLayout" name="verticalLayout_2"> - <item> - <widget class="QLabel" name="label_diskinfo"> - <property name="text"> - <string notr="true"/> - </property> - <property name="alignment"> - <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set> - </property> - <property name="wordWrap"> - <bool>true</bool> - </property> - </widget> - </item> - </layout> - </widget> - </widget> - </item> - </layout> - </widget> - </widget> - </item> - </layout> - </widget> - <resources/> - <connections/> -</ui> 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"><current dir></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> diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/ContextMenu.cpp b/src-qt5/core/lumina-desktop-unified/src-desktop/ContextMenu.cpp index c3e9a1db..47f0e3d7 100644 --- a/src-qt5/core/lumina-desktop-unified/src-desktop/ContextMenu.cpp +++ b/src-qt5/core/lumina-desktop-unified/src-desktop/ContextMenu.cpp @@ -6,67 +6,105 @@ //=========================================== #include "ContextMenu.h" #include <global-objects.h> +#include <JsonMenu.h> void DesktopContextMenu::SettingsChanged(DesktopSettings::File file){ - if(file == DesktopSettings::ContextMenu){ UpdateMenu(); } + if(file == DesktopSettings::ContextMenu){ UpdateMenu(false); } } -void DesktopContextMenu::UpdateMenu(){ +void DesktopContextMenu::UpdateMenu(bool fast){ //Put a label at the top unsigned int num = Lumina::NWS->currentWorkspace(); workspaceLabel->setText( "<b>"+QString(tr("Workspace %1")).arg(QString::number(num+1))+"</b>"); + if(fast && usewinmenu){ updateWinMenu(); } + if(fast){ return; } //already done this->clear(); //clear it for refresh this->addAction(wkspaceact); this->addSeparator(); //Now load the user's menu setup and fill the menu - QStringList items = DesktopSettings::instance()->value(DesktopSettings::ContextMenu, "itemlist", QStringList()<< "terminal" << "filemanager" << "line" << "settings" <<"lockdesktop").toStringList(); - //usewinmenu=false; + QStringList items = DesktopSettings::instance()->value(DesktopSettings::ContextMenu, "itemlist", QStringList()<< "terminal" << "filemanager" << "line" << "applications" << "windowlist" << "settings" << "lockdesktop").toStringList(); + usewinmenu=false; for(int i=0; i<items.length(); i++){ - if(items[i]=="terminal"){ this->addAction(LXDG::findIcon("utilities-terminal",""), tr("Terminal"))->setWhatsThis("lumina-open -terminal"); } - else if(items[i]=="lockdesktop"){ this->addAction(LXDG::findIcon("system-lock-screen",""), tr("Lock Session"), this, SIGNAL(LockSession()) ); } - else if(items[i]=="filemanager"){ this->addAction( LXDG::findIcon("user-home",""), tr("Browse Files"))->setWhatsThis("lumina-open \""+QDir::homePath()+"\""); } - //else if(items[i]=="applications"){ this->addMenu( LSession::handle()->applicationMenu() ); } + if(items[i]=="terminal"){ + QAction *act = this->addAction( tr("Terminal")); + LIconCache::instance()->loadIcon(act, "utilities-terminal"); + act->setWhatsThis("--terminal"); + } + else if(items[i]=="lockdesktop"){ + QAction *act = this->addAction( tr("Lock Session"), this, SIGNAL(LockSession()) ); + LIconCache::instance()->loadIcon(act, "system-lock-screen"); + } + else if(items[i]=="filemanager"){ + QAction *act = this->addAction( tr("Browse Files")); + LIconCache::instance()->loadIcon(act, "user-home"); + act->setWhatsThis(QDir::homePath()); + } + else if(items[i]=="applications"){ + if(appMenu==0){ updateAppMenu(); } + this->addMenu( appMenu ); + } else if(items[i]=="line"){ this->addSeparator(); } //else if(items[i]=="settings"){ this->addMenu( LSession::handle()->settingsMenu() ); } - //else if(items[i]=="windowlist"){ this->addMenu( winMenu); usewinmenu=true;} - else if(items[i].startsWith("app::::") && items[i].endsWith(".desktop")){ + else if(items[i]=="windowlist"){ + if(winMenu==0){ updateWinMenu(); } + this->addMenu( winMenu); + usewinmenu=true; + }else if(items[i].startsWith("app::::") && items[i].endsWith(".desktop")){ //Custom *.desktop application QString file = items[i].section("::::",1,1).simplified(); - XDGDesktop xdgf(file);// = LXDG::loadDesktopFile(file, ok); - if(xdgf.type!=XDGDesktop::BAD){ - this->addAction( LXDG::findIcon(xdgf.icon,""), xdgf.name)->setWhatsThis("lumina-open \""+file+"\""); - }else{ - qDebug() << "Could not load application file:" << file; - } - }/*else if(items[i].startsWith("jsonmenu::::")){ + //Try to use the pre-loaded app entry for this + XDGDesktop *xdg = XDGDesktopList::instance()->findAppFile(file); + if(xdg!=0){ xdg->addToMenu(this); } + else{ + XDGDesktop xdgf(file);// = LXDG::loadDesktopFile(file, ok); + if(xdgf.type!=XDGDesktop::BAD){ xdgf.addToMenu(this); } + } + }else if(items[i].startsWith("jsonmenu::::")){ //Custom JSON menu system (populated on demand via external scripts/tools QStringList info = items[i].split("::::"); //FORMAT:[ "jsonmenu",exec,name, icon(optional)] if(info.length()>=3){ - qDebug() << "Custom JSON Menu Loaded:" << info; - JsonMenu *tmp = new JsonMenu(info[1], deskMenu); + //qDebug() << "Custom JSON Menu Loaded:" << info; + JsonMenu *tmp = new JsonMenu(info[1], this); tmp->setTitle(info[2]); connect(tmp, SIGNAL(triggered(QAction*)), this, SLOT(SystemApplication(QAction*)) ); if(info.length()>=4){ tmp->setIcon( LXDG::findIcon(info[3],"") ); } this->addMenu(tmp); } - }*/ + } } //Now add the system quit options this->addSeparator(); this->addAction(LXDG::findIcon("system-log-out",""), tr("Leave"), this, SIGNAL(showLeaveDialog()) ); } +// === PRIVATE === +void DesktopContextMenu::AddWindowToMenu(NativeWindow *win){ + QString label = win->property(NativeWindow::ShortTitle).toString(); + if(label.isEmpty()){ label = win->property(NativeWindow::Title).toString(); } + if(label.isEmpty()){ label = win->property(NativeWindow::Name).toString(); } + QAction *tmp = winMenu->addAction( win->property(NativeWindow::Icon).value<QIcon>(), label, win, SLOT(toggleVisibility()) ); + //Need to change the visual somehow to indicate whether it is visible or not + //bool visible = win->property(NativeWindow::Visible).toBool(); + // TODO +} + // === PUBLIC === DesktopContextMenu::DesktopContextMenu(QWidget *parent) : QMenu(parent){ if(parent!=0){ parent->setContextMenuPolicy(Qt::CustomContextMenu); connect(parent, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(showMenu(const QPoint&)) ); } + appMenu = 0; + winMenu = 0; + usewinmenu = false; workspaceLabel = new QLabel(0); + workspaceLabel->setAlignment(Qt::AlignCenter); wkspaceact = new QWidgetAction(0); wkspaceact->setDefaultWidget(workspaceLabel); connect(this, SIGNAL(triggered(QAction*)), this, SLOT(LaunchAction(QAction*)) ); - + //Connect to a couple global objects + connect(this, SIGNAL(aboutToShow()), this, SLOT(UpdateMenu()) ); //this will do a "fast" update + qDebug() << "Done Creating Context Menu"; } DesktopContextMenu::~DesktopContextMenu(){ @@ -78,9 +116,9 @@ DesktopContextMenu::~DesktopContextMenu(){ void DesktopContextMenu::start(){ connect(DesktopSettings::instance(), SIGNAL(FileModified(DesktopSettings::File)), this, SLOT(SettingsChanged(DesktopSettings::File)) ); connect(this, SIGNAL(LockSession()), Lumina::SS, SLOT(LockScreenNow()) ); - + connect(XDGDesktopList::instance(), SIGNAL(appsUpdated()), this, SLOT(updateAppMenu()) ); + UpdateMenu(false); //Still need to connect to some "workspaceChanged(int)" signal - QTimer::singleShot(0, this, SLOT(UpdateMenu()) ); //initial update } // === PRIVATE SLOTS === @@ -89,9 +127,63 @@ void DesktopContextMenu::LaunchAction(QAction *act){ if(act->whatsThis().isEmpty() || act->parent()!=this ){ return; } qDebug() << "Launch Menu Action:" << act->whatsThis(); QString cmd = act->whatsThis(); - ExternalProcess::launch(cmd); + if(cmd.startsWith("-action ")){ + LaunchApp(act); //forward this to the XDGDesktop parser + }else if(cmd.startsWith("--") || cmd.endsWith(".desktop")){ + LSession::instance()->LaunchStandardApplication(cmd); + }else if(QFile::exists(cmd)){ + QString mime = XDGMime::fromFileName(cmd); + LSession::instance()->LaunchStandardApplication(mime, QStringList() << cmd); + } +} + +void DesktopContextMenu::LaunchApp(QAction *act){ + + // The "whatsThis() field is set by the XDGDesktop object/format + if(act->whatsThis().isEmpty()){ return; } + QString action, file; + QString wt = act->whatsThis(); + if(wt.startsWith("-action")){ + action = wt.section(" ",1,1); action=action.remove("\""); + file = wt.section(" ",2,-1); file=file.remove("\""); + } + else{ file = wt; } + LSession::instance()->LaunchDesktopApplication(file, action); + } void DesktopContextMenu::showMenu(const QPoint &pt){ this->popup(pt); } + +void DesktopContextMenu::updateAppMenu(){ + //qDebug() << "Update App Menu"; + if(appMenu==0){ + appMenu = new QMenu(this); + appMenu->setTitle( tr("Applications")); + LIconCache::instance()->loadIcon( appMenu, "system-run"); + connect(appMenu, SIGNAL(triggered(QAction*)), this, SLOT(LaunchApp(QAction*)) ); + } + //qDebug() << "Populate App Menu"; + XDGDesktopList::instance()->populateMenu(appMenu); +} + +void DesktopContextMenu::updateWinMenu(){ + //qDebug() << "Update Win Menu"; + if(winMenu==0){ + winMenu = new QMenu(this); + winMenu->setTitle( tr("Task Manager") ); + LIconCache::instance()->loadIcon( winMenu, "preferences-system-windows"); + } + winMenu->clear(); + QList<NativeWindow*> wins = Lumina::NWS->currentWindows(); + unsigned int wkspace = Lumina::NWS->currentWorkspace(); + for(int i=0; i<wins.length(); i++){ + //First check if this window is in the current workspace (or is "sticky") + if(wins.at(i)->property(NativeWindow::Workspace).toUInt() != wkspace + && wins.at(i)->property(NativeWindow::States).value< QList<NativeWindow::State> >().contains(NativeWindow::S_STICKY) ){ + continue; + } + AddWindowToMenu(wins.at(i)); + } +} diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/ContextMenu.h b/src-qt5/core/lumina-desktop-unified/src-desktop/ContextMenu.h index 7fd21967..78756e8c 100644 --- a/src-qt5/core/lumina-desktop-unified/src-desktop/ContextMenu.h +++ b/src-qt5/core/lumina-desktop-unified/src-desktop/ContextMenu.h @@ -13,11 +13,15 @@ class DesktopContextMenu : public QMenu{ Q_OBJECT public slots: void SettingsChanged(DesktopSettings::File); - void UpdateMenu(); //re-create the menu + void UpdateMenu(bool fast = true); //re-create the menu private: QLabel *workspaceLabel; QWidgetAction *wkspaceact; + QMenu *appMenu, *winMenu; + bool usewinmenu; + + void AddWindowToMenu(NativeWindow*); public: DesktopContextMenu(QWidget *parent = 0); @@ -27,8 +31,13 @@ public: private slots: void LaunchAction(QAction *act); + void LaunchApp(QAction *act); + void showMenu(const QPoint&); + void updateAppMenu(); + void updateWinMenu(); + signals: void LockSession(); void showLeaveDialog(); diff --git a/src-qt5/core/lumina-desktop-unified/src-screensaver/LScreenSaver.cpp b/src-qt5/core/lumina-desktop-unified/src-screensaver/LScreenSaver.cpp index 39a7b596..a0edde9f 100644 --- a/src-qt5/core/lumina-desktop-unified/src-screensaver/LScreenSaver.cpp +++ b/src-qt5/core/lumina-desktop-unified/src-screensaver/LScreenSaver.cpp @@ -8,7 +8,7 @@ #include <QScreen> #include <QApplication> -#define DEBUG 1 +#define DEBUG 0 LScreenSaver::LScreenSaver() : QWidget(0,Qt::BypassWindowManagerHint | Qt::WindowStaysOnTopHint){ starttimer = new QTimer(this); @@ -20,7 +20,6 @@ LScreenSaver::LScreenSaver() : QWidget(0,Qt::BypassWindowManagerHint | Qt::Windo LOCKER = new LLockScreen(this); LOCKER->hide(); - settings = new QSettings("lumina-desktop","lumina-screensaver",this); SSRunning = SSLocked = updating = false; this->setObjectName("LSCREENSAVERBASE"); this->setStyleSheet("LScreenSaver#LSCREENSAVERBASE{ background: grey; }"); @@ -60,10 +59,9 @@ void LScreenSaver::start(){ } void LScreenSaver::reloadSettings(){ - settings->sync(); - starttimer->setInterval( settings->value("timedelaymin",10).toInt() * 60000 ); - locktimer->setInterval( settings->value("lockdelaymin",1).toInt() * 60000 ); - hidetimer->setInterval( settings->value("hidesecs",15).toInt() * 1000 ); + starttimer->setInterval( DesktopSettings::instance()->value(DesktopSettings::ScreenSaver, "timedelaymin",10).toInt() * 60000 ); + locktimer->setInterval( DesktopSettings::instance()->value(DesktopSettings::ScreenSaver, "lockdelaymin",1).toInt() * 60000 ); + hidetimer->setInterval( DesktopSettings::instance()->value(DesktopSettings::ScreenSaver, "hidesecs",15).toInt() * 1000 ); } void LScreenSaver::newInputEvent(){ @@ -107,12 +105,14 @@ void LScreenSaver::ShowScreenSaver(){ for(int i=0; i<SCREENS.length(); i++){ bounds = bounds.united(SCREENS[i]->geometry()); if(DEBUG){ qDebug() << " - New SS Base:" << i; } - BASES << new SSBaseWidget(this, settings); + BASES << new SSBaseWidget(this); connect(BASES[i], SIGNAL(InputDetected()), this, SLOT(newInputEvent()) ); - + //Setup the geometry of the base to match the screen BASES[i]->setGeometry(SCREENS[i]->geometry()); //match this screen geometry - BASES[i]->setPlugin(settings->value("screenplugin"+QString::number(i+1), settings->value("defaultscreenplugin","random").toString() ).toString() ); + QString plug = DesktopSettings::instance()->value(DesktopSettings::ScreenSaver, "plugin_"+SCREENS[i]->name(), "").toString(); + if(plug.isEmpty()){ plug = DesktopSettings::instance()->value(DesktopSettings::ScreenSaver, "default_plugin","random").toString(); } + BASES[i]->setPlugin(plug); } //Now set the overall parent widget geometry and show everything this->setGeometry(bounds); //overall background widget @@ -151,7 +151,7 @@ void LScreenSaver::HideScreenSaver(){ emit ClosingScreenSaver(); emit LockStatusChanged(false); } - qDebug() << "Stop ScreenSavers"; + if(DEBUG){ qDebug() << "Stop ScreenSavers"; } for(int i=0; i<BASES.length(); i++){ BASES[i]->stopPainting(); BASES[i]->hide(); diff --git a/src-qt5/core/lumina-desktop-unified/src-screensaver/LScreenSaver.h b/src-qt5/core/lumina-desktop-unified/src-screensaver/LScreenSaver.h index 18f12fab..2276fb6d 100644 --- a/src-qt5/core/lumina-desktop-unified/src-screensaver/LScreenSaver.h +++ b/src-qt5/core/lumina-desktop-unified/src-screensaver/LScreenSaver.h @@ -22,7 +22,6 @@ public: private: QTimer *starttimer, *locktimer, *hidetimer; - QSettings *settings; QList<SSBaseWidget*> BASES; LLockScreen *LOCKER; int cBright; diff --git a/src-qt5/core/lumina-desktop-unified/src-screensaver/SSBaseWidget.cpp b/src-qt5/core/lumina-desktop-unified/src-screensaver/SSBaseWidget.cpp index 7854b597..a6d5be60 100644 --- a/src-qt5/core/lumina-desktop-unified/src-screensaver/SSBaseWidget.cpp +++ b/src-qt5/core/lumina-desktop-unified/src-screensaver/SSBaseWidget.cpp @@ -9,17 +9,18 @@ #define DEBUG 1 -static QStringList validPlugs; // ======== // PUBLIC // ======== -SSBaseWidget::SSBaseWidget(QWidget *parent, QSettings *set) : QWidget(parent){ - if(validPlugs.isEmpty()){ validPlugs << "none"; } //add more later - settings = set; //needed to pass along for plugins to read any special options/settings +SSBaseWidget::SSBaseWidget(QWidget *parent) : QWidget(parent){ this->setObjectName("LuminaBaseSSWidget"); ANIM = 0; this->setMouseTracking(true); plugType="none"; + restartTimer = new QTimer(this); + restartTimer->setInterval( DesktopSettings::instance()->value(DesktopSettings::ScreenSaver, "globals/plugin_time_seconds", 60).toInt() * 1000); + restartTimer->setSingleShot(true); + connect(restartTimer, SIGNAL(timeout()), this, SLOT(startPainting()) ); } SSBaseWidget::~SSBaseWidget(){ @@ -27,9 +28,7 @@ SSBaseWidget::~SSBaseWidget(){ } void SSBaseWidget::setPlugin(QString plug){ - plug = plug.toLower(); - if(validPlugs.contains(plug) || plug=="random"){ plugType = plug; } - else{ plugType = "none"; } + plugType = plug.toLower(); } // ============= @@ -48,7 +47,7 @@ void SSBaseWidget::startPainting(){ if(valid.isEmpty()){ cplug = "none"; } //no known plugins else{ cplug = valid[ qrand()%valid.length() ]; } //grab a random plugin } - if(DEBUG){ qDebug() << " - Screen Saver:" << cplug; } + if(DEBUG){ qDebug() << " - Screen Saver:" << plugType << cplug; } //Now list all the various plugins and start them appropriately QString style; if(cplug=="none"){ @@ -60,7 +59,7 @@ void SSBaseWidget::startPainting(){ this->repaint(); //If not a stylesheet-based plugin - set it here if(cplug!="none"){ - ANIM = BaseAnimGroup::NewAnimation(cplug, this, settings); + ANIM = BaseAnimGroup::NewAnimation(cplug, this); connect(ANIM, SIGNAL(finished()), this, SLOT(startPainting()) ); //repeat the plugin as needed ANIM->LoadAnimations(); } @@ -71,14 +70,19 @@ void SSBaseWidget::startPainting(){ ANIM->start(); } } + restartTimer->start(); } void SSBaseWidget::stopPainting(){ if(ANIM!=0){ - qDebug() << "Stopping Animation!!"; + if(DEBUG){ qDebug() << "Stopping Animation!!"; } ANIM->stop(); //ANIM->clear(); ANIM->deleteLater(); ANIM = 0; + //Delete any child widgets of the canvas + QList<QWidget*> widgets = this->findChildren<QWidget*>("",Qt::FindDirectChildrenOnly); + for(int i=0; i<widgets.length(); i++){ widgets[i]->deleteLater(); } } + if(restartTimer->isActive()){ restartTimer->stop(); } } diff --git a/src-qt5/core/lumina-desktop-unified/src-screensaver/SSBaseWidget.h b/src-qt5/core/lumina-desktop-unified/src-screensaver/SSBaseWidget.h index 9d987178..af809127 100644 --- a/src-qt5/core/lumina-desktop-unified/src-screensaver/SSBaseWidget.h +++ b/src-qt5/core/lumina-desktop-unified/src-screensaver/SSBaseWidget.h @@ -15,7 +15,7 @@ class SSBaseWidget : public QWidget{ Q_OBJECT public: - SSBaseWidget(QWidget *parent, QSettings *set); + SSBaseWidget(QWidget *parent); ~SSBaseWidget(); void setPlugin(QString); @@ -27,7 +27,7 @@ public slots: private: QString plugType, cplug; //type of custom painting to do BaseAnimGroup *ANIM; - QSettings *settings; + QTimer *restartTimer; private slots: diff --git a/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/BaseAnimGroup.cpp b/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/BaseAnimGroup.cpp index c8a248c0..9b095fe4 100644 --- a/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/BaseAnimGroup.cpp +++ b/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/BaseAnimGroup.cpp @@ -15,27 +15,37 @@ #include "ImageSlideshow.h" #include "VideoSlideshow.h" + +QVariant BaseAnimGroup::readSetting(QString variable, QVariant defaultvalue){ + return DesktopSettings::instance()->value(DesktopSettings::ScreenSaver, + "Animations/"+animPlugin+"/"+variable, defaultvalue); +} + //============================== // PLUGIN LOADING/LISTING //============================== -BaseAnimGroup* BaseAnimGroup::NewAnimation(QString type, QWidget *parent, QSettings *set){ +BaseAnimGroup* BaseAnimGroup::NewAnimation(QString type, QWidget *parent){ //This is where we place all the known plugin ID's, and load the associated subclass + BaseAnimGroup *anim = 0; if(type=="fireflies"){ - return (new FirefliesAnimation(parent,set)); + anim = new FirefliesAnimation(parent); }else if(type == "grav") { - return (new GravAnimation(parent, set)); + anim = new GravAnimation(parent); }else if(type == "text") { - return (new TextAnimation(parent, set)); + anim = new TextAnimation(parent); }else if(type == "imageSlideshow") { - return (new ImageAnimation(parent, set)); + anim = new ImageAnimation(parent); }else if(type == "videoSlideshow") { - return (new VideoAnimation(parent, set)); + anim = new VideoAnimation(parent); }else { //Unknown screensaver, return a blank animation group - return (new BaseAnimGroup(parent, set)); + anim = new BaseAnimGroup(parent); } + //tag the animation with the type it is and return it + if(anim!=0){ anim->animPlugin = type; } + return anim; } QStringList BaseAnimGroup::KnownAnimations(){ - return (QStringList() << "imageSlideshow" /*<< "grav" << "text" << "imageSlideshow" << "fireflies"*/); + return (QStringList() << "none" << "grav" << "text" << "imageSlideshow" << "videoSlideshow" << "fireflies"); } diff --git a/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/BaseAnimGroup.h b/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/BaseAnimGroup.h index b1324e78..92e038ed 100644 --- a/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/BaseAnimGroup.h +++ b/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/BaseAnimGroup.h @@ -16,21 +16,23 @@ class BaseAnimGroup : public QParallelAnimationGroup{ Q_OBJECT public: QWidget *canvas; - QSettings *settings; + QString animPlugin; virtual void LoadAnimations(){} //This is the main function which needs to be subclassed - BaseAnimGroup(QWidget *parent, QSettings *set){ + BaseAnimGroup(QWidget *parent){ canvas = parent; - settings = set; canvas->setCursor( QCursor(Qt::BlankCursor) ); } ~BaseAnimGroup(){} + QVariant readSetting(QString variable, QVariant defaultvalue = QVariant()); + + //============================== // PLUGIN LOADING/LISTING (Change in the .cpp file) //============================== - static BaseAnimGroup* NewAnimation(QString type, QWidget *parent, QSettings *set); + static BaseAnimGroup* NewAnimation(QString type, QWidget *parent); static QStringList KnownAnimations(); }; diff --git a/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/Fireflies.h b/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/Fireflies.h index 75dfb1ae..dfc12e79 100644 --- a/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/Fireflies.h +++ b/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/Fireflies.h @@ -12,6 +12,7 @@ #include "global-includes.h" #include "BaseAnimGroup.h" #include <QSequentialAnimationGroup> +#include <QGraphicsOpacityEffect> class Firefly : public QSequentialAnimationGroup{ Q_OBJECT @@ -34,9 +35,12 @@ private slots: movement->setEndValue(pt); movement->setDuration( qrand() %500 + 1000); //between 1000->1500 ms animations for movements //Adjust the flash duration/size a bit - flash->setDuration(qrand() %300 + 700); //700-1000 ms - int sz = qrand()%4 + 6; //6-10 pixel square + flash->setDuration(qrand() %200 + 500); //500-700 ms + int sz = qrand()%4 + 4; //6-10 pixel square + //flash->setKeyValueAt(0.5, (qrand()%50) /100.0); + //fly->resize(sz,sz); flash->setKeyValueAt(0.5, QSize(sz,sz)); //half-way point for the flash + fly->show(); } void stopped(){ fly->hide(); } @@ -46,24 +50,41 @@ public: fly = new QWidget(parent); range = parent->size(); maxX = range.width()/4; maxY = range.height()/4; - fly->setStyleSheet("background-color: qradialgradient(spread:pad, cx:0.5, cy:0.5, radius:0.5, fx:0.5, fy:0.5, stop:0 rgba(215, 215, 143, 255), stop:0.83871 rgba(221, 235, 64, 140), stop:0.99 rgba(0, 0, 0, 255), stop:1 transparent);"); + QString B = QString::number(qrand()%70); + QString RY = QString::number(qrand()%200+50); + QString style = "background-color: qradialgradient(spread:pad, cx:0.5, cy:0.5, radius:0.5, fx:0.5, fy:0.5, stop:0 rgba(245, 245, 143, 200), stop:0.83871 rgba(%1, %1, %2, 140), stop:0.99 rgba(0, 0, 0, 255), stop:1 transparent);"; + fly->setStyleSheet(style.arg(RY, B) ); //setup the movement animation movement = new QPropertyAnimation(fly); movement->setTargetObject(fly); movement->setPropertyName("pos"); movement->setEndValue( QPoint( qrand() % range.width(), qrand()%range.height()) ); //on anim start, this will become the starting point //setup the flashing animation - flash = new QPropertyAnimation(fly); + /*QGraphicsOpacityEffect *eff = new QGraphicsOpacityEffect(parent); + fly->setGraphicsEffect(eff); + flash = new QPropertyAnimation(eff, "opacity");*/ + flash = new QPropertyAnimation(this); flash->setTargetObject(fly); flash->setPropertyName("size"); - flash->setStartValue(QSize(2,2)); + flash->setStartValue(QSize(0,0)); flash->setEndValue(flash->startValue()); + //fly->setProperty("opacity",0); + //flash->setPropertyName("opacity"); + //flash->setStartValue(0); + //flash->setEndValue(0); //now setup the order of the animations this->setLoopCount(100); //do this 100 times - this->addAnimation(movement); - this->addAnimation(flash); + //Roughly half the number of fireflies with start with movement/flash + if(qrand()%2 == 1){ + this->addAnimation(movement); + this->addAnimation(flash); + }else{ + this->addAnimation(flash); + this->addAnimation(movement); + } //Start up this firefly LoopChanged(); //load initial values + fly->setGeometry( QRect(movement->startValue().toPoint(), flash->startValue().toSize()) ); connect(this, SIGNAL(currentLoopChanged(int)), this, SLOT(LoopChanged()) ); connect(this, SIGNAL(finished()), this, SLOT(stopped()) ); @@ -78,7 +99,7 @@ private: QList<Firefly*> fireflies; public: - FirefliesAnimation(QWidget *parent, QSettings *set) : BaseAnimGroup(parent, set){} + FirefliesAnimation(QWidget *parent) : BaseAnimGroup(parent){} ~FirefliesAnimation(){ this->stop(); //while(fireflies.length()>0){ fireflies.takeAt(0)->deleteLater(); } @@ -87,14 +108,14 @@ public: void LoadAnimations(){ while(fireflies.length()>0){ fireflies.takeAt(0)->deleteLater(); } canvas->setStyleSheet("background: black;"); - int number = settings->value("fireflies/number",100).toInt(); + int number = readSetting("number",qrand()%30 + 50).toInt(); for(int i=0; i<number; i++){ if(fireflies.length()>number){ continue; } Firefly *tmp = new Firefly(canvas); this->addAnimation(tmp); fireflies << tmp; } - while( fireflies.length()>number){ fireflies.takeAt(number)->deleteLater(); } + } }; diff --git a/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/Grav.h b/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/Grav.h index 50d733e9..df75ad67 100644 --- a/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/Grav.h +++ b/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/Grav.h @@ -36,7 +36,7 @@ private: double xrand = 0.4; //(qrand()%10+4)/10.0; double yrand = 0.4; //(qrand()%10+4)/10.0; - double theta = 1.5707963; + double theta = 1.5707963; //double theta = aTan((start.x() - ref->x())/(start.y() - ref->y())); QMatrix rotation = QMatrix(qCos(theta), qSin(theta), -qSin(theta), qCos(theta), -ref->x(), -ref->y()); qDebug() << rotation; @@ -46,9 +46,9 @@ private: //qDebug() << "Center" << *ref; QPoint firstP = (QPoint(ref->x() + xrand*start.x()*(qCos(0/step) -qSin(0/step)), ref->y() + yrand*start.y()*(qCos(0/step) -qSin(0/step)))); - QPoint rotFP = rotation.map(firstP); + QPoint rotFP = rotation.map(firstP); qDebug() << "First Point" << firstP; - qDebug() << "Rotation by Matrix" << rotFP; + qDebug() << "Rotation by Matrix" << rotFP; QPoint lastP = (QPoint(ref->x() + xrand*start.x()*(qCos(PI/step) -qSin(PI/step)), ref->y() + yrand*start.y()*(qCos(PI/step) -qSin(PI/step)))); orbit->setKeyValueAt(0, firstP); orbit->setKeyValueAt(1, lastP); @@ -77,13 +77,13 @@ private slots: orbit->setDuration(10); } }*/ - void stopped(){ qDebug() << "Planet stopped"; planet->hide();} + void stopped(){ planet->hide();} public: Grav(QWidget *parent) : QParallelAnimationGroup(parent){ planet = new QWidget(parent); range = parent->size(); - QPoint center = parent->geometry().center(); + QPoint center = QRect(QPoint(0,0), parent->size()).center();; //Creates a random planet size. Between 12 and 45 pixels int planet_radius = qRound(1.75* ((qrand()%20)+7) ); @@ -114,7 +114,7 @@ public: planet->show(); //Ensures the screensaver will not stop until the user wishes to login or it times out - this->setLoopCount(1); //number of orbits + this->setLoopCount(3); //number of orbits orbit->setDuration( qrand() %1000 + 19000); //20 second orbits //orbit->setEndValue(path.at(0)); //LoopChanged(0); //load initial values @@ -145,7 +145,7 @@ private slots: } public: - GravAnimation(QWidget *parent, QSettings *set) : BaseAnimGroup(parent, set){} + GravAnimation(QWidget *parent) : BaseAnimGroup(parent){} ~GravAnimation(){ sun->deleteLater(); while(planets.length()>0){ planets.takeAt(0)->deleteLater(); } @@ -154,7 +154,7 @@ public: void LoadAnimations(){ //Creates the sun, which is a thin shell with a gradient from green to yellow sun = new QWidget(canvas); - QPoint center = canvas->geometry().center(); + QPoint center = QRect(QPoint(0,0), canvas->size()).center(); QString sunstyle = QStringLiteral("background-color:qradialgradient(spread:pad, cx:0.5, cy:0.5, radius:0.5, fx:0.5, fy:0.5, ") + QStringLiteral("stop:0 rgba(0, 0, 0, 0), stop:0.38 rgba(0, 0, 0, 0), stop:0.4 rgba(82, 121, 76, 33), stop:0.5 rgba(159, 235, 148, 64), ") + QStringLiteral("stop:0.6 rgba(255, 238, 150, 129), stop:0.7 rgba(0, 0, 0, 0));"); @@ -164,11 +164,11 @@ public: wobble = new QPropertyAnimation(sun); wobble->setPropertyName("geometry"); wobble->setTargetObject(sun); - QRect initgeom = QRect(center-QPoint(12,12), QSize(60, 60)); + QRect initgeom = QRect(center-QPoint(30,30), QSize(60, 60)); wobble->setStartValue(initgeom); wobble->setKeyValueAt(0, initgeom ); //starting point wobble->setKeyValueAt(1, initgeom ); //starting point - wobble->setKeyValueAt(0.5, QRect(center-QPoint(18,18), QSize(90, 90))); //starting point + wobble->setKeyValueAt(0.5, QRect(center-QPoint(45,45), QSize(90, 90))); //starting point wobble->setDuration(2000); wobble->setLoopCount(-1); this->addAnimation(wobble); @@ -176,13 +176,13 @@ public: sun->setGeometry(initgeom); //Gives the screensaver a black background - canvas->setStyleSheet("background: black;"); + //canvas->setStyleSheet("background: black;"); //Pulls number of planets from settings, with 10 as default - int number = settings->value("planets/number",10).toInt(); + int number = readSetting("planets/number",qrand()%5+3).toInt(); //Loops through all planets and sets up the animations, then adds them to the base group and vector, which - qDebug() << "Starting planets"; + //qDebug() << "Starting planets"; for(int i=0; i<number; i++){ Grav *tmp = new Grav(canvas); this->addAnimation(tmp); diff --git a/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/ImageSlideshow.h b/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/ImageSlideshow.h index a64144ac..81bc2b35 100644 --- a/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/ImageSlideshow.h +++ b/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/ImageSlideshow.h @@ -17,7 +17,7 @@ private: QPropertyAnimation *bounce, *fading; QPixmap pixmap; QStringList imageFiles; - QString imagePath, scriptPath; + QString imagePath, scriptPath, curpixmap; QSize screenSize; bool animate, scriptLoad; @@ -40,30 +40,34 @@ private: } void chooseImage() { - QString randomFile = imagePath+imageFiles[qrand() % imageFiles.size()]; - - //Choose a new file if the chosen one is not an image - while(QImageReader::imageFormat(randomFile).isEmpty()) - randomFile = imagePath+imageFiles[qrand() % imageFiles.size()]; - if(scriptLoad){ - QProcess process; - process.start("/home/zwelch/test.sh"); - process.waitForFinished(1000); - QByteArray output = process.readAllStandardOutput(); - qDebug() << output; - pixmap.load(imagePath+imageFiles[qrand() % imageFiles.size()]); - }else{ - pixmap.load(imagePath+imageFiles[qrand() % imageFiles.size()]); - } - - //If the image is larger than the screen, then shrink the image down to 3/4 it's size (so there's still some bounce) + /*if(scriptLoad){ + QProcess process; + process.start("/home/zwelch/test.sh"); + process.waitForFinished(1000); + QByteArray output = process.readAllStandardOutput(); + //qDebug() << output; + //pixmap.load(randomFile); + }else{*/ + //File Load + QString randomFile = curpixmap; + if(imageFiles.size()>1 || curpixmap.isEmpty()){ + while(curpixmap==randomFile){ randomFile = imagePath+imageFiles[qrand() % imageFiles.size()]; } + } + if(curpixmap!=randomFile){ + curpixmap = randomFile; //save this for later + //no need to load the new file or change the label + pixmap.load(randomFile); + //If the image is larger than the screen, then shrink the image down to 3/4 it's size (so there's still some bounce) //Scale the pixmap to keep the aspect ratio instead of resizing the label itself - if(pixmap.width() > screenSize.width() or pixmap.height() > screenSize.height()) - pixmap = pixmap.scaled(screenSize*(3.0/4.0), Qt::KeepAspectRatio); + if(pixmap.width() >= (screenSize.width()-10) || pixmap.height() >= (screenSize.height()-10) ){ + pixmap = pixmap.scaled(screenSize*(3.0/4.0), Qt::KeepAspectRatio); + } + //Set pixmap to the image label + image->setPixmap(pixmap); + image->resize(pixmap.size()); + } + //} - //Set pixmap to the image label - image->setPixmap(pixmap); - image->resize(pixmap.size()); } private slots: @@ -72,7 +76,7 @@ private slots: chooseImage(); setupAnimation(); } - void stopped(){ qDebug() << "Image Stopped"; image->hide();} + void stopped(){ image->hide();} public: ImageSlideshow(QWidget *parent, QString path, bool animate, bool scriptLoad, QString scriptPath) : QParallelAnimationGroup(parent){ @@ -80,20 +84,25 @@ public: image = new QLabel(parent); screenSize = parent->size(); this->animate = animate; - this->scriptLoad = scriptLoad; - this->scriptPath = scriptPath; - + this->scriptLoad = scriptLoad; + this->scriptPath = scriptPath; + //Generate the list of files in the directory imageFiles = QDir(imagePath).entryList(QDir::Files); - if(imageFiles.empty()) - qDebug() << "Current image file path has no files."; - - //Change some default settings for the image. If scaledContents is false, the image will be cut off if resized - image->setScaledContents(true); - image->setAlignment(Qt::AlignHCenter); - - //Load a random initial image - chooseImage(); + //Ensure all the files are actually images + for(int i=0; i<imageFiles.length(); i++){ + if(QImageReader::imageFormat(imagePath+"/"+imageFiles[i]).isEmpty()){ imageFiles.removeAt(i); i--; } + } + if(imageFiles.empty()){ + qDebug() << "Current image file path has no files."; + image->setText("No image files found:\n"+imagePath); + }else{ + //Change some default settings for the image. If scaledContents is false, the image will be cut off if resized + image->setScaledContents(true); + image->setAlignment(Qt::AlignHCenter); + //Load a random initial image + chooseImage(); + } //Create the animation that moves the image across the screen bounce = new QPropertyAnimation(image, "pos", parent); @@ -117,8 +126,8 @@ public: //If no animation, center the image in the middle of the screen image->move(QPoint((parent->width()-image->width())/2,(parent->height()-image->height())/2)); - //Loop through 30 times for a total for 4 minutes - this->setLoopCount(30); + //Loop through 15 times for a total for 2 minutes + this->setLoopCount(15); bounce->setDuration(8000); fading->setDuration(8000); @@ -132,7 +141,7 @@ public: class ImageAnimation: public BaseAnimGroup{ Q_OBJECT public: - ImageAnimation(QWidget *parent, QSettings *set) : BaseAnimGroup(parent, set){} + ImageAnimation(QWidget *parent) : BaseAnimGroup(parent){} ~ImageAnimation(){ this->stop(); } @@ -140,13 +149,14 @@ public: void LoadAnimations(){ canvas->setStyleSheet("background: black;"); //Load the path of the images from the configuration file (default /usr/local/backgrounds/) - QString imagePath = settings->value("imageSlideshow/path","/usr/local/backgrounds/").toString(); + QString imagePath = readSetting("path", LOS::LuminaShare()+"../wallpapers/").toString(); //Load whether to animate the image (default true) - bool animate = settings->value("imageSlideshow/animate", true).toBool(); - bool scriptLoad = settings->value("imageSlideshow/scriptLoad", true).toBool(); - QString scriptPath; - if(scriptLoad) - scriptPath = settings->value("imageSlideshow/scriptPath", "/usr/local/backgrounds/script.sh").toString(); + bool animate = readSetting("animate", true).toBool(); + bool scriptLoad = readSetting("scriptLoad", true).toBool(); + QString scriptPath; + if(scriptLoad){ + scriptPath = readSetting("scriptPath", "/usr/local/backgrounds/script.sh").toString(); + } ImageSlideshow *tmp = new ImageSlideshow(canvas, imagePath, animate, scriptLoad, scriptPath); this->addAnimation(tmp); } diff --git a/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/SampleAnimation.h b/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/SampleAnimation.h index c2bb0c96..c7a8b237 100644 --- a/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/SampleAnimation.h +++ b/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/SampleAnimation.h @@ -18,7 +18,7 @@ private: QWidget *ball; public: - SampleAnimation(QWidget *parent, QSettings *set) : BaseAnimGroup(parent, set){} + SampleAnimation(QWidget *parent) : BaseAnimGroup(parent){} ~SampleAnimation(){ this->stop(); delete ball; } void LoadAnimations(){ diff --git a/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/Text.h b/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/Text.h index 3ec0af82..6ba18b22 100644 --- a/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/Text.h +++ b/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/Text.h @@ -12,6 +12,8 @@ #include <QParallelAnimationGroup> #include <QtMath> +#include <unistd.h> + class Text: public QParallelAnimationGroup{ Q_OBJECT private: @@ -38,15 +40,15 @@ private slots: void stopped(){ qDebug() << "Text Stopped"; text->hide();} public: - Text(QWidget *parent) : QParallelAnimationGroup(parent){ + Text(QWidget *parent, QString display) : QParallelAnimationGroup(parent){ text = new QLabel(parent); range = parent->size(); - QPoint center = parent->geometry().center(); + QPoint center = QRect( QPoint(0,0), parent->size()).center(); QString color = "rgba(" + QString::number(qrand() % 206 + 50) + ", " + QString::number(qrand() % 206 + 50) + ", " + QString::number(qrand() % 206 + 50); - text->setStyleSheet("QLabel {background-color: rgba(255, 255, 255, 10); color: " + color + "); }"); + text->setStyleSheet("QLabel {background-color: transparent; color: " + color + "); }"); text->setFont(QFont("Courier", 24, QFont::Bold)); - text->setText("test"); + text->setText(display); QFontMetrics metrics(text->font()); text->setMinimumSize(QSize( metrics.width(text->text())+10, metrics.height()*text->text().count("\n") +10)); @@ -60,7 +62,7 @@ public: v.setY((qrand() % 100 + 50) * qPow(-1, qrand() % 2)); movement->setStartValue(center); //Ensures the screensaver will not stop until the user wishes to login or it times out - this->setLoopCount(2000); //number of movements + this->setLoopCount(200); //number of wall bounces movement->setDuration(200); movement->setEndValue(QPoint(qrand() % (int)range.height(), qrand() % range.width())); LoopChanged(); //load initial values @@ -75,14 +77,22 @@ public: class TextAnimation : public BaseAnimGroup{ Q_OBJECT public: - TextAnimation(QWidget *parent, QSettings *set) : BaseAnimGroup(parent, set){} + TextAnimation(QWidget *parent) : BaseAnimGroup(parent){} ~TextAnimation(){ this->stop(); } void LoadAnimations(){ canvas->setStyleSheet("background: black;"); - Text *tmp = new Text(canvas); + //Read off the text that needs to be displayed + QString textToShow = readSetting("text", "").toString(); + if(textToShow.isEmpty()){ + char hname[300]; + gethostname(hname, 300); + textToShow = QString::fromLocal8Bit(hname); + } + // Now create the animation + Text *tmp = new Text(canvas, textToShow); this->addAnimation(tmp); } diff --git a/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/VideoSlideshow.h b/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/VideoSlideshow.h index cc3c1b83..358b4bfb 100644 --- a/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/VideoSlideshow.h +++ b/src-qt5/core/lumina-desktop-unified/src-screensaver/animations/VideoSlideshow.h @@ -10,55 +10,19 @@ #include "global-includes.h" #include "BaseAnimGroup.h" -class VideoSlideshow: public QPropertyAnimation{ - Q_OBJECT -public: - VideoSlideshow(QWidget *parent, QVideoWidget *videoWidget) : QPropertyAnimation(videoWidget, "pos", parent){ - this->setKeyValueAt(0,QPoint(0,0)); - this->setKeyValueAt(1,QPoint(0,0)); - this->setDuration(1000000); - this->setLoopCount(-1); - } - ~VideoSlideshow(){} - -}; - class VideoAnimation: public BaseAnimGroup{ Q_OBJECT private: - QString videoPath; - VideoSlideshow *tmp; + QString videoPath, singleVideo; QVideoWidget *videoWidget; QMediaPlayer *video; QStringList videoFiles; - bool multimonitor; + bool multiple; private slots: - void startVideo(QAbstractAnimation::State state) { - qDebug() << "Status: " << video->mediaStatus() << "New Animation State:" << state; - if(state==QAbstractAnimation::Running){ - video->setVolume(100); - video->play(); - } - if(state==QAbstractAnimation::Stopped && video->state()!=QMediaPlayer::StoppedState){ - video->stop(); - } - } - - void stopVideo() { - if(video->state() == QMediaPlayer::StoppedState) { - qDebug() << "Stopping Animation"; - //this->deleteLater(); - videoWidget->hide(); - tmp->stop(); - //tmp->deleteLater(); - videoWidget->deleteLater(); - video->deleteLater(); - } - } public: - VideoAnimation(QWidget *parent, QSettings *set) : BaseAnimGroup(parent, set){} + VideoAnimation(QWidget *parent) : BaseAnimGroup(parent){} ~VideoAnimation(){ this->stop(); @@ -68,36 +32,53 @@ public: canvas->setStyleSheet("background: black;"); //Load the path of the videos from the configuration file (default /usr/local/videos/) - videoPath = settings->value("videoSlideshow/path","/usr/local/videos").toString(); + videoPath = readSetting("path","/usr/local/videos").toString(); + singleVideo = readSetting("videoLocation","").toString(); + multiple = readSetting("multiple",true).toBool(); if(!videoPath.endsWith("/")){ videoPath.append("/"); } //Set whether to copy videos on two monitors or play different videos - multimonitor = settings->value("videoSlideshow/multimonitor",true).toBool(); + //multimonitor = settings->value("videoSlideshow/multimonitor",true).toBool(); + //Set up the VideoWidget video = new QMediaPlayer(canvas, QMediaPlayer::VideoSurface); videoWidget = new QVideoWidget(canvas); + video->setVideoOutput(videoWidget); videoWidget->setGeometry(QRect(QPoint(0,0), canvas->size())); - tmp = new VideoSlideshow(canvas, videoWidget); - this->addAnimation(tmp); - //Generate the list of files in the directory videoFiles = QDir(videoPath).entryList(QDir::Files); - if(videoFiles.empty()) - qDebug() << "Current video file path has no files."; + if(videoFiles.empty()){ + qDebug() << "Current video file path has no files:" << videoPath; + return; + } - this->setLoopCount(1); + if(singleVideo.isNull()) + singleVideo = videoPath+videoFiles[0]; - QUrl url = QUrl::fromLocalFile(videoPath+videoFiles[qrand() % videoFiles.size()]); - video->setMedia(url); - qDebug() << url; - video->setVideoOutput(videoWidget); + //Loading a random file from a directory + QDesktopWidget *dw = new QDesktopWidget(); + QMediaPlaylist *playlist = new QMediaPlaylist(); + if(multiple) { + for(int i = 0; i < videoFiles.size(); i++){ + playlist->addMedia(QUrl::fromLocalFile(videoPath+videoFiles[i])); + } + playlist->shuffle(); + }else{ + playlist->addMedia(QUrl::fromLocalFile(singleVideo)); + playlist->setPlaybackMode(QMediaPlaylist::CurrentItemInLoop); + } videoWidget->show(); + if(multiple) + video->setPlaylist(playlist); + + //Only play sound for one monitor to prevent messed up audio + if(dw->screenNumber(canvas) == 0) + video->setVolume(100); + else + video->setVolume(0); - qDebug() << "VideoWidget Displayed"; - connect(tmp, SIGNAL(stateChanged(QAbstractAnimation::State, QAbstractAnimation::State)), this, SLOT(startVideo(QAbstractAnimation::State)) ); - //connect(video, SIGNAL(mediaStatusChanged(QMediaPlayer::MediaStatus)), this, SLOT(startVideo()) ); - connect(video, SIGNAL(stateChanged(QMediaPlayer::State)), this, SLOT(stopVideo()) ); + video->play(); } }; diff --git a/src-qt5/core/lumina-desktop/AppMenu.cpp b/src-qt5/core/lumina-desktop/AppMenu.cpp index c3c52375..9ad51c93 100644 --- a/src-qt5/core/lumina-desktop/AppMenu.cpp +++ b/src-qt5/core/lumina-desktop/AppMenu.cpp @@ -142,7 +142,7 @@ void AppMenu::updateAppList(){ else{ ICONS->loadIcon(sact, appL[a]->icon); } sact->setToolTip(appL[a]->comment); sact->setWhatsThis("-action \""+appL[a]->actions[sa].ID+"\" \""+appL[a]->filePath+"\""); - submenu->addAction(sact); + submenu->addAction(sact); } menu->addMenu(submenu); } diff --git a/src-qt5/core/lumina-desktop/LDesktop.cpp b/src-qt5/core/lumina-desktop/LDesktop.cpp index 37bc7ffa..f9ea1534 100644 --- a/src-qt5/core/lumina-desktop/LDesktop.cpp +++ b/src-qt5/core/lumina-desktop/LDesktop.cpp @@ -88,7 +88,7 @@ QRect LDesktop::availableScreenGeom(){ return globalWorkRect; //saved from previous calculations }else{ return LSession::handle()->screenGeom( Screen() ); - } + } } void LDesktop::UpdateGeometry(){ @@ -150,7 +150,7 @@ void LDesktop::checkResolution(){ }else if(scrn.width()==oldWidth && scrn.height()==oldHeight){ //nothing to do - same as before }else{ - //Calculate the scale factor between the old/new sizes in each dimension + //Calculate the scale factor between the old/new sizes in each dimension // and forward that on to all the interface elements double xscale = scrn.width()/((double) oldWidth); double yscale = scrn.height()/((double) oldHeight); @@ -194,7 +194,7 @@ void LDesktop::checkResolution(){ } } DP->sync(); //make sure it gets saved to disk right away - + } issyncing = false; } @@ -238,7 +238,7 @@ void LDesktop::InitDesktop(){ bgWindow->setWindowOpacity(0.0); connect(bgWindow, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(ShowMenu()) );*/ if(DEBUG){ qDebug() << "Create bgDesktop"; } - bgDesktop = new LDesktopPluginSpace(); + bgDesktop = new LDesktopPluginSpace(); int grid = settings->value(DPREFIX+"GridSize",-1).toInt(); if(grid<0 && LSession::desktop()->screenGeometry(Screen()).height() > 2000){ grid = 200; } else if(grid<0){ grid = 100; } @@ -266,7 +266,7 @@ void LDesktop::InitDesktop(){ } void LDesktop::SettingsChanged(){ - if(issyncing){ return; } //don't refresh for internal modifications to the + if(issyncing){ return; } //don't refresh for internal modifications to the issyncing = true; qDebug() << "Found Settings Change:" << screenID; settings->sync(); //make sure to sync with external settings changes diff --git a/src-qt5/core/lumina-desktop/LSession.cpp b/src-qt5/core/lumina-desktop/LSession.cpp index bbed6d79..2a1ec783 100644 --- a/src-qt5/core/lumina-desktop/LSession.cpp +++ b/src-qt5/core/lumina-desktop/LSession.cpp @@ -572,7 +572,7 @@ void LSession::SessionEnding(){ // SYSTEM ACCESS //=============== void LSession::LaunchApplication(QString cmd){ - LSession::setOverrideCursor(QCursor(Qt::BusyCursor)); + //LSession::setOverrideCursor(QCursor(Qt::BusyCursor)); ExternalProcess::launch(cmd); //QProcess::startDetached(cmd); } diff --git a/src-qt5/core/lumina-desktop/SystemWindow.cpp b/src-qt5/core/lumina-desktop/SystemWindow.cpp index cd09c9bd..c709bb2a 100644 --- a/src-qt5/core/lumina-desktop/SystemWindow.cpp +++ b/src-qt5/core/lumina-desktop/SystemWindow.cpp @@ -12,6 +12,7 @@ SystemWindow::SystemWindow() : QDialog(), ui(new Ui::SystemWindow){ ui->setupUi(this); //load the designer file + this->setObjectName("LeaveDialog"); //Setup the window flags this->setWindowFlags( Qt::Tool | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint); //Setup the icons based on the current theme diff --git a/src-qt5/core/lumina-desktop/defaults/luminaDesktop-TrueOS.conf b/src-qt5/core/lumina-desktop/defaults/luminaDesktop-TrueOS.conf index c1f3a194..e453c0b8 100644 --- a/src-qt5/core/lumina-desktop/defaults/luminaDesktop-TrueOS.conf +++ b/src-qt5/core/lumina-desktop/defaults/luminaDesktop-TrueOS.conf @@ -42,6 +42,7 @@ mime_default_unknown/*=lumina-textedit.desktop mime_default_application/x-shellscript=lumina-textedit.desktop mime_default_application/pdf_ifexists=pc-pdfviewer.desktop mime_default_application/pdf_ifexists=okular.desktop +mime_default_application/pdf_ifexists=lumina-pdf.desktop mime_default_application/zip_ifexists=lumina-archiver.desktop mime_default_application/x-compressed-tar_ifexists=lumina-archiver.desktop mime_default_application/x-bzip-compressed-tar_ifexists=lumina-archiver.desktop @@ -51,17 +52,17 @@ mime_default_application/x-xz-compressed-tar_ifexists=lumina-archiver.desktop mime_default_application/x-tar_ifexists=lumina-archiver.desktop #THEME SETTINGS -theme_themefile=Glass #Name of the theme to use (disable for Lumina-Default) -theme_colorfile=Lumina-Glass #Name of the color spec file to use for theming -theme_iconset=oxygen #Name of the icon theme to use -theme_font=Arial #Name of the font family to use +theme_themefile=DarkGlass #Name of the theme to use (disable for Lumina-Default) +theme_colorfile=Black #Name of the color spec file to use for theming +theme_iconset=material-design-dark #Name of the icon theme to use +theme_font=Noto Sans #Name of the font family to use theme_fontsize=10pt #Default size of the fonts to use on the desktop (can also use a percentage of the screen height (<number>%) ) #DESKTOP SETTINGS (used for the primary screen in multi-screen setups) desktop_visiblepanels=1 #[0 - 12] The number of panels visible by default -#desktop_backgroundfiles= #list of absolute file paths for image files (disable for Lumina default) +desktop_backgroundfiles=/usr/local/share/wallpapers/TrueOS/trueos-1-4k.png #list of absolute file paths for image files (disable for Lumina default) desktop_backgroundrotateminutes=5 #[positive integer] number of minutes between background rotations (if multiple files) -desktop_plugins=rssreader #list of plugins to be shown on the desktop by default +#desktop_plugins= #list of plugins to be shown on the desktop by default desktop_generate_icons=true #[true/false] Auto-generate launchers for ~/Desktop items #PANEL SETTINGS (preface with panel1.<setting> or panel2.<setting>, depending on the number of panels you have visible by default) @@ -70,7 +71,7 @@ panel1_pixelsize=3.5%H #number of pixels wide/high the panel should be (or <numb panel1_autohide=false #[true/false] Have the panel become visible on mouse-over panel1_plugins=systemstart, taskmanager-nogroups, spacer, systemtray, clock, battery #list of plugins for the panel panel1_pinlocation=center #[left/center/right] Note:[left/right] corresponds to [top/bottom] for vertical panels -panel1_edgepercent=99 #[1->100] percentage of the screen edge to use +panel1_edgepercent=100 #[1->100] percentage of the screen edge to use #MENU SETTINGS (right-click menu) menu_plugins=terminal, filemanager, applications, line, settings, line, lockdesktop#list of menu plugins to show @@ -96,6 +97,19 @@ favorites_add_ifexists=~/Videos #quicklaunch_add=<file/dir path> #Create a quicklaunch shortcut for this file/dir #quicklaunch_add_ifexists=<file/dir path> #Create a quicklaunch shortcut for this file/dir if the file/dir exists +#Desktop Folder symlinks +#desktoplinks_add=<file/dir path> +desktoplinks_add=firefox.desktop +desktoplinks_add=chromium-browser.desktop +desktoplinks_add=qupzilla.desktop +desktoplinks_add=thunderbird.desktop +desktoplinks_add=trojita.desktop +desktoplinks_add=vlc.desktop +desktoplinks_add=pccontrol.desktop +desktoplinks_add=lthemeengine.desktop +desktoplinks_add=lumina-config.desktop +desktoplinks_add=appcafe.desktop +desktoplinks_add=handbook.desktop #Generic scripts/utilities to run for any additional setup procedures # These are always run after all other settings are saved #Format: usersetup_run=<generic command to run> diff --git a/src-qt5/core/lumina-desktop/defaults/luminaDesktop.conf b/src-qt5/core/lumina-desktop/defaults/luminaDesktop.conf index 46d00053..1327f148 100644 --- a/src-qt5/core/lumina-desktop/defaults/luminaDesktop.conf +++ b/src-qt5/core/lumina-desktop/defaults/luminaDesktop.conf @@ -34,9 +34,12 @@ session_default_email_ifexists=trojita.desktop #DEFAULT UTILITIES FOR INDIVIDUAL MIME TYPES # Format: mime_default_<mimetype>[_ifexists]=<*.desktop file> mime_default_text/*_ifexists=lumina-textedit.desktop +mime_default_audio/*_ifexists=lumina-mediaplayer.desktop mime_default_audio/*_ifexists=vlc.desktop +mime_default_video/*_ifexists=lumina-mediaplayer.desktop mime_default_video/*_ifexists=vlc.desktop mime_default_application/zip_ifexists=lumina-archiver.desktop +mime_default_application/pdf_ifexists=lumina-pdf.desktop mime_default_application/x-compressed-tar_ifexists=lumina-archiver.desktop mime_default_application/x-bzip-compressed-tar_ifexists=lumina-archiver.desktop mime_default_application/x-lrzip-compressed-tar_ifexists=lumina-archiver.desktop @@ -47,9 +50,9 @@ mime_default_unknown/*=lumina-textedit.desktop mime_default_application/x-shellscript=lumina-textedit.desktop #THEME SETTINGS -theme_themefile=Glass #Name of the theme to use (disable for Lumina-Default) -theme_colorfile=Lumina-Glass #Name of the color spec file to use for theming -theme_iconset=oxygen #Name of the icon theme to use +theme_themefile=DarkGlass #Name of the theme to use (disable for Lumina-Default) +theme_colorfile=Black #Name of the color spec file to use for theming +theme_iconset=material-design-dark #Name of the icon theme to use theme_font=Arial #Name of the font family to use theme_fontsize=10pt #Default size of the fonts to use on the desktop (can also use a percentage of the screen height (<number>%) ) @@ -66,7 +69,7 @@ panel1_pixelsize=3.5%H #number of pixels wide/high the panel should be (or <numb panel1_autohide=false #[true/false] Have the panel become visible on mouse-over panel1_plugins=systemstart, taskmanager-nogroups, spacer, systemtray, clock, battery #list of plugins for the panel panel1_pinlocation=center #[left/center/right] Note:[left/right] corresponds to [top/bottom] for vertical panels -panel1_edgepercent=99 #[1->100] percentage of the screen edge to use +panel1_edgepercent=100 #[1->100] percentage of the screen edge to use panel2_location=top panel2_pixelsize=3%H diff --git a/src-qt5/core/lumina-desktop/desktop-plugins/applauncher/AppLauncherPlugin.h b/src-qt5/core/lumina-desktop/desktop-plugins/applauncher/AppLauncherPlugin.h index 34a75ce8..c8e3a475 100644 --- a/src-qt5/core/lumina-desktop/desktop-plugins/applauncher/AppLauncherPlugin.h +++ b/src-qt5/core/lumina-desktop/desktop-plugins/applauncher/AppLauncherPlugin.h @@ -30,7 +30,7 @@ public: ~AppLauncherPlugin(){} void Cleanup(); //special function for final cleanup - + private: QToolButton *button; QFileSystemWatcher *watcher; @@ -45,7 +45,7 @@ private slots: void iconLoaded(QString); //void openContextMenu(); - + //void increaseIconSize(); //void decreaseIconSize(); //void deleteFile(); @@ -63,11 +63,16 @@ public slots: void LocaleChange(){ loadButton(); //force reload } - + protected: void resizeEvent(QResizeEvent *ev){ LDPlugin::resizeEvent(ev); QTimer::singleShot(100, this, SLOT(loadButton()) ); } + void changeEvent(QEvent *ev){ + LDPlugin::changeEvent(ev); + QEvent::Type tmp = ev->type(); + if(tmp == QEvent::StyleChange || tmp==QEvent::ThemeChange || tmp==QEvent::LanguageChange || tmp==QEvent::LocaleChange){ loadButton(); } + } }; #endif diff --git a/src-qt5/core/lumina-desktop/desktop-plugins/systemmonitor/MonitorWidget.cpp b/src-qt5/core/lumina-desktop/desktop-plugins/systemmonitor/MonitorWidget.cpp index 951bcc98..7097e2a9 100644 --- a/src-qt5/core/lumina-desktop/desktop-plugins/systemmonitor/MonitorWidget.cpp +++ b/src-qt5/core/lumina-desktop/desktop-plugins/systemmonitor/MonitorWidget.cpp @@ -17,6 +17,9 @@ MonitorWidget::MonitorWidget(QWidget *parent) : QWidget(parent), ui(new Ui::Moni upTimer->setInterval(2000); //update every 2 seconds connect(upTimer, SIGNAL(timeout()), this, SLOT(UpdateStats()) ); LoadIcons(); + ui->label->setText( tr("CPU Temp:") ); + ui->label_2->setText( tr("CPU Usage:") ); + ui->label_3->setText( tr("Mem Usage:") ); upTimer->start(); } @@ -25,7 +28,7 @@ MonitorWidget::~MonitorWidget(){ } void MonitorWidget::LoadIcons(){ - ui->tabWidget->setTabIcon(0,LXDG::findIcon("appointment-recurring","") ); //Summary + ui->tabWidget->setTabIcon(0,LXDG::findIcon("appointment-blank","") ); //Summary ui->tabWidget->setTabIcon(1,LXDG::findIcon("drive-harddisk","") ); //Disk Usage //ui->tabWidget->setTabIcon(1,LXDG::findIcon("cpu","") ); //CPU Log //ui->tabWidget->setTabIcon(2,LXDG::findIcon("media-flash-memory-stick","") ); //Mem Log @@ -60,4 +63,4 @@ SysMonitorPlugin::SysMonitorPlugin(QWidget *parent, QString ID) : LDPlugin(paren SysMonitorPlugin::~SysMonitorPlugin(){ //qDebug() << "Remove SysMonitorPlugin"; -}
\ No newline at end of file +} diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_af.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_af.ts index 8ca71d5a..d48278b9 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_af.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_af.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation type="unfinished"></translation> </message> @@ -1759,4 +1764,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ar.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ar.ts index 8ca71d5a..d48278b9 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ar.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ar.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation type="unfinished"></translation> </message> @@ -1759,4 +1764,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_az.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_az.ts index 8ca71d5a..d48278b9 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_az.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_az.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation type="unfinished"></translation> </message> @@ -1759,4 +1764,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_bg.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_bg.ts index c603fd8c..4cce6320 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_bg.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_bg.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation>Работен плот</translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished">Отказ</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation>%1% (външно захранване)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation>%1% (приблизително %2)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation>остават %1%</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation>Работен плот %1/%2</translation> </message> @@ -1759,4 +1764,72 @@ <translation>Несортирани</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Мултимедия</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Разработка</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Образование</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished">Игри</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Изображения</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Мрежа</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Офис</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Наука</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Настройки</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished">Инструменти</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished">Wine</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished">Несортирани</translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_bn.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_bn.ts index 8ca71d5a..d48278b9 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_bn.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_bn.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation type="unfinished"></translation> </message> @@ -1759,4 +1764,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_bs.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_bs.ts index 8ca71d5a..d48278b9 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_bs.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_bs.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation type="unfinished"></translation> </message> @@ -1759,4 +1764,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ca.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ca.ts index 4cd0c63e..a7809769 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ca.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ca.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation>Escriptori</translation> </message> @@ -1461,37 +1466,37 @@ <message> <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="291"/> <source>Yes</source> - <translation type="unfinished"></translation> + <translation>Sí</translation> </message> <message> <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="292"/> <source>No</source> - <translation type="unfinished"></translation> + <translation>No</translation> </message> <message> <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="293"/> <source>Cancel</source> - <translation type="unfinished">Cancel·la</translation> + <translation>Cancel·la</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation>%1% (connectat)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation>%1% (%2 estimat)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation>Resta %1%</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation>Espai de treball %1/%2</translation> </message> @@ -1547,12 +1552,12 @@ <message> <location filename="../SystemWindow.cpp" line="58"/> <source>Yes</source> - <translation type="unfinished"></translation> + <translation>Sí</translation> </message> <message> <location filename="../SystemWindow.cpp" line="59"/> <source>No</source> - <translation type="unfinished"></translation> + <translation>No</translation> </message> </context> <context> @@ -1759,4 +1764,72 @@ <translation>Sense ordenar</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Multimèdia</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Desenvolupament</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Educació</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished">Jocs</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Gràfics</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Xarxa</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Oficina</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Ciència</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Configuració</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">Sistema</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished">Utilitat</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished">Wine</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_cs.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_cs.ts index adc843ed..5d5f26cd 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_cs.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_cs.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation>Plocha</translation> </message> @@ -1461,37 +1466,37 @@ <message> <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="291"/> <source>Yes</source> - <translation type="unfinished"></translation> + <translation>Ano</translation> </message> <message> <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="292"/> <source>No</source> - <translation type="unfinished"></translation> + <translation>Ne</translation> </message> <message> <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="293"/> <source>Cancel</source> - <translation type="unfinished">Storno</translation> + <translation>Storno</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation>%1% (zapojeno)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation>%1% (odhadováno %2)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation>%1% zbývá</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation>Pracovní plocha %1/%2</translation> </message> @@ -1547,12 +1552,12 @@ <message> <location filename="../SystemWindow.cpp" line="58"/> <source>Yes</source> - <translation type="unfinished"></translation> + <translation>Ano</translation> </message> <message> <location filename="../SystemWindow.cpp" line="59"/> <source>No</source> - <translation type="unfinished"></translation> + <translation>Ne</translation> </message> </context> <context> @@ -1759,4 +1764,72 @@ <translation>Nezařazené</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Multimédia</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Vývoj</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Výuka</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished">Hry</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Grafika</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Síť</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Kancelář</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Věda</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Nastavení</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">Systém</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished">Nástroje</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished">Wine</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_cy.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_cy.ts index 8ca71d5a..d48278b9 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_cy.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_cy.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation type="unfinished"></translation> </message> @@ -1759,4 +1764,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_da.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_da.ts index f791a3d9..00ff3157 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_da.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_da.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation>Skrivebord</translation> </message> @@ -1461,37 +1466,37 @@ <message> <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="291"/> <source>Yes</source> - <translation type="unfinished"></translation> + <translation>Ja</translation> </message> <message> <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="292"/> <source>No</source> - <translation type="unfinished"></translation> + <translation>Nej</translation> </message> <message> <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="293"/> <source>Cancel</source> - <translation type="unfinished">Annuller</translation> + <translation>Annuller</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation>%1% (tilsluttet)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation>%1% (%2 estimeret)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation>%1% tilbage</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation>Arbejdsområde %1/%2</translation> </message> @@ -1547,12 +1552,12 @@ <message> <location filename="../SystemWindow.cpp" line="58"/> <source>Yes</source> - <translation type="unfinished"></translation> + <translation>Ja</translation> </message> <message> <location filename="../SystemWindow.cpp" line="59"/> <source>No</source> - <translation type="unfinished"></translation> + <translation>Nej</translation> </message> </context> <context> @@ -1759,4 +1764,72 @@ <translation>Usorteret</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Multimedie</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Udvikling</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Uddannelse</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished">Spil</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Grafik</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Netværk</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Kontor</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Videnskab</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Indstillinger</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">System</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished">Hjælpeværktøj</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished">Wine</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished">Usorteret</translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_de.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_de.ts index 80b8eb9d..67d0805c 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_de.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_de.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation>Arbeitsfläche</translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished">Abbrechen</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation>%1% (Eingesteckt)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation>%1% (%2 Geschätzt)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation>%1% verbleibend</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation>Arbeitsbereich %1/%2</translation> </message> @@ -1759,4 +1764,72 @@ <translation>Unsortiert</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Multimedia</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Entwicklung</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Bildung</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished">Spiele</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Grafik</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Netzwerk</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Büro</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Wissenschaft</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Einstellungen</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">System</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished">Dienstprogramm</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished">Wine</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished">Unsortiert</translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_el.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_el.ts index 118b48b1..f9d60a2c 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_el.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_el.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation type="unfinished"></translation> </message> @@ -1759,4 +1764,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_en_AU.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_en_AU.ts index 3cf7e09c..d67d8301 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_en_AU.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_en_AU.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation>Desktop</translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished">Cancel</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation>%1% (Plugged In)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation>%1% (%2 Estimated)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation>%1% Remaining</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation>Workspace %1/%2</translation> </message> @@ -1759,4 +1764,72 @@ <translation>Unsorted</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Multimedia</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Development</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Education</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished">Games</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Graphics</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Network</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Office</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Science</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Settings</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">System</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished">Utility</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished">Wine</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished">Unsorted</translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_en_GB.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_en_GB.ts index db35d013..e9bd9fde 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_en_GB.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_en_GB.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation>Desktop</translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished">Cancel</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation>%1% (Plugged In)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation>%1% (%2 Estimated)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation>%1% Remaining</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation>Workspace %1/%2</translation> </message> @@ -1759,4 +1764,72 @@ <translation>Unsorted</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Multimedia</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Development</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Education</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished">Games</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Graphics</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Network</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Office</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Science</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Settings</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">System</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished">Utility</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished">Wine</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished">Unsorted</translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_en_ZA.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_en_ZA.ts index 8ca71d5a..d48278b9 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_en_ZA.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_en_ZA.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation type="unfinished"></translation> </message> @@ -1759,4 +1764,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_es.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_es.ts index 319f90ab..54b2bec2 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_es.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_es.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation>Escritorio</translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished">Cancelar</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation>%1% (Conectado)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation>%1% (%2 Estimado)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation>%1% Restante</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation>Área de Trabajo %1/%2</translation> </message> @@ -1759,4 +1764,72 @@ <translation>Sin Ordenar</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Multimedia</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Desarrollo</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Educación</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished">Juegos</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Gráficos</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Red</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Oficina</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Ciencia</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Configuración</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">Sistema</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished">Utilerías</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished">Wine</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished">Sin Ordenar</translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_et.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_et.ts index 4fbe1d5b..ef19e5a0 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_et.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_et.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation type="unfinished">Töölaud</translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished">Loobu</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation type="unfinished">Tööruum %1/%2</translation> </message> @@ -1759,4 +1764,72 @@ <translation>Sortimata</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Multimeedia</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Arendus</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Haridus</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished">Mängud</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Graafika</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Võrk</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Kontor</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Teadus</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Sätted</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">Süsteem</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished">Tööriistad</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished">Wine</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished">Sortimata</translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_eu.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_eu.ts index 248cc262..c8a65107 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_eu.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_eu.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished">Utzi</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation type="unfinished">Laneko area %1/%2</translation> </message> @@ -1759,4 +1764,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Multimedia</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Garapena</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Heziketa</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished">Jokoak</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Grafikoak</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Sarea</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Bulegoa</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Zientzia</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Ezarpenak</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">Sistema</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_fa.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_fa.ts index e45c6072..96254899 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_fa.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_fa.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation type="unfinished"></translation> </message> @@ -1759,4 +1764,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_fi.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_fi.ts index ff8e867c..80a27a4f 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_fi.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_fi.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation>Työpöytä</translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished">Peru</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation>%1 % (verkkovirta)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation>%1 % (arviolta %2)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation>%1 % jäljellä</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation>Työtila %1/%2</translation> </message> @@ -1759,4 +1764,72 @@ <translation>Lajittelematta</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Multimedia</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Kehitystyökalut</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Kasvatus</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished">Pelit</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Grafiikka</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Verkko</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Toimisto</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Tiede</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Asetukset</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">Järjestelmä</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished">Työkalu</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished">Wine</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished">Lajittelematta</translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_fr.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_fr.ts index f85a0380..1c3189ed 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_fr.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_fr.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation>Bureau</translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished">Annuler</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation>%1% (Branchée)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation>%1% (%2 Estimé)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation>%1% restant(s)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation>Espace de Travail %1/%2</translation> </message> @@ -1759,4 +1764,72 @@ <translation>Non Trié</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Multimédia</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Développement</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Éducation</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished">Jeux</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Graphiques</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Réseau</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Sciences</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Paramètres</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">Système</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished">Wine</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_fr_CA.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_fr_CA.ts index 8ca71d5a..d48278b9 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_fr_CA.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_fr_CA.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation type="unfinished"></translation> </message> @@ -1759,4 +1764,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_gl.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_gl.ts index 8ca71d5a..d48278b9 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_gl.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_gl.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation type="unfinished"></translation> </message> @@ -1759,4 +1764,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_he.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_he.ts index fabf3f31..b9ff009c 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_he.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_he.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation type="unfinished">שולחן עבודה</translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished">ביטול</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation type="unfinished"></translation> </message> @@ -1759,4 +1764,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">לומדות</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished">משחקים</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">גרפיקה</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">אינטרנט</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">משרד</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">מדע</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">הגדרות</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">מערכת</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_hi.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_hi.ts index f1cb1d5a..ee97464d 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_hi.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_hi.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation type="unfinished">डेस्कटॉप</translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished">रद्द</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation>%1%(प्लग इन)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation>%1% (%2 लगभग)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation>%1% शेष</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation>कार्यस्थल %1/%2</translation> </message> @@ -1759,4 +1764,72 @@ <translation>अवर्गीकृत</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">मल्टीमीडिया</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">विकास</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">पढाई</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished">खेल</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">चित्र</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">नेटवर्क</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">कार्यालय</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">विज्ञान</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished">सुविधाएँ</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished">शराब</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished">अवर्गीकृत</translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_hr.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_hr.ts index 8ca71d5a..d48278b9 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_hr.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_hr.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation type="unfinished"></translation> </message> @@ -1759,4 +1764,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_hu.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_hu.ts index 30cc030d..10c49265 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_hu.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_hu.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation>Asztal</translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished">Mégsem</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation>%1/%2 munkaterület</translation> </message> @@ -1759,4 +1764,72 @@ <translation>Nem rendszerezett</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Multimédia</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Fejlesztés</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Oktatás</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished">Játékok</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Grafika</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Hálózat</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Iroda</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Tudomány</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Beállítások</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">Rendszer</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished">Segédeszközök</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished">Wine</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_id.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_id.ts index 38cdee0f..efe0dc6a 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_id.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_id.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation type="unfinished">Layar Kerja Utama</translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished">Batalkan</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation type="unfinished">%1% (Terpasang Dalam)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation>%1% (%2 Perkiraan)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation>%1% Sisa</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation type="unfinished">Ruang kerja %1/%2</translation> </message> @@ -1759,4 +1764,72 @@ <translation>Tak terurut</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Multimedia</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Pengembangan</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Edukasi</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished">Permainan</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Grafis</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Jaringan</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Kantor</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Sains</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Pengaturan</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">Sistem</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished">Utilitas</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished">Wine</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished">Tak terurut</translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_is.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_is.ts index 8ca71d5a..d48278b9 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_is.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_is.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation type="unfinished"></translation> </message> @@ -1759,4 +1764,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_it.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_it.ts index 32aae413..ba24ba63 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_it.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_it.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation>Desktop</translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished">Cancella</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation>%1% (Plugged In)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation>%1% (%2 Stimato)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation>%1% Rimanente</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation>Spazio Lavoro %1/%2</translation> </message> @@ -1759,4 +1764,72 @@ <translation>Non ordinato</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Multimedia</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Sviluppo</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Educazione</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished">Giochi</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Rete</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Ufficio</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Scienza</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Impostazioni</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">Sistema</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished">Utilità</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished">Wine</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished">Non ordinato</translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ja.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ja.ts index 0179804f..0fbeb00e 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ja.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ja.ts @@ -838,6 +838,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -855,8 +860,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translatorcomment>これ、ファイルパスなので、「デスクトップ」と訳したらまずい</translatorcomment> <translation>Desktop</translation> @@ -1491,24 +1496,24 @@ <translation type="unfinished">キャンセル</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation>%1% (電源接続中)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation>%1% (推定残り時間: %2)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation>残り %1%</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation>ワークスペース %1/%2</translation> </message> @@ -1783,4 +1788,72 @@ <translation>未分類</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">マルチメディア</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">開発</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">教育</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished">ゲーム</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">グラフィックス</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">ネットワーク</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">オフィス</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">科学</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">設定</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">システム</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished">ユーティリティー</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished">Wine</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished">未分類</translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ka.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ka.ts index 8ca71d5a..d48278b9 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ka.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ka.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation type="unfinished"></translation> </message> @@ -1759,4 +1764,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ko.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ko.ts index b7a23143..05fa8608 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ko.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ko.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation type="unfinished">바탕 화면</translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished">취소</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation>%1% (연결됨)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation>%1% (%2 예상)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation>%1% 남음</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation>작업 공간 %1/%2</translation> </message> @@ -1759,4 +1764,72 @@ <translation>미분류</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">멀티미디어</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">개발</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">교육</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished">게임</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">그래픽</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">네트워크</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">업무</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">과학</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">설정</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">시스템</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished">유틸리티</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished">와인</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished">미분류</translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_lt.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_lt.ts index 55cc8ec1..35e14e86 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_lt.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_lt.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation>Darbalaukis</translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished">Atsisakyti</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation>%1% (Įdėta)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation>%1% (Apytikriai %2)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation>Liko %1%</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation>Darbo sritis %1/%2</translation> </message> @@ -1759,4 +1764,72 @@ <translation>Nesurūšiuota</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Multimedija</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Programavimas</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Švietimas</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished">Žaidimai</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Grafika</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Tinklas</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Raštinė</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Mokslas</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Nustatymai</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">Sistema</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished">Paslaugų programos</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished">Wine</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished">Nesurūšiuota</translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_lv.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_lv.ts index 5d7d9e0f..c8581d11 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_lv.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_lv.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation>Darbvirsma</translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished">Atcelt</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation>%1% (pievienots)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation>%1% (%2 paredzamais)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation>%1% atlicis</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation>Darbvieta %1/%2</translation> </message> @@ -1760,4 +1765,72 @@ <translation>Nesakārtots</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Multivide</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Izstrāde</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Izglītība</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished">Spēles</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Grafika</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Tīkls</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Birojs</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Zinātne</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Iestatījumi</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">Sistēma</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished">Wine</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished">Nesakārtots</translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_mk.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_mk.ts index 8ca71d5a..d48278b9 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_mk.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_mk.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation type="unfinished"></translation> </message> @@ -1759,4 +1764,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_mn.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_mn.ts index 8ca71d5a..d48278b9 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_mn.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_mn.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation type="unfinished"></translation> </message> @@ -1759,4 +1764,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ms.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ms.ts index 8ca71d5a..d48278b9 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ms.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ms.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation type="unfinished"></translation> </message> @@ -1759,4 +1764,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_mt.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_mt.ts index 8ca71d5a..d48278b9 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_mt.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_mt.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation type="unfinished"></translation> </message> @@ -1759,4 +1764,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_nb.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_nb.ts index 8ca71d5a..d48278b9 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_nb.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_nb.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation type="unfinished"></translation> </message> @@ -1759,4 +1764,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_nl.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_nl.ts index 3e0fc664..30025269 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_nl.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_nl.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation>Bureaublad</translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished">Annuleren</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation>%1% (Oplaadkabel is verbonden)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation>%1% (%2 geschat)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation>%1% resterend</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation>Werkruimte %1/%2</translation> </message> @@ -1759,4 +1764,72 @@ <translation>Ongesorteerd</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Multimedia</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Ontwikkeling</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished">Spellen</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Grafisch</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Netwerk</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Kantoor</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Wetenschap</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Instellingen</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">Systeem</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished">Hulpmiddel</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished">Wine</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished">Ongesorteerd</translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_pa.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_pa.ts index 8ca71d5a..d48278b9 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_pa.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_pa.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation type="unfinished"></translation> </message> @@ -1759,4 +1764,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_pl.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_pl.ts index e3ebe0a6..b1c10e26 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_pl.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_pl.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation>Pulpit</translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished">Zaniechaj</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation>%1% (Podłączony)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation>%1% (%2 Szacowane)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation>%1% Pozostało</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation>Przestrzeń robocza %1/%2</translation> </message> @@ -1759,4 +1764,72 @@ <translation>Nieuporządkowane</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Multimedia</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Narzędzia programistów</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Edukacja</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished">Gry</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Grafika</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Sieć</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Biuro</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Nauka</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Ustawienia</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">System</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished">Narzędzia</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished">Wine</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished">Nieuporządkowane</translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_pt.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_pt.ts index 0321a6b1..92b97b71 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_pt.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_pt.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation type="unfinished">Área de Trabalho</translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished">Cancelar</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation type="unfinished">Espaço de trabalho %1/%2</translation> </message> @@ -1759,4 +1764,72 @@ <translation>Sem ordem</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Multimídia</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Desenvolvimento</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Educação</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished">Jogos</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Gráficos</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Rede</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Escritório</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Ciência</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Definições</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">Sistema</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished">Utilitário</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished">Vinho</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished">Sem ordem</translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_pt_BR.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_pt_BR.ts index 0fd7d193..130213bb 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_pt_BR.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_pt_BR.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation>Área de trabalho</translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished">Cancelar</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation>%1% (Plugado)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation>%1% (%2 Estimado)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation>%1% Restantes</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation>Espaço de trabalho %1/%2</translation> </message> @@ -1759,4 +1764,72 @@ <translation>Não organizados</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Multimídia</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Desenvolvimento</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Educação</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished">Jogos</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Gráficos</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Escritório</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Configurações</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">Sistema</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished">Wine</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ro.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ro.ts index 8ca71d5a..d48278b9 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ro.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ro.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation type="unfinished"></translation> </message> @@ -1759,4 +1764,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ru.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ru.ts index 2f4b4072..45e3a5cd 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ru.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ru.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation>Рабочий стол</translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished">Отмена</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation>%1% (подключенный)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation>%1% (%2 расчетно)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation>%1% осталось</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation>Рабочая Область %1/%2</translation> </message> @@ -1759,4 +1764,72 @@ <translation>Несортированный</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Мультимедиа</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Разработка</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Образование</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished">Игры</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Графика</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Сети</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Офис</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Наука</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">Система</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished">Инструменты</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished">Вино</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_sk.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_sk.ts index 907717e2..bb2b4d44 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_sk.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_sk.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation type="unfinished">Pracovná plocha</translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished">Zrušiť</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation>%1% (Nabitia)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation>%1% (%2 odhadovaný)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation>Zostáva %1%</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation>Pracovná plocha %1/%2</translation> </message> @@ -1759,4 +1764,72 @@ <translation>Nezoradené</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Multimédiá</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Vývoj</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Vzdelávanie</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished">Hry</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Grafika</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Sieť</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Kancelária</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Veda</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Nastavenie</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">Systém</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished">Nástroje</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished">Wine</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished">Nezoradené</translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_sl.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_sl.ts index 637f7436..4a860781 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_sl.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_sl.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation type="unfinished"></translation> </message> @@ -1759,4 +1764,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Večpredstavnost</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Razvoj</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Izobraževanje</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished">Igre</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Omrežje</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Znanost</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Nastavitve</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished">Wine</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_sr.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_sr.ts index 8ca71d5a..d48278b9 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_sr.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_sr.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation type="unfinished"></translation> </message> @@ -1759,4 +1764,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_sv.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_sv.ts index ecf6aa32..b97f822b 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_sv.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_sv.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation>Skrivbord</translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished">Avbryt</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation>%1% (Inkopplad)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation>%1% (%2 Beräknad)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation>%1% återstår</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation>Arbetsyta %1/%2</translation> </message> @@ -1759,4 +1764,72 @@ <translation>Osorterade</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Multimedia</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Utveckling</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Utbildning</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished">Spel</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Grafik</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Nätverk</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Kontorsprogram</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Vetenskap</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Inställningar</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">System</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished">Verktyg</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished">Wine</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished">Osorterade</translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_sw.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_sw.ts index 8ca71d5a..d48278b9 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_sw.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_sw.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation type="unfinished"></translation> </message> @@ -1759,4 +1764,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ta.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ta.ts index 8ca71d5a..d48278b9 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ta.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ta.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation type="unfinished"></translation> </message> @@ -1759,4 +1764,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_tg.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_tg.ts index 8ca71d5a..d48278b9 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_tg.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_tg.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation type="unfinished"></translation> </message> @@ -1759,4 +1764,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_th.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_th.ts index 8ca71d5a..d48278b9 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_th.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_th.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation type="unfinished"></translation> </message> @@ -1759,4 +1764,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_tr.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_tr.ts index f3e6147d..1741c455 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_tr.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_tr.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation>Masaüstü</translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished">İptal</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation>%1% (Prize Takılı)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation>%1% (Tahmini %2)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation>%1% Kaldı</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation>Çalışma alanı %1/%2</translation> </message> @@ -1759,4 +1764,72 @@ <translation>Sınıflandırılmamış</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Multimedya</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Geliştirme</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Eğitim</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished">Oyunlar</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Grafik</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Ağ</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Ofis</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Bilim</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Ayarlar</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">Sistem</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished">Gereç</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished">Wine</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished">Sınıflandırılmamış</translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_uk.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_uk.ts index e73fe905..d88a1b33 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_uk.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_uk.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation>Робочий стіл</translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished">Скасувати</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation>%1% (Підключено)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation>%1% (%2 розрахунково)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation>%1% Залишилось</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation>Робочий простір %1/%2</translation> </message> @@ -1759,4 +1764,72 @@ <translation>Невідсортований</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Мультимедіа</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Розробка</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Освіта</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished">Ігри</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Графіка</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Мережа</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Офіс</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Наука</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Налаштування</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">Система</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished">Утиліти</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished">Wine</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_uz.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_uz.ts index 8ca71d5a..d48278b9 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_uz.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_uz.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation type="unfinished"></translation> </message> @@ -1759,4 +1764,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_vi.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_vi.ts index 8ca71d5a..d48278b9 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_vi.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_vi.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation type="unfinished"></translation> </message> @@ -1759,4 +1764,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_zh_CN.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_zh_CN.ts index cf6f658b..d1c65849 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_zh_CN.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_zh_CN.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation>桌面</translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished">取消</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation>%1% (已插电)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation>%1% (估计 %2)</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation>剩余 %1%</translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation>工作区 %1/%2</translation> </message> @@ -1759,4 +1764,72 @@ <translation>未排序的</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">多媒体</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">开发</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">教育</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished">游戏</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">图像</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">网络</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">办公</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">科学</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">设置</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">系统</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished">工具</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_zh_HK.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_zh_HK.ts index 8ca71d5a..d48278b9 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_zh_HK.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_zh_HK.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation type="unfinished"></translation> </message> @@ -1759,4 +1764,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_zh_TW.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_zh_TW.ts index 8ca71d5a..d48278b9 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_zh_TW.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_zh_TW.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation type="unfinished"></translation> </message> @@ -1759,4 +1764,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_zu.ts b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_zu.ts index 8ca71d5a..d48278b9 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_zu.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_zu.ts @@ -833,6 +833,11 @@ <context> <name>LDesktopSwitcher</name> <message> + <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="19"/> + <source>Workspace 1</source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="135"/> <location filename="../panel-plugins/desktopswitcher/LDesktopSwitcher.cpp" line="139"/> <source>Workspace %1</source> @@ -850,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="163"/> - <location filename="../LSession.cpp" line="346"/> + <location filename="../LSession.cpp" line="164"/> + <location filename="../LSession.cpp" line="347"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1474,24 +1479,24 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="501"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="475"/> <source>%1% (Plugged In)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="505"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="479"/> <source>%1% (%2 Estimated)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="506"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="480"/> <source>%1% Remaining</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="522"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="681"/> - <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="692"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="496"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="655"/> + <location filename="../panel-plugins/systemstart/StartMenu.cpp" line="666"/> <source>Workspace %1/%2</source> <translation type="unfinished"></translation> </message> @@ -1759,4 +1764,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-desktop/main.cpp b/src-qt5/core/lumina-desktop/main.cpp index 6017cad7..b2bfa9be 100644 --- a/src-qt5/core/lumina-desktop/main.cpp +++ b/src-qt5/core/lumina-desktop/main.cpp @@ -93,14 +93,14 @@ int main(int argc, char ** argv) if(DEBUG){ timer = new QTime(); timer->start(); } //Setup Log File //qInstallMessageHandler(MessageOutput); - if(DEBUG){ qDebug() << "Theme Init:" << timer->elapsed(); } - LuminaThemeEngine theme(&a); - QObject::connect(&theme, SIGNAL(updateIcons()), &a, SLOT(reloadIconTheme()) ); + //if(DEBUG){ qDebug() << "Theme Init:" << timer->elapsed(); } + //LuminaThemeEngine theme(&a); + //QObject::connect(&theme, SIGNAL(updateIcons()), &a, SLOT(reloadIconTheme()) ); //if(DEBUG){ qDebug() << "Load Locale:" << timer->elapsed(); } //LUtils::LoadTranslation(&a, "lumina-desktop"); if(DEBUG){ qDebug() << "Session Setup:" << timer->elapsed(); } a.setupSession(); - theme.refresh(); + //theme.refresh(); if(DEBUG){ qDebug() << "Exec Time:" << timer->elapsed(); delete timer;} int retCode = a.exec(); //qDebug() << "Stopping the window manager"; diff --git a/src-qt5/core/lumina-desktop/panel-plugins/applauncher/AppLaunchButton.h b/src-qt5/core/lumina-desktop/panel-plugins/applauncher/AppLaunchButton.h index 3aa3c7ad..f146df66 100644 --- a/src-qt5/core/lumina-desktop/panel-plugins/applauncher/AppLaunchButton.h +++ b/src-qt5/core/lumina-desktop/panel-plugins/applauncher/AppLaunchButton.h @@ -24,11 +24,11 @@ // 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; @@ -50,14 +50,18 @@ public slots: this->layout()->update(); updateButtonVisuals(); } - - void LocaleChange(){ + void LocaleChange(){ updateButtonVisuals(); } - void ThemeChange(){ updateButtonVisuals(); } +protected: + void changeEvent(QEvent *ev){ + LPPlugin::changeEvent(ev); + QEvent::Type tmp = ev->type(); + if(tmp == QEvent::StyleChange || tmp==QEvent::ThemeChange || tmp==QEvent::LanguageChange || tmp==QEvent::LocaleChange){ updateButtonVisuals(); } + } }; -#endif
\ No newline at end of file +#endif diff --git a/src-qt5/core/lumina-desktop/panel-plugins/battery/LBattery.cpp b/src-qt5/core/lumina-desktop/panel-plugins/battery/LBattery.cpp index be5b8488..cae73d13 100644 --- a/src-qt5/core/lumina-desktop/panel-plugins/battery/LBattery.cpp +++ b/src-qt5/core/lumina-desktop/panel-plugins/battery/LBattery.cpp @@ -77,7 +77,7 @@ void LBattery::updateBattery(bool force){ break; } if(icon<iconOld && icon==0){ - //Play some audio warning chime when + //Play some audio warning chime when QString sfile = LSession::handle()->sessionSettings()->value("audiofiles/batterylow", LOS::LuminaShare()+"low-battery.ogg").toString(); LSession::handle()->playAudioFile(sfile); } diff --git a/src-qt5/core/lumina-desktop/panel-plugins/battery/LBattery.h b/src-qt5/core/lumina-desktop/panel-plugins/battery/LBattery.h index 29562d5d..d14cfc53 100644 --- a/src-qt5/core/lumina-desktop/panel-plugins/battery/LBattery.h +++ b/src-qt5/core/lumina-desktop/panel-plugins/battery/LBattery.h @@ -25,12 +25,12 @@ class LBattery : public LPPlugin{ 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(); @@ -39,7 +39,7 @@ public slots: void LocaleChange(){ updateBattery(true); } - + void OrientationChange(){ if(this->layout()->direction()==QBoxLayout::LeftToRight){ label->setFixedSize( QSize(this->height(), this->height()) ); @@ -48,6 +48,15 @@ public slots: } updateBattery(true); //force icon refresh } +protected: + void changeEvent(QEvent *ev){ + LPPlugin::changeEvent(ev); + QEvent::Type tmp = ev->type(); + if(tmp==QEvent::ThemeChange || tmp==QEvent::LanguageChange || tmp==QEvent::LocaleChange){ + updateBattery(true); + } + } + }; #endif diff --git a/src-qt5/core/lumina-desktop/panel-plugins/desktopswitcher/LDesktopSwitcher.cpp b/src-qt5/core/lumina-desktop/panel-plugins/desktopswitcher/LDesktopSwitcher.cpp index 8e0a9d28..e6e89075 100644 --- a/src-qt5/core/lumina-desktop/panel-plugins/desktopswitcher/LDesktopSwitcher.cpp +++ b/src-qt5/core/lumina-desktop/panel-plugins/desktopswitcher/LDesktopSwitcher.cpp @@ -16,7 +16,7 @@ LDesktopSwitcher::LDesktopSwitcher(QWidget *parent, QString id, bool horizontal) label->setAutoRaise(true); label->setToolButtonStyle(Qt::ToolButtonIconOnly); label->setIcon( LXDG::findIcon("format-view-carousel", "preferences-desktop-display") ); - label->setToolTip(QString("Workspace 1")); + label->setToolTip(QString(tr("Workspace 1"))); connect(label, SIGNAL(clicked()), this, SLOT(openMenu())); menu = new QMenu(this); connect(menu, SIGNAL(triggered(QAction*)), this, SLOT(menuActionTriggered(QAction*))); diff --git a/src-qt5/core/lumina-desktop/panel-plugins/systemstart/StartMenu.cpp b/src-qt5/core/lumina-desktop/panel-plugins/systemstart/StartMenu.cpp index 1992db0f..e8df8390 100644 --- a/src-qt5/core/lumina-desktop/panel-plugins/systemstart/StartMenu.cpp +++ b/src-qt5/core/lumina-desktop/panel-plugins/systemstart/StartMenu.cpp @@ -35,15 +35,15 @@ StartMenu::StartMenu(QWidget *parent) : QWidget(parent), ui(new Ui::StartMenu){ } 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","")); @@ -53,7 +53,7 @@ void StartMenu::UpdateAll(){ 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-desktop-brightness","").pixmap(ui->tool_goto_apps->iconSize()) ); ui->label_locale_icon->setPixmap( LXDG::findIcon("preferences-desktop-locale","").pixmap(ui->tool_goto_apps->iconSize()) ); @@ -63,7 +63,7 @@ void StartMenu::UpdateAll(){ 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(); @@ -156,11 +156,11 @@ void StartMenu::UpdateQuickLaunch(QString path, bool keep){ // ========================== /*void StartMenu::deleteChildren(QWidget *obj){ if(obj->layout()==0){ - for(int i=0; i<obj->children().count(); i++){ - obj->children().at(i)->deleteLater(); + for(int i=0; i<obj->children().count(); i++){ + obj->children().at(i)->deleteLater(); } }else{ - + } }*/ @@ -174,7 +174,7 @@ void StartMenu::ClearScrollArea(QScrollArea *area){ if(area == ui->scroll_favs){ area->takeWidget()->deleteLater(); } - if(area->widget()==0){ + if(area->widget()==0){ area->setWidget( new QWidget(area) ); //create a new widget in the scroll area } if(area->widget()->layout()==0){ @@ -203,7 +203,7 @@ void StartMenu::SortScrollArea(QScrollArea *area){ 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++){ @@ -223,10 +223,10 @@ void StartMenu::SortScrollArea(QScrollArea *area){ void StartMenu::do_search(QString search, bool force){ search = search.simplified(); //remove unneccesary whitespace - if(search == CSearch && !force){ + 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; + return; }else if(search.isEmpty()){ CSearch.clear(); if(ui->stackedWidget->currentWidget()==ui->page_search ){ on_tool_back_clicked(); } @@ -234,7 +234,7 @@ void StartMenu::do_search(QString search, bool force){ } //Got a search term - check it CSearch = search; //save this for comparison later - qDebug() << "Search for term:" << search; + //qDebug() << "Search for term:" << search; ClearScrollArea(ui->scroll_search); topsearch.clear(); //Now find any items which match the search @@ -275,7 +275,7 @@ void StartMenu::do_search(QString search, bool force){ 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){ + if(i%3==0){ QApplication::processEvents(); if(searchTimer->isActive()){ return; } //search changed - go ahead and stop here } @@ -305,13 +305,13 @@ bool StartMenu::promptAboutUpdates(bool &skip){ // PRIVATE SLOTS // ======================== void StartMenu::LaunchItem(QString path, bool fix){ - if(path.startsWith("chcat::::")){ + if(path.startsWith("chcat::::")){ ChangeCategory(path.section("::::",1,50)); return; } - qDebug() << "Launching Item:" << path << fix; + //qDebug() << "Launching Item:" << path << fix; if(!path.isEmpty()){ - qDebug() << "Launch Application:" << path; + //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 @@ -355,7 +355,7 @@ void StartMenu::UpdateApps(){ 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 @@ -378,7 +378,7 @@ void StartMenu::UpdateApps(){ 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); + 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] ); @@ -390,11 +390,11 @@ void StartMenu::UpdateApps(){ 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"); + 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++){ @@ -407,8 +407,7 @@ void StartMenu::UpdateApps(){ connect(it, SIGNAL(toggleQuickLaunch(QString, bool)), this, SLOT(UpdateQuickLaunch(QString, bool)) ); } } - - + } void StartMenu::UpdateFavs(){ @@ -427,31 +426,7 @@ void StartMenu::UpdateFavs(){ 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++){ @@ -472,7 +447,6 @@ void StartMenu::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"; @@ -541,7 +515,7 @@ void StartMenu::on_stackedWidget_currentChanged(int val){ } ui->frame_leave_suspend->setVisible( LOS::systemCanSuspend() ); } - + } void StartMenu::catViewChanged(){ @@ -567,7 +541,7 @@ void StartMenu::on_tool_goto_apps_clicked(){ } void StartMenu::on_tool_goto_settings_clicked(){ - ui->stackedWidget->setCurrentWidget(ui->page_settings); + ui->stackedWidget->setCurrentWidget(ui->page_settings); } void StartMenu::on_tool_goto_logout_clicked(){ @@ -585,7 +559,7 @@ void StartMenu::on_tool_launch_controlpanel_clicked(){ } void StartMenu::on_tool_launch_fm_clicked(){ - LaunchItem(QDir::homePath()); + LaunchItem(QDir::homePath()); } void StartMenu::on_tool_launch_store_clicked(){ diff --git a/src-qt5/core/lumina-desktop/panel-plugins/taskmanager/LTaskButton.cpp b/src-qt5/core/lumina-desktop/panel-plugins/taskmanager/LTaskButton.cpp index ab4e786f..8f867261 100644 --- a/src-qt5/core/lumina-desktop/panel-plugins/taskmanager/LTaskButton.cpp +++ b/src-qt5/core/lumina-desktop/panel-plugins/taskmanager/LTaskButton.cpp @@ -30,7 +30,7 @@ LTaskButton::LTaskButton(QWidget *parent, bool smallDisplay) : LTBWidget(parent) } LTaskButton::~LTaskButton(){ - + } //=========== @@ -81,11 +81,12 @@ LWinInfo LTaskButton::currentWindow(){ //============= // 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++){ @@ -98,7 +99,7 @@ void LTaskButton::UpdateButton(){ //Update the button visuals from the first window this->setIcon(WINLIST[i].icon(noicon)); cname = WINLIST[i].Class(); - if(cname.isEmpty()){ + 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); } diff --git a/src-qt5/core/lumina-desktop/panel-plugins/taskmanager/LTaskButton.h b/src-qt5/core/lumina-desktop/panel-plugins/taskmanager/LTaskButton.h index 6b171c6a..ff551998 100644 --- a/src-qt5/core/lumina-desktop/panel-plugins/taskmanager/LTaskButton.h +++ b/src-qt5/core/lumina-desktop/panel-plugins/taskmanager/LTaskButton.h @@ -15,6 +15,7 @@ #include <QMenu> #include <QEvent> #include <QAction> +#include <QTimer> // libLumina includes #include <LuminaXDG.h> @@ -29,7 +30,7 @@ class LTaskButton : public LTBWidget{ public: LTaskButton(QWidget *parent=0, bool smallDisplay = true); ~LTaskButton(); - + //Window Information QList<WId> windows(); QString classname(); @@ -56,6 +57,7 @@ public slots: 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 @@ -66,7 +68,14 @@ private slots: void triggerWindow(); //change b/w visible and invisible void winClicked(QAction*); void openActionMenu(); - +protected: + void changeEvent(QEvent *ev){ + LTBWidget::changeEvent(ev); + QEvent::Type tmp = ev->type(); + if(tmp==QEvent::ThemeChange || tmp==QEvent::LanguageChange || tmp==QEvent::LocaleChange){ + QTimer::singleShot(qrand()%100+500, this, SLOT(UpdateButton()) ); + } + } signals: void MenuClosed(); }; diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_af.ts b/src-qt5/core/lumina-info/i18n/lumina-info_af.ts index 70577011..bf95d1cb 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_af.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_af.ts @@ -94,4 +94,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_ar.ts b/src-qt5/core/lumina-info/i18n/lumina-info_ar.ts index 70577011..bf95d1cb 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_ar.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_ar.ts @@ -94,4 +94,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_az.ts b/src-qt5/core/lumina-info/i18n/lumina-info_az.ts index 70577011..bf95d1cb 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_az.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_az.ts @@ -94,4 +94,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_bg.ts b/src-qt5/core/lumina-info/i18n/lumina-info_bg.ts index 2d5316bf..454faad5 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_bg.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_bg.ts @@ -94,4 +94,72 @@ <translation>Затваряне</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_bn.ts b/src-qt5/core/lumina-info/i18n/lumina-info_bn.ts index 70577011..bf95d1cb 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_bn.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_bn.ts @@ -94,4 +94,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_bs.ts b/src-qt5/core/lumina-info/i18n/lumina-info_bs.ts index 70577011..bf95d1cb 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_bs.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_bs.ts @@ -94,4 +94,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_ca.ts b/src-qt5/core/lumina-info/i18n/lumina-info_ca.ts index 9d0042d9..03baf485 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_ca.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_ca.ts @@ -94,4 +94,72 @@ <translation>Tanca</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_cs.ts b/src-qt5/core/lumina-info/i18n/lumina-info_cs.ts index 071addb4..cb516383 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_cs.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_cs.ts @@ -94,4 +94,72 @@ <translation>Zavřít</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_cy.ts b/src-qt5/core/lumina-info/i18n/lumina-info_cy.ts index 70577011..bf95d1cb 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_cy.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_cy.ts @@ -94,4 +94,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_da.ts b/src-qt5/core/lumina-info/i18n/lumina-info_da.ts index fe539caf..12750d57 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_da.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_da.ts @@ -94,4 +94,72 @@ <translation>Luk</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_de.ts b/src-qt5/core/lumina-info/i18n/lumina-info_de.ts index e3b7aa45..d4f3eb6c 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_de.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_de.ts @@ -94,4 +94,72 @@ <translation>Schließen</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_el.ts b/src-qt5/core/lumina-info/i18n/lumina-info_el.ts index 45d73ebd..bf7645f3 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_el.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_el.ts @@ -94,4 +94,72 @@ <translation>Κλείσιμο</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_en_AU.ts b/src-qt5/core/lumina-info/i18n/lumina-info_en_AU.ts index 4f3f0706..ec2a3987 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_en_AU.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_en_AU.ts @@ -94,4 +94,72 @@ <translation>Close</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_en_GB.ts b/src-qt5/core/lumina-info/i18n/lumina-info_en_GB.ts index d747c640..23414b75 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_en_GB.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_en_GB.ts @@ -94,4 +94,72 @@ <translation>Close</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_en_ZA.ts b/src-qt5/core/lumina-info/i18n/lumina-info_en_ZA.ts index 70577011..bf95d1cb 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_en_ZA.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_en_ZA.ts @@ -94,4 +94,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_es.ts b/src-qt5/core/lumina-info/i18n/lumina-info_es.ts index bf689483..21806d0b 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_es.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_es.ts @@ -94,4 +94,72 @@ <translation>Cerrar</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_et.ts b/src-qt5/core/lumina-info/i18n/lumina-info_et.ts index f31298aa..90c031e5 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_et.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_et.ts @@ -94,4 +94,72 @@ <translation>Sulge</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_eu.ts b/src-qt5/core/lumina-info/i18n/lumina-info_eu.ts index 26b1855c..44d0427e 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_eu.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_eu.ts @@ -94,4 +94,72 @@ <translation>Itxi</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_fa.ts b/src-qt5/core/lumina-info/i18n/lumina-info_fa.ts index 70577011..bf95d1cb 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_fa.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_fa.ts @@ -94,4 +94,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_fi.ts b/src-qt5/core/lumina-info/i18n/lumina-info_fi.ts index ba9465df..812f378f 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_fi.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_fi.ts @@ -94,4 +94,72 @@ <translation>Sulje</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_fr.ts b/src-qt5/core/lumina-info/i18n/lumina-info_fr.ts index 09cd8502..47710462 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_fr.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_fr.ts @@ -94,4 +94,72 @@ <translation>Fermer</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_fr_CA.ts b/src-qt5/core/lumina-info/i18n/lumina-info_fr_CA.ts index 70577011..bf95d1cb 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_fr_CA.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_fr_CA.ts @@ -94,4 +94,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_gl.ts b/src-qt5/core/lumina-info/i18n/lumina-info_gl.ts index 70577011..bf95d1cb 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_gl.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_gl.ts @@ -94,4 +94,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_he.ts b/src-qt5/core/lumina-info/i18n/lumina-info_he.ts index 70577011..bf95d1cb 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_he.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_he.ts @@ -94,4 +94,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_hi.ts b/src-qt5/core/lumina-info/i18n/lumina-info_hi.ts index 1d53b1ea..9aaa1aea 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_hi.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_hi.ts @@ -94,4 +94,72 @@ <translation>बंद</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_hr.ts b/src-qt5/core/lumina-info/i18n/lumina-info_hr.ts index 70577011..bf95d1cb 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_hr.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_hr.ts @@ -94,4 +94,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_hu.ts b/src-qt5/core/lumina-info/i18n/lumina-info_hu.ts index 645c4060..a618850d 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_hu.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_hu.ts @@ -94,4 +94,72 @@ <translation>Bezárás</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_id.ts b/src-qt5/core/lumina-info/i18n/lumina-info_id.ts index 16440245..3da2f670 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_id.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_id.ts @@ -94,4 +94,72 @@ <translation>Tutup</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_is.ts b/src-qt5/core/lumina-info/i18n/lumina-info_is.ts index 70577011..bf95d1cb 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_is.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_is.ts @@ -94,4 +94,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_it.ts b/src-qt5/core/lumina-info/i18n/lumina-info_it.ts index 3ecfd8af..befeb735 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_it.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_it.ts @@ -94,4 +94,72 @@ <translation>Chiudi</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_ja.ts b/src-qt5/core/lumina-info/i18n/lumina-info_ja.ts index 7c38fb6e..e3e2bbe6 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_ja.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_ja.ts @@ -95,4 +95,72 @@ <translation>閉じる</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_ka.ts b/src-qt5/core/lumina-info/i18n/lumina-info_ka.ts index 70577011..bf95d1cb 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_ka.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_ka.ts @@ -94,4 +94,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_ko.ts b/src-qt5/core/lumina-info/i18n/lumina-info_ko.ts index a6800f5c..1ef0a61c 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_ko.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_ko.ts @@ -94,4 +94,72 @@ <translation>닫기</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_lt.ts b/src-qt5/core/lumina-info/i18n/lumina-info_lt.ts index f962f91d..bceaa49d 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_lt.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_lt.ts @@ -94,4 +94,72 @@ <translation>Užverti</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_lv.ts b/src-qt5/core/lumina-info/i18n/lumina-info_lv.ts index f38f9c01..eb089eef 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_lv.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_lv.ts @@ -94,4 +94,72 @@ <translation>Aizvērt</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_mk.ts b/src-qt5/core/lumina-info/i18n/lumina-info_mk.ts index 70577011..bf95d1cb 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_mk.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_mk.ts @@ -94,4 +94,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_mn.ts b/src-qt5/core/lumina-info/i18n/lumina-info_mn.ts index 70577011..bf95d1cb 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_mn.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_mn.ts @@ -94,4 +94,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_ms.ts b/src-qt5/core/lumina-info/i18n/lumina-info_ms.ts index 70577011..bf95d1cb 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_ms.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_ms.ts @@ -94,4 +94,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_mt.ts b/src-qt5/core/lumina-info/i18n/lumina-info_mt.ts index 70577011..bf95d1cb 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_mt.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_mt.ts @@ -94,4 +94,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_nb.ts b/src-qt5/core/lumina-info/i18n/lumina-info_nb.ts index 70577011..bf95d1cb 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_nb.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_nb.ts @@ -94,4 +94,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_nl.ts b/src-qt5/core/lumina-info/i18n/lumina-info_nl.ts index 2c6e3180..d3608ebe 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_nl.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_nl.ts @@ -94,4 +94,72 @@ <translation>Sluiten</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_pa.ts b/src-qt5/core/lumina-info/i18n/lumina-info_pa.ts index 70577011..bf95d1cb 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_pa.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_pa.ts @@ -94,4 +94,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_pl.ts b/src-qt5/core/lumina-info/i18n/lumina-info_pl.ts index 03133ac7..a563013e 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_pl.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_pl.ts @@ -94,4 +94,72 @@ <translation>Zamknij</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_pt.ts b/src-qt5/core/lumina-info/i18n/lumina-info_pt.ts index 36ef1867..1fdbe6a1 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_pt.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_pt.ts @@ -94,4 +94,72 @@ <translation>Fechar</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_pt_BR.ts b/src-qt5/core/lumina-info/i18n/lumina-info_pt_BR.ts index 03e47e81..6e9f6e1c 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_pt_BR.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_pt_BR.ts @@ -94,4 +94,72 @@ <translation>Fechar</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_ro.ts b/src-qt5/core/lumina-info/i18n/lumina-info_ro.ts index 70577011..bf95d1cb 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_ro.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_ro.ts @@ -94,4 +94,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_ru.ts b/src-qt5/core/lumina-info/i18n/lumina-info_ru.ts index f86f8764..fca1cd8e 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_ru.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_ru.ts @@ -94,4 +94,72 @@ <translation>Закрыть</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_sk.ts b/src-qt5/core/lumina-info/i18n/lumina-info_sk.ts index d58a7bf0..44e2f1df 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_sk.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_sk.ts @@ -94,4 +94,72 @@ <translation>Zatvoriť</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_sl.ts b/src-qt5/core/lumina-info/i18n/lumina-info_sl.ts index 573d7cd2..dfb3708c 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_sl.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_sl.ts @@ -94,4 +94,72 @@ <translation>Zapri</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_sr.ts b/src-qt5/core/lumina-info/i18n/lumina-info_sr.ts index 70577011..bf95d1cb 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_sr.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_sr.ts @@ -94,4 +94,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_sv.ts b/src-qt5/core/lumina-info/i18n/lumina-info_sv.ts index 2469b9d3..06e91efa 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_sv.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_sv.ts @@ -94,4 +94,72 @@ <translation>Stäng</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_sw.ts b/src-qt5/core/lumina-info/i18n/lumina-info_sw.ts index 70577011..bf95d1cb 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_sw.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_sw.ts @@ -94,4 +94,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_ta.ts b/src-qt5/core/lumina-info/i18n/lumina-info_ta.ts index 70577011..bf95d1cb 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_ta.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_ta.ts @@ -94,4 +94,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_tg.ts b/src-qt5/core/lumina-info/i18n/lumina-info_tg.ts index 70577011..bf95d1cb 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_tg.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_tg.ts @@ -94,4 +94,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_th.ts b/src-qt5/core/lumina-info/i18n/lumina-info_th.ts index 70577011..bf95d1cb 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_th.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_th.ts @@ -94,4 +94,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_tr.ts b/src-qt5/core/lumina-info/i18n/lumina-info_tr.ts index 2c7831ae..b520af3d 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_tr.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_tr.ts @@ -94,4 +94,72 @@ <translation>Kapat</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_uk.ts b/src-qt5/core/lumina-info/i18n/lumina-info_uk.ts index a61ed654..93acfa2f 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_uk.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_uk.ts @@ -94,4 +94,72 @@ <translation>Закрити</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_uz.ts b/src-qt5/core/lumina-info/i18n/lumina-info_uz.ts index 70577011..bf95d1cb 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_uz.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_uz.ts @@ -94,4 +94,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_vi.ts b/src-qt5/core/lumina-info/i18n/lumina-info_vi.ts index 70577011..bf95d1cb 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_vi.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_vi.ts @@ -94,4 +94,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_zh_CN.ts b/src-qt5/core/lumina-info/i18n/lumina-info_zh_CN.ts index 289c18db..d24b2b3e 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_zh_CN.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_zh_CN.ts @@ -94,4 +94,72 @@ <translation>关闭</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_zh_HK.ts b/src-qt5/core/lumina-info/i18n/lumina-info_zh_HK.ts index 70577011..bf95d1cb 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_zh_HK.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_zh_HK.ts @@ -94,4 +94,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_zh_TW.ts b/src-qt5/core/lumina-info/i18n/lumina-info_zh_TW.ts index 70577011..bf95d1cb 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_zh_TW.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_zh_TW.ts @@ -94,4 +94,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-info/i18n/lumina-info_zu.ts b/src-qt5/core/lumina-info/i18n/lumina-info_zu.ts index 70577011..bf95d1cb 100644 --- a/src-qt5/core/lumina-info/i18n/lumina-info_zu.ts +++ b/src-qt5/core/lumina-info/i18n/lumina-info_zu.ts @@ -94,4 +94,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_af.ts b/src-qt5/core/lumina-open/i18n/lumina-open_af.ts index cfc1b766..bc022cb0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_af.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_af.ts @@ -209,4 +209,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_ar.ts b/src-qt5/core/lumina-open/i18n/lumina-open_ar.ts index cfc1b766..bc022cb0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_ar.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_ar.ts @@ -209,4 +209,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_az.ts b/src-qt5/core/lumina-open/i18n/lumina-open_az.ts index cfc1b766..bc022cb0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_az.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_az.ts @@ -209,4 +209,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_bg.ts b/src-qt5/core/lumina-open/i18n/lumina-open_bg.ts index 42817c9f..6504b9bb 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_bg.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_bg.ts @@ -209,4 +209,72 @@ <translation>Възникна грешка в програмата и трябваше да бъде затворена:</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Мултимедия</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Разработка</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Образование</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Изображения</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Мрежа</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Офис</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Наука</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Настройки</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">Система</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_bn.ts b/src-qt5/core/lumina-open/i18n/lumina-open_bn.ts index cfc1b766..bc022cb0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_bn.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_bn.ts @@ -209,4 +209,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_bs.ts b/src-qt5/core/lumina-open/i18n/lumina-open_bs.ts index cfc1b766..bc022cb0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_bs.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_bs.ts @@ -209,4 +209,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_ca.ts b/src-qt5/core/lumina-open/i18n/lumina-open_ca.ts index a5eaf608..222884ed 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_ca.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_ca.ts @@ -209,4 +209,72 @@ <translation>L'aplicació següent ha tingut un error i s'ha hagut de tancar:</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Multimèdia</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Desenvolupament</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Educació</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Gràfics</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Xarxa</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Oficina</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Ciència</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Configuració</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">Sistema</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_cs.ts b/src-qt5/core/lumina-open/i18n/lumina-open_cs.ts index 3123825f..15cbfa0f 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_cs.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_cs.ts @@ -209,4 +209,72 @@ <translation>V následující aplikaci došlo k chyba a bude proto ukončena:</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Multimédia</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Vývoj</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Výuka</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Grafika</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Síť</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Kancelář</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Věda</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Nastavení</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">Systém</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_cy.ts b/src-qt5/core/lumina-open/i18n/lumina-open_cy.ts index cfc1b766..bc022cb0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_cy.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_cy.ts @@ -209,4 +209,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_da.ts b/src-qt5/core/lumina-open/i18n/lumina-open_da.ts index 695e6f57..340bbfc5 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_da.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_da.ts @@ -209,4 +209,72 @@ <translation>Det følgende program oplevede en fejl og blev nødt til at afslutte:</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Multimedie</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Udvikling</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Uddannelse</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Grafik</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Netværk</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Kontor</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Videnskab</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Indstillinger</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">System</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_de.ts b/src-qt5/core/lumina-open/i18n/lumina-open_de.ts index 27a43260..02b475dc 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_de.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_de.ts @@ -209,4 +209,72 @@ <translation>Bei folgender Anwendung ist ein Fehler aufgetreten und sie wurde beendet:</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Multimedia</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Entwicklung</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Ausbildung</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Grafik</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Netzwerk</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Büro</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Wissenschaft</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Einstellungen</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">System</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_el.ts b/src-qt5/core/lumina-open/i18n/lumina-open_el.ts index 7ce33bc2..f7344eb9 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_el.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_el.ts @@ -209,4 +209,72 @@ <translation>Η παρακάτω εφαρμογή αντιμετώπισε ένα σφάλμα και πρέπει να τερματιστεί:</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Πολυμέσα</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Ανάπτυξη</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Εκπαίδευση</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Γραφικά</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Δίκτυο</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Σουΐτα Γραφείου</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Επιστήμη</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Ρυθμίσεις</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">Σύστημα</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_en_AU.ts b/src-qt5/core/lumina-open/i18n/lumina-open_en_AU.ts index 535b6209..f2675e28 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_en_AU.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_en_AU.ts @@ -209,4 +209,72 @@ <translation>The following application experienced an error and needed to close:</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Multimedia</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Development</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Education</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Graphics</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Network</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Office</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Science</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Settings</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">System</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_en_GB.ts b/src-qt5/core/lumina-open/i18n/lumina-open_en_GB.ts index 91d418fa..0d6dcf0b 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_en_GB.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_en_GB.ts @@ -209,4 +209,72 @@ <translation>The following application experienced an error and needed to close:</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Multimedia</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Development</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Education</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Graphics</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Network</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Office</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Science</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Settings</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">System</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_en_ZA.ts b/src-qt5/core/lumina-open/i18n/lumina-open_en_ZA.ts index cfc1b766..bc022cb0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_en_ZA.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_en_ZA.ts @@ -209,4 +209,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_es.ts b/src-qt5/core/lumina-open/i18n/lumina-open_es.ts index 91f106aa..b8d7d446 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_es.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_es.ts @@ -209,4 +209,72 @@ <translation>La siguiente aplicación presentó un error y necesita cerrarse:</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Multimedia</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Desarrollo</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Educación</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Gráficos</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Red</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Oficina</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Ciencia</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Configuración</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">Sistema</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_et.ts b/src-qt5/core/lumina-open/i18n/lumina-open_et.ts index 3c8fee7e..df9c029b 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_et.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_et.ts @@ -209,4 +209,72 @@ <translation>See rakendus sulgus, kuna esines viga:</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Multimeedia</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Arendus</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Haridus</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Graafika</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Võrk</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Kontor</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Teadus</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Sätted</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">Süsteem</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_eu.ts b/src-qt5/core/lumina-open/i18n/lumina-open_eu.ts index de44e1fb..1cdbc65f 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_eu.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_eu.ts @@ -209,4 +209,72 @@ <translation>Hurrengo aplikazioak akats bat izan du eta itxi behar da:</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Multimedia</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Garapena</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Hezkuntza</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Grafikoak</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Sarea</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Bulegoa</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Zientzia</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Ezarpenak</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">Sistema</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_fa.ts b/src-qt5/core/lumina-open/i18n/lumina-open_fa.ts index cfc1b766..bc022cb0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_fa.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_fa.ts @@ -209,4 +209,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_fi.ts b/src-qt5/core/lumina-open/i18n/lumina-open_fi.ts index acfe5015..6a09c31b 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_fi.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_fi.ts @@ -209,4 +209,72 @@ <translation>Seuraavat sovellukset kohtasivat virheen ja ne täytyy sulkea:</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Multimedia</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Ohjelmakehitys</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Kasvatus</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Grafiikka</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Verkko</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Toimisto</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Tiede</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Asetukset</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">Järjestelmä</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_fr.ts b/src-qt5/core/lumina-open/i18n/lumina-open_fr.ts index 9230eab7..6c950a8f 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_fr.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_fr.ts @@ -26,7 +26,7 @@ <message> <location filename="../LFileDialog.ui" line="131"/> <source>Binary Location</source> - <translation>Emplacement de l'Exécutable</translation> + <translation>Emplacement de l'Exécutable</translation> </message> <message> <location filename="../LFileDialog.ui" line="138"/> @@ -156,7 +156,7 @@ <location filename="../main.cpp" line="205"/> <location filename="../main.cpp" line="214"/> <source>Screen Brightness %1%</source> - <translation>Luminosité de l'Écran %1%</translation> + <translation>Luminosité de l'Écran %1%</translation> </message> <message> <location filename="../main.cpp" line="246"/> @@ -176,7 +176,7 @@ <message> <location filename="../main.cpp" line="291"/> <source>URL shortcut is missing the URL: %1</source> - <translation>L'adresse est introuvable dans le raccourci URL : %1</translation> + <translation>L'adresse est introuvable dans le raccourci URL : %1</translation> </message> <message> <location filename="../main.cpp" line="302"/> @@ -195,8 +195,8 @@ </message> <message> <location filename="../main.cpp" line="370"/> - <source>Could not find "%1". Please ensure it is installed first.</source> - <translation>"%1" non trouvé. Vérifiez qu'il soit bien installé.</translation> + <source>Could not find "%1". Please ensure it is installed first.</source> + <translation>"%1" non trouvé. Vérifiez qu'il soit bien installé.</translation> </message> <message> <location filename="../main.cpp" line="421"/> @@ -209,4 +209,72 @@ <translation>Le programme suivant a provoqué une erreur et a dû être fermé :</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Multimédia</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Développement</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Éducation</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Graphiques</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Réseau</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Bureau</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Science</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Paramètres</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">Système</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_fr_CA.ts b/src-qt5/core/lumina-open/i18n/lumina-open_fr_CA.ts index cfc1b766..bc022cb0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_fr_CA.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_fr_CA.ts @@ -209,4 +209,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_gl.ts b/src-qt5/core/lumina-open/i18n/lumina-open_gl.ts index cfc1b766..bc022cb0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_gl.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_gl.ts @@ -209,4 +209,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_he.ts b/src-qt5/core/lumina-open/i18n/lumina-open_he.ts index cfc1b766..bc022cb0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_he.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_he.ts @@ -209,4 +209,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_hi.ts b/src-qt5/core/lumina-open/i18n/lumina-open_hi.ts index eb7caa4a..6e078c67 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_hi.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_hi.ts @@ -209,4 +209,72 @@ <translation>इस एप्लीकेशन में त्रुटि है और इसे बंद करने की आवश्यकता है:</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">मल्टीमीडिया</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">विकास</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">पढाई</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">चित्र</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">नेटवर्क</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">कार्यालय</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">विज्ञान</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">सेटिंग्स</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">उपकरण</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_hr.ts b/src-qt5/core/lumina-open/i18n/lumina-open_hr.ts index cfc1b766..bc022cb0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_hr.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_hr.ts @@ -209,4 +209,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_hu.ts b/src-qt5/core/lumina-open/i18n/lumina-open_hu.ts index 33763efe..c9fa6680 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_hu.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_hu.ts @@ -209,4 +209,72 @@ <translation>Az alkalmazás hibát észlelt, és bezárandó:</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Multimédia</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Fejlesztés</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Oktatás</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Grafika</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Hálózat</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Iroda</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Tudomány</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Beállítások</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">Rendszer</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_id.ts b/src-qt5/core/lumina-open/i18n/lumina-open_id.ts index dd4cea0e..143e052d 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_id.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_id.ts @@ -209,4 +209,72 @@ <translation type="unfinished">Aplikasi berikut mengalami kesalahan dan diperlukan untuk menutup:</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Multimedia</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Pengembangan</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Edukasi</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Grafis</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Jaringan</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Kantor</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Sains</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Pengaturan</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">Sistem</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_is.ts b/src-qt5/core/lumina-open/i18n/lumina-open_is.ts index cfc1b766..bc022cb0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_is.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_is.ts @@ -209,4 +209,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_it.ts b/src-qt5/core/lumina-open/i18n/lumina-open_it.ts index 0e3ea28c..aff2fc55 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_it.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_it.ts @@ -209,4 +209,72 @@ <translation>La seguente applicazione ha avuto un errore e deve chiudere:</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Multimediale</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Sviluppo</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Educazione</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Grafica</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Rete</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Ufficio</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Scienza</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Impostazioni</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">Sistema</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_ja.ts b/src-qt5/core/lumina-open/i18n/lumina-open_ja.ts index e42d4add..efe358cf 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_ja.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_ja.ts @@ -210,4 +210,72 @@ <translation>このアプリケーションでエラーが発生したため、閉じる必要があります:</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">マルチメディア</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">開発</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">教育</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">グラフィックス</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">ネットワーク</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">オフィス</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">科学</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">設定</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">システム</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_ka.ts b/src-qt5/core/lumina-open/i18n/lumina-open_ka.ts index cfc1b766..bc022cb0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_ka.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_ka.ts @@ -209,4 +209,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_ko.ts b/src-qt5/core/lumina-open/i18n/lumina-open_ko.ts index c1e7f594..519726b9 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_ko.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_ko.ts @@ -209,4 +209,72 @@ <translation>다음의 프로그램에 오류가 발생하여 종료하였습니다:</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">멀티미디어</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">개발</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">교육</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">그래픽</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">네트워크</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">업무</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">과학</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">설정</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">시스템</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_lt.ts b/src-qt5/core/lumina-open/i18n/lumina-open_lt.ts index 425a59d9..b5035cbf 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_lt.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_lt.ts @@ -209,4 +209,72 @@ <translation>Ši programa susidūrė su klaida ir turėjo būti užverta:</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Multimedija</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Programavimas</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Švietimas</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Grafika</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Tinklas</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Raštinė</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Mokslas</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Nustatymai</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">Sistema</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_lv.ts b/src-qt5/core/lumina-open/i18n/lumina-open_lv.ts index 1e0e91c5..cac62f3a 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_lv.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_lv.ts @@ -209,4 +209,72 @@ <translation>Šai lietotnei radās kļūda un bija nepieciešams to aizvērt:</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Multivide</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Izstrāde</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Izglītība</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Grafika</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Tīkls</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Birojs</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Zinātne</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Iestatījumi</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">Sistēma</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_mk.ts b/src-qt5/core/lumina-open/i18n/lumina-open_mk.ts index cfc1b766..bc022cb0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_mk.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_mk.ts @@ -209,4 +209,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_mn.ts b/src-qt5/core/lumina-open/i18n/lumina-open_mn.ts index cfc1b766..bc022cb0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_mn.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_mn.ts @@ -209,4 +209,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_ms.ts b/src-qt5/core/lumina-open/i18n/lumina-open_ms.ts index cfc1b766..bc022cb0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_ms.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_ms.ts @@ -209,4 +209,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_mt.ts b/src-qt5/core/lumina-open/i18n/lumina-open_mt.ts index cfc1b766..bc022cb0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_mt.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_mt.ts @@ -209,4 +209,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_nb.ts b/src-qt5/core/lumina-open/i18n/lumina-open_nb.ts index cfc1b766..bc022cb0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_nb.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_nb.ts @@ -209,4 +209,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_nl.ts b/src-qt5/core/lumina-open/i18n/lumina-open_nl.ts index 140decc3..9e114de9 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_nl.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_nl.ts @@ -209,4 +209,72 @@ <translation>Er is een fout opgetreden in de volgende applicatie en moet daarom worden gesloten:</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Multimedia</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Ontwikkeling</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Educatie</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Grafisch</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Netwerk</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Kantoor</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Wetenschap</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Instellingen</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">Systeem</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_pa.ts b/src-qt5/core/lumina-open/i18n/lumina-open_pa.ts index cfc1b766..bc022cb0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_pa.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_pa.ts @@ -209,4 +209,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_pl.ts b/src-qt5/core/lumina-open/i18n/lumina-open_pl.ts index 6b74e22b..e4abdbfc 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_pl.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_pl.ts @@ -209,4 +209,72 @@ <translation>Aplikacja napotkała błąd i musi zostać zamknięta:</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Multimedia</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Narzędzia programistów</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Edukacja</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Grafika</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Sieć</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Biuro</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Nauka</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Ustawienia</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">System</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_pt.ts b/src-qt5/core/lumina-open/i18n/lumina-open_pt.ts index b73c69e3..55dcbeda 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_pt.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_pt.ts @@ -209,4 +209,72 @@ <translation>O seguinte aplicativo encontrou um erro e teve que ser fechado:</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Multimédia</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Desenvolvimento</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Educação</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Gráficos</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Rede</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Escritório</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Ciência</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Definições</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">Sistema</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_pt_BR.ts b/src-qt5/core/lumina-open/i18n/lumina-open_pt_BR.ts index 5b1f717f..f202622c 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_pt_BR.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_pt_BR.ts @@ -209,4 +209,72 @@ <translation>O seguinte aplicativo encontrou um erro e precisa ser fechado:</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Multimídia</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Desenvolvimento</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Educação</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Gráficos</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Redes</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Escritório</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Ciências</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Configurações</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">Sistema</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_ro.ts b/src-qt5/core/lumina-open/i18n/lumina-open_ro.ts index cfc1b766..bc022cb0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_ro.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_ro.ts @@ -209,4 +209,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_ru.ts b/src-qt5/core/lumina-open/i18n/lumina-open_ru.ts index 53107836..472a6be3 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_ru.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_ru.ts @@ -209,4 +209,72 @@ <translation>Следующее приложение вызвало ошибку и должно быть закрыто:</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Мультимедиа</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Разработка</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Образование</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Графика</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Сети</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Офис</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Наука</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Настройки</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">Система</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_sk.ts b/src-qt5/core/lumina-open/i18n/lumina-open_sk.ts index 895c2890..3433ff4b 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_sk.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_sk.ts @@ -209,4 +209,72 @@ <translation>Nasledujúca aplikácia hlási chybu a musí byť ukončená: </translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Multimédiá</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Vývoj</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Vzdelávanie</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Grafika</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Sieť</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Kancelária</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Veda</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Nastavenie</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">Systém</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_sl.ts b/src-qt5/core/lumina-open/i18n/lumina-open_sl.ts index cfc1b766..bc022cb0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_sl.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_sl.ts @@ -209,4 +209,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_sr.ts b/src-qt5/core/lumina-open/i18n/lumina-open_sr.ts index cfc1b766..bc022cb0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_sr.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_sr.ts @@ -209,4 +209,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_sv.ts b/src-qt5/core/lumina-open/i18n/lumina-open_sv.ts index be520af8..f8264625 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_sv.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_sv.ts @@ -209,4 +209,72 @@ <translation>Följande program upplevde ett fel och behövde stängas:</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Multimedia</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Utveckling</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Utbildning</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Grafik</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Nätverk</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Kontorsprogram</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Vetenskap</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Inställningar</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">System</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_sw.ts b/src-qt5/core/lumina-open/i18n/lumina-open_sw.ts index cfc1b766..bc022cb0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_sw.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_sw.ts @@ -209,4 +209,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_ta.ts b/src-qt5/core/lumina-open/i18n/lumina-open_ta.ts index cfc1b766..bc022cb0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_ta.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_ta.ts @@ -209,4 +209,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_tg.ts b/src-qt5/core/lumina-open/i18n/lumina-open_tg.ts index cfc1b766..bc022cb0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_tg.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_tg.ts @@ -209,4 +209,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_th.ts b/src-qt5/core/lumina-open/i18n/lumina-open_th.ts index cfc1b766..bc022cb0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_th.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_th.ts @@ -209,4 +209,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_tr.ts b/src-qt5/core/lumina-open/i18n/lumina-open_tr.ts index ff68fb01..fa53e159 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_tr.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_tr.ts @@ -209,4 +209,72 @@ <translation>İzleyen uygulama bir hatayla karşılaştı ve kapatılması gerekti:</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Multimedya</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Geliştirme</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Eğitim</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Grafik</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Ağ</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Ofis</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Bilim</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Ayarlar</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">Sistem</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_uk.ts b/src-qt5/core/lumina-open/i18n/lumina-open_uk.ts index bfd6a8a5..5fff2fcf 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_uk.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_uk.ts @@ -209,4 +209,72 @@ <translation>Наступна програма викликало помилку и має бути закрита:</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">Мультимедіа</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">Розробка</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">Освіта</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">Графіка</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">Мережа</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">Офіс</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">Наука</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">Налаштування</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">Система</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_uz.ts b/src-qt5/core/lumina-open/i18n/lumina-open_uz.ts index cfc1b766..bc022cb0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_uz.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_uz.ts @@ -209,4 +209,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_vi.ts b/src-qt5/core/lumina-open/i18n/lumina-open_vi.ts index cfc1b766..bc022cb0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_vi.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_vi.ts @@ -209,4 +209,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_zh_CN.ts b/src-qt5/core/lumina-open/i18n/lumina-open_zh_CN.ts index 981affe2..312c9f6c 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_zh_CN.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_zh_CN.ts @@ -209,4 +209,72 @@ <translation>下面的应用程序遇到错误,需要关闭:</translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished">多媒体</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished">开发</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished">教育</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished">图像</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished">网络</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished">办公</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished">科学</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished">设置</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished">系统</translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_zh_HK.ts b/src-qt5/core/lumina-open/i18n/lumina-open_zh_HK.ts index cfc1b766..bc022cb0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_zh_HK.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_zh_HK.ts @@ -209,4 +209,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_zh_TW.ts b/src-qt5/core/lumina-open/i18n/lumina-open_zh_TW.ts index cfc1b766..bc022cb0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_zh_TW.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_zh_TW.ts @@ -209,4 +209,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/i18n/lumina-open_zu.ts b/src-qt5/core/lumina-open/i18n/lumina-open_zu.ts index cfc1b766..bc022cb0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_zu.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_zu.ts @@ -209,4 +209,72 @@ <translation type="unfinished"></translation> </message> </context> +<context> + <name>XDGDesktopList</name> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="603"/> + <source>Multimedia</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="604"/> + <source>Development</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="605"/> + <source>Education</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="606"/> + <source>Games</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="607"/> + <source>Graphics</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="608"/> + <source>Network</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="609"/> + <source>Office</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="610"/> + <source>Science</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="611"/> + <source>Settings</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="612"/> + <source>System</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="613"/> + <source>Utility</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="614"/> + <source>Wine</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../../libLumina/LuminaXDG.cpp" line="615"/> + <source>Unsorted</source> + <translation type="unfinished"></translation> + </message> +</context> </TS> diff --git a/src-qt5/core/lumina-open/main.cpp b/src-qt5/core/lumina-open/main.cpp index d421b5b6..72d09f42 100644 --- a/src-qt5/core/lumina-open/main.cpp +++ b/src-qt5/core/lumina-open/main.cpp @@ -88,9 +88,9 @@ void LaunchAutoStart(){ QString cmd = xdgapps[i]->getDesktopExec(); if(cmd.contains("%")){cmd = cmd.remove("%U").remove("%u").remove("%F").remove("%f").remove("%i").remove("%c").remove("%k").simplified(); } //Now run the command - if(!cmd.isEmpty()){ + if(!cmd.isEmpty()){ qDebug() << " - Auto-Starting File:" << xdgapps[i]->filePath; - QProcess::startDetached(cmd); + QProcess::startDetached(cmd); } } //make sure we clean up all the xdgapps structures @@ -103,7 +103,7 @@ QString cmdFromUser(int argc, char **argv, QString inFile, QString extension, QS if(extension=="mimetype"){ //qDebug() << "inFile:" << inFile; QStringList matches = LXDG::findAppMimeForFile(inFile, true).split("::::"); //allow multiple matches - //qDebug() << "Matches:" << matches; + qDebug() << "Mimetype Matches:" << matches; for(int i=0; i<matches.length(); i++){ defApp = LXDG::findDefaultAppForMime(matches[i]); //qDebug() << "MimeType:" << matches[i] << defApp; @@ -111,7 +111,7 @@ QString cmdFromUser(int argc, char **argv, QString inFile, QString extension, QS else if(i+1==matches.length()){ extension = matches[0]; } } }else{ defApp = LFileDialog::getDefaultApp(extension); } - //qDebug() << "extension:" << extension << "defApp:" << defApp; + qDebug() << "Mimetype:" << extension << "defApp:" << defApp; if( !defApp.isEmpty() && !showDLG ){ if(defApp.endsWith(".desktop")){ XDGDesktop DF(defApp); @@ -159,10 +159,10 @@ QString cmdFromUser(int argc, char **argv, QString inFile, QString extension, QS if(!w.appPath.isEmpty()){ path = w.appPath; } //Just do the default application registration here for now // might move it to the runtime phase later after seeing that the app has successfully started - if(w.setDefault){ + if(w.setDefault){ if(!w.appFile.isEmpty()){ LFileDialog::setDefaultApp(extension, w.appFile); } else{ LFileDialog::setDefaultApp(extension, w.appExec); } - }else{ LFileDialog::setDefaultApp(extension, ""); } + } //Now return the resulting application command return w.appExec; } @@ -234,7 +234,7 @@ void getCMD(int argc, char ** argv, QString& binary, QString& args, QString& pat bool isFile=false; bool isUrl=false; QString extension; //Quick check/replacement for the URL syntax of a file - if(inFile.startsWith("file://")){ inFile.remove(0,7); } + if(inFile.startsWith("file://")){ inFile = QUrl(inFile).toLocalFile(); } //change from URL to file format for a local file //First make sure this is not a binary name first QString bin = inFile.section(" ",0,0).simplified(); if(LUtils::isValidBinary(bin) && !bin.endsWith(".desktop") && !QFileInfo(inFile).isDir() ){isFile=true; } @@ -317,10 +317,10 @@ void getCMD(int argc, char ** argv, QString& binary, QString& args, QString& pat } } //Now assemble the exec string (replace file/url field codes as necessary) - if(useInputFile){ + if(useInputFile){ args = inFile; //just to keep them distinct internally // NOTE: lumina-open is only designed for a single input file, - // so no need to distinguish between the list codes (uppercase) + // so no need to distinguish between the list codes (uppercase) // and the single-file codes (lowercase) //Special "inFile" format replacements for input codes if( (cmd.contains("%f") || cmd.contains("%F") ) ){ diff --git a/src-qt5/core/lumina-theme-engine/desktop_qss/DarkGlass.qss b/src-qt5/core/lumina-theme-engine/desktop_qss/DarkGlass.qss new file mode 100644 index 00000000..2de9fefa --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/desktop_qss/DarkGlass.qss @@ -0,0 +1,91 @@ +QWidget#LuminaBootSplash{ + background: qradialgradient(spread:reflect, cx:0.113757, cy:0.875, radius:0.7, fx:0.045, fy:0.954545, stop:0 palette(dark), stop:1 palette(mid) ); + border-radius: 5px; +} + +LDPlugin#applauncher{ + background-color: transparent; + border: none; +} +LDPlugin#applauncher QToolButton, LDPlugin, LDPlugin#desktopview QListWidget::item{ + background-color: qradialgradient(spread:reflect, cx:0.113757, cy:0.875, radius:0.7, fx:0.045, fy:0.954545, stop:0 rgba(5, 5, 5, 30), stop:1 rgba(2, 2, 2, 70)); + border-width: 3px; + border-style: solid; + border-radius: 5px; + border-top-color: qradialgradient(spread:pad, cx:0.5, cy:1, radius:0.5, fx:0.5, fy:1, stop:0 rgba(0, 0, 0, 30), stop:0.724868 rgba(0, 0, 0, 60), stop:1 rgba(0, 0, 0, 10)); + border-bottom-color: qradialgradient(spread:pad, cx:0.5, cy:0, radius:0.5, fx:0.5, fy:0, stop:0 rgba(0,0,0, 30), stop:0.724868 rgba(0,0,0, 60), stop:1 rgba(0,0,0, 10)); + border-left-color: qradialgradient(spread:pad, cx:1, cy:0.5, radius:0.5, fx:1, fy:0.5, stop:0 rgba(0,0,0, 30), stop:0.724868 rgba(0,0,0, 60), stop:1 rgba(0,0,0, 10)); + border-right-color: qradialgradient(spread:pad, cx:0, cy:0.5, radius:0.5, fx:1, fy:0.5, stop:0 rgba(0,0,0, 30), stop:0.724868 rgba(0,0,0, 60), stop:1 rgba(0,0,0, 10)); + color: white; +} + +LDPlugin#applauncher QToolButton:hover, LDPlugin#desktopview QListWidget::item:hover{ + background: QLinearGradient(x1: 0, y1: 0, x2: 1, y2: 1.1, stop: 0.1 palette(highlight), stop: 1 transparent); + color: palette(highlighted-text); + border-width: 3px; + border-style: solid; + border-radius: 5px; + border-top-color: qradialgradient(spread:pad, cx:0.5, cy:1, radius:0.5, fx:0.5, fy:1, stop:0 rgba(0,0,0, 30), stop:0.724868 rgba(0,0,0, 60), stop:1 rgba(0,0,0, 10)); + border-bottom-color: qradialgradient(spread:pad, cx:0.5, cy:0, radius:0.5, fx:0.5, fy:0, stop:0 rgba(0,0,0, 30), stop:0.724868 rgba(0,0,0, 60), stop:1 rgba(0,0,0, 10)); + border-left-color: qradialgradient(spread:pad, cx:1, cy:0.5, radius:0.5, fx:1, fy:0.5, stop:0 rgba(0,0,0, 30), stop:0.724868 rgba(0,0,0, 60), stop:1 rgba(0,0,0, 10)); + border-right-color: qradialgradient(spread:pad, cx:0, cy:0.5, radius:0.5, fx:1, fy:0.5, stop:0 rgba(0,0,0, 30), stop:0.724868 rgba(0,0,0, 60), stop:1 rgba(0,0,0, 10)); +} +QWidget#LuminaPanelColor{ + background: qradialgradient(spread:reflect, cx:0.113757, cy:0.875, radius:0.7, fx:0.045, fy:0.954545, stop:0 rgba(2, 2, 2, 60), stop:1 rgba(0, 0, 0, 110)); + border-radius: 3px; +} + +/*Special taskmanager window buttons: based on window state*/ +LTBWidget, LPanel QToolButton, QDialog#LeaveDialog QToolButton{ + border: 1px solid transparent; + border-radius: 3px; + background: transparent; +} +LTBWidget::menu-indicator{ image: none; } /*disable the menu arrow*/ +LTBWidget#WindowVisible{ + background: QLinearGradient(x1: 0, y1: 0, x2: 1, y2: 1.1, stop: 0.1 palette(mid), stop: 1 transparent); +} +LTBWidget#WindowInvisible{ + background: transparent; +} +LTBWidget#WindowActive{ + background: QLinearGradient(x1: 0, y1: 0, x2: 1, y2: 1.1, stop: 0.1 palette(midlight), stop: 1 transparent); +} +LTBWidget#WindowAttention{ + background: QLinearGradient(x1: 0, y1: 0, x2: 1, y2: 1.1, stop: 0.1 palette(highlight), stop: 1 transparent); +} +LTBWidget:hover, LTBWidget#WindowVisible:hover, LTBWidget#WindowInvisible:hover, LTBWidget#WindowActive:hover, LTBWidget#WindowAttention:hover, QToolButton:hover, QDialog#LeaveDialog QToolButton:hover{ + background: QLinearGradient(x1: 0, y1: 0, x2: 1, y2: 1.1, stop: 0.1 palette(highlight), stop: 1 transparent); + color: palette(highlighted-text); + border-width: 1px; + border-style: solid; + border-top-color: qradialgradient(spread:pad, cx:0.5, cy:1, radius:0.5, fx:0.5, fy:1, stop:0 rgba(0,0,0, 30), stop:0.724868 rgba(0,0,0, 60), stop:1 rgba(0,0,0, 10)); + border-bottom-color: qradialgradient(spread:pad, cx:0.5, cy:0, radius:0.5, fx:0.5, fy:0, stop:0 rgba(0,0,0, 30), stop:0.724868 rgba(0,0,0, 60), stop:1 rgba(0,0,0, 10)); + border-left-color: qradialgradient(spread:pad, cx:1, cy:0.5, radius:0.5, fx:1, fy:0.5, stop:0 rgba(0,0,0, 30), stop:0.724868 rgba(0,0,0, 60), stop:1 rgba(0,0,0, 10)); + border-right-color: qradialgradient(spread:pad, cx:0, cy:0.5, radius:0.5, fx:1, fy:0.5, stop:0 rgba(0,0,0, 30), stop:0.724868 rgba(0,0,0, 60), stop:1 rgba(0,0,0, 10)); +} + +/* CALENDER WIDGET */ + /* (This is a special hack since there is no official support for stylesheets for this widget) */ + QCalendarWidget QWidget#qt_calendar_navigationbar{ + background-color: palette(base); + } +QCalendarWidget QWidget{ + background-color: palette(base); + alternate-background-color: palette(alternate-base); + color: palette(text); +} +QCalendarWidget QAbstractButton{ + background-color: transparent; +} +QCalendarWidget QAbstractButton::menu-indicator{ + image: none; +} +QCalendarWidget QAbstractItemView{ + selection-background-color: qradialgradient(spread:reflect, cx:0.113757, cy:0.875, radius:0.7, fx:0.045, fy:0.954545, stop:0 rgba(3, 4, 4, 20), stop:1 rgba(0, 0, 0, 100)); + selection-color: palette(highlighted-text); +} +QCalendarWidget QWidget#qt_calendar_calendarview{ + background-color: palette(dark); + border: none; +} diff --git a/src-qt5/core/lumina-theme-engine/desktop_qss/Glass.qss b/src-qt5/core/lumina-theme-engine/desktop_qss/Glass.qss new file mode 100644 index 00000000..502c0a44 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/desktop_qss/Glass.qss @@ -0,0 +1,91 @@ +QWidget#LuminaBootSplash{ + background: qradialgradient(spread:reflect, cx:0.113757, cy:0.875, radius:0.7, fx:0.045, fy:0.954545, stop:0 palette(base), stop:1 palette(light) ); + border-radius: 5px; +} + +LDPlugin#applauncher{ + background-color: transparent; + border: none; +} +LDPlugin#applauncher QToolButton, LDPlugin, LDPlugin#desktopview QListWidget::item{ + background-color: qradialgradient(spread:reflect, cx:0.113757, cy:0.875, radius:0.7, fx:0.045, fy:0.954545, stop:0 rgba(250, 250, 250, 30), stop:1 rgba(252, 252, 252, 70)); + border-width: 3px; + border-style: solid; + border-radius: 5px; + border-top-color: qradialgradient(spread:pad, cx:0.5, cy:1, radius:0.5, fx:0.5, fy:1, stop:0 rgba(255,255,255, 30), stop:0.724868 rgba(255,255,255, 60), stop:1 rgba(255,255,255, 10)); + border-bottom-color: qradialgradient(spread:pad, cx:0.5, cy:0, radius:0.5, fx:0.5, fy:0, stop:0 rgba(255,255,255, 30), stop:0.724868 rgba(255,255,255, 60), stop:1 rgba(255,255,255, 10)); + border-left-color: qradialgradient(spread:pad, cx:1, cy:0.5, radius:0.5, fx:1, fy:0.5, stop:0 rgba(255,255,255, 30), stop:0.724868 rgba(255,255,255, 60), stop:1 rgba(255,255,255, 10)); + border-right-color: qradialgradient(spread:pad, cx:0, cy:0.5, radius:0.5, fx:1, fy:0.5, stop:0 rgba(255,255,255, 30), stop:0.724868 rgba(255,255,255, 60), stop:1 rgba(255,255,255, 10)); + color: white; +} + +LDPlugin#applauncher QToolButton:hover, LDPlugin#desktopview QListWidget::item:hover{ + background: QLinearGradient(x1: 0, y1: 0, x2: 1, y2: 1.1, stop: 0.1 palette(highlight), stop: 1 transparent); + color: palette(highlighted-text); + border-width: 3px; + border-style: solid; + border-radius: 5px; + border-top-color: qradialgradient(spread:pad, cx:0.5, cy:1, radius:0.5, fx:0.5, fy:1, stop:0 rgba(255,255,255, 30), stop:0.724868 rgba(255,255,255, 60), stop:1 rgba(255,255,255, 10)); + border-bottom-color: qradialgradient(spread:pad, cx:0.5, cy:0, radius:0.5, fx:0.5, fy:0, stop:0 rgba(255,255,255, 30), stop:0.724868 rgba(255,255,255, 60), stop:1 rgba(255,255,255, 10)); + border-left-color: qradialgradient(spread:pad, cx:1, cy:0.5, radius:0.5, fx:1, fy:0.5, stop:0 rgba(255,255,255, 30), stop:0.724868 rgba(255,255,255, 60), stop:1 rgba(255,255,255, 10)); + border-right-color: qradialgradient(spread:pad, cx:0, cy:0.5, radius:0.5, fx:1, fy:0.5, stop:0 rgba(255,255,255, 30), stop:0.724868 rgba(255,255,255, 60), stop:1 rgba(255,255,255, 10)); +} +QWidget#LuminaPanelColor{ + background: qradialgradient(spread:reflect, cx:0.113757, cy:0.875, radius:0.7, fx:0.045, fy:0.954545, stop:0 rgba(252, 252, 252, 60), stop:1 rgba(255,255,255, 110)); + border-radius: 3px; +} + +/*Special taskmanager window buttons: based on window state*/ +LTBWidget, LPanel QToolButton, QDialog#LeaveDialog QToolButton{ + border: 1px solid transparent; + border-radius: 3px; + background: transparent; +} +LTBWidget::menu-indicator{ image: none; } /*disable the menu arrow*/ +LTBWidget#WindowVisible{ + background: QLinearGradient(x1: 0, y1: 0, x2: 1, y2: 1.1, stop: 0.1 palette(mid), stop: 1 transparent); +} +LTBWidget#WindowInvisible{ + background: transparent; +} +LTBWidget#WindowActive{ + background: QLinearGradient(x1: 0, y1: 0, x2: 1, y2: 1.1, stop: 0.1 palette(dark), stop: 1 transparent); +} +LTBWidget#WindowAttention{ + background: QLinearGradient(x1: 0, y1: 0, x2: 1, y2: 1.1, stop: 0.1 palette(highlight), stop: 1 transparent); +} +LTBWidget:hover, LTBWidget#WindowVisible:hover, LTBWidget#WindowInvisible:hover, LTBWidget#WindowActive:hover, LTBWidget#WindowAttention:hover, QToolButton:hover, QDialog#LeaveDialog QToolButton:hover{ + background: QLinearGradient(x1: 0, y1: 0, x2: 1, y2: 1.1, stop: 0.1 palette(highlight), stop: 1 transparent); + color: palette(highlighted-text); + border-width: 1px; + border-style: solid; + border-top-color: qradialgradient(spread:pad, cx:0.5, cy:1, radius:0.5, fx:0.5, fy:1, stop:0 rgba(255,255,255, 30), stop:0.724868 rgba(255,255,255, 60), stop:1 rgba(255,255,255, 10)); + border-bottom-color: qradialgradient(spread:pad, cx:0.5, cy:0, radius:0.5, fx:0.5, fy:0, stop:0 rgba(255,255,255, 30), stop:0.724868 rgba(255,255,255, 60), stop:1 rgba(255,255,255, 10)); + border-left-color: qradialgradient(spread:pad, cx:1, cy:0.5, radius:0.5, fx:1, fy:0.5, stop:0 rgba(255,255,255, 30), stop:0.724868 rgba(255,255,255, 60), stop:1 rgba(255,255,255, 10)); + border-right-color: qradialgradient(spread:pad, cx:0, cy:0.5, radius:0.5, fx:1, fy:0.5, stop:0 rgba(255,255,255, 30), stop:0.724868 rgba(255,255,255, 60), stop:1 rgba(255,255,255, 10)); +} + +/* CALENDER WIDGET */ + /* (This is a special hack since there is no official support for stylesheets for this widget) */ + QCalendarWidget QWidget#qt_calendar_navigationbar{ + background-color: palette(base); + } +QCalendarWidget QWidget{ + background-color: palette(base); + alternate-background-color: palette(alternate-base); + color: palette(text); +} +QCalendarWidget QAbstractButton{ + background-color: transparent; +} +QCalendarWidget QAbstractButton::menu-indicator{ + image: none; +} +QCalendarWidget QAbstractItemView{ + selection-background-color: qradialgradient(spread:reflect, cx:0.113757, cy:0.875, radius:0.7, fx:0.045, fy:0.954545, stop:0 rgba(253, 254, 254, 20), stop:1 rgba(255,255,255, 100)); + selection-color: palette(highlighted-text); +} +QCalendarWidget QWidget#qt_calendar_calendarview{ + background-color: palette(light); + border: none; +} diff --git a/src-qt5/core/lumina-theme-engine/lumina-theme-engine.pro b/src-qt5/core/lumina-theme-engine/lumina-theme-engine.pro index d91091d3..e1023752 100644 --- a/src-qt5/core/lumina-theme-engine/lumina-theme-engine.pro +++ b/src-qt5/core/lumina-theme-engine/lumina-theme-engine.pro @@ -8,4 +8,10 @@ SUBDIRS += src/lthemeengine-qtplugin \ colors.files = colors/*.conf colors.path = $${L_SHAREDIR}/lthemeengine/colors -INSTALLS += colors +qss.files = qss/*.qss +qss.path = $${L_SHAREDIR}/lthemeengine/qss + +dqss.files = desktop_qss/*.qss +dqss.path = $${L_SHAREDIR}/lthemeengine/desktop_qss + +INSTALLS += colors qss dqss diff --git a/src-qt5/core/lumina-theme-engine/qss/scrollbar-simple.qss b/src-qt5/core/lumina-theme-engine/qss/scrollbar-simple.qss new file mode 100644 index 00000000..265ff20c --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/qss/scrollbar-simple.qss @@ -0,0 +1,30 @@ +/* SCROLLBARS (NOTE: Changing 1 subcontrol means you have to change all of them)*/ +QScrollBar{ + background: palette(alternate-base); +} +QScrollBar:horizontal{ + margin: 0px 0px 0px 0px; +} +QScrollBar:vertical{ + margin: 0px 0px 0px 0px; +} +QScrollBar::handle{ + background: palette(base); + border: 1px solid transparent; + border-radius: 7px; +} +QScrollBar::handle:hover, QScrollBar::add-line:hover, QScrollBar::sub-line:hover{ + background: palette(highlight); +} +QScrollBar::add-line{ +subcontrol-origin: none; +} +QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical{ +height: 0px; +} +QScrollBar::add-line:horizontal, QScrollBar::sub-line:horizontal{ +width: 0px; +} +QScrollBar::sub-line{ +subcontrol-origin: none; +} diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/lthemeengineplatformtheme.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/lthemeengineplatformtheme.cpp index 453bde1d..670e1c9c 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/lthemeengineplatformtheme.cpp +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/lthemeengineplatformtheme.cpp @@ -16,6 +16,8 @@ #include <QFile> #include <QFileSystemWatcher> +#include <stdlib.h> + #include <lthemeengine/lthemeengine.h> #include "lthemeengineplatformtheme.h" #if (QT_VERSION >= QT_VERSION_CHECK(5, 7, 0)) && !defined(QT_NO_DBUS) @@ -130,20 +132,38 @@ void lthemeenginePlatformTheme::applySettings(){ if(m_customPalette){ qApp->setPalette(*m_customPalette); } else{ qApp->setPalette(qApp->style()->standardPalette()); } } - //do not override application style - if(m_prevStyleSheet == qApp->styleSheet()){ qApp->setStyleSheet(m_userStyleSheet); } - else{ qCDebug(llthemeengine) << "custom style sheet is disabled";} - m_prevStyleSheet = m_userStyleSheet; + //do not override application style if one is already set by the app itself + QString orig = qApp->styleSheet(); + if(orig.startsWith(m_oldStyleSheet)){ orig = orig.remove(m_oldStyleSheet); } + qApp->setStyleSheet(m_userStyleSheet+orig); //make sure the app style has higher priority than ours + m_oldStyleSheet = m_userStyleSheet; + } #endif QGuiApplication::setFont(m_generalFont); //apply font + bool ithemechange = m_iconTheme != QIcon::themeName(); QIcon::setThemeName(m_iconTheme); //apply icons + //See if we need to reload the application icon from the new theme + if(ithemechange){ + QString appIcon = qApp->windowIcon().name(); + if(!appIcon.isEmpty() && QIcon::hasThemeIcon(appIcon)){ qApp->setWindowIcon(QIcon::fromTheme(appIcon)); } + QWindowList wins = qApp->topLevelWindows(); + for(int i=0; i<wins.length(); i++){ + QString winIcon = wins[i]->icon().name(); + if(!winIcon.isEmpty() && QIcon::hasThemeIcon(winIcon)){ wins[i]->setIcon(QIcon::fromTheme(winIcon)); } + } + } + bool cthemechange = m_cursorTheme != QString(getenv("X_CURSOR_THEME")); + setenv("X_CURSOR_THEME", m_cursorTheme.toLocal8Bit().data(), 1); + //qDebug() << "Icon Theme Change:" << m_iconTheme << QIcon::themeSearchPaths(); if(m_customPalette && m_usePalette){ QGuiApplication::setPalette(*m_customPalette); } //apply palette #ifdef QT_WIDGETS_LIB if(hasWidgets()){ + QEvent et(QEvent::ThemeChange); + QEvent ec(QEvent::CursorChange); foreach (QWidget *w, qApp->allWidgets()){ - QEvent e(QEvent::ThemeChange); - QApplication::sendEvent(w, &e); + if(ithemechange){ QApplication::sendEvent(w, &et); } + if(cthemechange){ QApplication::sendEvent(w, &ec); } } } #endif @@ -156,13 +176,13 @@ void lthemeenginePlatformTheme::createFSWatcher(){ watcher->addPath(lthemeengine::configPath()); QTimer *timer = new QTimer(this); timer->setSingleShot(true); - timer->setInterval(3000); + timer->setInterval(500); connect(watcher, SIGNAL(directoryChanged(QString)), timer, SLOT(start())); connect(timer, SIGNAL(timeout()), SLOT(updateSettings())); } void lthemeenginePlatformTheme::updateSettings(){ - qCDebug(llthemeengine) << "updating settings.."; + //qCDebug(llthemeengine) << "updating settings.."; readSettings(); applySettings(); } @@ -180,6 +200,7 @@ void lthemeenginePlatformTheme::readSettings(){ QString schemePath = settings.value("color_scheme_path","airy").toString(); m_customPalette = new QPalette(loadColorScheme(schemePath)); } + m_cursorTheme = settings.value("cursor_theme","").toString(); m_iconTheme = settings.value("icon_theme", "material-design-light").toString(); settings.endGroup(); settings.beginGroup("Fonts"); @@ -211,7 +232,10 @@ void lthemeenginePlatformTheme::readSettings(){ } //load style sheets #ifdef QT_WIDGETS_LIB - QStringList qssPaths = settings.value("stylesheets").toStringList(); + QStringList qssPaths; + if(qApp->applicationFilePath().section("/",-1).startsWith("lumina-desktop") ){ qssPaths << settings.value("desktop_stylesheets").toStringList(); } + qssPaths << settings.value("stylesheets").toStringList(); + //qDebug() << "Loaded Stylesheets:" << qApp->applicationName() << qssPaths; m_userStyleSheet = loadStyleSheets(qssPaths); #endif settings.endGroup(); @@ -224,6 +248,7 @@ bool lthemeenginePlatformTheme::hasWidgets(){ #endif QString lthemeenginePlatformTheme::loadStyleSheets(const QStringList &paths){ + //qDebug() << "Loading Stylesheets:" << paths; QString content; foreach (QString path, paths){ if(!QFile::exists(path)){ continue; } diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/lthemeengineplatformtheme.h b/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/lthemeengineplatformtheme.h index 17323328..f521d457 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/lthemeengineplatformtheme.h +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/lthemeengineplatformtheme.h @@ -66,7 +66,7 @@ private: #endif QString loadStyleSheets(const QStringList &paths); QPalette loadColorScheme(QString filePath); - QString m_style, m_iconTheme, m_userStyleSheet, m_prevStyleSheet; + QString m_style, m_iconTheme, m_userStyleSheet, m_oldStyleSheet, m_cursorTheme; QPalette *m_customPalette = nullptr; QFont m_generalFont, m_fixedFont; int m_doubleClickInterval; diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/appearancepage.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/appearancepage.cpp index 04ca6a0b..88bde228 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/appearancepage.cpp +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/appearancepage.cpp @@ -6,6 +6,8 @@ #include <QMessageBox> #include <QMenu> #include <QIcon> +#include <QTimer> + #include "lthemeengine.h" #include "appearancepage.h" #include "paletteeditdialog.h" @@ -81,6 +83,8 @@ void AppearancePage::createColorScheme(){ QString schemePath = lthemeengine::userColorSchemePath() + "/" + name; createColorScheme(schemePath, palette()); m_ui->colorSchemeComboBox->addItem(name.section('.',0,0), schemePath); + m_ui->colorSchemeComboBox->setCurrentIndex( m_ui->colorSchemeComboBox->count()-1); + QTimer::singleShot(10, this, SLOT(changeColorScheme()) ); } void AppearancePage::changeColorScheme(){ @@ -125,6 +129,8 @@ void AppearancePage::copyColorScheme(){ QString newPath = lthemeengine::userColorSchemePath() + "/" + name; QFile::copy(m_ui->colorSchemeComboBox->currentData().toString(), newPath); m_ui->colorSchemeComboBox->addItem(name.section('.',0,0), newPath); + m_ui->colorSchemeComboBox->setCurrentIndex( m_ui->colorSchemeComboBox->count()-1); + QTimer::singleShot(10, this, SLOT(changeColorScheme()) ); } void AppearancePage::renameColorScheme(){ diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/appearancepage.ui b/src-qt5/core/lumina-theme-engine/src/lthemeengine/appearancepage.ui index cd442930..91b65245 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/appearancepage.ui +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/appearancepage.ui @@ -161,9 +161,15 @@ <property name="text"> <string>...</string> </property> + <property name="icon"> + <iconset theme="view-more-vertical"/> + </property> <property name="popupMode"> <enum>QToolButton::InstantPopup</enum> </property> + <property name="autoRaise"> + <bool>true</bool> + </property> <property name="arrowType"> <enum>Qt::NoArrow</enum> </property> diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/cursorthemepage.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/cursorthemepage.cpp new file mode 100644 index 00000000..1d84164f --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/cursorthemepage.cpp @@ -0,0 +1,139 @@ +#include <QSettings> +#include <QFileInfo> +#include <QFileInfoList> +#include <QDir> +#include <QTreeWidgetItem> +#include <QImageReader> +#include <QLocale> +#include "lthemeengine.h" +#include "cursorthemepage.h" +#include "ui_cursorthemepage.h" + +CursorThemePage::CursorThemePage(QWidget *parent) : TabPage(parent), m_ui(new Ui::CursorThemePage){ + m_ui->setupUi(this); + loadThemes(); + readSettings(); +} + +CursorThemePage::~CursorThemePage(){ + delete m_ui; +} + +void CursorThemePage::writeSettings(){ + QSettings settings(lthemeengine::configFile(), QSettings::IniFormat); + QTreeWidgetItem *item = m_ui->treeWidget->currentItem(); + if(item){ + settings.setValue("Appearance/cursor_theme", item->data(3, Qt::UserRole)); + lthemeengine::setCursorTheme(item->data(3, Qt::UserRole).toString() ); + } +} + +void CursorThemePage::readSettings(){ + QSettings settings(lthemeengine::configFile(), QSettings::IniFormat); + QString name = settings.value("Appearance/cursor_theme").toString(); + if(name.isEmpty()){ return; } + for(int i = 0; i < m_ui->treeWidget->topLevelItemCount(); ++i){ + QTreeWidgetItem *item = m_ui->treeWidget->topLevelItem(i); + if(item->data(3, Qt::UserRole).toString() == name){ + m_ui->treeWidget->setCurrentItem(item); + break; + } + } +} + +void CursorThemePage::loadThemes(){ + /*QFileInfoList themeFileList; + foreach(QString path, lthemeengine::iconPaths()){ + QDir dir(path); + dir.setFilter(QDir::Dirs | QDir::NoDotDot | QDir::NoDot); + foreach (QFileInfo info, dir.entryInfoList()){ + QDir themeDir(info.absoluteFilePath()); + themeDir.setFilter(QDir::Files); + themeFileList << themeDir.entryInfoList(QStringList() << "index.theme"); + } + }*/ + /*foreach(QFileInfo info, themeFileList){ + loadTheme(info.canonicalFilePath()); + }*/ + QStringList themes = lthemeengine::availableSystemCursors(); + for(int i=0; i<themes.length(); i++){ loadTheme(themes[i]); } +} + +void CursorThemePage::loadTheme(const QString &path){ + //QSettings config(path, QSettings::IniFormat); + //config.setIniCodec("UTF-8"); + //config.beginGroup("Icon Theme"); + //QStringList dirs = config.value("Directories").toStringList(); + //if(dirs.isEmpty() || config.value("Hidden", false).toBool()){ return; } + QString name, comment; + name = comment = path.section("/",-1); + /*QString lang = QLocale::system().name(); + name = config.value(QString("Name[%1]").arg(lang)).toString(); + comment = config.value(QString("Comment[%1]").arg(lang)).toString(); + if(lang.contains("_")){ lang = lang.split("_").first(); } + if(name.isEmpty()){ name = config.value(QString("Name[%1]").arg(lang)).toString(); } + if(comment.isEmpty()){ comment = config.value(QString("Comment[%1]").arg(lang)).toString(); } + if(name.isEmpty()){ name = config.value("Name").toString(); } + if(comment.isEmpty()){ comment = config.value("Comment").toString(); } + config.endGroup();*/ + QIcon icon1;// = findIcon(path, 24, "document-save"); + QIcon icon2;//= findIcon(path, 24, "document-print"); + QIcon icon3;// = findIcon(path, 24, "media-playback-stop"); + QTreeWidgetItem *item = new QTreeWidgetItem(); + item->setIcon(0, icon1); + item->setIcon(1, icon2); + item->setIcon(2, icon3); + item->setText(3, name); + item->setData(3, Qt::UserRole, path.section("/",-1)); + item->setToolTip(3, comment); + item->setSizeHint(0, QSize(24,24)); + m_ui->treeWidget->addTopLevelItem(item); + m_ui->treeWidget->resizeColumnToContents(0); + m_ui->treeWidget->resizeColumnToContents(1); + m_ui->treeWidget->resizeColumnToContents(2); + m_ui->treeWidget->resizeColumnToContents(3); +} + +QIcon CursorThemePage::findIcon(const QString &themePath, int size, const QString &name){ + QSettings config(themePath, QSettings::IniFormat); + config.beginGroup("Icon Theme"); + QStringList dirs = config.value("Directories").toStringList(); + QStringList parents = config.value("Inherits").toStringList(); + bool haveInherits = config.contains("Inherits"); + config.endGroup(); + foreach (QString dir, dirs){ + config.beginGroup(dir); + if(config.value("Size").toInt() == size){ + QDir iconDir = QFileInfo(themePath).path() + "/" + dir; + iconDir.setFilter(QDir::Files); + iconDir.setNameFilters(QStringList () << name + ".*"); + if(iconDir.entryInfoList().isEmpty()) + continue; + return QIcon(iconDir.entryInfoList().first().absoluteFilePath()); + } + config.endGroup(); + } + foreach (QString dir, dirs){ + config.beginGroup(dir); + if(abs(config.value("Size").toInt() - size) < 4){ + QDir iconDir = QFileInfo(themePath).path() + "/" + dir; + iconDir.setFilter(QDir::Files); + iconDir.setNameFilters(QStringList () << name + ".*"); + if(iconDir.entryInfoList().isEmpty()) + continue; + return QIcon(iconDir.entryInfoList().first().absoluteFilePath()); + } + config.endGroup(); + } + if (!haveInherits){ return QIcon(); } + parents.append("hicolor"); //add fallback themes + parents.append("gnome"); + parents.removeDuplicates(); + foreach (QString parent, parents){ + QString parentThemePath = QDir(QFileInfo(themePath).path() + "/../" + parent).canonicalPath() + "/index.theme"; + if(!QFile::exists(parentThemePath) || parentThemePath == themePath){ continue; } + QIcon icon = findIcon(parentThemePath, size, name); + if(!icon.isNull()){ return icon; } + } + return QIcon(); +} diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/cursorthemepage.h b/src-qt5/core/lumina-theme-engine/src/lthemeengine/cursorthemepage.h new file mode 100644 index 00000000..e221520b --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/cursorthemepage.h @@ -0,0 +1,29 @@ +#ifndef CURSORTHEMEPAGE_H +#define CURSORTHEMEPAGE_H + +#include <QIcon> +#include "tabpage.h" + +namespace Ui { +class CursorThemePage; +} + +class CursorThemePage : public TabPage +{ + Q_OBJECT + +public: + explicit CursorThemePage(QWidget *parent = 0); + ~CursorThemePage(); + + void writeSettings(); + +private: + void readSettings(); + void loadThemes(); + void loadTheme(const QString &path); + QIcon findIcon(const QString &themePath, int size, const QString &name); + Ui::CursorThemePage *m_ui; +}; + +#endif // ICONTHEMEPAGE_H diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/cursorthemepage.ui b/src-qt5/core/lumina-theme-engine/src/lthemeengine/cursorthemepage.ui new file mode 100644 index 00000000..3e0a5da1 --- /dev/null +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/cursorthemepage.ui @@ -0,0 +1,51 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>CursorThemePage</class> + <widget class="QWidget" name="CursorThemePage"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>400</width> + <height>300</height> + </rect> + </property> + <property name="windowTitle"> + <string notr="true">Form</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QTreeWidget" name="treeWidget"> + <property name="columnCount"> + <number>4</number> + </property> + <attribute name="headerVisible"> + <bool>false</bool> + </attribute> + <column> + <property name="text"> + <string notr="true">1</string> + </property> + </column> + <column> + <property name="text"> + <string notr="true">2</string> + </property> + </column> + <column> + <property name="text"> + <string notr="true">3</string> + </property> + </column> + <column> + <property name="text"> + <string notr="true">4</string> + </property> + </column> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections/> +</ui> diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/iconthemepage.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/iconthemepage.cpp index 1a09ac0d..7ed54f02 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/iconthemepage.cpp +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/iconthemepage.cpp @@ -72,7 +72,7 @@ void IconThemePage::loadTheme(const QString &path){ config.endGroup(); QIcon icon1 = findIcon(path, 24, "document-save"); QIcon icon2 = findIcon(path, 24, "document-print"); - QIcon icon3 = findIcon(path, 24, "media-playback-stop"); + QIcon icon3 = findIcon(path, 24, "document-edit"); QTreeWidgetItem *item = new QTreeWidgetItem(); item->setIcon(0, icon1); item->setIcon(1, icon2); @@ -97,7 +97,7 @@ QIcon IconThemePage::findIcon(const QString &themePath, int size, const QString config.endGroup(); foreach (QString dir, dirs){ config.beginGroup(dir); - if(config.value("Size").toInt() == size){ + if(config.value("Size").toInt() == size || config.value("Type").toString().toLower()=="scalable"){ QDir iconDir = QFileInfo(themePath).path() + "/" + dir; iconDir.setFilter(QDir::Files); iconDir.setNameFilters(QStringList () << name + ".*"); diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.cpp index fdeb8966..cb491aa6 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.cpp +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.cpp @@ -8,6 +8,19 @@ #include <QDebug> +QStringList lthemeengine::readFile(QString filepath){ + QStringList out; + QFile file(filepath); + if(file.open(QIODevice::Text | QIODevice::ReadOnly)){ + QTextStream in(&file); + while(!in.atEnd()){ + out << in.readLine(); + } + file.close(); + } + return out; +} + QString lthemeengine::configPath(){ return QDir::homePath() + "/.config/lthemeengine/"; } @@ -53,6 +66,20 @@ QStringList lthemeengine::sharedStyleSheetPath(){ return dirs; } +QString lthemeengine::userDesktopStyleSheetPath(){ + return configPath() + "desktop_qss/"; +} + +QStringList lthemeengine::sharedDesktopStyleSheetPath(){ + QStringList dirs; + dirs << QString(getenv("XDG_CONFIG_HOME")); + dirs << QString(getenv("XDG_CONFIG_DIRS")).split(":"); + dirs << QString(getenv("XDG_DATA_DIRS")).split(":"); + for(int i=0; i<dirs.length(); i++){ dirs[i].append("/lthemeengine/desktop_qss/"); } + if(dirs.isEmpty()){ dirs << LTHEMEENGINE_DATADIR"/lthemeengine/desktop_qss/"; } //no XDG settings - use the hardcoded path + return dirs; + } + QString lthemeengine::userColorSchemePath(){ return configPath() + "colors/"; } @@ -77,3 +104,96 @@ QString lthemeengine::systemLanguageID(){ #endif return QLocale::system().name(); } + +QStringList lthemeengine::availableSystemCursors(){ //returns: [name] for each item + //Find all the directories which could contain themes + QStringList paths; + paths << QDir::homePath()+"/.icons"; + QStringList xdd = QString(getenv("XDG_DATA_HOME")).split(":"); + xdd << QString(getenv("XDG_DATA_DIRS")).split(":"); + for(int i=0; i<xdd.length(); i++){ + if(QFile::exists(xdd[i]+"/icons")){ + paths << xdd[i]+"/icons"; + } + } + //Now get all the icon themes in these directories + QStringList themes, tmpthemes; + QDir dir; + for(int i=0; i<paths.length(); i++){ + if(dir.cd(paths[i])){ + tmpthemes = dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot, QDir::Name); + for(int j=0; j<tmpthemes.length(); j++){ + if(tmpthemes[j].startsWith("default")){ continue; } + if( QFile::exists(dir.absoluteFilePath(tmpthemes[j]+"/cursors")) ){ themes << tmpthemes[j]; } + } + } + } + //Clean up the list and return + themes.removeDuplicates(); + themes.sort(); + return themes; +} + +//Return the currently-selected Cursor theme +QString lthemeengine::currentCursor(){ + //qDebug() << "Reading Current Cursor Theme:"; + QStringList info = readFile(QDir::homePath()+"/.icons/default/index.theme"); + if(info.isEmpty()){ return ""; } + QString cursor; + bool insection = false; + for(int i=0; i<info.length(); i++){ + if(info[i]=="[Icon Theme]"){ insection = true; continue;} + else if(insection && info[i].startsWith("Inherits=")){ + cursor = info[i].section("=",1,1).simplified(); + break; + } + } + //qDebug() << " - found theme:" << cursor; + return cursor; +} + +//Change the current Cursor Theme +bool lthemeengine::setCursorTheme(QString cursorname){ +//qDebug() << "Set Cursor Theme:" << cursorname; + if(cursorname=="default"){ + //special case - this will cause a recursive inheritance loop - just remove the file instead + if(QFile::exists(QDir::homePath()+"/.icons/default/index.theme")){ + return QFile::remove(QDir::homePath()+"/.icons/default/index.theme"); + } + return true; //already does not exist + } + QStringList info = readFile(QDir::homePath()+"/.icons/default/index.theme"); + bool insection = false; + bool changed = false; + QString newval = "Inherits="+cursorname; + for(int i=0; i<info.length() && !changed; i++){ + if(info[i]=="[Icon Theme]"){ + insection = true; + }else if( info[i].startsWith("[") && insection){ + //Section does not have the setting - add it + info.insert(i, newval); + changed =true; + }else if( info[i].startsWith("[") ){ + insection = false; + }else if(insection && info[i].startsWith("Inherits=")){ + info[i] = newval; //replace the current setting + changed = true; + } + } //end loop over file contents + if(!changed){ //Could not change the file contents for some reason + if(insection){ info << newval; } //end of file while in the section + else{ info << "[Icon Theme]" << newval; } //entire section missing from file + } + //Now save the file + QFile file(QDir::homePath()+"/.icons/default/index.theme"); + bool ok = false; + if( file.open(QIODevice::WriteOnly | QIODevice::Truncate) ){ + QTextStream out(&file); + out << info.join("\n"); + if(!info.last().isEmpty()){ out << "\n"; } //always end with a new line + file.close(); + ok = true; + } + //qDebug() << "Done saving the cursor:" << info; + return ok; +} diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.desktop b/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.desktop index 7eb91bee..9d36fffa 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.desktop +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.desktop @@ -1,6 +1,6 @@ [Desktop Entry] X-Desktop-File-Install-Version=0.11 -Name=Lumine Theme Engine +Name=Lumina Theme Engine Comment=Lumina Theme Engine Exec=lthemeengine Icon=preferences-desktop-theme diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.h b/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.h index 8a466ed9..c1b6eac6 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.h +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.h @@ -16,14 +16,22 @@ class lthemeengine { public: + static QStringList readFile(QString path); static QString configPath(); static QString configFile(); static QStringList iconPaths(); static QString userStyleSheetPath(); static QStringList sharedStyleSheetPath(); + static QString userDesktopStyleSheetPath(); + static QStringList sharedDesktopStyleSheetPath(); static QString userColorSchemePath(); static QStringList sharedColorSchemePath(); static QString systemLanguageID(); + //Cursor Theme Management + static QStringList availableSystemCursors(); + static QString currentCursor(); + static bool setCursorTheme(QString); + private: lthemeengine() {} diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.pro b/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.pro index 721b8888..cc949ff9 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.pro +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.pro @@ -16,7 +16,8 @@ SOURCES += \ interfacepage.cpp \ fontconfigdialog.cpp \ qsspage.cpp \ - qsseditordialog.cpp + qsseditordialog.cpp \ + cursorthemepage.cpp FORMS += \ mainwindow.ui \ @@ -28,7 +29,8 @@ FORMS += \ fontconfigdialog.ui \ previewform.ui \ qsspage.ui \ - qsseditordialog.ui + qsseditordialog.ui \ + cursorthemepage.ui HEADERS += \ mainwindow.h \ @@ -41,7 +43,8 @@ HEADERS += \ interfacepage.h \ fontconfigdialog.h \ qsspage.h \ - qsseditordialog.h + qsseditordialog.h \ + cursorthemepage.h DEFINES += USE_WIDGETS diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/mainwindow.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/mainwindow.cpp index 719a0f49..d4544c7b 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/mainwindow.cpp +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/mainwindow.cpp @@ -1,23 +1,37 @@ #include <QApplication> #include <QSettings> +#include <QDebug> +#include <QTimer> + #include "lthemeengine.h" #include "mainwindow.h" #include "appearancepage.h" #include "fontspage.h" #include "iconthemepage.h" +#include "cursorthemepage.h" #include "interfacepage.h" #include "qsspage.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QWidget(parent), m_ui(new Ui::MainWindow){ m_ui->setupUi(this); - m_ui->tabWidget->addTab(new AppearancePage(this), tr("Appearance")); - m_ui->tabWidget->addTab(new FontsPage(this), tr("Fonts")); - m_ui->tabWidget->addTab(new IconThemePage(this), tr("Icon Theme")); - m_ui->tabWidget->addTab(new InterfacePage(this), tr("Interface")); -#ifdef USE_WIDGETS - m_ui->tabWidget->addTab(new QSSPage(this), tr("Style Sheets")); -#endif + bgroup = new QButtonGroup(this); + bgroup->setExclusive(true); + //Clear out any pages in the stacked widget + while(m_ui->stackedWidget->count()>0){ + m_ui->stackedWidget->removeWidget(m_ui->stackedWidget->widget(0)); + } + //Now add all the pages into the widget + bgroup->addButton(m_ui->tool_page_general, m_ui->stackedWidget->addWidget(new AppearancePage(this)) ); + bgroup->addButton(m_ui->tool_page_effects, m_ui->stackedWidget->addWidget(new InterfacePage(this))); + bgroup->addButton(m_ui->tool_page_fonts, m_ui->stackedWidget->addWidget(new FontsPage(this))); + bgroup->addButton(m_ui->tool_page_icons, m_ui->stackedWidget->addWidget(new IconThemePage(this))); + bgroup->addButton(m_ui->tool_page_styles, m_ui->stackedWidget->addWidget(new QSSPage(this, false))); + bgroup->addButton(m_ui->tool_page_deskstyles, m_ui->stackedWidget->addWidget(new QSSPage(this, true))); + bgroup->addButton(m_ui->tool_page_cursors, m_ui->stackedWidget->addWidget(new CursorThemePage(this)) ); + connect(bgroup, SIGNAL(buttonClicked(int)), m_ui->stackedWidget, SLOT(setCurrentIndex(int)) ); + + QTimer::singleShot(10, m_ui->tool_page_general, SLOT(toggle())); QSettings settings(lthemeengine::configFile(), QSettings::IniFormat); restoreGeometry(settings.value("SettingsWindow/geometry").toByteArray()); setWindowIcon(QIcon::fromTheme("preferences-desktop-theme")); @@ -36,8 +50,8 @@ void MainWindow::closeEvent(QCloseEvent *){ void MainWindow::on_buttonBox_clicked(QAbstractButton *button){ int id = m_ui->buttonBox->standardButton(button); if(id == QDialogButtonBox::Ok || id == QDialogButtonBox::Apply){ - for(int i = 0; i < m_ui->tabWidget->count(); ++i){ - TabPage *p = qobject_cast<TabPage*>(m_ui->tabWidget->widget(i)); + for(int i = 0; i < m_ui->stackedWidget->count(); ++i){ + TabPage *p = qobject_cast<TabPage*>(m_ui->stackedWidget->widget(i)); if(p) { p->writeSettings(); } } } diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/mainwindow.h b/src-qt5/core/lumina-theme-engine/src/lthemeengine/mainwindow.h index 749949a6..56ff1c98 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/mainwindow.h +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/mainwindow.h @@ -2,8 +2,9 @@ #define MAINWINDOW_H #include <QWidget> - -class QAbstractButton; +#include <QAbstractButton> +#include <QButtonGroup> +//class QAbstractButton; namespace Ui { class MainWindow; @@ -24,6 +25,7 @@ private: void closeEvent(QCloseEvent *); Ui::MainWindow *m_ui; + QButtonGroup *bgroup; }; #endif // MAINWINDOW_H diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/mainwindow.ui b/src-qt5/core/lumina-theme-engine/src/lthemeengine/mainwindow.ui index 5bdab6d7..dd676c37 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/mainwindow.ui +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/mainwindow.ui @@ -6,14 +6,14 @@ <rect> <x>0</x> <y>0</y> - <width>438</width> - <height>374</height> + <width>672</width> + <height>723</height> </rect> </property> <property name="windowTitle"> <string>Qt5 Configuration Tool</string> </property> - <layout class="QGridLayout" name="gridLayout"> + <layout class="QVBoxLayout" name="verticalLayout_2"> <property name="leftMargin"> <number>6</number> </property> @@ -23,22 +23,281 @@ <property name="bottomMargin"> <number>6</number> </property> - <item row="0" column="0" colspan="2"> - <widget class="QTabWidget" name="tabWidget"/> - </item> - <item row="1" column="0"> - <widget class="QLabel" name="versionLabel"> - <property name="text"> - <string notr="true">...</string> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_2"> + <property name="spacing"> + <number>4</number> </property> - </widget> + <item> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QToolButton" name="tool_page_general"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string>General</string> + </property> + <property name="icon"> + <iconset theme="preferences-desktop-theme"> + <normaloff>.</normaloff>.</iconset> + </property> + <property name="iconSize"> + <size> + <width>32</width> + <height>32</height> + </size> + </property> + <property name="checkable"> + <bool>true</bool> + </property> + <property name="toolButtonStyle"> + <enum>Qt::ToolButtonTextUnderIcon</enum> + </property> + <property name="autoRaise"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="tool_page_effects"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string>Effects</string> + </property> + <property name="icon"> + <iconset theme="preferences-desktop-display"> + <normaloff>.</normaloff>.</iconset> + </property> + <property name="iconSize"> + <size> + <width>32</width> + <height>32</height> + </size> + </property> + <property name="checkable"> + <bool>true</bool> + </property> + <property name="toolButtonStyle"> + <enum>Qt::ToolButtonTextUnderIcon</enum> + </property> + <property name="autoRaise"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="tool_page_fonts"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string>Fonts</string> + </property> + <property name="icon"> + <iconset theme="preferences-desktop-font"> + <normaloff>.</normaloff>.</iconset> + </property> + <property name="iconSize"> + <size> + <width>32</width> + <height>32</height> + </size> + </property> + <property name="checkable"> + <bool>true</bool> + </property> + <property name="toolButtonStyle"> + <enum>Qt::ToolButtonTextUnderIcon</enum> + </property> + <property name="autoRaise"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="tool_page_icons"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string>Icons</string> + </property> + <property name="icon"> + <iconset theme="preferences-desktop-icons"> + <normaloff>.</normaloff>.</iconset> + </property> + <property name="iconSize"> + <size> + <width>32</width> + <height>32</height> + </size> + </property> + <property name="checkable"> + <bool>true</bool> + </property> + <property name="toolButtonStyle"> + <enum>Qt::ToolButtonTextUnderIcon</enum> + </property> + <property name="autoRaise"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="tool_page_cursors"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string>Cursors</string> + </property> + <property name="icon"> + <iconset theme="preferences-desktop-mouse"> + <normaloff>.</normaloff>.</iconset> + </property> + <property name="iconSize"> + <size> + <width>32</width> + <height>32</height> + </size> + </property> + <property name="checkable"> + <bool>true</bool> + </property> + <property name="toolButtonStyle"> + <enum>Qt::ToolButtonTextUnderIcon</enum> + </property> + <property name="autoRaise"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="tool_page_styles"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string>General +Styles</string> + </property> + <property name="icon"> + <iconset theme="preferences-system-windows"> + <normaloff>.</normaloff>.</iconset> + </property> + <property name="iconSize"> + <size> + <width>32</width> + <height>32</height> + </size> + </property> + <property name="checkable"> + <bool>true</bool> + </property> + <property name="toolButtonStyle"> + <enum>Qt::ToolButtonTextUnderIcon</enum> + </property> + <property name="autoRaise"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="tool_page_deskstyles"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string>Desktop +Styles</string> + </property> + <property name="icon"> + <iconset theme="preferences-desktop"> + <normaloff>.</normaloff>.</iconset> + </property> + <property name="iconSize"> + <size> + <width>32</width> + <height>32</height> + </size> + </property> + <property name="checkable"> + <bool>true</bool> + </property> + <property name="toolButtonStyle"> + <enum>Qt::ToolButtonTextUnderIcon</enum> + </property> + <property name="autoRaise"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item> + <widget class="QStackedWidget" name="stackedWidget"> + <property name="frameShape"> + <enum>QFrame::Box</enum> + </property> + <widget class="QWidget" name="page"/> + </widget> + </item> + </layout> </item> - <item row="1" column="1"> - <widget class="QDialogButtonBox" name="buttonBox"> - <property name="standardButtons"> - <set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> - </property> - </widget> + <item> + <layout class="QHBoxLayout" name="horizontalLayout"> + <item> + <widget class="QLabel" name="versionLabel"> + <property name="text"> + <string notr="true">...</string> + </property> + </widget> + </item> + <item> + <widget class="QDialogButtonBox" name="buttonBox"> + <property name="standardButtons"> + <set>QDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + </layout> </item> </layout> </widget> diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsspage.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsspage.cpp index 2cf0f221..cd88fb56 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsspage.cpp +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsspage.cpp @@ -4,6 +4,9 @@ #include <QMessageBox> #include <QFile> #include <QMenu> +#include <QDebug> +#include <QTimer> + #include "lthemeengine.h" #include "qsseditordialog.h" #include "qsspage.h" @@ -12,8 +15,9 @@ #define QSS_FULL_PATH_ROLE (Qt::ItemDataRole(Qt::UserRole)) #define QSS_WRITABLE_ROLE (Qt::ItemDataRole(Qt::UserRole + 1)) -QSSPage::QSSPage(QWidget *parent) : TabPage(parent), m_ui(new Ui::QSSPage){ +QSSPage::QSSPage(QWidget *parent, bool desktop) : TabPage(parent), m_ui(new Ui::QSSPage){ m_ui->setupUi(this); + desktop_qss = desktop; QDir("/").mkpath(lthemeengine::userStyleSheetPath()); m_menu = new QMenu(this); m_menu->addAction(QIcon::fromTheme("accessories-text-editor"), tr("Edit"), this, SLOT(on_editButton_clicked())); @@ -25,6 +29,8 @@ QSSPage::QSSPage(QWidget *parent) : TabPage(parent), m_ui(new Ui::QSSPage){ m_ui->createButton->setIcon(QIcon::fromTheme("document-new")); m_ui->editButton->setIcon(QIcon::fromTheme("accessories-text-editor")); m_ui->removeButton->setIcon(QIcon::fromTheme("edit-delete")); + m_ui->tool_enable->setEnabled(false); + m_ui->tool_disable->setEnabled(false); } QSSPage::~QSSPage(){ @@ -34,14 +40,42 @@ QSSPage::~QSSPage(){ void QSSPage::writeSettings(){ QStringList styleSheets; QSettings settings(lthemeengine::configFile(), QSettings::IniFormat); - for(int i = 0; i < m_ui->qssListWidget->count(); ++i){ + for(int i = m_ui->qssListWidget->count()-1; i>=0; i--){ QListWidgetItem *item = m_ui->qssListWidget->item(i); - if(item->checkState() == Qt::Checked){ styleSheets << item->data(QSS_FULL_PATH_ROLE).toString(); } - settings.setValue("Interface/stylesheets", styleSheets); + styleSheets << item->data(QSS_FULL_PATH_ROLE).toString(); } + if(desktop_qss){ settings.setValue("Interface/desktop_stylesheets", styleSheets); } + else{ settings.setValue("Interface/stylesheets", styleSheets); } } void QSSPage::on_qssListWidget_currentItemChanged(QListWidgetItem *current, QListWidgetItem *){ + if(current!=0){ + m_ui->list_disabled->clearSelection(); //clear any current selection on the other widget + m_ui->list_disabled->setCurrentRow(-1); + m_ui->tool_enable->setEnabled(false); + } + //qDebug() << "Got Current Item Changed"; + m_ui->tool_disable->setEnabled(current!=0); + if(current){ + m_ui->editButton->setEnabled(current->data(QSS_WRITABLE_ROLE).toBool()); + m_ui->removeButton->setEnabled(current->data(QSS_WRITABLE_ROLE).toBool()); + m_ui->renameButton->setEnabled(current->data(QSS_WRITABLE_ROLE).toBool()); + } + else{ + m_ui->editButton->setEnabled(false); + m_ui->removeButton->setEnabled(false); + m_ui->renameButton->setEnabled(false); + } +} + +void QSSPage::on_list_disabled_currentItemChanged(QListWidgetItem *current, QListWidgetItem *){ + if(current!=0){ + m_ui->qssListWidget->clearSelection(); //clear any current selection on the other widget + m_ui->qssListWidget->setCurrentRow(-1); + m_ui->tool_disable->setEnabled(false); + } + //qDebug() << "Got Current Item Changed"; + m_ui->tool_enable->setEnabled(current!=0); if(current){ m_ui->editButton->setEnabled(current->data(QSS_WRITABLE_ROLE).toBool()); m_ui->removeButton->setEnabled(current->data(QSS_WRITABLE_ROLE).toBool()); @@ -58,26 +92,35 @@ void QSSPage::on_createButton_clicked(){ QString name = QInputDialog::getText(this, tr("Enter Style Sheet Name"), tr("File name:")); if(name.isEmpty()){ return; } if(!name.endsWith(".qss", Qt::CaseInsensitive)){ name.append(".qss"); } - QString filePath = lthemeengine::userStyleSheetPath() + name; + QString filePath; + if(desktop_qss){ filePath = lthemeengine::userDesktopStyleSheetPath() + name; } + else{ filePath = lthemeengine::userStyleSheetPath() + name; } if(QFile::exists(filePath)){ QMessageBox::warning(this, tr("Error"), tr("The file \"%1\" already exists").arg(filePath)); return; } + // Make sure the directory exists + QString dir = filePath.section("/",0,-2); + if(!QFile::exists(dir)){ + QDir D(dir); + D.mkpath(dir); + } //creating empty file QFile file(filePath); file.open(QIODevice::WriteOnly); file.close(); //creating item QFileInfo info(filePath); - QListWidgetItem *item = new QListWidgetItem(info.fileName(), m_ui->qssListWidget); + QListWidgetItem *item = new QListWidgetItem(info.fileName(), m_ui->list_disabled); item->setToolTip(info.filePath()); item->setData(QSS_FULL_PATH_ROLE, info.filePath()); item->setData(QSS_WRITABLE_ROLE, info.isWritable()); - item->setCheckState(Qt::Unchecked); + m_ui->list_disabled->setCurrentRow(m_ui->list_disabled->count()-1); + QTimer::singleShot(10, this, SLOT(on_editButton_clicked()) ); } void QSSPage::on_editButton_clicked(){ - QListWidgetItem *item = m_ui->qssListWidget->currentItem(); + QListWidgetItem *item = currentSelection(); if(item){ QSSEditorDialog dialog(item->data(QSS_FULL_PATH_ROLE).toString(), this); dialog.exec(); @@ -85,27 +128,76 @@ void QSSPage::on_editButton_clicked(){ } void QSSPage::on_removeButton_clicked(){ - QListWidgetItem *item = m_ui->qssListWidget->currentItem(); + QListWidgetItem *item = currentSelection(); if(!item){ return; } int button = QMessageBox::question(this, tr("Confirm Remove"),tr("Are you sure you want to remove style sheet \"%1\"?").arg(item->text()), QMessageBox::Yes | QMessageBox::No); if(button == QMessageBox::Yes){ QFile::remove(item->data(QSS_FULL_PATH_ROLE).toString()); } delete item; } +void QSSPage::on_tool_enable_clicked(){ + QList<QListWidgetItem*> sel = m_ui->list_disabled->selectedItems(); + //qDebug() << "Got Selection:" << sel.count(); + for(int i=0; i<sel.length(); i++){ + m_ui->qssListWidget->addItem(sel[i]->clone()); + delete sel[i]; + //QCoreApplication::processEvents(); + m_ui->qssListWidget->setCurrentRow(m_ui->qssListWidget->count()-1); + } + +} + +void QSSPage::on_tool_disable_clicked(){ + QList<QListWidgetItem*> sel = m_ui->qssListWidget->selectedItems(); + //qDebug() << "Got Selection:" << sel.count(); + for(int i=0; i<sel.length(); i++){ + m_ui->list_disabled->addItem(sel[i]->clone()); + delete sel[i]; + //QCoreApplication::processEvents(); + m_ui->list_disabled->setCurrentRow(m_ui->list_disabled->count()-1); + } +} + +void QSSPage::on_tool_priority_up_clicked(){ + QList<QListWidgetItem*> sel = m_ui->qssListWidget->selectedItems(); + for(int i=0; i<sel.length(); i++){ + int index = m_ui->qssListWidget->row(sel[i]); + //qDebug() << "Move Item Up:" << index; + if(index>0){ + m_ui->qssListWidget->insertItem(index-1, m_ui->qssListWidget->takeItem(index)); + m_ui->qssListWidget->setCurrentRow(index-1); + } + } +} + +void QSSPage::on_tool_priority_down_clicked(){ + QList<QListWidgetItem*> sel = m_ui->qssListWidget->selectedItems(); + for(int i=0; i<sel.length(); i++){ + int index = m_ui->qssListWidget->row(sel[i]); + //qDebug() << "Move Item Down:" << index; + if(index<(m_ui->qssListWidget->count()-1) ){ + m_ui->qssListWidget->insertItem(index+1, m_ui->qssListWidget->takeItem(index)); + m_ui->qssListWidget->setCurrentRow(index+1); + } + } +} + void QSSPage::readSettings(){ //load stylesheets m_ui->qssListWidget->clear(); - findStyleSheets(QStringList() << lthemeengine::userStyleSheetPath() << lthemeengine::sharedStyleSheetPath()); + m_ui->list_disabled->clear(); + //Read the currently-enabled settings QSettings settings(lthemeengine::configFile(), QSettings::IniFormat); - QStringList styleSheets = settings.value("Interface/stylesheets").toStringList(); - for(int i = 0; i < m_ui->qssListWidget->count(); ++i){ - QListWidgetItem *item = m_ui->qssListWidget->item(i); - if(styleSheets.contains(item->data(QSS_FULL_PATH_ROLE).toString())){ item->setCheckState(Qt::Checked); } - else { item->setCheckState(Qt::Unchecked); } - } + QStringList styleSheets; + if(desktop_qss){ styleSheets = settings.value("Interface/desktop_stylesheets").toStringList(); } + else{ styleSheets = settings.value("Interface/stylesheets").toStringList(); } + //Now load the items into list widgets + if(desktop_qss){ findStyleSheets(QStringList() << lthemeengine::userDesktopStyleSheetPath() << lthemeengine::sharedDesktopStyleSheetPath(), styleSheets); } + else{findStyleSheets(QStringList() << lthemeengine::userStyleSheetPath() << lthemeengine::sharedStyleSheetPath(), styleSheets); } + } -void QSSPage::findStyleSheets(QStringList paths){ +void QSSPage::findStyleSheets(QStringList paths, QStringList enabled){ paths.removeDuplicates(); for(int i=0; i<paths.length(); i++){ if(!QFile::exists(paths[i])){ continue; } @@ -113,20 +205,30 @@ void QSSPage::findStyleSheets(QStringList paths){ dir.setFilter(QDir::Files); dir.setNameFilters(QStringList() << "*.qss"); foreach (QFileInfo info, dir.entryInfoList()){ - QListWidgetItem *item = new QListWidgetItem(info.fileName(), m_ui->qssListWidget); + QListWidgetItem *item = new QListWidgetItem(info.fileName()); item->setToolTip(info.filePath()); item->setData(QSS_FULL_PATH_ROLE, info.filePath()); item->setData(QSS_WRITABLE_ROLE, info.isWritable()); + if( enabled.contains(info.filePath()) ){ m_ui->qssListWidget->addItem(item); } + else{ m_ui->list_disabled->addItem(item); } } } + //Now ensure the priority of the items in the active list is correct + for(int i = 0; i < m_ui->qssListWidget->count(); ++i){ + QListWidgetItem *item = m_ui->qssListWidget->item(i); + int index = enabled.indexOf( item->data(QSS_FULL_PATH_ROLE).toString() ); + if(index>=0){ m_ui->qssListWidget->insertItem(index, item); }// item->move(m_ui->qssListWidget->count() - 1 - index); } + } + m_ui->list_disabled->sortItems(Qt::AscendingOrder); + } void QSSPage::on_renameButton_clicked(){ - QListWidgetItem *item = m_ui->qssListWidget->currentItem(); + QListWidgetItem *item = currentSelection(); if(!item){ return; } QString name = QInputDialog::getText(this, tr("Rename Style Sheet"), tr("Style sheet name:"), QLineEdit::Normal, item->text(), 0); if(name.isEmpty()){ return; } - if(!m_ui->qssListWidget->findItems(name, Qt::MatchExactly).isEmpty()){ + if(!m_ui->qssListWidget->findItems(name, Qt::MatchExactly).isEmpty() || !m_ui->list_disabled->findItems(name, Qt::MatchExactly).isEmpty()){ QMessageBox::warning(this, tr("Error"), tr("The style sheet \"%1\" already exists").arg(name)); return; } @@ -145,3 +247,9 @@ void QSSPage::on_qssListWidget_customContextMenuRequested(const QPoint &pos){ QListWidgetItem *item = m_ui->qssListWidget->currentItem(); if(item && item->data(QSS_WRITABLE_ROLE).toBool()){ m_menu->exec(m_ui->qssListWidget->viewport()->mapToGlobal(pos)); } } + +QListWidgetItem* QSSPage::currentSelection(){ + QListWidgetItem *item = m_ui->qssListWidget->currentItem(); + if(item==0){ item = m_ui->list_disabled->currentItem(); } + return item; +} diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsspage.h b/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsspage.h index 5e924ad9..5b0025c5 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsspage.h +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsspage.h @@ -15,24 +15,33 @@ class QSSPage : public TabPage Q_OBJECT public: - explicit QSSPage(QWidget *parent = 0); + explicit QSSPage(QWidget *parent = 0, bool desktop = false); ~QSSPage(); void writeSettings(); private slots: void on_qssListWidget_currentItemChanged(QListWidgetItem *current, QListWidgetItem *); + void on_list_disabled_currentItemChanged(QListWidgetItem *current, QListWidgetItem *); void on_createButton_clicked(); void on_editButton_clicked(); void on_removeButton_clicked(); void on_renameButton_clicked(); void on_qssListWidget_customContextMenuRequested(const QPoint &pos); + void on_tool_enable_clicked(); + void on_tool_disable_clicked(); + void on_tool_priority_up_clicked(); + void on_tool_priority_down_clicked(); + private: void readSettings(); - void findStyleSheets(QStringList paths); + void findStyleSheets(QStringList paths, QStringList enabled); Ui::QSSPage *m_ui; QMenu *m_menu; + bool desktop_qss; + + QListWidgetItem* currentSelection(); }; #endif // QSSPAGE_H diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsspage.ui b/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsspage.ui index 124b4dc6..f9a980f3 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsspage.ui +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsspage.ui @@ -13,69 +13,264 @@ <property name="windowTitle"> <string notr="true">Style Sheet Editor</string> </property> - <layout class="QGridLayout" name="gridLayout"> - <item row="1" column="0"> - <widget class="QPushButton" name="createButton"> - <property name="enabled"> - <bool>true</bool> - </property> - <property name="text"> - <string>Create</string> - </property> - </widget> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_2"> + <item> + <layout class="QVBoxLayout" name="verticalLayout_2"> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_4"> + <item> + <widget class="QToolButton" name="tool_priority_up"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="toolTip"> + <string>Increase Priority</string> + </property> + <property name="text"> + <string notr="true"/> + </property> + <property name="icon"> + <iconset theme="arrow-up"> + <normaloff>.</normaloff>.</iconset> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="tool_priority_down"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="toolTip"> + <string>Decrease priority of style</string> + </property> + <property name="text"> + <string notr="true"/> + </property> + <property name="icon"> + <iconset theme="arrow-down"> + <normaloff>.</normaloff>.</iconset> + </property> + </widget> + </item> + <item> + <spacer name="horizontalSpacer_2"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <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_disable"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="toolTip"> + <string>Disable Style</string> + </property> + <property name="text"> + <string>Disable</string> + </property> + <property name="icon"> + <iconset theme="arrow-right"> + <normaloff>.</normaloff>.</iconset> + </property> + <property name="toolButtonStyle"> + <enum>Qt::ToolButtonTextBesideIcon</enum> + </property> + </widget> + </item> + </layout> + </item> + <item> + <widget class="QLabel" name="label"> + <property name="font"> + <font> + <italic>true</italic> + </font> + </property> + <property name="text"> + <string>Enabled</string> + </property> + <property name="alignment"> + <set>Qt::AlignCenter</set> + </property> + </widget> + </item> + <item> + <widget class="QListWidget" name="qssListWidget"> + <property name="contextMenuPolicy"> + <enum>Qt::CustomContextMenu</enum> + </property> + <property name="alternatingRowColors"> + <bool>false</bool> + </property> + <property name="resizeMode"> + <enum>QListView::Fixed</enum> + </property> + </widget> + </item> + </layout> + </item> + <item> + <widget class="Line" name="line"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + </widget> + </item> + <item> + <layout class="QVBoxLayout" name="verticalLayout_3"> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_3"> + <item> + <widget class="QToolButton" name="tool_enable"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Fixed" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string>Enable</string> + </property> + <property name="icon"> + <iconset theme="arrow-left"> + <normaloff>.</normaloff>.</iconset> + </property> + <property name="toolButtonStyle"> + <enum>Qt::ToolButtonTextBesideIcon</enum> + </property> + </widget> + </item> + <item> + <spacer name="horizontalSpacer_3"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>40</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item> + <widget class="QLabel" name="label_2"> + <property name="font"> + <font> + <italic>true</italic> + </font> + </property> + <property name="text"> + <string>Available</string> + </property> + <property name="alignment"> + <set>Qt::AlignCenter</set> + </property> + </widget> + </item> + <item> + <widget class="QListWidget" name="list_disabled"/> + </item> + </layout> + </item> + </layout> </item> - <item row="1" column="3"> - <widget class="QPushButton" name="removeButton"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="text"> - <string>Remove</string> - </property> - </widget> - </item> - <item row="1" column="5"> - <spacer name="horizontalSpacer"> + <item> + <widget class="Line" name="line_2"> <property name="orientation"> <enum>Qt::Horizontal</enum> </property> - <property name="sizeHint" stdset="0"> - <size> - <width>189</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item row="0" column="0" colspan="6"> - <widget class="QListWidget" name="qssListWidget"> - <property name="contextMenuPolicy"> - <enum>Qt::CustomContextMenu</enum> - </property> - <property name="alternatingRowColors"> - <bool>true</bool> - </property> </widget> </item> - <item row="1" column="1"> - <widget class="QPushButton" name="editButton"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="text"> - <string>Edit</string> - </property> - </widget> - </item> - <item row="1" column="2"> - <widget class="QPushButton" name="renameButton"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="text"> - <string>Rename</string> - </property> - </widget> + <item> + <layout class="QHBoxLayout" name="horizontalLayout"> + <item> + <widget class="QPushButton" name="createButton"> + <property name="enabled"> + <bool>true</bool> + </property> + <property name="text"> + <string>Create</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="editButton"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="text"> + <string>Edit</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="renameButton"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="text"> + <string>Rename</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="removeButton"> + <property name="enabled"> + <bool>false</bool> + </property> + <property name="text"> + <string>Remove</string> + </property> + </widget> + </item> + <item> + <spacer name="horizontalSpacer"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>189</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> </item> </layout> </widget> |