diff options
author | Weblate <noreply@weblate.org> | 2018-03-10 15:09:31 +0000 |
---|---|---|
committer | Weblate <noreply@weblate.org> | 2018-03-10 15:09:31 +0000 |
commit | e823783499a7b2f8c3cbfb24ae428b39311bee5e (patch) | |
tree | 74138f1e34b8f090f62bd5412f38b8e185209302 /src-qt5/core | |
parent | Translated using Weblate (Italian) (diff) | |
parent | Add the beginnings of the new window frame (widgets-based) (diff) | |
download | lumina-e823783499a7b2f8c3cbfb24ae428b39311bee5e.tar.gz lumina-e823783499a7b2f8c3cbfb24ae428b39311bee5e.tar.bz2 lumina-e823783499a7b2f8c3cbfb24ae428b39311bee5e.zip |
Merge remote-tracking branch 'origin/master'
Diffstat (limited to 'src-qt5/core')
201 files changed, 6774 insertions, 2211 deletions
diff --git a/src-qt5/core/libLumina/DesktopSettings.cpp b/src-qt5/core/libLumina/DesktopSettings.cpp index f1c74bc5..509afa83 100644 --- a/src-qt5/core/libLumina/DesktopSettings.cpp +++ b/src-qt5/core/libLumina/DesktopSettings.cpp @@ -17,6 +17,7 @@ // === PUBLIC === DesktopSettings::DesktopSettings(QObject *parent) : QObject(parent){ + qRegisterMetaType< DesktopSettings::File >("DesktopSettings::File"); watcher = 0; runmode = DesktopSettings::UserFull; } @@ -275,6 +276,7 @@ QString DesktopSettings::rel_path(DesktopSettings::File file){ //=== PRIVATE SLOTS === void DesktopSettings::fileChanged(QString file){ + //qDebug() << "Got File Changed:" << file; //QFileSystemWatcher change detected if(!watcher->files().contains(file)){ //Make sure this file stays watched for changes @@ -287,6 +289,7 @@ void DesktopSettings::fileChanged(QString file){ QList< DesktopSettings::File > types = files.keys(); for(int i=0; i<types.length(); i++){ if(files[types[i]].contains(file)){ + //qDebug() << "Emit File Type Changed:" << types[i]; emit FileModified(types[i]); break; } diff --git a/src-qt5/core/libLumina/LDesktopUtils.cpp b/src-qt5/core/libLumina/LDesktopUtils.cpp index 5595532a..fb44531a 100644 --- a/src-qt5/core/libLumina/LDesktopUtils.cpp +++ b/src-qt5/core/libLumina/LDesktopUtils.cpp @@ -14,7 +14,7 @@ #include "LuminaThemes.h" QString LDesktopUtils::LuminaDesktopVersion(){ - QString ver = "1.4.1"; + QString ver = "1.4.2"; #ifdef GIT_VERSION ver.append( QString(" (Git Revision: %1)").arg(GIT_VERSION) ); #endif diff --git a/src-qt5/core/libLumina/LIconCache.h b/src-qt5/core/libLumina/LIconCache.h index 691d328c..6fc693d6 100644 --- a/src-qt5/core/libLumina/LIconCache.h +++ b/src-qt5/core/libLumina/LIconCache.h @@ -7,6 +7,9 @@ // This is a simple class for loading/serving icon files // from the icon theme or local filesystem //=========================================== +#ifndef _LUMINA_LIBRARY_ICON_CACHE_H +#define _LUMINA_LIBRARY_ICON_CACHE_H + #include <QHash> #include <QIcon> #include <QPixmap> @@ -79,3 +82,5 @@ signals: void InternalIconLoaded(QString, QDateTime, QByteArray*); //INTERNAL SIGNAL - DO NOT USE in other classes/objects void IconAvailable(QString); //way for classes to listen/reload icons as they change }; + +#endif diff --git a/src-qt5/core/libLumina/LUtils.cpp b/src-qt5/core/libLumina/LUtils.cpp index 3d3c878a..6ca8b679 100644 --- a/src-qt5/core/libLumina/LUtils.cpp +++ b/src-qt5/core/libLumina/LUtils.cpp @@ -273,13 +273,15 @@ QStringList LUtils::videoExtensions() { QStringList LUtils::imageExtensions(bool wildcards){ //Note that all the image extensions are lowercase!! static QStringList imgExtensions; + static QStringList imgExtensionsWC; if(imgExtensions.isEmpty()){ QList<QByteArray> fmt = QImageReader::supportedImageFormats(); for(int i=0; i<fmt.length(); i++){ - if(wildcards){ imgExtensions << "*."+QString::fromLocal8Bit(fmt[i]); } - else{ imgExtensions << QString::fromLocal8Bit(fmt[i]); } + imgExtensionsWC << "*."+QString::fromLocal8Bit(fmt[i]); + imgExtensions << QString::fromLocal8Bit(fmt[i]); } } + if(wildcards){ return imgExtensionsWC; } return imgExtensions; } diff --git a/src-qt5/core/libLumina/LuminaSingleApplication.cpp b/src-qt5/core/libLumina/LuminaSingleApplication.cpp index 6107aff8..379ac02d 100644 --- a/src-qt5/core/libLumina/LuminaSingleApplication.cpp +++ b/src-qt5/core/libLumina/LuminaSingleApplication.cpp @@ -22,7 +22,10 @@ LSingleApplication::LSingleApplication(int &argc, char **argv, QString appname) QString username = QString::number(getuid()); //For locking the process use the official process name - not the user input (no masking) appname = this->applicationName(); - cfile = cfile.arg( username, appname, QString::number(QX11Info::appScreen()) ); + QString display = QString(getenv("DISPLAY")); + if(display.startsWith(":")){ display.remove(0,1); } + display = display.section(".",0,0); + cfile = cfile.arg( username, appname, display ); lockfile = new QLockFile(cfile+"-lock"); lockfile->setStaleLockTime(0); //long-lived processes for(int i=1; i<argc; i++){ diff --git a/src-qt5/core/libLumina/LuminaXDG.cpp b/src-qt5/core/libLumina/LuminaXDG.cpp index e1c582d9..95585f1e 100644 --- a/src-qt5/core/libLumina/LuminaXDG.cpp +++ b/src-qt5/core/libLumina/LuminaXDG.cpp @@ -853,9 +853,12 @@ QIcon LXDG::findIcon(QString iconName, QString fallback){ QIcon tmp; if(!iconName.contains("libreoffice")){ //libreoffice is stupid - their svg icons are un-renderable with Qt tmp = QIcon::fromTheme(iconName); + /*if(iconName.contains("start-here")){ + qDebug() << "[ICON]" << iconName << "found:" << !tmp.isNull() << tmp.name(); + }*/ //if(tmp.isNull()){ tmp = QIcon::fromTheme(fallback); } } - if(!tmp.isNull()){ return tmp; } //found one in the theme + if(!tmp.isNull() && tmp.name()==iconName){ return tmp; } //found this in the theme //NOTE: This was re-written on 11/10/15 to avoid using the QIcon::fromTheme() framework @@ -964,6 +967,8 @@ QIcon LXDG::findIcon(QString iconName, QString fallback){ else if(iconName.contains("-x-") && !iconName.endsWith("-x-generic")){ //mimetype - try to use the generic type icon ico = LXDG::findIcon(iconName.section("-x-",0,0)+"-x-generic", ""); + }else if(iconName.contains("-")){ + ico = LXDG::findIcon(iconName.section("-",0,-2), ""); //chop the last modifier off the end and try again } } if(ico.isNull()){ diff --git a/src-qt5/core/lumina-desktop-unified/LSession.cpp b/src-qt5/core/lumina-desktop-unified/LSession.cpp index e1251c01..1c103fab 100644 --- a/src-qt5/core/lumina-desktop-unified/LSession.cpp +++ b/src-qt5/core/lumina-desktop-unified/LSession.cpp @@ -7,9 +7,8 @@ #include "LSession.h" #include "global-objects.h" -#include "src-desktop/ContextMenu.h" - #include "BootSplash.h" + #ifndef DEBUG #define DEBUG 1 #endif @@ -22,12 +21,13 @@ QThread* Lumina::EVThread = 0; RootWindow* Lumina::ROOTWIN = 0; XDGDesktopList* Lumina::APPLIST = 0; LShortcutEvents* Lumina::SHORTCUTS = 0; +DesktopManager* Lumina::DESKMAN = 0; LSession::LSession(int &argc, char ** argv) : LSingleApplication(argc, argv, "lumina-desktop-unified"){ //Initialize the global objects to null pointers qRegisterMetaType< Qt::Key >("Qt::Key"); - qRegisterMetaType< NativeWindow::Property >("NativeWindow::Property"); - qRegisterMetaType< QList< NativeWindow::Property > >("QList<NativeWindow::Property>"); + qRegisterMetaType< NativeWindowObject::Property >("NativeWindowObject::Property"); + qRegisterMetaType< QList< NativeWindowObject::Property > >("QList<NativeWindowObject::Property>"); qRegisterMetaType< NativeWindowSystem::MouseButton >("NativeWindowSystem::MouseButton"); mediaObj = 0; //private object used for playing login/logout chimes @@ -49,14 +49,14 @@ LSession::LSession(int &argc, char ** argv) : LSingleApplication(argc, argv, "lu Lumina::NEF = new NativeEventFilter(); Lumina::NWS = new NativeWindowSystem(); Lumina::SS = new LScreenSaver(); + Lumina::DESKMAN = new DesktopManager(); //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::DESKMAN->moveToThread(Lumina::EVThread); + Lumina::EVThread->start(); Lumina::APPLIST = XDGDesktopList::instance(); Lumina::ROOTWIN = new RootWindow(); Lumina::SHORTCUTS = new LShortcutEvents(); //this can be moved to it's own thread eventually as well - setupGlobalConnections(); } //end check for primary process } @@ -73,6 +73,9 @@ LSession::~LSession(){ if(DesktopSettings::instance()!=0){ DesktopSettings::instance()->deleteLater(); } if(Lumina::ROOTWIN!=0){ Lumina::ROOTWIN->deleteLater(); } if(Lumina::APPLIST!=0){ Lumina::APPLIST->deleteLater(); } + if(Lumina::DESKMAN!=0){ Lumina::DESKMAN->deleteLater(); } + if(OSInterface::instance()->isRunning()){ OSInterface::instance()->stop(); } + OSInterface::instance()->deleteLater(); } void LSession::setupSession(){ @@ -104,9 +107,14 @@ void LSession::setupSession(){ splash.showScreen("user"); if(DEBUG){ qDebug() << " - Init User Files:" << timer->elapsed();} //checkUserFiles(); //adds these files to the watcher as well + Lumina::NWS->setRoot_numberOfWorkspaces(QStringList() << "one" << "two"); + Lumina::NWS->setRoot_currentWorkspace(0); + OSInterface::instance()->start(); + + Lumina::DESKMAN->start(); Lumina::ROOTWIN->start(); //Initialize the internal variables - //DESKTOPS.clear(); + //Start the background system tray splash.showScreen("systray"); @@ -115,52 +123,18 @@ void LSession::setupSession(){ splash.showScreen("apps"); if(DEBUG){ qDebug() << " - Populate App List:" << timer->elapsed();} Lumina::APPLIST->updateList(); - //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(); } - QList<QScreen*> scrns= QApplication::screens(); - for(int i=0; i<scrns.length(); i++){ - qDebug() << " --- Load Wallpaper for Screen:" << scrns[i]->name(); - RootDesktopObject::instance()->ChangeWallpaper(scrns[i]->name(),QUrl::fromLocalFile(LOS::LuminaShare()+"desktop-background.jpg").toString() ); - } - 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();*/ - - //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"); - //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() << " - Start Screen Saver:" << timer->elapsed();} Lumina::SS->start(); @@ -231,16 +205,17 @@ void LSession::setupGlobalConnections(){ connect(RootDesktopObject::instance(), SIGNAL(mouseMoved()), Lumina::SS, SLOT(newInputEvent()) ); connect(RootDesktopObject::instance(), SIGNAL(startLogout()), this, SLOT(StartLogout()) ); connect(RootDesktopObject::instance(), SIGNAL(lockScreen()), Lumina::SS, SLOT(LockScreenNow()) ); + connect(RootDesktopObject::instance(), SIGNAL(launchApplication(QString)), this, SLOT(LaunchStandardApplication(QString)) ); //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))); - connect(Lumina::NEF, SIGNAL(RequestWindowPropertiesChange(WId, QList<NativeWindow::Property>, QList<QVariant>)), Lumina::NWS, SLOT(RequestPropertiesChange(WId, QList<NativeWindow::Property>, QList<QVariant>))); + connect(Lumina::NEF, SIGNAL(WindowPropertyChanged(WId, NativeWindowObject::Property)), Lumina::NWS, SLOT(WindowPropertyChanged(WId, NativeWindowObject::Property))); + connect(Lumina::NEF, SIGNAL(WindowPropertiesChanged(WId, QList<NativeWindowObject::Property>)), Lumina::NWS, SLOT(WindowPropertiesChanged(WId, QList<NativeWindowObject::Property>)) ); + connect(Lumina::NEF, SIGNAL(WindowPropertyChanged(WId, NativeWindowObject::Property, QVariant)), Lumina::NWS, SLOT(WindowPropertyChanged(WId, NativeWindowObject::Property, QVariant))); + connect(Lumina::NEF, SIGNAL(WindowPropertiesChanged(WId, QList<NativeWindowObject::Property>, QList<QVariant>)), Lumina::NWS, SLOT(WindowPropertiesChanged(WId, QList<NativeWindowObject::Property>, QList<QVariant>)) ); + connect(Lumina::NEF, SIGNAL(RequestWindowPropertyChange(WId, NativeWindowObject::Property, QVariant)), Lumina::NWS, SLOT(RequestPropertyChange(WId, NativeWindowObject::Property, QVariant))); + connect(Lumina::NEF, SIGNAL(RequestWindowPropertiesChange(WId, QList<NativeWindowObject::Property>, QList<QVariant>)), Lumina::NWS, SLOT(RequestPropertiesChange(WId, QList<NativeWindowObject::Property>, QList<QVariant>))); connect(Lumina::NEF, SIGNAL(TrayWindowCreated(WId)), Lumina::NWS, SLOT(NewTrayWindowDetected(WId))); connect(Lumina::NEF, SIGNAL(TrayWindowDestroyed(WId)), Lumina::NWS, SLOT(WindowCloseDetected(WId))); connect(Lumina::NEF, SIGNAL(PossibleDamageEvent(WId)), Lumina::NWS, SLOT(CheckDamageID(WId))); @@ -268,7 +243,11 @@ void LSession::setupGlobalConnections(){ connect(Lumina::NWS, SIGNAL(MouseReleaseDetected(WId, NativeWindowSystem::MouseButton)), Lumina::SHORTCUTS, SLOT(MouseRelease(WId, NativeWindowSystem::MouseButton)) ); //NWS Events to the window system - connect(Lumina::NWS, SIGNAL(NewWindowAvailable(NativeWindow*)), Lumina::ROOTWIN, SLOT(NewWindow(NativeWindow*)) ); + connect(Lumina::NWS, SIGNAL(NewWindowAvailable(NativeWindowObject*)), Lumina::DESKMAN, SLOT(NewWindowAvailable(NativeWindowObject*)) ); + connect(Lumina::NWS, SIGNAL(WindowClosed()), Lumina::DESKMAN, SLOT(syncWindowList()) ); + connect(Lumina::NWS, SIGNAL(NewTrayWindowAvailable(NativeWindowObject*)), Lumina::DESKMAN, SLOT(NewTrayWindowAvailable(NativeWindowObject*)) ); + connect(Lumina::NWS, SIGNAL(TrayWindowClosed()), Lumina::DESKMAN, SLOT(syncTrayWindowList()) ); + } //================= diff --git a/src-qt5/core/lumina-desktop-unified/LSession.h b/src-qt5/core/lumina-desktop-unified/LSession.h index 61da559b..fb4bf29f 100644 --- a/src-qt5/core/lumina-desktop-unified/LSession.h +++ b/src-qt5/core/lumina-desktop-unified/LSession.h @@ -28,6 +28,9 @@ private: QTranslator *currTranslator; + //Extra background threads for individual objects + + public slots: void setupSession(); //called during startup only diff --git a/src-qt5/core/lumina-desktop-unified/defaults/desktop/panels.conf b/src-qt5/core/lumina-desktop-unified/defaults/desktop/panels.conf new file mode 100644 index 00000000..f0cdc5a4 --- /dev/null +++ b/src-qt5/core/lumina-desktop-unified/defaults/desktop/panels.conf @@ -0,0 +1,22 @@ +[General] + +[templates] +windows/anchor="bottom" +windows/align="center" +windows/length_percent=100 +windows/width_percent=3 +windows/plugins="" +windows/background="#1A000000" + +[default] +active_ids="initial" + +[session] + +[initial] +anchor="bottom" +align="center" +length_percent=100 +width_percent=2.1 +plugins="" +background="#33000000" diff --git a/src-qt5/core/lumina-desktop-unified/defaults/desktop/screensaver.conf b/src-qt5/core/lumina-desktop-unified/defaults/desktop/screensaver.conf index b4bfec59..98e6f20a 100644 --- a/src-qt5/core/lumina-desktop-unified/defaults/desktop/screensaver.conf +++ b/src-qt5/core/lumina-desktop-unified/defaults/desktop/screensaver.conf @@ -1,3 +1,2 @@ [General] default_plugin="random" -plugin_VGA-0="random" diff --git a/src-qt5/core/lumina-desktop-unified/extrafiles/screensavers/Matrix.json b/src-qt5/core/lumina-desktop-unified/extrafiles/screensavers/Matrix.json new file mode 100644 index 00000000..52cd16ee --- /dev/null +++ b/src-qt5/core/lumina-desktop-unified/extrafiles/screensavers/Matrix.json @@ -0,0 +1,25 @@ +{ + "name" : { + "default" : "Matrix" + }, + "description" : { + "default" : "Erratic falling columns of various characters with a set color" + }, + "author" : { + "name" : "Zackary Welch", + "email" : "zwelch@ixsystems.com", + "website" : "https://github.com/ZackaryWelch", + "company" : "iXsystems", + "company_website" : "http://ixsystems.com" + }, + "meta" : { + "license" : "3-clause BSD", + "license_url" : "https://github.com/trueos/lumina/blob/master/LICENSE", + "copyright" : "Copyright (c) 2017, Ken Moore (ken@ixsystems.com)", + "date_created" : "20180103", + "version" : "1.0" + }, + "qml" : { + "exec" : "qml_scripts/Matrix.qml" + } +} diff --git a/src-qt5/core/lumina-desktop-unified/extrafiles/screensavers/qml_scripts/Matrix.qml b/src-qt5/core/lumina-desktop-unified/extrafiles/screensavers/qml_scripts/Matrix.qml new file mode 100644 index 00000000..d4031201 --- /dev/null +++ b/src-qt5/core/lumina-desktop-unified/extrafiles/screensavers/qml_scripts/Matrix.qml @@ -0,0 +1,71 @@ +import QtQuick 2.0 +import QtMultimedia 5.7 +import QtQuick.Window 2.2 + +Rectangle { + width: Window.width + height: Window.height + color: "black" + + Row{ + id: masterRow + anchors.left: parent.left + anchors.horizontalCenter: parent.horizontalCenter + width: parent.width + spacing: 5 + Repeater { + id: cR + model: Window.width / 15 + 1 + Column { + id: masterColumn + width: 10 + Text { + id: column + color: "#ff4d4d" + font.pixelSize: 10 + transform: Rotation { origin.x: 0; origin.y: 0; angle: 90 } + Timer { + interval: 50 + repeat: true + running: true + onTriggered: { + if(Math.random() < 0.95) { + var bottom = column.text.charAt(column.text.length-1) + var newString = bottom+column.text.substring(0, column.text.length-1) + column.text = newString + interval = 50 + }else{ + interval = 1000 + } + } + } + Component.onCompleted: { + var str = " " + var numberChar = Math.random() * 100 + (Window.height * 0.1); + if(Math.random() < 0.80) { + while(str.length < numberChar) { + if(Math.random() < 0.5) { + var charCount = Math.random() * 8 + 10 + var segStr = "" + while(segStr.length < charCount) { + var randChar = String.fromCharCode(0x30A0 + Math.random() * (0x30FF-0x30A0+1)); + segStr += randChar + } + str += segStr + }else{ + var charCount = Math.random() * 6 + 14 + var segStr = "" + while(segStr.length < charCount) { + segStr += " " + } + str += segStr + } + } + } + column.text = str + } + } + } + } + } +} diff --git a/src-qt5/core/lumina-desktop-unified/global-includes.h b/src-qt5/core/lumina-desktop-unified/global-includes.h index fbc3c4f7..69f1a3b0 100644 --- a/src-qt5/core/lumina-desktop-unified/global-includes.h +++ b/src-qt5/core/lumina-desktop-unified/global-includes.h @@ -58,6 +58,7 @@ #include <QQmlContext> #include <QQmlEngine> #include <QQuickImageProvider> +#include <QtConcurrent> // libLumina includes #include <LuminaX11.h> @@ -69,15 +70,13 @@ #include <LuminaSingleApplication.h> #include <DesktopSettings.h> #include <ExternalProcess.h> -#include <NativeWindow.h> -#include <NativeWindowSystem.h> -#include <NativeEventFilter.h> #include <XDGMime.h> #include <LIconCache.h> #include <LFileInfo.h> +#include <framework-OSInterface.h> // C++ Backend classes for QML interface -#include <RootDesktopObject.h> +#include <NativeWindowObject.h> #include <ScreenObject.h> //Setup any global defines (no classes or global objects: use "global-objects.h" for that) diff --git a/src-qt5/core/lumina-desktop-unified/global-objects.h b/src-qt5/core/lumina-desktop-unified/global-objects.h index c204587f..bba55b84 100644 --- a/src-qt5/core/lumina-desktop-unified/global-objects.h +++ b/src-qt5/core/lumina-desktop-unified/global-objects.h @@ -21,10 +21,15 @@ //#ifndef USE_WAYLAND //#include "src-events/LXcbEventFilter.h" //#endif -#include "src-events/LShortcutEvents.h" +#include "src-events/NativeWindowSystem.h" +#include "src-events/NativeEventFilter.h" +#include "src-desktop/src-cpp/RootDesktopObject.h" + +#include "src-events/LShortcutEvents.h" +#include "src-desktop/DesktopManager.h" #include "src-screensaver/LScreenSaver.h" -//#include "src-WM/LWindowManager.h" + #include <RootWindow.h> #include "LSession.h" @@ -43,13 +48,13 @@ namespace Lumina{ //extern EventFilter *EFILTER; //Native Event Watcher extern LShortcutEvents *SHORTCUTS; //Keyboard/mouse shortcut events - //extern DesktopSettings *SETTINGS; //All Settings files + //ScreenSaver extern LScreenSaver *SS; //Root Window extern RootWindow *ROOTWIN; - //Window Manager - //LWindowManager *WM; + //Desktop Manager + extern DesktopManager *DESKMAN; //Application List extern XDGDesktopList *APPLIST; diff --git a/src-qt5/core/lumina-desktop-unified/lumina-desktop-unified.desktop b/src-qt5/core/lumina-desktop-unified/lumina-desktop-unified.desktop new file mode 100644 index 00000000..9f082647 --- /dev/null +++ b/src-qt5/core/lumina-desktop-unified/lumina-desktop-unified.desktop @@ -0,0 +1,7 @@ +[Desktop Entry] +Exec=start-lumina-desktop --unified +TryExec=lumina-desktop-unified +Icon=Lumina-DE +Type=Application +Name=Lumina 2 +Comment=Illuminating the desktop diff --git a/src-qt5/core/lumina-desktop-unified/lumina-desktop.pro b/src-qt5/core/lumina-desktop-unified/lumina-desktop.pro index bb987e25..e601bb09 100644 --- a/src-qt5/core/lumina-desktop-unified/lumina-desktop.pro +++ b/src-qt5/core/lumina-desktop-unified/lumina-desktop.pro @@ -1,16 +1,16 @@ include($${PWD}/../../OS-detect.pri) lessThan(QT_MAJOR_VERSION, 5) { - message("[ERROR] Qt 5.4+ is required to use the Lumina Desktop!") + message("[ERROR] Qt 5.7+ is required to use the Lumina Desktop!") exit } -lessThan(QT_MINOR_VERSION, 4){ - message("[ERROR] Qt 5.4+ is required to use the Lumina Desktop!") +lessThan(QT_MINOR_VERSION, 7){ + message("[ERROR] Qt 5.7+ is required to use the Lumina Desktop!") exit } QT *= core gui network widgets x11extras multimedia multimediawidgets concurrent svg quick qml - +CONFIG += c++11 TARGET = lumina-desktop-unified target.path = $${L_BINDIR} @@ -21,14 +21,15 @@ include(../libLumina/LuminaXDG.pri) include(../libLumina/LuminaSingleApplication.pri) include(../libLumina/DesktopSettings.pri) include(../libLumina/ExternalProcess.pri) -include(../../src-cpp/NativeWindow.pri) include(../libLumina/XDGMime.pri) +include(../libLumina/LIconCache.pri) include(../../src-cpp/plugins-base.pri) +include(../../src-cpp/framework-OSInterface.pri) #include all the main individual source groups -include(src-screensaver/screensaver.pri) include(src-events/events.pri) +include(src-screensaver/screensaver.pri) include(src-desktop/desktop.pri) TEMPLATE = app @@ -40,19 +41,14 @@ SOURCES += main.cpp \ HEADERS += global-includes.h \ global-objects.h \ LSession.h \ - BootSplash.h + BootSplash.h \ + JsonMenu.h FORMS += BootSplash.ui - - -#Now include all the files for the various plugins -#include(panel-plugins/panel-plugins.pri) -#include(desktop-plugins/desktop-plugins.pri) - # Install all the various files for the desktop itself desktop.path = $${L_SESSDIR} -desktop.files = lumina-desktop.desktop +desktop.files = lumina-desktop-unified.desktop defaults.path = $${L_SHAREDIR}/lumina-desktop defaults.files = defaults/* diff --git a/src-qt5/core/lumina-desktop-unified/main.cpp b/src-qt5/core/lumina-desktop-unified/main.cpp index ed2b9b4c..3cf35e50 100644 --- a/src-qt5/core/lumina-desktop-unified/main.cpp +++ b/src-qt5/core/lumina-desktop-unified/main.cpp @@ -39,11 +39,11 @@ int main(int argc, char ** argv) QTime *timer=0; if(DEBUG){ timer = new QTime(); timer->start(); } if(DEBUG){ qDebug() << "Theme Init:" << timer->elapsed(); } - LuminaThemeEngine theme(&a); - QObject::connect(&theme, SIGNAL(updateIcons()), &a, SLOT(reloadIconTheme()) ); + /*LuminaThemeEngine theme(&a); + QObject::connect(&theme, SIGNAL(updateIcons()), &a, SLOT(reloadIconTheme()) );*/ if(DEBUG){ qDebug() << "Session Setup:" << timer->elapsed(); } QTimer::singleShot(0, &a, SLOT(setupSession()) ); - theme.refresh(); + //theme.refresh(); if(DEBUG){ qDebug() << "Exec Time:" << timer->elapsed(); delete timer;} int retCode = a.exec(); qDebug() << "Finished Closing Down Unified Lumina"; diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/DesktopManager.cpp b/src-qt5/core/lumina-desktop-unified/src-desktop/DesktopManager.cpp new file mode 100644 index 00000000..b94a241d --- /dev/null +++ b/src-qt5/core/lumina-desktop-unified/src-desktop/DesktopManager.cpp @@ -0,0 +1,213 @@ +//=========================================== +// Lumina-desktop source code +// Copyright (c) 2017-2018, Ken Moore +// Available under the 3-clause BSD license +// See the LICENSE file for full details +//=========================================== +#include "DesktopManager.h" + +#include "global-objects.h" + +// === PUBLIC === +DesktopManager::DesktopManager(){ + +} + +DesktopManager::~DesktopManager(){ + +} + +void DesktopManager::start(){ + connect(DesktopSettings::instance(), SIGNAL(FileModified(DesktopSettings::File)), this, SLOT(settingsChanged(DesktopSettings::File)) ); + //Perform the initial load of the settings files + QTimer::singleShot(0, this, SLOT(updateSessionSettings()) ); + QTimer::singleShot(0, this, SLOT(updateDesktopSettings()) ); + QTimer::singleShot(0, this, SLOT(updatePanelSettings()) ); + QTimer::singleShot(0, this, SLOT(updatePluginSettings()) ); + QTimer::singleShot(0, this, SLOT(updateMenuSettings()) ); + QTimer::singleShot(0, this, SLOT(updateAnimationSettings()) ); +} + +void DesktopManager::stop(){ + disconnect(DesktopSettings::instance(), SIGNAL(FileModified(DesktopSettings::File)), this, SLOT(settingsChanged(DesktopSettings::File)) ); +} + +// === PRIVATE === +void DesktopManager::updateWallpaper(QString screen_id, int wkspace){ + QString current = RootDesktopObject::instance()->CurrentWallpaper(screen_id); + if(!current.isEmpty()){ current = QUrl(current).toLocalFile(); } //convert it back to the normal file syntax + //First find the list of options from the settings + //First look for a list that matches this exact screen/workspace combo + QStringList wpaperList = DesktopSettings::instance()->value(DesktopSettings::Desktop, "wallpapers/"+screen_id+"_wk_"+QString::number(wkspace), QStringList()).toStringList(); + //Next look for a list that matches this exact workspace + if(wpaperList.isEmpty()){ wpaperList= DesktopSettings::instance()->value(DesktopSettings::Desktop, "wallpapers/default_wk_"+QString::number(wkspace), QStringList()).toStringList(); } + wpaperList.removeAll(""); + //Next look for a list that matches this exact screen + if(wpaperList.isEmpty()){ wpaperList= DesktopSettings::instance()->value(DesktopSettings::Desktop, "wallpapers/"+screen_id, QStringList()).toStringList(); } + wpaperList.removeAll(""); + //Now look for a list that matches any screen/workspace + if(wpaperList.isEmpty()){ wpaperList= DesktopSettings::instance()->value(DesktopSettings::Desktop, "wallpapers/default", QStringList()).toStringList(); } + wpaperList.removeAll(""); + //Now use the failover wallpaper directory + if(wpaperList.isEmpty()){ + QString def = LOS::LuminaShare().section("/",0,-3)+"/wallpapers/lumina-nature"; //Note: LuminaShare() ends with an extra "/" + //qDebug() << "Default Wallpaper:" << def; + if(QFile::exists(def)){ wpaperList << def; } + } + //qDebug() << "Got wallpaper list:" << screen_id << wkspace << wpaperList; + //Wallpaper selection/randomization + if(wpaperList.count()==1 && wpaperList.first()==current){ return; } //nothing to do - just the same image + QString wpaper; + QStringList bgL = wpaperList; //need a copy at the moment - could change the entire list in a second (opening a dir for instance) + while(wpaper.isEmpty() || QFileInfo(wpaper).isDir()){ + QString prefix; + if(!wpaper.isEmpty()){ + //Got a directory - update the list of files and re-randomize the selection + QStringList imgs = LUtils::imageExtensions(true); + //qDebug() << " - Got Dir: " << imgs; + QDir tdir(wpaper); + prefix=wpaper+"/"; + bgL = tdir.entryList(imgs, QDir::Files | QDir::NoDotAndDotDot, QDir::Name); + //If directory no longer has any valid images - remove it from list and try again + if(bgL.isEmpty()){ + wpaperList.removeAll(wpaper); //invalid directory - remove it from the list for the moment + bgL = wpaperList; //reset the list back to the original list (not within a directory) + } + } + //Verify that there are files in the list - otherwise use the default + if(bgL.isEmpty()){ wpaper.clear(); break; } + int index = ( qrand() % bgL.length() ); + if(index== bgL.indexOf(current)){ //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 + } + wpaper = prefix+bgL[index]; + } + //Now go ahead and set the wallpaper in the screen object + if(wpaper.isEmpty() || wpaper=="default"){ wpaper = LOS::LuminaShare()+"/desktop-background.jpg"; } //failover image + //qDebug() << "Updating Wallpaper:" << screen_id << wpaper; + RootDesktopObject::instance()->ChangeWallpaper(screen_id,QUrl::fromLocalFile(wpaper).toString() ); +} + +void DesktopManager::updatePlugins(QString plugin_id){ + +} + +// === PUBLIC SLOTS === +void DesktopManager::workspaceChanged(int wknum){ + //qDebug() << "Got Workspace Changed:" << wknum; + syncWindowList(); +} + +void DesktopManager::settingsChanged(DesktopSettings::File type){ + switch(type){ + case DesktopSettings::Session: + QTimer::singleShot(0, this, SLOT(updateSessionSettings()) ); + case DesktopSettings::Desktop: + QTimer::singleShot(1, this, SLOT(updateDesktopSettings()) ); + case DesktopSettings::Panels: + QTimer::singleShot(2, this, SLOT(updatePanelSettings()) ); + case DesktopSettings::Plugins: + QTimer::singleShot(3, this, SLOT(updatePluginSettings()) ); + case DesktopSettings::ContextMenu: + QTimer::singleShot(4, this, SLOT(updateMenuSettings()) ); + case DesktopSettings::Animation: + QTimer::singleShot(5, this, SLOT(updateAnimationSettings()) ); + default: + break; + //Do nothing - not a settings change we care about here + } +} + +void DesktopManager::NewWindowAvailable(NativeWindowObject* win){ + //connect(win, SIGNAL(WindowClosed(WId)), this, SLOT(syncWindowList()) ); +#ifdef USE_WIDGETS + qDebug() << "Got New Widget Window:" << win->name(); +#endif + syncWindowList(); +} + +void DesktopManager::NewTrayWindowAvailable(NativeWindowObject* win){ + //connect(win, SIGNAL(WindowClosed(WId)), this, SLOT(syncTrayWindowList()) ); + syncTrayWindowList(); +} + +void DesktopManager::syncWindowList(){ + QList<NativeWindowObject*> allWins = Lumina::NWS->currentWindows(); + //Filter out all the windows not in the current workspace + QList<NativeWindowObject*> current; + QList<NativeWindowObject*> currentStacked; + int wkspace = Lumina::NWS->currentWorkspace(); + for(int i=0; i<allWins.length(); i++){ + if(allWins[i]->isSticky() || (allWins[i]->workspace() == wkspace)){ + current << allWins[i]; + } + } + //qDebug() << "Synced Window List:" << current.length(); + RootDesktopObject::instance()->setWindows(current); +} + +void DesktopManager::syncTrayWindowList(){ + QList<NativeWindowObject*> allWins = Lumina::NWS->currentTrayWindows(); + //qDebug() << "Synced Tray Window List:" << allWins.length(); + RootDesktopObject::instance()->setTrayWindows(allWins); +} + +// === PRIVATE SLOTS === +void DesktopManager::updateSessionSettings(){ + //qDebug() << "Update Session Settings..."; + + RootDesktopObject::instance()->updateCurrentTimeFormat(DesktopSettings::instance()->value(DesktopSettings::Session, "datetime_format", "").toString()); +} + +void DesktopManager::updateDesktopSettings(){ + //qDebug() << "Update Desktop Settings..."; + QList<QScreen*> scrns = QGuiApplication::screens(); + int wkspace = Lumina::NWS->currentWorkspace(); + for(int i=0; i<scrns.length(); i++){ updateWallpaper(scrns[i]->name(), wkspace); } + +} + +void DesktopManager::updatePanelSettings(){ + QList<QScreen*> scrns = QGuiApplication::screens(); + int primary = QApplication::desktop()->primaryScreen(); + //qDebug() << "Panel Settings Changed:" << primary << scrns.length(); + QStringList total_ids; + for(int i=0; i<scrns.length(); i++){ + //qDebug() << " - Check Screen Name:" << scrns[i]->name(); + ScreenObject *sObj = RootDesktopObject::instance()->screen(scrns[i]->name()); + if(sObj == 0){ continue; } //screen is not managed directly - skip it + QStringList ids = DesktopSettings::instance()->value(DesktopSettings::Panels, scrns[i]->name().replace("-","_")+"/active_ids", QStringList()).toStringList(); + if(ids.isEmpty() && (scrns.length()==1 || i==primary)){ + //qDebug() << " -- PRIMARY"; + //Also look for the "default" panel id's for the primary/default screen + ids = DesktopSettings::instance()->value(DesktopSettings::Panels, "default/active_ids", QStringList()).toStringList(); + } + ids.removeAll(""); + //qDebug() << " -- settings:" << ids; + for(int j=0; j<ids.length(); j++){ + total_ids << scrns[i]->name()+"/"+ids[j]; + } + } + //Now do the global-session panels + QStringList ids = DesktopSettings::instance()->value(DesktopSettings::Panels, "session/active_ids", QStringList()).toStringList(); + ids.removeAll(""); + for(int i=0; i<ids.length(); i++){ + total_ids << "session/"+ids[i]; + } + //qDebug() << "Panel Settings Changed:" << total_ids; + RootDesktopObject::instance()->setPanels(total_ids); //put the new ones in place +} + +void DesktopManager::updatePluginSettings(){ + +} + +void DesktopManager::updateMenuSettings(){ + +} + +void DesktopManager::updateAnimationSettings(){ + +} diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/DesktopManager.h b/src-qt5/core/lumina-desktop-unified/src-desktop/DesktopManager.h new file mode 100644 index 00000000..b3511318 --- /dev/null +++ b/src-qt5/core/lumina-desktop-unified/src-desktop/DesktopManager.h @@ -0,0 +1,50 @@ +//=========================================== +// Lumina-desktop source code +// Copyright (c) 2017-2018, Ken Moore +// Available under the 3-clause BSD license +// See the LICENSE file for full details +//=========================================== +// This is the main class that updates the interface objects +// on-demand as settings files and other stuff changes +//=========================================== +#ifndef _LUMINA_DESKTOP_OBJECT_MANAGER_H +#define _LUMINA_DESKTOP_OBJECT_MANAGER_H + +#include <global-includes.h> + +class DesktopManager : public QObject { + Q_OBJECT +public: + DesktopManager(); + ~DesktopManager(); + + void start(); + void stop(); + +private: + void updateWallpaper(QString screen_id, int wkspace); + void updatePlugins(QString plugin_id); + +public slots: + void workspaceChanged(int); + void settingsChanged(DesktopSettings::File); + + void NewWindowAvailable(NativeWindowObject*); + void NewTrayWindowAvailable(NativeWindowObject*); + + void syncWindowList(); + void syncTrayWindowList(); + +private slots: + void updateSessionSettings(); + void updateDesktopSettings(); + void updatePanelSettings(); + void updatePluginSettings(); + void updateMenuSettings(); + void updateAnimationSettings(); + +signals: + void PanelLocationsChanged(); //reserved screen space changed +}; + +#endif diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/QMLImageProvider.cpp b/src-qt5/core/lumina-desktop-unified/src-desktop/QMLImageProvider.cpp new file mode 100644 index 00000000..a74d2585 --- /dev/null +++ b/src-qt5/core/lumina-desktop-unified/src-desktop/QMLImageProvider.cpp @@ -0,0 +1,65 @@ +//=========================================== +// Lumina-desktop source code +// Copyright (c) 2018, Ken Moore +// Available under the 3-clause BSD license +// See the LICENSE file for full details +//=========================================== +#include <global-objects.h> +#include "QMLImageProvider.h" + +QMLImageProvider::QMLImageProvider(QQmlImageProviderBase::ImageType type) : QQuickImageProvider(type, 0){ + +} + +QMLImageProvider::~QMLImageProvider(){ + +} + +/*QMLImageProvider* QMLImageProvider::instance(){ + static QMLImageProvider *_prov = 0; + if(_prov==0){ _prov = new QMLImageProvider(); } + return _prov; +}*/ + +QImage QMLImageProvider::requestImage(const QString &id, QSize *size, const QSize &requestedSize){ + NativeWindowObject *win = Lumina::NWS->findWindow( id.section(":",1,1).toInt(), false); + if(win==0){ win = Lumina::NWS->findTrayWindow(id.section(":",1,1).toInt()); } + + if(!id.startsWith("image:")){ qDebug() << "Request Image:" << id << win << requestedSize; } + + QImage img(requestedSize,QImage::Format_RGB32); + if(win==0){ img.fill("black"); } //invalid window ID (should never happen) + else if(id.startsWith("image:")){ img = Lumina::NWS->GetWindowImage(win); } + else if(id.startsWith("icon:")){ + QIcon ico = win->property(NativeWindowObject::Icon).value<QIcon>(); + QList<QSize> sizes = ico.availableSizes(); + QSize sz(0,0); + //Just grab the largest size currently available + for(int i=0; i<sizes.length(); i++){ + if(sz.width()<sizes[i].width() && sz.height()<sizes[i].height()){ sz = sizes[i]; } + } + qDebug() << "Icon Sizes:" <<sizes; + img = ico.pixmap(sz).toImage(); + } + //qDebug() << "Got Window Image:" << img.size(); + if(img.size().isNull()){ + if(requestedSize.isValid()){ img = QImage(requestedSize,QImage::Format_RGB32); } + else{ img = QImage(QSize(64,64), QImage::Format_RGB32); } + img.fill("black"); + } + //qDebug() << "Final Window Image:" << img.size(); + if(size!=0){ + size->setHeight(img.height()); + size->setWidth( img.width() ); + } + if(requestedSize.isValid() && !requestedSize.isNull() && img.size()!=requestedSize){ + img = img.scaled(requestedSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); + } + return img; +} + +QPixmap QMLImageProvider::requestPixmap(const QString &id, QSize *size, const QSize &requestedSize){ + qDebug() << "Pixmap Requested:" << id; + QImage img = requestImage(id, size, requestedSize); + return QPixmap::fromImage(img); +} diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/QMLImageProvider.h b/src-qt5/core/lumina-desktop-unified/src-desktop/QMLImageProvider.h new file mode 100644 index 00000000..8719176e --- /dev/null +++ b/src-qt5/core/lumina-desktop-unified/src-desktop/QMLImageProvider.h @@ -0,0 +1,26 @@ +//=========================================== +// Lumina-desktop source code +// Copyright (c) 2018, Ken Moore +// Available under the 3-clause BSD license +// See the LICENSE file for full details +//=========================================== +#ifndef _LUMINA_DESKTOP_QML_IMAGE_PROVIDER_H +#define _LUMINA_DESKTOP_QML_IMAGE_PROVIDER_H + +#include <QQuickImageProvider> +#include <QImage> +#include <QPixmap> +#include <QSize> + +class QMLImageProvider : public QQuickImageProvider{ +public: + QMLImageProvider(QQmlImageProviderBase::ImageType); + ~QMLImageProvider(); + + //static QMLImageProvider* instance(); + + virtual QImage requestImage(const QString &id, QSize *size, const QSize &requestedSize); + virtual QPixmap requestPixmap(const QString &id, QSize *size, const QSize &requestedSize); +}; + +#endif diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/RootWindow.cpp b/src-qt5/core/lumina-desktop-unified/src-desktop/RootWindow-QML.cpp index 0cfa4e6b..8619544b 100644 --- a/src-qt5/core/lumina-desktop-unified/src-desktop/RootWindow.cpp +++ b/src-qt5/core/lumina-desktop-unified/src-desktop/RootWindow-QML.cpp @@ -1,14 +1,18 @@ //=========================================== // Lumina-desktop source code -// Copyright (c) 2017, Ken Moore +// Copyright (c) 2017-2018, Ken Moore // Available under the 3-clause BSD license // See the LICENSE file for full details //=========================================== #include "RootWindow.h" +#include "QMLImageProvider.h" +#include <QQmlImageProviderBase> + +QQuickView *root_view; RootWindow::RootWindow() : QObject(){ - root_win = QWindow::fromWinId( QX11Info::appRootWindow() ); // - root_view = new QQuickView(root_win); //make it a child of the root window + root_win = QWindow::fromWinId( QX11Info::appRootWindow() ); + root_view = new QQuickView(); //make it a child of the root window root_obj = RootDesktopObject::instance(); syncRootSize(); connect(root_win, SIGNAL(widthChanged(int)), this, SLOT(syncRootSize()) ); @@ -16,6 +20,8 @@ RootWindow::RootWindow() : QObject(){ //Now setup the QQuickView root_view->setResizeMode(QQuickView::SizeRootObjectToView); root_view->engine()->rootContext()->setContextProperty("RootObject", root_obj); + root_view->engine()->addImageProvider("native_window", new QMLImageProvider(QQmlImageProviderBase::Image) ); + //root_view->engine()->addImageProvider("native_window_icon", new QMLImageProvider(QQmlImageProviderBase::Pixmap) ); RootDesktopObject::RegisterType(); //make sure object classes are registered with the QML subsystems } @@ -27,15 +33,22 @@ RootWindow::~RootWindow(){ void RootWindow::start(){ root_view->setSource(QUrl("qrc:///qml/RootDesktop.qml")); root_win->show(); + if(root_view->parent()!=0){ root_view->parent()->show(); } root_view->show(); } +WId RootWindow::viewID(){ + if(root_view->parent()!=0){ return root_view->parent()->winId(); } + return root_view->winId(); +} + void RootWindow::syncRootSize(){ //qDebug() << "Sync Root Size:" << root_win->width() << root_win->height() << root_view->geometry(); QList<QScreen*> screens = QApplication::screens(); QRect unif; for(int i=0; i<screens.length(); i++){ unif = unif.united(screens[i]->geometry()); } if(unif.width() != root_view->width() || unif.height() != root_view->height()){ + if(root_view->parent()!=0){ root_view->parent()->setGeometry(0,0,unif.width(), unif.height()); } root_view->setGeometry(0, 0, unif.width(), unif.height() ); emit RootResized(root_view->geometry()); } diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/RootWindow-Widgets.cpp b/src-qt5/core/lumina-desktop-unified/src-desktop/RootWindow-Widgets.cpp new file mode 100644 index 00000000..6a4c4cb0 --- /dev/null +++ b/src-qt5/core/lumina-desktop-unified/src-desktop/RootWindow-Widgets.cpp @@ -0,0 +1,53 @@ +//=========================================== +// Lumina-desktop source code +// Copyright (c) 2017-2018, Ken Moore +// Available under the 3-clause BSD license +// See the LICENSE file for full details +//=========================================== +#include "RootWindow.h" + +//include the Widgets-based classes we need +#include "RootDesktop.h" + +RootDesktop *root_view; + +RootWindow::RootWindow() : QObject(){ + root_win = QWindow::fromWinId( QX11Info::appRootWindow() ); + root_view = new RootDesktop(root_win); //make it a child of the root window + root_obj = RootDesktopObject::instance(); + syncRootSize(); + connect(root_win, SIGNAL(widthChanged(int)), this, SLOT(syncRootSize()) ); + connect(root_win, SIGNAL(heightChanged(int)),this, SLOT(syncRootSize()) ); +} + +RootWindow::~RootWindow(){ + root_view->deleteLater(); + root_obj->deleteLater(); +} + +void RootWindow::start(){ + root_win->show(); + //if(root_view->parent()!=0){ root_view->parent()->show(); } + root_view->show(); + root_view->start(); + QTimer::singleShot(1000, this, SLOT(syncRootSize()) ); //just in case something changed during init routines +} + +WId RootWindow::viewID(){ + //if(root_view->parent()!=0){ return root_view->parent()->winId(); } + return root_view->winId(); +} + +void RootWindow::syncRootSize(){ + //qDebug() << "Sync Root Size:" << root_win->width() << root_win->height() << root_view->geometry(); + QList<QScreen*> screens = QApplication::screens(); + QRect unif; + for(int i=0; i<screens.length(); i++){ unif = unif.united(screens[i]->geometry()); } + if(unif.width() != root_view->width() || unif.height() != root_view->height()){ + //if(root_view->parent()!=0){ root_view->parent()->setGeometry(0,0,unif.width(), unif.height()); } + root_view->setGeometry(0, 0, unif.width(), unif.height() ); + emit RootResized(root_view->geometry()); + } + root_obj->updateScreens(); + //qDebug() << " - after:" << root_view->geometry(); +} diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/RootWindow.h b/src-qt5/core/lumina-desktop-unified/src-desktop/RootWindow.h index ba489465..3c7414f2 100644 --- a/src-qt5/core/lumina-desktop-unified/src-desktop/RootWindow.h +++ b/src-qt5/core/lumina-desktop-unified/src-desktop/RootWindow.h @@ -1,18 +1,18 @@ //=========================================== // Lumina-desktop source code -// Copyright (c) 2017, Ken Moore +// Copyright (c) 2017-2018, Ken Moore // Available under the 3-clause BSD license // See the LICENSE file for full details //=========================================== #ifndef _LUMINA_DESKTOP_ROOT_WINDOW_H #define _LUMINA_DESKTOP_ROOT_WINDOW_H #include <global-includes.h> +#include "src-cpp/RootDesktopObject.h" class RootWindow : public QObject{ Q_OBJECT private: QWindow *root_win; - QQuickView *root_view; RootDesktopObject *root_obj; public: @@ -21,6 +21,8 @@ public: void start(); + WId viewID(); + public slots: void syncRootSize(); diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/desktop.pri b/src-qt5/core/lumina-desktop-unified/src-desktop/desktop.pri index e4c4faeb..89542e23 100644 --- a/src-qt5/core/lumina-desktop-unified/src-desktop/desktop.pri +++ b/src-qt5/core/lumina-desktop-unified/src-desktop/desktop.pri @@ -1,11 +1,32 @@ -QT *= gui widgets qml quick - -SOURCES *= $${PWD}/RootWindow.cpp - -HEADERS *= $${PWD}/RootWindow.h +QT *= gui widgets #update the includepath so we can just #include as needed without paths INCLUDEPATH *= $${PWD} +SOURCES *= $${PWD}/Desktopmanager.cpp \ + $${PWD}/QMLImageProvider.cpp + +HEADERS *= $${PWD}/RootWindow.h \ + $${PWD}/DesktopManager.h + +#include the base objects include($${PWD}/src-cpp/src-cpp.pri) -include($${PWD}/src-qml/src-qml.pri) + +#Now do the QML/Widgets interface switch +isEmpty(USE_QML){ + #Widgets-based interface + DEFINES += USE_WIDGETS="true" + + SOURCES *= $${PWD}/RootWindow-Widgets.cpp + + include($${PWD}/src-widgets/src-widgets.pri) + +}else{ + #QML-based interface + QT *= qml quick + DEFINES += USE_QML="true" + SOURCES *= $${PWD}/RootWindow-QML.cpp + HEADERS *= $${PWD}/QMLImageProvider.h + + include($${PWD}/src-qml/src-qml.pri) +} diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/src-cpp/NativeWindowObject.cpp b/src-qt5/core/lumina-desktop-unified/src-desktop/src-cpp/NativeWindowObject.cpp new file mode 100644 index 00000000..e2cac852 --- /dev/null +++ b/src-qt5/core/lumina-desktop-unified/src-desktop/src-cpp/NativeWindowObject.cpp @@ -0,0 +1,330 @@ +//=========================================== +// Lumina-DE source code +// Copyright (c) 2017-2018, Ken Moore +// Available under the 3-clause BSD license +// See the LICENSE file for full details +//=========================================== +#include "NativeWindowObject.h" +#include <QQmlEngine> +#include <QDebug> +#include <QBuffer> + +// == QML Type Registration == +void NativeWindowObject::RegisterType(){ + static bool done = false; + if(done){ return; } + done=true; + qmlRegisterType<NativeWindowObject>("Lumina.Backend.NativeWindowObject",2,0, "NativeWindowObject"); +} + +// === PUBLIC === +NativeWindowObject::NativeWindowObject(WId id) : QObject(){ + winid = id; + frameid = 0; + dmgID = dmg = 0; + geomTimer = new QTimer(this); + geomTimer->setSingleShot(true); + geomTimer->setInterval(50); //1/20 second + connect(geomTimer, SIGNAL(timeout()), this, SLOT(sendNewGeom()) ); +} + +NativeWindowObject::~NativeWindowObject(){ + hash.clear(); +} + +void NativeWindowObject::addFrameWinID(WId fid){ + frameid = fid; +} + +void NativeWindowObject::addDamageID(unsigned int dmg){ + dmgID = dmg; +} + +bool NativeWindowObject::isRelatedTo(WId tmp){ + return (relatedTo.contains(tmp) || winid == tmp || frameid == tmp); +} + +WId NativeWindowObject::id(){ + return winid; +} + +WId NativeWindowObject::frameId(){ + return frameid; +} + +unsigned int NativeWindowObject::damageId(){ + return dmgID; +} + +QVariant NativeWindowObject::property(NativeWindowObject::Property prop){ + if(hash.contains(prop)){ return hash.value(prop); } + else if(prop == NativeWindowObject::RelatedWindows){ return QVariant::fromValue(relatedTo); } + return QVariant(); //null variant +} + +void NativeWindowObject::setProperty(NativeWindowObject::Property prop, QVariant val, bool force){ + if(prop == NativeWindowObject::RelatedWindows){ relatedTo = val.value< QList<WId> >(); } + else if(prop == NativeWindowObject::None || (!force && hash.value(prop)==val)){ return; } + else if(prop == NativeWindowObject::WinImage){ + //special case - This should never be actually set in the property hash + // it is loaded dynamically by the QMLImageProvider instead (prevent flickering/caching image) + } else{ hash.insert(prop, val); } + emitSinglePropChanged(prop); + emit PropertiesChanged(QList<NativeWindowObject::Property>() << prop, QList<QVariant>() << val); +} + +void NativeWindowObject::setProperties(QList<NativeWindowObject::Property> props, QList<QVariant> vals, bool force){ + for(int i=0; i<props.length(); i++){ + if(i>=vals.length()){ props.removeAt(i); i--; continue; } //no corresponding value for this property + if(props[i] == NativeWindowObject::None || (!force && (hash.value(props[i]) == vals[i])) ){ + props.removeAt(i); vals.removeAt(i); i--; continue; //Invalid property or identical value + }else if(props[i] == NativeWindowObject::WinImage){ + //special case - This should never be actually set in the property hash + // it is loaded dynamically by the QMLImageProvider instead (prevent flickering/caching image) + }else{ + hash.insert(props[i], vals[i]); + } + emitSinglePropChanged(props[i]); + } + emit PropertiesChanged(props, vals); +} + +void NativeWindowObject::requestProperty(NativeWindowObject::Property prop, QVariant val, bool force){ + if(prop == NativeWindowObject::None || prop == NativeWindowObject::RelatedWindows || (!force && hash.value(prop)==val) ){ return; } + emit RequestPropertiesChange(winid, QList<NativeWindowObject::Property>() << prop, QList<QVariant>() << val); +} + +void NativeWindowObject::requestProperties(QList<NativeWindowObject::Property> props, QList<QVariant> vals, bool force){ + //Verify/adjust inputs as needed + for(int i=0; i<props.length(); i++){ + if(i>=vals.length()){ props.removeAt(i); i--; continue; } //no corresponding value for this property + if(props[i] == NativeWindowObject::None || props[i] == NativeWindowObject::RelatedWindows || (!force && hash.value(props[i])==vals[i]) ){ props.removeAt(i); vals.removeAt(i); i--; continue; } //Invalid property or identical value + /*if( (props[i] == NativeWindowObject::Visible || props[i] == NativeWindowObject::Active) && frameid !=0){ + //These particular properties needs to change the frame - not the window itself + emit RequestPropertiesChange(frameid, QList<NativeWindowObject::Property>() << props[i], QList<QVariant>() << vals[i]); + props.removeAt(i); vals.removeAt(i); i--; + }*/ + } + emit RequestPropertiesChange(winid, props, vals); +} + +QRect NativeWindowObject::geometry(){ + //Calculate the "full" geometry of the window + frame (if any) + //Check that the size is between the min/max limitations + QSize size = hash.value(NativeWindowObject::Size).toSize(); + QSize min = hash.value(NativeWindowObject::MinSize).toSize(); + QSize max = hash.value(NativeWindowObject::MaxSize).toSize(); + if(min.isValid() && min.width() > size.width() ){ size.setWidth(min.width()); } + if(min.isValid() && min.height() > size.height()){ size.setHeight(min.height()); } + if(max.isValid() && max.width() < size.width() && max.width()>min.width()){ size.setWidth(max.width()); } + if(max.isValid() && max.height() < size.height() && max.height()>min.height()){ size.setHeight(max.height()); } + //Assemble the full geometry + QRect geom( hash.value(NativeWindowObject::GlobalPos).toPoint(), size ); + //Now adjust the window geom by the frame margins + QList<int> frame = hash.value(NativeWindowObject::FrameExtents).value< QList<int> >(); //Left,Right,Top,Bottom + //qDebug() << "Calculate Geometry:" << geom << frame; + if(frame.length()==4){ + geom = geom.adjusted( -frame[0], -frame[2], frame[1], frame[3] ); + } + //qDebug() << " - Total:" << geom; + return geom; +} + +void NativeWindowObject::setGeometryNow(QRect geom){ + updateGeometry(geom.x(), geom.y(), geom.width(), geom.height(), true); +} + +// QML ACCESS FUNCTIONS (shortcuts for particular properties in a format QML can use) +QString NativeWindowObject::winImage(){ + //Need to alternate something on the end to ensure that QML knows to fetch the new image (non-cached only) + if(dmg==0){ dmg = 1; } + else{ dmg = 0; } + return "image://native_window/image:"+QString::number(winid)+":"+QString::number(dmg); +} + +QString NativeWindowObject::name(){ + return this->property(NativeWindowObject::Name).toString(); +} + +QString NativeWindowObject::title(){ + return this->property(NativeWindowObject::Title).toString(); +} + +QString NativeWindowObject::shortTitle(){ + QString tmp = this->property(NativeWindowObject::ShortTitle).toString(); + if(tmp.isEmpty()){ tmp = title(); } + if(tmp.isEmpty()){ tmp = name(); } + return tmp; +} + +QString NativeWindowObject::icon(){ + if(icodmg==0){ icodmg=1; } + else{ icodmg = 0; } + qDebug() << "Window Icon:" << icodmg << this->property(NativeWindowObject::Icon).value<QIcon>().availableSizes(); + return "image://native_window/icon:"+QString::number(winid)+":"+QString::number(icodmg); +} + +//QML Button states +bool NativeWindowObject::showCloseButton(){ + QList<NativeWindowObject::Type> types = this->property(NativeWindowObject::WinTypes).value<QList < NativeWindowObject::Type> >(); + QList<NativeWindowObject::Type> badtypes; + badtypes << NativeWindowObject::T_DESKTOP << NativeWindowObject::T_TOOLBAR << NativeWindowObject::T_MENU \ + << NativeWindowObject::T_SPLASH << NativeWindowObject::T_DROPDOWN_MENU << NativeWindowObject::T_POPUP_MENU \ + << NativeWindowObject::T_NOTIFICATION << NativeWindowObject::T_COMBO << NativeWindowObject::T_DND; + for(int i=0; i<types.length(); i++){ + if(badtypes.contains(types[i])){ return false; } + } + return true; +} + +bool NativeWindowObject::showMaxButton(){ + QList<NativeWindowObject::Type> types = this->property(NativeWindowObject::WinTypes).value<QList < NativeWindowObject::Type> >(); + QList<NativeWindowObject::Type> badtypes; + badtypes << NativeWindowObject::T_DESKTOP << NativeWindowObject::T_TOOLBAR << NativeWindowObject::T_MENU \ + << NativeWindowObject::T_SPLASH << NativeWindowObject::T_DROPDOWN_MENU << NativeWindowObject::T_POPUP_MENU \ + << NativeWindowObject::T_NOTIFICATION << NativeWindowObject::T_COMBO << NativeWindowObject::T_DND; + for(int i=0; i<types.length(); i++){ + if(badtypes.contains(types[i])){ return false; } + } + return true; +} + +bool NativeWindowObject::showMinButton(){ + QList<NativeWindowObject::Type> types = this->property(NativeWindowObject::WinTypes).value<QList < NativeWindowObject::Type> >(); + QList<NativeWindowObject::Type> badtypes; + badtypes << NativeWindowObject::T_DESKTOP << NativeWindowObject::T_TOOLBAR << NativeWindowObject::T_MENU \ + << NativeWindowObject::T_SPLASH << NativeWindowObject::T_DROPDOWN_MENU << NativeWindowObject::T_POPUP_MENU \ + << NativeWindowObject::T_NOTIFICATION << NativeWindowObject::T_COMBO << NativeWindowObject::T_DND << NativeWindowObject::T_DIALOG; + for(int i=0; i<types.length(); i++){ + if(badtypes.contains(types[i])){ return false; } + } + return true; +} + +bool NativeWindowObject::showTitlebar(){ + QList<NativeWindowObject::Type> types = this->property(NativeWindowObject::WinTypes).value<QList < NativeWindowObject::Type> >(); + QList<NativeWindowObject::Type> badtypes; + badtypes << NativeWindowObject::T_DESKTOP << NativeWindowObject::T_TOOLBAR << NativeWindowObject::T_MENU \ + << NativeWindowObject::T_SPLASH << NativeWindowObject::T_DROPDOWN_MENU << NativeWindowObject::T_POPUP_MENU \ + << NativeWindowObject::T_NOTIFICATION << NativeWindowObject::T_COMBO << NativeWindowObject::T_DND; + for(int i=0; i<types.length(); i++){ + if(badtypes.contains(types[i])){ return false; } + } + return true; +} + +bool NativeWindowObject::showGenericButton(){ + QList<NativeWindowObject::Type> types = this->property(NativeWindowObject::WinTypes).value<QList < NativeWindowObject::Type> >(); + QList<NativeWindowObject::Type> badtypes; + badtypes << NativeWindowObject::T_DESKTOP << NativeWindowObject::T_TOOLBAR << NativeWindowObject::T_MENU \ + << NativeWindowObject::T_SPLASH << NativeWindowObject::T_DROPDOWN_MENU << NativeWindowObject::T_POPUP_MENU \ + << NativeWindowObject::T_NOTIFICATION << NativeWindowObject::T_COMBO << NativeWindowObject::T_DND; + for(int i=0; i<types.length(); i++){ + if(badtypes.contains(types[i])){ return false; } + } + return true; +} + +bool NativeWindowObject::showWindowFrame(){ + QList<NativeWindowObject::Type> types = this->property(NativeWindowObject::WinTypes).value<QList < NativeWindowObject::Type> >(); + QList<NativeWindowObject::Type> badtypes; + badtypes << NativeWindowObject::T_DESKTOP << NativeWindowObject::T_TOOLBAR << NativeWindowObject::T_MENU \ + << NativeWindowObject::T_SPLASH << NativeWindowObject::T_DROPDOWN_MENU << NativeWindowObject::T_POPUP_MENU \ + << NativeWindowObject::T_NOTIFICATION << NativeWindowObject::T_COMBO << NativeWindowObject::T_DND; + for(int i=0; i<types.length(); i++){ + if(badtypes.contains(types[i])){ return false; } + } + return true; +} + +//QML Window States +bool NativeWindowObject::isSticky(){ + return (this->property(NativeWindowObject::Workspace).toInt()<0 || this->property(NativeWindowObject::States).value<QList<NativeWindowObject::State> >().contains(NativeWindowObject::S_STICKY) ); +} + +bool NativeWindowObject::isVisible(){ + return (this->property(NativeWindowObject::Visible).toBool() ); +} + +int NativeWindowObject::workspace(){ + return this->property(NativeWindowObject::Workspace).toInt(); +} + +//QML Geometry reporting +QRect NativeWindowObject::frameGeometry(){ + return geometry(); +} + +QRect NativeWindowObject::imageGeometry(){ + QRect geom( this->property(NativeWindowObject::GlobalPos).toPoint(), this->property(NativeWindowObject::Size).toSize() ); + return geom; +} + +void NativeWindowObject::updateGeometry(int x, int y, int width, int height, bool now){ + // Full frame+window geometry - go ahead and pull it apart and only update the interior window geom + QList<int> fgeom = this->property(NativeWindowObject::FrameExtents).value<QList<int> >(); + if(fgeom.isEmpty()){ fgeom << 0<<0<<0<<0; } //just in case (left/right/top/bottom) + QPoint pos(x+fgeom[0], y+fgeom[2]); + QSize sz(width-fgeom[0]-fgeom[1], height-fgeom[2]-fgeom[3]); + newgeom = QRect(pos, sz); + if(!now){ + //qDebug() << "Update Geometry:" << fgeom << QRect(x,y,width,height) << pos << sz; + //requestProperties(QList<NativeWindowObject::Property>() << NativeWindowObject::GlobalPos << NativeWindowObject::Size, QList<QVariant>() << pos << sz); + if(!geomTimer->isActive()){ geomTimer->start(); } + }else{ + sendNewGeom(); + } +} + +// ==== PUBLIC SLOTS === +void NativeWindowObject::toggleVisibility(){ + setProperty(NativeWindowObject::Visible, !property(NativeWindowObject::Visible).toBool() ); +} + +void NativeWindowObject::requestClose(){ + emit RequestClose(winid); +} + +void NativeWindowObject::requestKill(){ + emit RequestKill(winid); +} + +void NativeWindowObject::requestPing(){ + emit RequestPing(winid); +} + +// ==== PRIVATE ==== +void NativeWindowObject::emitSinglePropChanged(NativeWindowObject::Property prop){ + //Simple switch to emit the QML-usable signals as properties are changed + switch(prop){ + case NativeWindowObject::Name: + emit nameChanged(); break; + case NativeWindowObject::Title: + emit titleChanged(); + if(this->property(NativeWindowObject::ShortTitle).toString().isEmpty()){ emit shortTitleChanged(); } + break; + case NativeWindowObject::ShortTitle: + emit shortTitleChanged(); break; + case NativeWindowObject::Icon: + emit iconChanged(); break; + case NativeWindowObject::Workspace: + case NativeWindowObject::States: + emit stickyChanged(); break; + case NativeWindowObject::WinImage: + emit winImageChanged(); break; + case NativeWindowObject::WinTypes: + emit winTypeChanged(); break; + case NativeWindowObject::Visible: + emit visibilityChanged(); break; + default: + break; //do nothing otherwise + } +} + +void NativeWindowObject::sendNewGeom(){ + QList<NativeWindowObject::Property> props; props << NativeWindowObject::GlobalPos << NativeWindowObject::Size; + QList<QVariant> vals; vals << newgeom.topLeft() << newgeom.size(); + requestProperties(props, vals); + setProperties(props,vals); + emit VerifyNewGeometry(winid); +} diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/src-cpp/NativeWindowObject.h b/src-qt5/core/lumina-desktop-unified/src-desktop/src-cpp/NativeWindowObject.h new file mode 100644 index 00000000..87df1f10 --- /dev/null +++ b/src-qt5/core/lumina-desktop-unified/src-desktop/src-cpp/NativeWindowObject.h @@ -0,0 +1,178 @@ +//=========================================== +// Lumina-DE source code +// Copyright (c) 2017-2018, Ken Moore +// Available under the 3-clause BSD license +// See the LICENSE file for full details +//=========================================== +// This is a container object for setting/announcing changes +// in a native window's properties. +// The WM will usually run the "setProperty" function on this object, +// and any other classes/widgets which watch this window can act appropriatly after-the-fact +// Non-WM classes should use the "Request" signals to ask the WM to do something, and listen for changes later +//=========================================== +#ifndef _LUMINA_SOURCES_NATIVE_WINDOW_OBJECT_H +#define _LUMINA_SOURCES_NATIVE_WINDOW_OBJECT_H +#include "global-includes.h" + +class NativeWindowObject : public QObject{ + Q_OBJECT + // QML-ACCESSIBLE PROPERTIES + Q_PROPERTY( QString winImage READ winImage NOTIFY winImageChanged) + Q_PROPERTY( QString name READ name NOTIFY nameChanged) + Q_PROPERTY( QString title READ title NOTIFY titleChanged) + Q_PROPERTY( QString shortTitle READ shortTitle NOTIFY shortTitleChanged) + Q_PROPERTY( QString icon READ icon NOTIFY iconChanged) + Q_PROPERTY( bool sticky READ isSticky NOTIFY stickyChanged) + Q_PROPERTY(bool isVisible READ isVisible NOTIFY visibilityChanged) + //Button/Titlebar visibility + Q_PROPERTY( bool showCloseButton READ showCloseButton NOTIFY winTypeChanged) + Q_PROPERTY( bool showMinButton READ showMinButton NOTIFY winTypeChanged) + Q_PROPERTY( bool showMaxButton READ showMaxButton NOTIFY winTypeChanged) + Q_PROPERTY( bool showTitlebar READ showTitlebar NOTIFY winTypeChanged) + Q_PROPERTY( bool showGenericButton READ showGenericButton NOTIFY winTypeChanged) + Q_PROPERTY( bool showWindowFrame READ showWindowFrame NOTIFY winTypeChanged) + //Geometry information + Q_PROPERTY( QRect frameGeometry READ frameGeometry NOTIFY geomChanged) + Q_PROPERTY( QRect imageGeometry READ imageGeometry NOTIFY geomChanged) + +public: + enum State{ S_MODAL, S_STICKY, S_MAX_VERT, S_MAX_HORZ, S_SHADED, S_SKIP_TASKBAR, S_SKIP_PAGER, S_HIDDEN, S_FULLSCREEN, S_ABOVE, S_BELOW, S_ATTENTION }; + enum Type{T_DESKTOP, T_DOCK, T_TOOLBAR, T_MENU, T_UTILITY, T_SPLASH, T_DIALOG, T_DROPDOWN_MENU, T_POPUP_MENU, T_TOOLTIP, T_NOTIFICATION, T_COMBO, T_DND, T_NORMAL }; + enum Action {A_MOVE, A_RESIZE, A_MINIMIZE, A_SHADE, A_STICK, A_MAX_VERT, A_MAX_HORZ, A_FULLSCREEN, A_CHANGE_DESKTOP, A_CLOSE, A_ABOVE, A_BELOW}; + enum Location { TOP_LEFT, TOP, TOP_RIGHT, RIGHT, BOTTOM_RIGHT, BOTTOM, BOTTOM_LEFT, LEFT }; + Q_ENUM(Location) + + enum Property{ /*QVariant Type*/ + None=0, /*null*/ + MinSize=1, /*QSize*/ + MaxSize=2, /*QSize*/ + Size=3, /*QSize*/ + GlobalPos=4, /*QPoint*/ + Title=5, /*QString*/ + ShortTitle=6, /*QString*/ + Icon=7, /*QIcon*/ + Name=8, /*QString*/ + Workspace=9, /*int*/ + States=10, /*QList<NativeWindowObject::State> : Current state of the window */ + WinTypes=11, /*QList<NativeWindowObject::Type> : Current type of window (typically does not change)*/ + WinActions=12, /*QList<NativeWindowObject::Action> : Current actions that the window allows (Managed/set by the WM)*/ + FrameExtents=13, /*QList<int> : [Left, Right, Top, Bottom] in pixels */ + RelatedWindows=14, /* QList<WId> - better to use the "isRelatedTo(WId)" function instead of reading this directly*/ + Active=15, /*bool*/ + Visible=16, /*bool*/ + WinImage=17 /*QImage*/ + }; + + static QList<NativeWindowObject::Property> allProperties(){ + //Return all the available properties (excluding "None" and "FrameExtents" (WM control only) ) + QList<NativeWindowObject::Property> props; + props << MinSize << MaxSize << Size << GlobalPos << Title << ShortTitle << Icon << Name << Workspace \ + << States << WinTypes << WinActions << RelatedWindows << Active << Visible; + return props; + }; + + static void RegisterType(); + + NativeWindowObject(WId id = 0); + ~NativeWindowObject(); + + void addFrameWinID(WId); + void addDamageID(unsigned int); + bool isRelatedTo(WId); + + WId id(); + WId frameId(); + unsigned int damageId(); + + //QWindow* window(); + + QVariant property(NativeWindowObject::Property); + void setProperty(NativeWindowObject::Property, QVariant, bool force = false); + void setProperties(QList<NativeWindowObject::Property>, QList<QVariant>, bool force = false); + void requestProperty(NativeWindowObject::Property, QVariant, bool force = false); + void requestProperties(QList<NativeWindowObject::Property>, QList<QVariant>, bool force = false); + + Q_INVOKABLE QRect geometry(); //this returns the "full" geometry of the window (window + frame) + void setGeometryNow(QRect geom); + + // QML ACCESS FUNCTIONS (shortcuts for particular properties in a format QML can use) + Q_INVOKABLE QString winImage(); + Q_INVOKABLE QString name(); + Q_INVOKABLE QString title(); + Q_INVOKABLE QString shortTitle(); + Q_INVOKABLE QString icon(); + //QML Button states + Q_INVOKABLE bool showCloseButton(); + Q_INVOKABLE bool showMaxButton(); + Q_INVOKABLE bool showMinButton(); + Q_INVOKABLE bool showTitlebar(); + Q_INVOKABLE bool showGenericButton(); + Q_INVOKABLE bool showWindowFrame(); + //QML Window States + Q_INVOKABLE bool isSticky(); + Q_INVOKABLE bool isVisible(); + Q_INVOKABLE int workspace(); + + //QML Geometry reporting + Q_INVOKABLE QRect frameGeometry(); + Q_INVOKABLE QRect imageGeometry(); + Q_INVOKABLE void updateGeometry(int x, int y, int width, int height, bool now = false); //For QML to change the current window position + +public slots: + Q_INVOKABLE void toggleVisibility(); + Q_INVOKABLE void requestClose(); //ask the app to close the window (may/not depending on activity) + Q_INVOKABLE void requestKill(); //ask the WM to kill the app associated with this window (harsh - only use if not responding) + Q_INVOKABLE void requestPing(); //ask the app if it is still active (a WindowNotResponding signal will get sent out if there is no reply); + +private: + QHash <NativeWindowObject::Property, QVariant> hash; + //QWindow *WIN; + WId winid, frameid; + QList<WId> relatedTo; + unsigned int dmgID, dmg, icodmg; + //Collation/Delay for window resize events + QTimer *geomTimer; + QRect newgeom; + + void emitSinglePropChanged(NativeWindowObject::Property); + +private slots: + void sendNewGeom(); + +signals: + //General Notifications + void PropertiesChanged(QList<NativeWindowObject::Property>, QList<QVariant>); + void RequestPropertiesChange(WId, QList<NativeWindowObject::Property>, QList<QVariant>); + void WindowClosed(WId); + void WindowNotResponding(WId); //will be sent out if a window does not respond to a ping request + + //Action Requests (not automatically emitted - typically used to ask the WM to do something) + //Note: "WId" should be the NativeWindowObject id() + void RequestClose(WId); //Close the window + void RequestKill(WId); //Kill the window/app (usually from being unresponsive) + void RequestPing(WId); //Verify that the window is still active (such as not closing after a request + void RequestReparent(WId, WId, QPoint); //client window, frame window, relative origin point in frame + void VerifyNewGeometry(WId); + // System Tray Icon Embed/Unembed Requests + //void RequestEmbed(WId, QWidget*); + //void RequestUnEmbed(WId, QWidget*); + + // QML update signals + void winImageChanged(); + void nameChanged(); + void titleChanged(); + void shortTitleChanged(); + void iconChanged(); + void stickyChanged(); + void winTypeChanged(); + void geomChanged(); + void visibilityChanged(); +}; + +// Declare the enumerations as Qt MetaTypes +Q_DECLARE_METATYPE(NativeWindowObject::Type); +Q_DECLARE_METATYPE(NativeWindowObject::Action); +Q_DECLARE_METATYPE(NativeWindowObject::State); +Q_DECLARE_METATYPE(NativeWindowObject::Property); + +#endif diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/src-cpp/PanelObject.cpp b/src-qt5/core/lumina-desktop-unified/src-desktop/src-cpp/PanelObject.cpp index 471da58f..e8830bde 100644 --- a/src-qt5/core/lumina-desktop-unified/src-desktop/src-cpp/PanelObject.cpp +++ b/src-qt5/core/lumina-desktop-unified/src-desktop/src-cpp/PanelObject.cpp @@ -5,6 +5,8 @@ // See the LICENSE file for full details //=========================================== #include "PanelObject.h" +#include <global-objects.h> + #include <QQmlEngine> #include <QDebug> @@ -28,6 +30,13 @@ int PanelObject::x(){ return geom.x(); } int PanelObject::y(){ return geom.y(); } int PanelObject::width(){ return geom.width(); } int PanelObject::height(){ return geom.height(); } +bool PanelObject::isVertical(){ + return ( geom.width() < geom.height() ); +} + +QStringList PanelObject::plugins(){ + return panel_plugins; +} void PanelObject::setBackground(QString fileOrColor){ if(bg!=fileOrColor){ @@ -42,3 +51,70 @@ void PanelObject::setGeometry( QRect newgeom ){ emit geomChanged(); } } + +void PanelObject::setPlugins( QStringList plist){ + //Iterate through the list and find the URL's for the files + QStringList dirs; dirs << ":/qml/plugins/"; //add local directories here + for(int i=0; i<plist.length(); i++){ + bool found = false; + for(int j=0; j<dirs.length() && !found; j++){ + if(QFile::exists(dirs[j]+plist[i]+".qml")){ + plist[i] = QUrl::fromLocalFile(dirs[j]+plist[i]+".qml").url(); + found = true; + } + } + if(!found){ + qWarning() << "Could not find panel plugin on system:" << plist[i]; + plist.removeAt(i); + i--; + } + } + //Now update the internal list if it has changed + if(panel_plugins != plist){ + panel_plugins = plist; + this->emit pluginsChanged(); + } +} + +void PanelObject::syncWithSettings(QRect parent_geom){ + //Read off all the settings + QString id = panel_id.section("/",-1); //last section (allow for prefixes to distinguish multiple monitors with the same profile but different screens) + //qDebug() << "Sync Panel Settings:" << panel_id << id << parent_geom; + QString anchor = DesktopSettings::instance()->value(DesktopSettings::Panels, id+"/anchor", "bottom").toString().toLower(); + QString align = DesktopSettings::instance()->value(DesktopSettings::Panels, id+"/align", "center").toString().toLower(); + double length = DesktopSettings::instance()->value(DesktopSettings::Panels, id+"/length_percent", 100).toDouble()/100.0; + double width = DesktopSettings::instance()->value(DesktopSettings::Panels, id+"/width_font_percent", 2.1).toDouble(); + width = qRound(width * QApplication::fontMetrics().height() ); + this->setBackground( DesktopSettings::instance()->value(DesktopSettings::Panels, id+"/background", "rgba(0,0,0,120)").toString() ); + // qDebug() << "Update Panel:" << panel_id << id << anchor+"/"+align << length << width; + //Now calculate the geometry of the panel + QRect newgeom; + //Figure out the size of the panel + if(anchor=="top" || anchor=="bottom"){ newgeom.setWidth( parent_geom.width()*length ); newgeom.setHeight(width); } + else{ newgeom.setWidth(width); newgeom.setHeight(parent_geom.height()*length); } + //qDebug() << " - Size:" << newgeom; + //Now figure out the location of the panel + if(align=="left" || align=="top"){ + if(anchor=="top" || anchor=="left"){ newgeom.moveTopLeft(QPoint(0,0)); } + else if(anchor=="right"){ newgeom.moveTopRight(QPoint(parent_geom.width(), 0)); } + else{ newgeom.moveBottomLeft(QPoint(0, parent_geom.height()) ); } //bottom by default + + }else if(align=="right" || align=="bottom"){ + if(anchor=="top"){ newgeom.moveTopRight(QPoint(parent_geom.width(),0)); } + else if(anchor=="left"){ newgeom.moveBottomLeft(QPoint(0, parent_geom.height())); } + else if(anchor=="right"){ newgeom.moveBottomRight(QPoint(parent_geom.width(), parent_geom.height())); } + else{ newgeom.moveBottomRight(QPoint(parent_geom.width(), parent_geom.height()) ); } + + }else{ //center + if(anchor=="top"){ newgeom.moveTopLeft(QPoint( (parent_geom.width()-newgeom.width())/2,0)); } + else if(anchor=="left"){ newgeom.moveTopLeft(QPoint(0, (parent_geom.height()-newgeom.height())/2 )); } + else if(anchor=="right"){ newgeom.moveTopRight(QPoint(parent_geom.width(), (parent_geom.height()-newgeom.height())/2 )); } + else{ newgeom.moveBottomLeft(QPoint( (parent_geom.width()-newgeom.width())/2, parent_geom.height()) ); } + } + //qDebug() << " - Calculated Geometry (relative to parent):" << newgeom; + //Note: newgeom is currently in parent-relative coordinates (not global) + newgeom.translate(parent_geom.x(), parent_geom.y()); + //qDebug() << " - Calculated Geometry (global):" << newgeom; + this->setGeometry(newgeom); //shift to global coordinates + this->setPlugins( DesktopSettings::instance()->value(DesktopSettings::Panels, id+"/plugins", QStringList()).toStringList() ); +} diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/src-cpp/PanelObject.h b/src-qt5/core/lumina-desktop-unified/src-desktop/src-cpp/PanelObject.h index a788fa07..945deec0 100644 --- a/src-qt5/core/lumina-desktop-unified/src-desktop/src-cpp/PanelObject.h +++ b/src-qt5/core/lumina-desktop-unified/src-desktop/src-cpp/PanelObject.h @@ -20,10 +20,13 @@ class PanelObject : public QObject { Q_PROPERTY( int y READ y NOTIFY geomChanged) Q_PROPERTY( int width READ width NOTIFY geomChanged) Q_PROPERTY( int height READ height NOTIFY geomChanged) + Q_PROPERTY( bool isVertical READ isVertical NOTIFY geomChanged) + Q_PROPERTY( QStringList plugins READ plugins NOTIFY pluginsChanged) private: QString panel_id, bg; QRect geom; + QStringList panel_plugins; public: PanelObject(QString id = "", QObject *parent = 0); @@ -36,14 +39,19 @@ public: Q_INVOKABLE int y(); Q_INVOKABLE int width(); Q_INVOKABLE int height(); + Q_INVOKABLE bool isVertical(); + Q_INVOKABLE QStringList plugins(); public slots: void setBackground(QString fileOrColor); void setGeometry(QRect newgeom); + void syncWithSettings(QRect parent_geom); + void setPlugins(QStringList plist); signals: void backgroundChanged(); void geomChanged(); + void pluginsChanged(); }; #endif diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/src-cpp/RootDesktopObject.cpp b/src-qt5/core/lumina-desktop-unified/src-desktop/src-cpp/RootDesktopObject.cpp index 5750ac2d..d9a81f54 100644 --- a/src-qt5/core/lumina-desktop-unified/src-desktop/src-cpp/RootDesktopObject.cpp +++ b/src-qt5/core/lumina-desktop-unified/src-desktop/src-cpp/RootDesktopObject.cpp @@ -8,12 +8,16 @@ #include <QQmlEngine> #include <QApplication> #include <QScreen> - +#include <global-objects.h> #include <QDebug> // === PUBLIC === RootDesktopObject::RootDesktopObject(QObject *parent) : QObject(parent){ + last_window_up = 0; updateScreens(); //make sure the internal list is updated right away + connect(this, SIGNAL(changePanels(QStringList)), this, SLOT(setPanels(QStringList)) ); + currentTimeTimer = new QTimer(this); + connect(currentTimeTimer, SIGNAL(timeout()), this, SLOT(updateCurrentTime()) ); } RootDesktopObject::~RootDesktopObject(){ @@ -27,6 +31,8 @@ void RootDesktopObject::RegisterType(){ qmlRegisterType<RootDesktopObject>("Lumina.Backend.RootDesktopObject", 2, 0, "RootDesktopObject"); //Also register any types that are needed by this class ScreenObject::RegisterType(); + NativeWindowObject::RegisterType(); + OSInterface::RegisterType(); } RootDesktopObject* RootDesktopObject::instance(){ @@ -36,14 +42,14 @@ RootDesktopObject* RootDesktopObject::instance(){ //QML Read Functions QStringList RootDesktopObject::screens(){ - qDebug() << "Request Screens:" << s_objects.length(); + //qDebug() << "Request Screens:" << s_objects.length(); QStringList names; for(int i=0; i<s_objects.length(); i++){ names << s_objects[i]->name(); } return names; } ScreenObject* RootDesktopObject::screen(QString id){ - qDebug() << "Got Screen Request:" << id; + //qDebug() << "Got Screen Request:" << id; for(int i=0; i<s_objects.length(); i++){ if(s_objects[i]->name()==id){ return s_objects[i]; } } @@ -72,7 +78,7 @@ QStringList RootDesktopObject::windows(){ return names; } -NativeWindow* RootDesktopObject::window(QString id){ +NativeWindowObject* RootDesktopObject::window(QString id){ //qDebug() << "Got Panel Request:" << id; WId chk = id.toInt(); //numerical ID's in this case for(int i=0; i<window_objects.length(); i++){ @@ -81,26 +87,159 @@ NativeWindow* RootDesktopObject::window(QString id){ return 0; } +QStringList RootDesktopObject::trayWindows(){ + //qDebug() << "Request Panels:" << panel_objects.length(); + QStringList names; + for(int i=0; i<tray_window_objects.length(); i++){ names << QString::number(tray_window_objects[i]->id()); } + return names; +} + +NativeWindowObject* RootDesktopObject::trayWindow(QString id){ + //qDebug() << "Got Panel Request:" << id; + WId chk = id.toInt(); //numerical ID's in this case + for(int i=0; i<tray_window_objects.length(); i++){ + if(tray_window_objects[i]->id()==chk){ return tray_window_objects[i]; } + } + return 0; +} + +bool RootDesktopObject::hasTrayWindows(){ + return !tray_window_objects.isEmpty(); +} + +QString RootDesktopObject::currentTime(){ + return currentTimeString; +} + +QDateTime RootDesktopObject::currentDateTime(){ + return currentDateTimeStruct; +} + +OSInterface* RootDesktopObject::os_interface(){ + return OSInterface::instance(); +} + void RootDesktopObject::setPanels(QList<PanelObject*> list){ panel_objects = list; emit panelsChanged(); } -void RootDesktopObject::setWindows(QList<NativeWindow*> list){ +void RootDesktopObject::setPanels(QStringList ids){ + //Make this thread-safe for object creation + if(this->thread() != QThread::currentThread()){ + //use internal signal/slot combo to change threads + this->emit changePanels(ids); + return; + } + //qDebug() << "GOT PANEL CHANGE:" << ids; + //Get the current bounding rectangle for the session + QRect total; + bool change = false; + for(int i=0; i<=s_objects.length(); i++){ + QRect geom; + QString prefix; + if(i==s_objects.length()){ + geom = total; //session geometry + prefix="session/"; + }else{ + geom = s_objects[i]->geometry(); + total = total.united(geom); + prefix=s_objects[i]->name()+"/"; + } + QStringList newids = ids.filter(prefix); + //qDebug() << " Check Panel IDs:" << prefix << newids << ids; + //First update/remove any current panel objects + for(int i=0; i<panel_objects.length(); i++){ + if(newids.contains(panel_objects[i]->name()) ){ + //qDebug() << " - Update Existing Panel:" << panel_objects[i]->name(); + newids.removeAll(panel_objects[i]->name()); //already handled + panel_objects[i]->syncWithSettings(geom); + }else if(panel_objects[i]->name().startsWith(prefix) ){ + //qDebug() << " - Remove Existing Panel:" << panel_objects[i]->name(); + panel_objects.takeAt(i)->deleteLater(); + i--; + change = true; //list changed + } + } + //Now create any new panel objects as needed + for(int i=0; i<newids.length(); i++){ + //qDebug() << " - Create Panel:" << newids[i]; + PanelObject *tmp = new PanelObject(newids[i], this); + tmp->syncWithSettings(geom); + panel_objects << tmp; + change = true; //list changed + } + } //end loop over screens+session + if(change){ emit panelsChanged(); } +} + +void RootDesktopObject::setWindows(QList<NativeWindowObject*> list){ window_objects = list; emit windowsChanged(); + mousePositionChanged(true); +} + +void RootDesktopObject::setTrayWindows(QList<NativeWindowObject*> list){ + tray_window_objects = list; + emit trayWindowsChanged(); + mousePositionChanged(true); +} + +void RootDesktopObject::updateCurrentTimeFormat(QString fmt){ + //sanitize the time format as needed + if(fmt.contains("z")){ fmt.replace("z",""); } //do not allow millisecond updates - too fast for the desktop + fmt = fmt.simplified(); + //Verify that anything has changed first + if(currentTimeFormat == fmt && currentTimeTimer->isActive()){ return; } //nothing changed + if(currentTimeTimer->isActive()){ currentTimeTimer->stop(); } //make sure this does not trigger during the changeover + currentTimeFormat = fmt; + int interval = 1000; //default to 1 second intervals + //Adjust the refresh time for the clock based on the smallest unit requested + if(fmt.contains("s")){ interval=500; } //1/2 second pings for 1-second displays + else if(fmt.contains("m") || currentTimeFormat.isEmpty()){ interval = 5000; } //5 second pings for 1-minute displays + else if(fmt.contains("h")){ interval = 30000; } //30 second pings for 1-hour displays + currentTimeTimer->setInterval(interval); + updateCurrentTime(); //refresh the currently-available time + QTimer::singleShot(0,currentTimeTimer, SLOT(start()) );//start the update timer } void RootDesktopObject::logout(){ - emit startLogout(); + //Emit the logout signal in a few ms (let the display close/sync first) + QTimer::singleShot(50, this, SIGNAL(startLogout())); } void RootDesktopObject::lockscreen(){ emit lockScreen(); } -void RootDesktopObject::mousePositionChanged(){ +void RootDesktopObject::mousePositionChanged(bool lowerall){ emit mouseMoved(); + // Go through the transparent windows (in order of high->low in stack) + // and raise/lower the transparent overlays as needed + QPoint pos = QCursor::pos(); + for(int i=window_objects.length()-1; i>=0; i--){ + if(window_objects[i]->geometry().contains(pos) ){ + if(last_window_up!= window_objects[i]){ + if(last_window_up!=0){ Lumina::NWS->lowerWindow(last_window_up); } + Lumina::NWS->raiseWindow(window_objects[i]); + last_window_up = window_objects[i]; + } + if(!lowerall){ return; } //found the currently-hovered window + }else if(lowerall){ + Lumina::NWS->lowerWindow(window_objects[i]); + } + } + //failover for when no window has the mouse over it (lower all of them) + if(last_window_up!=0 && !lowerall){ Lumina::NWS->lowerWindow(last_window_up); } +} + +void RootDesktopObject::launchApp(QString appOrPath){ + emit launchApplication(appOrPath); +} + +//C++ Access Functions (simplifications for the QML ones) +QList<NativeWindowObject*> RootDesktopObject::windowObjects(){ + return window_objects; } // === PUBLIC SLOTS === @@ -129,5 +268,26 @@ void RootDesktopObject::ChangeWallpaper(QString screen, QString value){ } } +QString RootDesktopObject::CurrentWallpaper(QString screen){ + for(int i=0; i<s_objects.length(); i++){ + if(s_objects[i]->name()==screen){ return s_objects[i]->background();} + } + return ""; //unknown +} + + // === PRIVATE === + +// === PRIVATE SLOTS === +void RootDesktopObject::updateCurrentTime(){ + QDateTime DT = QDateTime::currentDateTime(); + QString tmp; + if(currentTimeFormat.isEmpty()){ tmp = DT.toString(Qt::DefaultLocaleShortDate); } + else{ tmp = DT.toString(currentTimeFormat); } + if(tmp!=currentTimeString){ //prevent sending signals to update the interface if nothing changed + currentDateTimeStruct = DT; + currentTimeString = tmp; + emit currentTimeChanged(); + } +} diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/src-cpp/RootDesktopObject.h b/src-qt5/core/lumina-desktop-unified/src-desktop/src-cpp/RootDesktopObject.h index 838b5f7d..3c525848 100644 --- a/src-qt5/core/lumina-desktop-unified/src-desktop/src-cpp/RootDesktopObject.h +++ b/src-qt5/core/lumina-desktop-unified/src-desktop/src-cpp/RootDesktopObject.h @@ -8,18 +8,20 @@ //=========================================== #ifndef _LUMINA_DESKTOP_QML_BACKEND_ROOT_DESKTOP_OBJECT_H #define _LUMINA_DESKTOP_QML_BACKEND_ROOT_DESKTOP_OBJECT_H -#include <QObject> -#include <QList> #include <global-includes.h> - -#include "ScreenObject.h" +#include <ScreenObject.h> +#include <QThread> class RootDesktopObject : public QObject{ Q_OBJECT //Define all the QML Properties here (interface between QML and the C++ methods below) Q_PROPERTY( QStringList screens READ screens NOTIFY screensChanged) Q_PROPERTY( QStringList panels READ panels NOTIFY panelsChanged) - Q_PROPERTY( QStringList windows READ windows NOTIFY windowsChanged); + Q_PROPERTY( QStringList windows READ windows NOTIFY windowsChanged) + Q_PROPERTY( QStringList trayWindows READ trayWindows NOTIFY trayWindowsChanged) + Q_PROPERTY( bool hasTrayWindows READ hasTrayWindows NOTIFY trayWindowsChanged) + Q_PROPERTY( QString currentTime READ currentTime NOTIFY currentTimeChanged); + Q_PROPERTY( QDateTime currentDateTime READ currentDateTime NOTIFY currentTimeChanged); public: //main contructor/destructor @@ -37,35 +39,65 @@ public: Q_INVOKABLE QStringList panels(); Q_INVOKABLE PanelObject* panel(QString id); Q_INVOKABLE QStringList windows(); - Q_INVOKABLE NativeWindow* window(QString id); + Q_INVOKABLE NativeWindowObject* window(QString id); + Q_INVOKABLE QStringList trayWindows(); + Q_INVOKABLE NativeWindowObject* trayWindow(QString id); + Q_INVOKABLE bool hasTrayWindows(); + Q_INVOKABLE QString currentTime(); + Q_INVOKABLE QDateTime currentDateTime(); - void setPanels(QList<PanelObject*> list); - void setWindows(QList<NativeWindow*> list); + //QML Globals Access + Q_INVOKABLE OSInterface* os_interface(); //QML Access Functions Q_INVOKABLE void logout(); Q_INVOKABLE void lockscreen(); - Q_INVOKABLE void mousePositionChanged(); + Q_INVOKABLE void mousePositionChanged(bool lowerall = false); + Q_INVOKABLE void launchApp(QString appOrPath); + + //C++ Access Functions (simplifications for the QML ones) + QList<NativeWindowObject*> windowObjects(); private: QList<ScreenObject*> s_objects; QList<PanelObject*> panel_objects; - QList<NativeWindow*> window_objects; + QList<NativeWindowObject*> window_objects; + QList<NativeWindowObject*> tray_window_objects; + QPointer<NativeWindowObject> last_window_up; + QTimer *currentTimeTimer; + QString currentTimeFormat, currentTimeString; + QDateTime currentDateTimeStruct; public slots: void updateScreens(); //rescan/update screen objects void ChangeWallpaper(QString screen, QString); + QString CurrentWallpaper(QString screen); + + void setPanels(QList<PanelObject*> list); + void setPanels(QStringList ids); + QList<PanelObject*> panelObjectList(){ return panel_objects; } + + void setWindows(QList<NativeWindowObject*> list); + void setTrayWindows(QList<NativeWindowObject*> list); + + void updateCurrentTimeFormat(QString); private slots: + void updateCurrentTime(); signals: void screensChanged(); void panelsChanged(); void windowsChanged(); + void trayWindowsChanged(); + void currentTimeChanged(); void startLogout(); void mouseMoved(); void lockScreen(); + void launchApplication(QString); + //Internal signals for thread-safety + void changePanels(QStringList); }; #endif diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/src-cpp/ScreenObject.cpp b/src-qt5/core/lumina-desktop-unified/src-desktop/src-cpp/ScreenObject.cpp index 82622403..c754906d 100644 --- a/src-qt5/core/lumina-desktop-unified/src-desktop/src-cpp/ScreenObject.cpp +++ b/src-qt5/core/lumina-desktop-unified/src-desktop/src-cpp/ScreenObject.cpp @@ -10,6 +10,7 @@ ScreenObject::ScreenObject(QScreen *scrn, QObject *parent) : QObject(parent){ bg_screen = scrn; + connect(this, SIGNAL(changePanels(QStringList)), this, SLOT(setPanels(QStringList)) ); } void ScreenObject::RegisterType(){ @@ -22,7 +23,7 @@ void ScreenObject::RegisterType(){ } QString ScreenObject::name(){ return bg_screen->name(); } -QString ScreenObject::background(){ qDebug() << "Got Background:" << bg_screen->name() << bg << bg_screen->geometry(); return bg; } +QString ScreenObject::background(){ return bg; } int ScreenObject::x(){ return bg_screen->geometry().x(); } int ScreenObject::y(){ return bg_screen->geometry().y(); } int ScreenObject::width(){ return bg_screen->geometry().width(); } @@ -40,6 +41,37 @@ void ScreenObject::setPanels(QList<PanelObject*> list){ emit panelsChanged(); } +void ScreenObject::setPanels(QStringList ids){ + //Make this thread-safe for object creation + if(this->thread() != QThread::currentThread()){ + //use internal signal/slot combo to change threads + this->emit changePanels(ids); + return; + } + + //First update/remove any current panel objects + bool change = false; + for(int i=0; i<panel_objects.length(); i++){ + if(ids.contains(panel_objects[i]->name()) ){ + ids.removeAll(panel_objects[i]->name()); //already handled + panel_objects[i]->syncWithSettings(bg_screen->geometry()); + }else{ + panel_objects.takeAt(i)->deleteLater(); + i--; + change = true; //list changed + } + } + //Now create any new panel objects as needed + for(int i=0; i<ids.length(); i++){ + PanelObject *tmp = new PanelObject(ids[i], this); + tmp->syncWithSettings(bg_screen->geometry()); + panel_objects << tmp; + change = true; //list changed + } + if(change){ emit panelsChanged(); } +} + + //QML Read Functions QStringList ScreenObject::panels(){ //qDebug() << "Request Panels:" << panel_objects.length(); diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/src-cpp/ScreenObject.h b/src-qt5/core/lumina-desktop-unified/src-desktop/src-cpp/ScreenObject.h index 1afff6d2..250c9403 100644 --- a/src-qt5/core/lumina-desktop-unified/src-desktop/src-cpp/ScreenObject.h +++ b/src-qt5/core/lumina-desktop-unified/src-desktop/src-cpp/ScreenObject.h @@ -11,6 +11,7 @@ #include <QObject> #include <QString> #include <QScreen> +#include <QThread> #include "PanelObject.h" @@ -42,16 +43,24 @@ public: Q_INVOKABLE int height(); Q_INVOKABLE QStringList panels(); Q_INVOKABLE PanelObject* panel(QString id); + Q_INVOKABLE QRect geometry(){ return bg_screen->geometry(); } void setPanels(QList<PanelObject*> list); + QList<PanelObject*> panelObjectList(){ return panel_objects; } + public slots: + void setPanels(QStringList ids); void setBackground(QString fileOrColor); signals: void backgroundChanged(); void geomChanged(); void panelsChanged(); + + //Internal signals for thread-safety + void changePanels(QStringList); + }; #endif diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/src-cpp/src-cpp.pri b/src-qt5/core/lumina-desktop-unified/src-desktop/src-cpp/src-cpp.pri index 899f4968..25bdc019 100644 --- a/src-qt5/core/lumina-desktop-unified/src-desktop/src-cpp/src-cpp.pri +++ b/src-qt5/core/lumina-desktop-unified/src-desktop/src-cpp/src-cpp.pri @@ -1,9 +1,11 @@ SOURCES *= $${PWD}/RootDesktopObject.cpp \ $${PWD}/ScreenObject.cpp \ - $${PWD}/PanelObject.cpp + $${PWD}/PanelObject.cpp \ + $${PWD}/NativeWindowObject.cpp HEADERS *= $${PWD}/RootDesktopObject.h \ $${PWD}/ScreenObject.h \ - $${PWD}/PanelObject.h + $${PWD}/PanelObject.h \ + $${PWD}/NativeWindowObject.h INCLUDEPATH *= $${PWD} diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/ContextMenu.qml b/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/ContextMenu.qml index 4ab8e156..ee98a8db 100644 --- a/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/ContextMenu.qml +++ b/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/ContextMenu.qml @@ -6,15 +6,33 @@ //=========================================== import QtQuick 2.2 import QtQuick.Window 2.2 -import QtQuick.Controls 1 +import QtQuick.Controls 2 import Lumina.Backend.RootDesktopObject 2.0 + + Menu { id: contextMenu + + MenuItem { + text: "Launch Terminal" + //iconName: "utilities-terminal" + onTriggered: { + RootObject.launchApp("application/terminal") + } + } + MenuItem { + text: "Launch File Browser" + //iconName: "user-home" + onTriggered: { + RootObject.launchApp("inode/directory") + } + } + MenuItem { text: "Lock Screen" - iconName: "system-lock-screen" + //iconName: "system-lock-screen" onTriggered: { RootObject.lockscreen() } @@ -22,7 +40,7 @@ Menu { MenuItem { text: "Logout" - iconName: "system-log-out" + //iconName: "system-log-out" onTriggered: { RootObject.logout() } diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/NativeWindow.qml b/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/NativeWindow.qml new file mode 100644 index 00000000..d75f2898 --- /dev/null +++ b/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/NativeWindow.qml @@ -0,0 +1,223 @@ +// vi: ft=qml +import QtQuick 2.0 +import QtQuick.Window 2.2 +import QtQuick.Controls 1.4 +import QtQuick.Layouts 1.3 + +import Lumina.Backend.NativeWindowObject 2.0 +import Lumina.Backend.RootDesktopObject 2.0 + +Rectangle { + property NativeWindowObject object + property string window_id + + SystemPalette { id:palette } + + id: windowFrame + visible: object.isVisible + border.width: 5 + border.color: palette.highlight + radius: 5 + color: palette.window //"transparent" + x: object.frameGeometry.x + y: object.frameGeometry.y + width: object.frameGeometry.width + height: object.frameGeometry.height + + onXChanged: { + windowFrame.object.updateGeometry(windowFrame.x, windowFrame.y, windowFrame.width, windowFrame.height) + } + onYChanged: { + windowFrame.object.updateGeometry(windowFrame.x, windowFrame.y, windowFrame.width, windowFrame.height) + } + + MouseArea { + id: resizeArea + anchors.fill: parent + drag.target: undefined + property int resizeDirection: NativeWindowObject.TOP_LEFT + property int positionX: -1 + property int positionY: -1 + + onPressed: { + //NOTE: This is only triggered for resize events + var globalP = windowFrame.mapToItem(rootCanvas, mouse.x, mouse.y) + positionX = globalP.x + positionY = globalP.y + if(positionY <= windowFrame.y + 10 ) { + if(positionX <= windowFrame.x + 10) + resizeDirection = NativeWindowObject.TOP_LEFT + else if(positionX >= windowFrame.x + windowFrame.width - 10) + resizeDirection = NativeWindowObject.TOP_RIGHT + else + resizeDirection = NativeWindowObject.TOP + }else if(positionY >= windowFrame.y + windowFrame.height - 10) { + if(positionX <= windowFrame.x + 10) + resizeDirection = NativeWindowObject.BOTTOM_LEFT + else if(positionX >= windowFrame.x + windowFrame.width - 10) + resizeDirection = NativeWindowObject.BOTTOM_RIGHT + else + resizeDirection = NativeWindowObject.BOTTOM + }else if(positionX <= windowFrame.x + 10) { + resizeDirection = NativeWindowObject.LEFT + }else if(positionX >= windowFrame.x + windowFrame.width - 10) { + resizeDirection = NativeWindowObject.RIGHT + } + //console.log("Initial X: ", positionX, "Initial Y: ", positionY); + //console.log("Initial X Frame: ", windowFrame.x, "Initial Y Frame: ", windowFrame.y); + } + + onReleased: { + positionX = -1 + positionY = -1 + //windowFrame.object.updateGeometry(windowFrame.x, windowFrame.y, windowFrame.width, windowFrame.height) + } + + onPositionChanged: { + //NOTE: This is only triggered for resize events + if(positionX != -1 && positionY != -1) { + var globalP = windowFrame.mapToItem(rootCanvas, mouse.x, mouse.y) + /*console.log("Global P: ", globalP); + console.log("Position X: ", positionX, "Position Y: ", positionY) + console.log("Old Position : ", windowFrame.x, " , ", windowFrame.y) + console.log(resizeDirection);*/ + if(resizeDirection == NativeWindowObject.TOP_LEFT) { + windowFrame.height -= globalP.y - positionY + windowFrame.width -= globalP.x - positionX + windowFrame.y = globalP.y + windowFrame.x = globalP.x + }else if(resizeDirection == NativeWindowObject.TOP_RIGHT) { + //console.log("TOP RIGHT Old Height: ", windowFrame.height, "Old Width: ", windowFrame.width) + windowFrame.height -= globalP.y - positionY + windowFrame.width += globalP.x - positionX + //console.log("New Height: ", windowFrame.height, "New Width: ", windowFrame.width) + windowFrame.y = globalP.y + //console.log("New Position : ", windowFrame.x, " , ", windowFrame.y) + }else if(resizeDirection == NativeWindowObject.TOP) { + windowFrame.height -= globalP.y - positionY + windowFrame.y = globalP.y + } else if(resizeDirection == NativeWindowObject.RIGHT) { + windowFrame.width += globalP.x - positionX + } else if(resizeDirection == NativeWindowObject.BOTTOM_RIGHT) { + windowFrame.height += globalP.y - positionY + windowFrame.width += globalP.x - positionX + } else if(resizeDirection == NativeWindowObject.BOTTOM) { + windowFrame.height += globalP.y - positionY + } else if(resizeDirection == NativeWindowObject.BOTTOM_LEFT) { + windowFrame.width -= globalP.x - positionX + windowFrame.height += globalP.y - positionY + windowFrame.x = globalP.x + } else if(resizeDirection == NativeWindowObject.LEFT) { + windowFrame.width -= globalP.x - positionX + windowFrame.x = globalP.x + } + //Set a miniumum width and height as 80x50 + if(windowFrame.width < 80) { + windowFrame.width = 80 + } + if(windowFrame.height < 50) { + windowFrame.height = 50 + } + positionY = globalP.y + positionX = globalP.x + } + windowFrame.object.updateGeometry(windowFrame.x, windowFrame.y, windowFrame.width, windowFrame.height) + } + } + + Rectangle { + id: titleBar + border.width: 0 + color: palette.window + height: 25 + anchors.top: windowFrame.top + anchors.right: windowFrame.right + anchors.left: windowFrame.left + anchors.margins: windowFrame.border.width + width: parent.width + + MouseArea { + id: dragArea + anchors.fill: parent + drag.target: windowFrame + drag.axis: Drag.XAndYAxis + //acceptedButtons: Qt.RightButton + //onClicked: contextMenu.open() + //released: { function(); } + } + + ToolButton { + id: otherButton + anchors.left: parent.left + height: parent.height + iconSource: windowFrame.object.icon + } + + Text { + anchors.horizontalCenter: parent.horizontalCenter + anchors.verticalCenter: parent.verticalCenter + color: palette.windowText + text: windowFrame.object.shortTitle + fontSizeMode: Text.Fit + } + + RowLayout { + spacing: 0 + anchors.right: parent.right + height: parent.height + + ToolButton { + id: minButton + Layout.fillHeight: true + iconName: "window-minimize" + onClicked: { windowFrame.object.toggleVisibility() } + } + + ToolButton { + id: maxButton + Layout.fillHeight: true + iconName: "window-maximize" + //onClicked: { windowFrame.object.toggleMaximize() } + } + + ToolButton { + id: closeButton + Layout.fillHeight: true + iconName: "document-close" + onClicked: { windowFrame.object.requestClose() } + } + } + } + + Image { + id: frameContents + cache: false + source: windowFrame.object.winImage + anchors.top: titleBar.bottom + anchors.bottom: parent.bottom + anchors.left: windowFrame.left + anchors.right: windowFrame.right + anchors.leftMargin: windowFrame.border.width + anchors.rightMargin: windowFrame.border.width + anchors.bottomMargin: windowFrame.border.width + width: parent.width + height: parent.height + //color: palette.window + + //Image { + //anchors.fill: frameContents + //cache: false + //source: windowFrame.object.winImage + //} + + MouseArea { + width: parent.width + height: parent.height + anchors.fill: frameContents + onClicked: { console.log(parent.mapToGlobal(mouse.x, mouse.y)); } + onPositionChanged: { + RootObject.mousePositionChanged() + } + } + } +} diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/Panel.qml b/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/Panel.qml index 846b5b55..65c8a0eb 100644 --- a/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/Panel.qml +++ b/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/Panel.qml @@ -7,20 +7,43 @@ import QtQuick 2.2 import QtQuick.Window 2.2 import QtQuick.Controls 1 +import QtQuick.Layouts 1.3 import Lumina.Backend.PanelObject 2.0 -AnimatedImage { +Rectangle { //C++ backend object - property string screen_id + property string panel_id property PanelObject object + id: panel //Normal geometries/placements - asynchronous: true - clip: true - source: object.background + color: object.background x: object.x y: object.y width: object.width height: object.height - } + + GridLayout{ + id: layout + anchors.fill: parent + //columns: parent.object.isVertical ? 1 : -1 + //rows: parent.object.isVertical ? -1 : 1 + flow: parent.isVertical ? GridLayout.TopToBottom : GridLayout.LeftToRight + //horizontalItemAlignment: parent.object.isVertical ? Grid.AlignHCenter : Qt.AlignLeft + //verticalItemAlignment: parent.object.isVertical ? Grid.AlignTop : Qt.AlignVCenter + Repeater { + model: panel.object.plugins + Loader{ + asynchronous: true + property bool vertical : layout.parent.object.isVertical + property bool isspacer : modelData.endsWith("/Spacer.qml"); + source: modelData + Layout.fillWidth : (vertical || isspacer) ? true : false + Layout.fillHeight : (vertical && ! isspacer) ? false : true + Layout.alignment : Qt.AlignVCenter | Qt.AlignHCenter + } + + } + } //end of grid layout +} diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/RootDesktop.qml b/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/RootDesktop.qml index c564ee42..7310fd50 100644 --- a/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/RootDesktop.qml +++ b/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/RootDesktop.qml @@ -17,12 +17,13 @@ //=========================================== import QtQuick 2.2 import QtQuick.Window 2.2 -import QtQuick.Controls 1 +import QtQuick.Controls 2 import "." as QML import Lumina.Backend.RootDesktopObject 2.0 import Lumina.Backend.ScreenObject 2.0 +import Lumina.Backend.NativeWindowObject 2.0 Rectangle { id: rootCanvas @@ -33,10 +34,10 @@ Rectangle { anchors.fill: rootCanvas acceptedButtons: Qt.RightButton onClicked: { - /*contextMenu.x = mouseX + contextMenu.x = mouseX contextMenu.y = mouseY - contextMenu.open() */ - contextMenu.popup() + contextMenu.open() + //contextMenu.popup() } onPositionChanged: { RootObject.mousePositionChanged() @@ -55,4 +56,24 @@ Rectangle { z: 0+index } } + + //Setup the windows + Repeater{ + model: RootObject.windows + QML.NativeWindow{ + window_id: modelData + object: RootObject.window(modelData) + z: 100+index + } + } + + //Setup the Panels + Repeater{ + model: RootObject.panels + QML.Panel{ + panel_id: modelData + object: RootObject.panel(panel_id) + z: 10100+index + } + } } diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/Screen.qml b/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/Screen.qml index 3b83653a..82e7c89d 100644 --- a/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/Screen.qml +++ b/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/Screen.qml @@ -9,6 +9,9 @@ import QtQuick.Window 2.2 import QtQuick.Controls 1 import Lumina.Backend.ScreenObject 2.0 +import Lumina.Backend.PanelObject 2.0 + +import "." as QML AnimatedImage { //C++ backend object @@ -23,4 +26,15 @@ AnimatedImage { y: object.y width: object.width height: object.height + + //Setup the Panels + Repeater{ + model: object.panels + QML.Panel{ + panel_id: modelData + object: parent.object.panel(panel_id) + z: 10000+index + } + } + } diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/plugins/Clock_Digital.qml b/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/plugins/Clock_Digital.qml new file mode 100644 index 00000000..e68788f6 --- /dev/null +++ b/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/plugins/Clock_Digital.qml @@ -0,0 +1,23 @@ +//=========================================== +// Lumina-desktop source code +// Copyright (c) 2018, Ken Moore +// Available under the 3-clause BSD license +// See the LICENSE file for full details +//=========================================== +// This is the QML plugin that displays the OS status/system tray +//=========================================== +import QtQuick 2.2 +import QtQuick.Layouts 1.3 +import QtQuick.Controls 1 + +import Lumina.Backend.RootDesktopObject 2.0 + +Label{ + anchors.fill: parent + text: RootObject.currentTime + wrapMode: Text.WordWrap + verticalAlignment: Text.AlignVCenter + horizontalAlignment: Text.AlignHCenter + rotation: parent.vertical ? 90 : 0 + transformOrigin: Item.Center +} diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/plugins/Spacer.qml b/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/plugins/Spacer.qml new file mode 100644 index 00000000..93556790 --- /dev/null +++ b/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/plugins/Spacer.qml @@ -0,0 +1,15 @@ +//=========================================== +// Lumina-desktop source code +// Copyright (c) 2018, Ken Moore +// Available under the 3-clause BSD license +// See the LICENSE file for full details +//=========================================== +// This is a tiny QML plugin for a basic Item which can be set to grow +//=========================================== +import QtQuick 2.2 +import QtQuick.Layouts 1.3 + + +Item{ + anchors.fill: parent +} diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/plugins/StatusTray.qml b/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/plugins/StatusTray.qml new file mode 100644 index 00000000..f4063ed9 --- /dev/null +++ b/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/plugins/StatusTray.qml @@ -0,0 +1,94 @@ +//=========================================== +// Lumina-desktop source code +// Copyright (c) 2018, Ken Moore +// Available under the 3-clause BSD license +// See the LICENSE file for full details +//=========================================== +// This is the QML plugin that displays the OS status/system tray +//=========================================== +import QtQuick 2.2 +import QtQuick.Layouts 1.3 +import QtQuick.Controls 1 + +import Lumina.Backend.RootDesktopObject 2.0 +import Lumina.Backend.NativeWindowObject 2.0 + +import "./status_tray" as QML + + +Item { + property int prefsize: parent.vertical ? parent.width : parent.height + id: "status_tray" + anchors.fill: parent + + GridLayout{ + anchors.fill: parent + flow: status_tray.parent.vertical ? GridLayout.TopToBottom : GridLayout.LeftToRight + //columns: vertical ? 1 : -1 + //rows: vertical ? -1 : 1 + columnSpacing: 2 + rowSpacing: 2 + + //Volume Status + QML.VolumeButton{ + //Layout.preferredHeight: status_tray.prefsize + //Layout.preferredWidth: status_tray.prefsize + Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter + } + //Network Status + QML.NetworkButton{ + //Layout.preferredHeight: status_tray.prefsize + //Layout.preferredWidth: status_tray.prefsize + Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter + } + //Battery Status + QML.BatteryButton{ + //Layout.preferredHeight: status_tray.prefsize + //Layout.preferredWidth: status_tray.prefsize + Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter + } + //Update Status + QML.UpdateButton{ + //Layout.preferredHeight: status_tray.prefsize + //Layout.preferredWidth: status_tray.prefsize + Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter + } + //System Tray Menu Button + ToolButton{ + id: "trayButton" + text: "Tray" + Layout.alignment: Qt.AlignVCenter | Qt.AlignHCenter + //iconName: "view-more-vertical" + visible: RootObject.hasTrayWindows + onClicked: trayMenu.open() + menu: Menu{ + id: "trayMenu" + //MenuItem{ text: "sample" } + //MenuItem{ text: "sample2" } + Rectangle{ color: "blue"; width: 48; height: 48 } + GridLayout{ + columns: 4 + Repeater{ + model: RootObject.trayWindows + QML.TrayIcon{ + + winObj: RootObject.trayWindow(modelData) + parent: trayMenu + Layout.preferredWidth: 48 + Layout.preferredHeight: 48 + } + } + } + } + } //end of system tray menu button + /*Repeater{ + model: RootObject.trayWindows + QML.TrayIcon{ + winObj: RootObject.trayWindow(modelData) + Layout.preferredHeight: status_tray.prefsize + Layout.preferredWidth: status_tray.prefsize + } + }*/ + } //end of layout + +} diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/plugins/plugins.pri b/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/plugins/plugins.pri new file mode 100644 index 00000000..d1939616 --- /dev/null +++ b/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/plugins/plugins.pri @@ -0,0 +1,11 @@ +#Show the QML files to lupdate for translation purposes - not for the actual build +lupdate_only{ + SOURCES *= $${PWD}/StatusTray.qml \ + $${PWD}/status_tray/TrayIcon.qml \ + $${PWD}/status_tray/VolumeButton.qml \ + $${PWD}/status_tray/NetworkButton.qml \ + $${PWD}/status_tray/BatteryButton.qml \ + $${PWD}/status_tray/UpdateButton.qml \ + $${PWD}/Clock_Digital.qml \ + $${PWD}/Spacer.qml +} diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/plugins/status_tray/BatteryButton.qml b/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/plugins/status_tray/BatteryButton.qml new file mode 100644 index 00000000..bc8ba68a --- /dev/null +++ b/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/plugins/status_tray/BatteryButton.qml @@ -0,0 +1,20 @@ +//=========================================== +// Lumina-desktop source code +// Copyright (c) 2018, Ken Moore +// Available under the 3-clause BSD license +// See the LICENSE file for full details +//=========================================== +import QtQuick 2.2 +import QtQuick.Controls 1 + +import Lumina.Backend.RootDesktopObject 2.0 +import Lumina.Backend.OSInterface 2.0 + +ToolButton{ + property OSInterface os: RootObject.os_interface() + id: "batButton" + iconName: os.batteryIcon + tooltip: os.batteryStatus + visible: os.batteryAvailable() + //enabled: false +} diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/plugins/status_tray/NetworkButton.qml b/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/plugins/status_tray/NetworkButton.qml new file mode 100644 index 00000000..387c130b --- /dev/null +++ b/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/plugins/status_tray/NetworkButton.qml @@ -0,0 +1,23 @@ +//=========================================== +// Lumina-desktop source code +// Copyright (c) 2018, Ken Moore +// Available under the 3-clause BSD license +// See the LICENSE file for full details +//=========================================== +import QtQuick 2.2 +import QtQuick.Controls 1 + +import Lumina.Backend.RootDesktopObject 2.0 +import Lumina.Backend.OSInterface 2.0 + +ToolButton{ + id: "netButton" + property OSInterface os: RootObject.os_interface() + iconName: os.networkIcon + tooltip: os.networkStatus + visible: os.networkAvailable + enabled: os.hasNetworkManager() + onClicked: { + RootObject.launchApplication(os.networkManagerUtility()) + } +} diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/plugins/status_tray/TrayIcon.qml b/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/plugins/status_tray/TrayIcon.qml new file mode 100644 index 00000000..6012ba5d --- /dev/null +++ b/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/plugins/status_tray/TrayIcon.qml @@ -0,0 +1,34 @@ +//=========================================== +// Lumina-desktop source code +// Copyright (c) 2018, Ken Moore +// Available under the 3-clause BSD license +// See the LICENSE file for full details +//=========================================== +import QtQuick 2.2 +import QtQuick.Controls 2 + +import Lumina.Backend.NativeWindowObject 2.0 + +Image{ + property NativeWindowObject winObj + source: winObj.icon + id: "trayIcon" + fillMode: Qt.PreserveAspectFit + smooth: true + cache: false + asynchronous: false + //text: winObj.name + + onXChanged: { } + + MouseArea{ + //property point globalPos + anchors.fill: parent + acceptedButtons: Qt.NoButton + onEntered: { + //Need to ensure the invisible native window is over this place right now + console.log("Enter Tray Icon:", parent.mapToGlobal(0,0)); + winObj.updateGeometry( parent.mapToGlobal(0,0).x, parent.mapToGlobal(0,0).y, parent.width(), parent.height(), true) + } + } +} diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/plugins/status_tray/UpdateButton.qml b/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/plugins/status_tray/UpdateButton.qml new file mode 100644 index 00000000..9ba824ae --- /dev/null +++ b/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/plugins/status_tray/UpdateButton.qml @@ -0,0 +1,24 @@ +//=========================================== +// Lumina-desktop source code +// Copyright (c) 2018, Ken Moore +// Available under the 3-clause BSD license +// See the LICENSE file for full details +//=========================================== +import QtQuick 2.2 +import QtQuick.Controls 1 + +import Lumina.Backend.RootDesktopObject 2.0 +import Lumina.Backend.OSInterface 2.0 + +ToolButton{ + id: "updateButton" + property OSInterface os: RootObject.os_interface() + iconName: os.updateIcon + tooltip: os.updateStatus + visible: os.updateInfoAvailable + /*enabled: os.hasUpdateManager() + onClicked: { + RootObject.launchApplication(os.updateManagerUtility()) + }*/ + //TODO - add a menu with update manager and start/view updates options +} diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/plugins/status_tray/VolumeButton.qml b/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/plugins/status_tray/VolumeButton.qml new file mode 100644 index 00000000..e98a2603 --- /dev/null +++ b/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/plugins/status_tray/VolumeButton.qml @@ -0,0 +1,25 @@ +//=========================================== +// Lumina-desktop source code +// Copyright (c) 2018, Ken Moore +// Available under the 3-clause BSD license +// See the LICENSE file for full details +//=========================================== +import QtQuick 2.2 +import QtQuick.Controls 1 + +import Lumina.Backend.RootDesktopObject 2.0 +import Lumina.Backend.OSInterface 2.0 + +ToolButton{ + property OSInterface os: RootObject.os_interface() + id: "volButton" + iconName: os.volumeIcon + tooltip: os.volume+"%" + visible: os.volumeSupported() + enabled: os.hasAudioMixer() + //Simple launch of mixer at the moment - make this popup a menu later + onClicked: { + RootObject.launchApplication( os.audioMixerShortcut() ) + } + +} diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/src-qml.pri b/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/src-qml.pri index ad07902a..fa29aa96 100644 --- a/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/src-qml.pri +++ b/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/src-qml.pri @@ -3,7 +3,9 @@ lupdate_only{ SOURCES *= $${PWD}/RootDesktop.qml \ $${PWD}/ContextMenu.qml \ $${PWD}/Screen.qml \ - $${PWD}/Panel.qml + $${PWD}/Panel.qml \ + $${PWD}/NativeWindow.qml } +include(plugins/plugins.pri) RESOURCES *= $${PWD}/src-qml.qrc diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/src-qml.qrc b/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/src-qml.qrc index b0c66e20..0513e467 100644 --- a/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/src-qml.qrc +++ b/src-qt5/core/lumina-desktop-unified/src-desktop/src-qml/src-qml.qrc @@ -4,5 +4,14 @@ <file>ContextMenu.qml</file> <file>Screen.qml</file> <file>Panel.qml</file> + <file>NativeWindow.qml</file> + <file>plugins/StatusTray.qml</file> + <file>plugins/status_tray/TrayIcon.qml</file> + <file>plugins/status_tray/VolumeButton.qml</file> + <file>plugins/status_tray/NetworkButton.qml</file> + <file>plugins/status_tray/BatteryButton.qml</file> + <file>plugins/status_tray/UpdateButton.qml</file> + <file>plugins/Clock_Digital.qml</file> + <file>plugins/Spacer.qml</file> </qresource> </RCC> diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/ContextMenu.cpp b/src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/ContextMenu.cpp index 47f0e3d7..139eee89 100644 --- a/src-qt5/core/lumina-desktop-unified/src-desktop/ContextMenu.cpp +++ b/src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/ContextMenu.cpp @@ -7,6 +7,7 @@ #include "ContextMenu.h" #include <global-objects.h> #include <JsonMenu.h> +#include <LIconCache.h> void DesktopContextMenu::SettingsChanged(DesktopSettings::File file){ if(file == DesktopSettings::ContextMenu){ UpdateMenu(false); } @@ -78,11 +79,11 @@ void DesktopContextMenu::UpdateMenu(bool fast){ } // === 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()) ); +void DesktopContextMenu::AddWindowToMenu(NativeWindowObject *win){ + QString label = win->property(NativeWindowObject::ShortTitle).toString(); + if(label.isEmpty()){ label = win->property(NativeWindowObject::Title).toString(); } + if(label.isEmpty()){ label = win->property(NativeWindowObject::Name).toString(); } + QAction *tmp = winMenu->addAction( win->property(NativeWindowObject::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 @@ -176,14 +177,8 @@ void DesktopContextMenu::updateWinMenu(){ LIconCache::instance()->loadIcon( winMenu, "preferences-system-windows"); } winMenu->clear(); - QList<NativeWindow*> wins = Lumina::NWS->currentWindows(); - unsigned int wkspace = Lumina::NWS->currentWorkspace(); + QList<NativeWindowObject*> wins = RootDesktopObject::instance()->windowObjects(); 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/src-widgets/ContextMenu.h index 78756e8c..b20087ef 100644 --- a/src-qt5/core/lumina-desktop-unified/src-desktop/ContextMenu.h +++ b/src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/ContextMenu.h @@ -21,7 +21,7 @@ private: QMenu *appMenu, *winMenu; bool usewinmenu; - void AddWindowToMenu(NativeWindow*); + void AddWindowToMenu(NativeWindowObject*); public: DesktopContextMenu(QWidget *parent = 0); diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/NativeWindow.cpp b/src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/NativeWindow.cpp new file mode 100644 index 00000000..24ad3fda --- /dev/null +++ b/src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/NativeWindow.cpp @@ -0,0 +1,48 @@ +//=========================================== +// Lumina-desktop source code +// Copyright (c) 2018, Ken Moore +// Available under the 3-clause BSD license +// See the LICENSE file for full details +//=========================================== +#include "NativeWindow.h" + +// === PUBLIC === +NativeWindow::NativeWindow( NativeWindowObject *obj ) : QFrame(0, Qt::Window | Qt::FramelessWindowHint){ + WIN = obj; + createFrame(); +} + +NativeWindow::~NativeWindow(){ + +} + +// === PRIVATE === +void NativeWindow::createFrame(){ + //Initialize the widgets + closeB = new QToolButton(this); + closeB->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); + minB = new QToolButton(this); + minB->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); + maxB = new QToolButton(this); + maxB->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); + otherB = new QToolButton(this); + otherB->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Preferred); + toolbarL = new QHBoxLayout(this); + vlayout = new QVBoxLayout(this); + vlayout.align + titleLabel = new QLabel(this); + titleLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); + //Now put the widgets in the right places + toolbarL->addWidget(otherB); + toolbarL->addWidget(titleLabel); + toolbarL->addWidget(minB); + toolbarL->addWidget(maxB); + toolbarL->addWidget(closeB); + vlayout->addLayout(toolbarL); + vlayout->addStretch(); + this->setLayout(vlayout); + + // +} + +// === PRIVATE SLOTS === diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/NativeWindow.h b/src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/NativeWindow.h new file mode 100644 index 00000000..ffdb364a --- /dev/null +++ b/src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/NativeWindow.h @@ -0,0 +1,34 @@ +//=========================================== +// Lumina-desktop source code +// Copyright (c) 2018, Ken Moore +// Available under the 3-clause BSD license +// See the LICENSE file for full details +//=========================================== +#ifndef _LUMINA_DESKTOP_NATIVE_WINDOW_WIDGET_H +#define _LUMINA_DESKTOP_NATIVE_WINDOW_WIDGET_H + +#include <global-includes.h> + +class NativeWindow : public QFrame{ + Q_OBJECT +public: + NativeWindow(NativeWindowObject *obj); + ~NativeWindow(); + +private: + //Core object + NativeWindowObject *WIN; + // Interface items + void createFrame(); + QToolButton *closeB, *minB, *maxB, *otherB; + QHBoxLayout *toolbarL; + QVBoxLayout *vlayout; + QLabel *titleLabel; + // Info cache variables + QRect oldgeom; + +private slots: + +}; + +#endif diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/RootDesktop.cpp b/src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/RootDesktop.cpp new file mode 100644 index 00000000..9e22a143 --- /dev/null +++ b/src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/RootDesktop.cpp @@ -0,0 +1,120 @@ +//=========================================== +// Lumina-desktop source code +// Copyright (c) 2018, Ken Moore +// Available under the 3-clause BSD license +// See the LICENSE file for full details +//=========================================== +#include <global-objects.h> +#include "RootDesktop.h" + +// === PUBLIC === +RootDesktop::RootDesktop(QWindow *) : QWidget(0, Qt::Widget | Qt::FramelessWindowHint | Qt::WindowStaysOnBottomHint){ + +} + +RootDesktop::~RootDesktop(){ + +} + +void RootDesktop::start(){ + //qDebug() << "Starting RootDesktop" << this->geometry() << this->isVisible(); + bgTimer = new QTimer(this); + bgTimer->setInterval(50); + bgTimer->setSingleShot(true); + connect(bgTimer, SIGNAL(timeout()), this, SLOT(bgTimerUpdate()) ); + + cmenu = new DesktopContextMenu(this); + + //Setup the connections to the main objects + connect(RootDesktopObject::instance(), SIGNAL(screensChanged()), this, SLOT(on_screensChanged()) ); + connect(RootDesktopObject::instance(), SIGNAL(panelsChanged()), this, SLOT(on_panelsChanged()) ); + connect(RootDesktopObject::instance(), SIGNAL(windowsChanged()), this, SLOT(on_windowsChanged()) ); + connect(RootDesktopObject::instance(), SIGNAL(trayWindowsChanged()), this, SLOT(on_trayWindowsChanged()) ); + + connect(cmenu, SIGNAL(LockSession()), RootDesktopObject::instance(), SIGNAL(lockScreen()) ); + connect(cmenu, SIGNAL(showLeaveDialog()), RootDesktopObject::instance(), SIGNAL(startLogout()) ); + connect(cmenu, SIGNAL(LaunchStandardApplication(QString)), RootDesktopObject::instance(), SIGNAL(launchApplication(QString)) ); + connect(cmenu, SIGNAL(LaunchApplication(QString)), RootDesktopObject::instance(), SIGNAL(launchApplication(QString)) ); + + on_screensChanged(); //make sure this is setup right away (sets up connections + QTimer::singleShot(0, this, SLOT(on_panelsChanged()) ); + QTimer::singleShot(2, this, SLOT(on_windowsChanged()) ); + QTimer::singleShot(4, this, SLOT(on_trayWindowsChanged()) ); + + //Now start the first-run of the background change system + cmenu->start(); + bgTimer->start(); + this->show(); +} + +// === PRIVATE === +//QImage bgimage; + + +// === PRIVATE SLOTS === +//RootDesktopObject connections +void RootDesktop::on_screensChanged(){ + QStringList screens = RootDesktopObject::instance()->screens(); + //qDebug() << "Screens Changed:" << lastscreens << screens; + for(int i=0; i<screens.length(); i++){ + if(!lastscreens.contains(screens[i])){ + connect(RootDesktopObject::instance()->screen(screens[i]), SIGNAL(backgroundChanged()), this, SLOT(on_screen_bg_changed()) ); + } + } + on_screen_bg_changed(); //start the timer to update the backgrounds now + lastscreens = screens; //save this for later +} + +void RootDesktop::on_panelsChanged(){ + +} + +void RootDesktop::on_windowsChanged(){ + +} + +void RootDesktop::on_trayWindowsChanged(){ + +} + +void RootDesktop::on_screen_bg_changed(){ + if(!bgTimer->isActive()){ bgTimer->start(); } +} + +//Internal use +void RootDesktop::bgTimerUpdate(){ + //qDebug() << "bgTimerUpdate"; + //QtConcurrent::run(this, &RootDesktop::updateBG, this); + updateBG(this); +} + +void RootDesktop::updateBG(RootDesktop* obj){ + + QImage tmp(obj->size(), QImage::Format_ARGB32_Premultiplied); + QStringList scr = RootDesktopObject::instance()->screens(); + //qDebug() << "updateBG" << scr << tmp.size() << obj->geometry(); + QPainter imgpaint(&tmp); + for(int i=0; i<scr.length(); i++){ + ScreenObject * screen = RootDesktopObject::instance()->screen(scr[i]); + QString file = screen->background(); //in URL format + //qDebug() << "Got BG File:" << file << QUrl(file).toLocalFile(); + QImage img(QUrl(file).toLocalFile()); + //qDebug() << " - BG File is null:" << img.isNull(); + imgpaint.drawImage(screen->geometry(), img, QRect(0,0,img.width(), img.height()) ); + } + bgimage = tmp; + //QTimer::singleShot(0, obj, SLOT(update()) ); + obj->update(); +} + +// === PROTECTED === +void RootDesktop::paintEvent(QPaintEvent *ev){ + //qDebug() << "Paint Event:" << bgimage.isNull(); + if (!bgimage.isNull()) { + //qDebug() << "Wallpaper paint Event:" << ev->rect(); + QPainter painter(this); + painter.drawImage(ev->rect(), bgimage, ev->rect()); + }else{ + QWidget::paintEvent(ev); + } +} diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/RootDesktop.h b/src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/RootDesktop.h new file mode 100644 index 00000000..16ce0e47 --- /dev/null +++ b/src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/RootDesktop.h @@ -0,0 +1,44 @@ +//=========================================== +// Lumina-desktop source code +// Copyright (c) 2018, Ken Moore +// Available under the 3-clause BSD license +// See the LICENSE file for full details +//=========================================== +#ifndef _LUMINA_DESKTOP_WIDGETS_ROOT_DESKTOP_H +#define _LUMINA_DESKTOP_WIDGETS_ROOT_DESKTOP_H + +#include <global-includes.h> +#include "ContextMenu.h" + +class RootDesktop : public QWidget{ + Q_OBJECT +public: + RootDesktop(QWindow *root); + ~RootDesktop(); + + void start(); + +private: + QImage bgimage; + QStringList lastscreens; + QTimer *bgTimer; + DesktopContextMenu *cmenu; + +private slots: + //RootDesktopObject connections + void on_screensChanged(); + void on_panelsChanged(); + void on_windowsChanged(); + void on_trayWindowsChanged(); + void on_screen_bg_changed(); + + //Internal use + void bgTimerUpdate(); + void updateBG(RootDesktop* obj); //designed to be run in a background thread + +protected: + virtual void paintEvent(QPaintEvent *ev); + +}; + +#endif diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/src-widgets.pri b/src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/src-widgets.pri new file mode 100644 index 00000000..7994bb93 --- /dev/null +++ b/src-qt5/core/lumina-desktop-unified/src-desktop/src-widgets/src-widgets.pri @@ -0,0 +1,8 @@ +#update the includepath so we can just #include as needed without paths +INCLUDEPATH *= $${PWD} + +SOURCES *= $${PWD}/RootDesktop.cpp \ + $${PWD}/ContextMenu.cpp + +HEADERS *= $${PWD}/RootDesktop.h \ + $${PWD}/ContextMenu.h diff --git a/src-qt5/core/lumina-desktop-unified/src-events/LShortcutEvents.h b/src-qt5/core/lumina-desktop-unified/src-events/LShortcutEvents.h index 4560cb1f..8017060f 100644 --- a/src-qt5/core/lumina-desktop-unified/src-events/LShortcutEvents.h +++ b/src-qt5/core/lumina-desktop-unified/src-events/LShortcutEvents.h @@ -10,7 +10,8 @@ #ifndef _LUMINA_KEY_SEQUENCE_DETECTION_H #define _LUMINA_KEY_SEQUENCE_DETECTION_H -#include "../global-includes.h" +#include <global-includes.h> +#include "NativeWindowSystem.h" class LShortcutEvents : public QObject{ Q_OBJECT diff --git a/src-qt5/core/lumina-desktop-unified/src-events/NativeEventFilter.cpp b/src-qt5/core/lumina-desktop-unified/src-events/NativeEventFilter.cpp new file mode 100644 index 00000000..507bcb9a --- /dev/null +++ b/src-qt5/core/lumina-desktop-unified/src-events/NativeEventFilter.cpp @@ -0,0 +1,303 @@ +//=========================================== +// Lumina-desktop source code +// Copyright (c) 2015-2017, Ken Moore +// Available under the 3-clause BSD license +// See the LICENSE file for full details +//=========================================== +#include "NativeEventFilter.h" +#include <QCoreApplication> +#include <QDebug> + +//#include <xcb/xcb_aux.h> +//#include <xcb/damage.h> + +//================================================== +// NOTE: All the XCB interactions and atoms are accessed via: +// obj->XCB->EWMH.(atom name) +// obj->XCB->(do something) +//================================================== + +/* +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 + +//#include <LuminaX11.h> +#include <QX11Info> +#include <xcb/xcb_ewmh.h> +#include <xcb/xcb_keysyms.h> +#include <xcb/damage.h> + +#define DEBUG 0 + +//Special objects/variables for XCB parsing +static xcb_ewmh_connection_t EWMH; +//static LXCB *XCB = 0; +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; + NativeWindowObject::Property prop = NativeWindowObject::None; + //Now determine which properties are getting changed, and update the native window as appropriate + if(ev->atom == EWMH._NET_WM_NAME){ prop = NativeWindowObject::Title; } + else if(ev->atom == EWMH._NET_WM_ICON){ prop = NativeWindowObject::Icon; } + else if(ev->atom == EWMH._NET_WM_ICON_NAME){ prop = NativeWindowObject::ShortTitle; } + else if(ev->atom == EWMH._NET_WM_DESKTOP){ prop = NativeWindowObject::Workspace; } + else if(ev->atom == EWMH._NET_WM_WINDOW_TYPE ){ prop = NativeWindowObject::WinTypes; } + else if( ev->atom == EWMH._NET_WM_STATE){ prop = NativeWindowObject::States; } + //Send out the signal if necessary + if(prop!=NativeWindowObject::None){ + //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<NativeWindowObject::Property>() << NativeWindowObject::Title + << NativeWindowObject::ShortTitle << NativeWindowObject::Workspace ); + //qDebug() << "Unknown Property Change:" << ev->window << ev->atom; + } +} + +inline void ParseClientMessageEvent(xcb_client_message_event_t *ev, NativeEventFilter *obj){ + NativeWindowObject::Property prop = NativeWindowObject::None; + QVariant val; + if(ev->type==EWMH._NET_WM_NAME){ prop = NativeWindowObject::Title; } + else if(ev->type==EWMH._NET_WM_ICON){ prop = NativeWindowObject::Icon; } + else if(ev->type==EWMH._NET_WM_ICON_NAME){ prop = NativeWindowObject::ShortTitle; } + else if(ev->type==EWMH._NET_WM_DESKTOP){ + prop = NativeWindowObject::Workspace; + val = QVariant( (int) ev->data.data32[0] ); + }else if(ev->type==EWMH._NET_WM_WINDOW_TYPE){ prop = NativeWindowObject::WinTypes; } + else if(ev->type==EWMH._NET_WM_STATE){ prop = NativeWindowObject::States; } + + if(prop!=NativeWindowObject::None){ + if(DEBUG){ qDebug() << "Detected Property Change Request:" << ev->window << prop << val; } + if(val.isNull()){ obj->emit WindowPropertyChanged(ev->window, prop); } + else{ obj->emit RequestWindowPropertyChange(ev->window, prop, val); } + }else{ + //Quick re-check of the simple properties (nothing like the icon or other graphics) + obj->emit WindowPropertiesChanged(ev->window, QList<NativeWindowObject::Property>() << NativeWindowObject::Title + << NativeWindowObject::ShortTitle << NativeWindowObject::Workspace ); + } + +} + + +//Constructor for the Event Filter wrapper +NativeEventFilter::NativeEventFilter() : QObject(){ + EF = new EventFilter(this); + if(EWMH.nb_screens <=0){ + xcb_intern_atom_cookie_t *cookie = xcb_ewmh_init_atoms(QX11Info::connection(), &EWMH); + if(!xcb_ewmh_init_atoms_replies(&EWMH, cookie, NULL) ){ + qDebug() << "Error with XCB atom initializations"; + } + } + if(_NET_SYSTEM_TRAY_OPCODE==0){ + //_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); + } + } +} + +void NativeEventFilter::start(){ + if(DEBUG){ qDebug() << " - Install event filter..."; } + QCoreApplication::instance()->installNativeEventFilter(EF); + if(DEBUG){ qDebug() << " - Run request check..."; } + +} + +void NativeEventFilter::stop(){ + QCoreApplication::instance()->installNativeEventFilter(0); +} + +//============================= +// EventFilter Class +//============================= + +//Constructor for the XCB event filter +EventFilter::EventFilter(NativeEventFilter *parent) : QAbstractNativeEventFilter(){ + obj = parent; +} + +//This function format taken directly from the Qt5.3 documentation +bool EventFilter::nativeEventFilter(const QByteArray &eventType, void *message, long *){ + //qDebug() << "New Event"; + if(eventType=="xcb_generic_event_t"){ + //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){ +//============================== +// INTERACTIVITY EVENTS +//============================== + case XCB_KEY_PRESS: + //This is a keyboard key press + //qDebug() << "Key Press Event" + obj->emit KeyPressed( ((xcb_key_press_event_t *) ev)->detail, ((xcb_key_press_event_t *) ev)->root ); + break; + case XCB_KEY_RELEASE: + //This is a keyboard key release + //qDebug() << "Key Release Event"; + obj->emit KeyReleased( ((xcb_key_release_event_t *) ev)->detail, ((xcb_key_release_event_t *) ev)->root ); + break; + case XCB_BUTTON_PRESS: + //This is a mouse button press + //qDebug() << "Button Press Event"; + obj->emit MousePressed( ((xcb_button_press_event_t *) ev)->detail, ((xcb_button_press_event_t *) ev)->root ); + break; + case XCB_BUTTON_RELEASE: + //This is a mouse button release + //qDebug() << "Button Release Event"; + obj->emit MouseReleased( ((xcb_button_release_event_t *) ev)->detail, ((xcb_button_release_event_t *) ev)->root ); + break; + case XCB_MOTION_NOTIFY: + //This is a mouse movement event + if(DEBUG){ qDebug() << "Motion Notify Event"; } + obj->emit MouseMovement(); + break; + case XCB_ENTER_NOTIFY: + //This is a mouse movement event when mouse goes over a new window + //qDebug() << "Enter Notify Event"; + obj->emit MouseEnterWindow( ((xcb_enter_notify_event_t *) ev)->root ); + break; + case XCB_LEAVE_NOTIFY: + //This is a mouse movement event when mouse goes leaves a window + //qDebug() << "Leave Notify Event"; + obj->emit MouseLeaveWindow( ((xcb_leave_notify_event_t *) ev)->root ); + break; +//============================== + case XCB_EXPOSE: + //qDebug() << "Expose Notify Event:"; + //qDebug() << " - Given Window:" << ((xcb_property_notify_event_t*)ev)->window; + break; +//============================== + case XCB_MAP_NOTIFY: + //qDebug() << "Window Map Event:" << ((xcb_map_notify_event_t *)ev)->window; + obj->emit WindowPropertyChanged( ((xcb_map_notify_event_t *)ev)->window, NativeWindowObject::Visible, true); + break; //This is just a notification that a window was mapped - nothing needs to change here + case XCB_MAP_REQUEST: + //qDebug() << "Window Map Request Event"; + obj->emit WindowCreated( ((xcb_map_request_event_t *) ev)->window ); + break; +//============================== + case XCB_CREATE_NOTIFY: + //qDebug() << "Window Create Event"; + break; +//============================== + case XCB_UNMAP_NOTIFY: + //qDebug() << "Window Unmap Event:" << ((xcb_unmap_notify_event_t *)ev)->window; + obj->emit WindowPropertyChanged( ((xcb_map_notify_event_t *)ev)->window, NativeWindowObject::Visible, false); + break; +//============================== + case XCB_DESTROY_NOTIFY: + //qDebug() << "Window Closed Event:" << ((xcb_destroy_notify_event_t *)ev)->window; + obj->emit WindowDestroyed( ((xcb_destroy_notify_event_t *) ev)->window ); + break; +//============================== + case XCB_FOCUS_IN: + //qDebug() << "Focus In Event:"; + break; +//============================== + case XCB_FOCUS_OUT: + //qDebug() << "Focus Out Event:"; + break; +//============================== + case XCB_PROPERTY_NOTIFY: + //qDebug() << "Property Notify Event:"; + ParsePropertyEvent((xcb_property_notify_event_t*)ev, obj); + break; +//============================== + case XCB_CLIENT_MESSAGE: + //qDebug() << "Client Message Event"; + //qDebug() << " - Given Window:" << ((xcb_client_message_event_t*)ev)->window; + if( ((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]){ + obj->emit TrayWindowCreated( ((xcb_client_message_event_t*)ev)->data.data32[2] ); + //addTrayApp( ((xcb_client_message_event_t*)ev)->data.data32[2] ); + } + //Ignore the System Tray messages at the moment + }else if(((xcb_client_message_event_t*)ev)->window != QX11Info::appRootWindow()){ + ParseClientMessageEvent((xcb_client_message_event_t*)ev, obj); + } + break; +//============================== + case XCB_CONFIGURE_NOTIFY: + //qDebug() << "Configure Notify Event"; + /*obj->emit WindowPropertiesChanged( ((xcb_configure_notify_event_t*)ev)->window, + QList<NativeWindowObject::Property>() << NativeWindowObject::GlobalPos << NativeWindowObject::Size, + QList<QVariant>() << QPoint(((xcb_configure_notify_event_t*)ev)->x, ((xcb_configure_notify_event_t*)ev)->y) << + QSize(((xcb_configure_notify_event_t*)ev)->width, ((xcb_configure_notify_event_t*)ev)->height) );*/ + obj->emit WindowPropertyChanged( ((xcb_configure_notify_event_t*)ev)->window, NativeWindowObject::Size, + QSize(((xcb_configure_notify_event_t*)ev)->width, ((xcb_configure_notify_event_t*)ev)->height) ); + break; +//============================== + case XCB_CONFIGURE_REQUEST: + //qDebug() << "Configure Request Event"; + obj->emit RequestWindowPropertiesChange( ((xcb_configure_request_event_t*)ev)->window, + QList<NativeWindowObject::Property>() << NativeWindowObject::GlobalPos << NativeWindowObject::Size, + QList<QVariant>() << QPoint(((xcb_configure_request_event_t*)ev)->x, ((xcb_configure_request_event_t*)ev)->y) << + QSize(((xcb_configure_request_event_t*)ev)->width, ((xcb_configure_request_event_t*)ev)->height) ); + break; +//============================== + case XCB_RESIZE_REQUEST: + //qDebug() << "Resize Request Event"; + obj->emit RequestWindowPropertyChange( ((xcb_resize_request_event_t*)ev)->window, + NativeWindowObject::Size, QSize(((xcb_resize_request_event_t*)ev)->width, ((xcb_resize_request_event_t*)ev)->height) ); + break; +//============================== + case XCB_SELECTION_CLEAR: + //qDebug() << "Selection Clear Event"; + break; +//============================== + case 85: //not sure what event this is - but it seems to come up very often (just hide the notice) + case 0: + case XCB_GE_GENERIC: + break; //generic event - don't do anything special + default: + //if( (ev->response_type & ~0x80)==TrayDmgID){ + obj->emit PossibleDamageEvent( ((xcb_damage_notify_event_t*)ev)->drawable ); + //checkDamageID( ((xcb_damage_notify_event_t*)ev)->drawable ); + //}else{ + //qDebug() << "Default Event:" << (ev->response_type & ~0x80); + //} +//============================== + } + } + return false; + //never stop event handling (this will not impact the X events themselves - just the internal Qt application) +} diff --git a/src-qt5/core/lumina-desktop-unified/src-events/NativeEventFilter.h b/src-qt5/core/lumina-desktop-unified/src-events/NativeEventFilter.h new file mode 100644 index 00000000..e4500cac --- /dev/null +++ b/src-qt5/core/lumina-desktop-unified/src-events/NativeEventFilter.h @@ -0,0 +1,71 @@ +//=========================================== +// Lumina-DE source code +// Copyright (c) 2012-2017, Ken Moore +// Available under the 3-clause BSD license +// See the LICENSE file for full details +//=========================================== +// This class provides the XCB event handling/registrations that are needed +//=========================================== +#ifndef _LUMINA_DESKTOP_NATIVE_EVENT_FILTER_H +#define _LUMINA_DESKTOP_NATIVE_EVENT_FILTER_H + +#include <QAbstractNativeEventFilter> +#include <QObject> +#include <QByteArray> + +#include <NativeWindowObject.h> + + +class NativeEventFilter : public QObject{ + Q_OBJECT +private: + QAbstractNativeEventFilter* EF; + WId WMFlag; //used to flag a running WM process + +public: + NativeEventFilter(); + ~NativeEventFilter(){} + + void start(); + void stop(); + +signals: + //Window Signals + void WindowCreated(WId); + void WindowDestroyed(WId); + void WindowPropertyChanged(WId, NativeWindowObject::Property); + void WindowPropertiesChanged(WId, QList<NativeWindowObject::Property>); + void WindowPropertyChanged(WId, NativeWindowObject::Property, QVariant); + void WindowPropertiesChanged(WId, QList<NativeWindowObject::Property>, QList<QVariant>); + void RequestWindowPropertyChange(WId, NativeWindowObject::Property, QVariant); + void RequestWindowPropertiesChange(WId, QList<NativeWindowObject::Property>, QList<QVariant>); + + //System Tray Signals + void TrayWindowCreated(WId); + void TrayWindowDestroyed(WId); + + //Miscellaneos Signals + void PossibleDamageEvent(WId); + + //Input Event Signals + void KeyPressed(int, WId); + void KeyReleased(int, WId); + void MousePressed(int, WId); + void MouseReleased(int, WId); + void MouseMovement(); + void MouseEnterWindow(WId); + void MouseLeaveWindow(WId); +}; + +class EventFilter : public QAbstractNativeEventFilter{ +public: + EventFilter(NativeEventFilter *parent); + ~EventFilter(){} + + virtual bool nativeEventFilter(const QByteArray &eventType, void *message, long *); + +private: + NativeEventFilter *obj; +}; + +#endif diff --git a/src-qt5/core/lumina-desktop-unified/src-events/NativeKeyToQt.cpp b/src-qt5/core/lumina-desktop-unified/src-events/NativeKeyToQt.cpp new file mode 100644 index 00000000..9b639496 --- /dev/null +++ b/src-qt5/core/lumina-desktop-unified/src-events/NativeKeyToQt.cpp @@ -0,0 +1,528 @@ + +#include "NativeWindowSystem.h" + +#include <QKeySequence> +#include <QX11Info> + +// XCB/X11 Includes +#define XK_MISCELLANY +#define XK_XKB_KEYS +#define XK_LATIN1 +#define XK_LATIN2 +#define XK_LATIN3 +#define XK_LATIN4 +#define XK_LATIN8 +#define XK_LATIN9 +//NOTE: Look at the keysymdef.h file for additional define/characters which we may need later +#include <X11/keysymdef.h> +#include <xcb/xcb_keysyms.h> + + +//Small simplification functions +Qt::Key NativeWindowSystem::KeycodeToQt(int keycode){ + static xcb_key_symbols_t *SYM = 0; + if(SYM==0){ SYM = xcb_key_symbols_alloc(QX11Info::connection()); } + xcb_keysym_t symbol = xcb_key_symbols_get_keysym(SYM, keycode,0); + //not sure about the "column" input - we want raw keys though so ignore the "modified" key states (columns) for now + //qDebug() << "Try to convert keycode to Qt::Key:" << keycode << symbol; + //Now map this symbol to the appropriate Qt::Key enumeration + switch(symbol){ + //FUNCTION KEYS + case XK_F1: return Qt::Key_F1; + case XK_F2: return Qt::Key_F2; + case XK_F3: return Qt::Key_F3; + case XK_F4: return Qt::Key_F4; + case XK_F5: return Qt::Key_F5; + case XK_F6: return Qt::Key_F6; + case XK_F7: return Qt::Key_F7; + case XK_F8: return Qt::Key_F8; + case XK_F9: return Qt::Key_F9; + case XK_F10: return Qt::Key_F10; + case XK_F11: return Qt::Key_F11; + case XK_F12: return Qt::Key_F12; + case XK_F13: return Qt::Key_F13; + case XK_F14: return Qt::Key_F14; + case XK_F15: return Qt::Key_F15; + case XK_F16: return Qt::Key_F16; + case XK_F17: return Qt::Key_F17; + case XK_F18: return Qt::Key_F18; + case XK_F19: return Qt::Key_F19; + case XK_F20: return Qt::Key_F20; + case XK_F21: return Qt::Key_F21; + case XK_F22: return Qt::Key_F22; + case XK_F23: return Qt::Key_F23; + case XK_F24: return Qt::Key_F24; + case XK_F25: return Qt::Key_F25; + case XK_F26: return Qt::Key_F26; + case XK_F27: return Qt::Key_F27; + case XK_F28: return Qt::Key_F28; + case XK_F29: return Qt::Key_F29; + case XK_F30: return Qt::Key_F30; + case XK_F31: return Qt::Key_F31; + case XK_F32: return Qt::Key_F32; + case XK_F33: return Qt::Key_F33; + case XK_F34: return Qt::Key_F34; + case XK_F35: return Qt::Key_F35; + //Miscellaneous Keys + case XK_BackSpace: return Qt::Key_Backspace; + case XK_Delete: return Qt::Key_Delete; + //case XK_LineFeed: return Qt::Key_Backspace; + case XK_Clear: return Qt::Key_Clear; + case XK_Return: return Qt::Key_Return; + case XK_Pause: return Qt::Key_Pause; + case XK_Scroll_Lock: return Qt::Key_ScrollLock; + case XK_Sys_Req: return Qt::Key_SysReq; + case XK_Escape: return Qt::Key_Escape; + case XK_Select: return Qt::Key_Select; + case XK_Print: return Qt::Key_Print; + //case XK_Execute: return Qt::Key_Execute; + case XK_Insert: return Qt::Key_Insert; + case XK_Undo: return Qt::Key_Undo; + case XK_Redo: return Qt::Key_Redo; + case XK_Menu: return Qt::Key_Menu; + case XK_Find: return Qt::Key_Find; + case XK_Cancel: return Qt::Key_Cancel; + case XK_Help: return Qt::Key_Help; + //case XK_Break: return Qt::Key_Break; + //case XK_Mode_switch: return Qt::Key_Backspace; + //case XK_script_switch: return Qt::Key_Backspace; + case XK_Num_Lock: return Qt::Key_NumLock; + //Cursor Controls + case XK_Home: return Qt::Key_Home; + case XK_Left: return Qt::Key_Left; + case XK_Up: return Qt::Key_Up; + case XK_Right: return Qt::Key_Right; + case XK_Down: return Qt::Key_Down; + //case XK_Prior: return Qt::Key_Backspace; + case XK_Page_Up: return Qt::Key_PageUp; + case XK_Page_Down: return Qt::Key_PageDown; + //case XK_Next: return Qt::Key_Backspace; + case XK_End: return Qt::Key_End; + //case XK_Begin: return Qt::Key_Backspace; + // Keypad Functions and numbers + case XK_KP_Space: return Qt::Key_Space; + case XK_KP_Tab: return Qt::Key_Tab; + case XK_KP_Enter: return Qt::Key_Enter; + case XK_KP_F1: return Qt::Key_F1; + case XK_KP_F2: return Qt::Key_F2; + case XK_KP_F3: return Qt::Key_F3; + case XK_KP_F4: return Qt::Key_F4; + case XK_KP_Home: return Qt::Key_Home; + case XK_KP_Left: return Qt::Key_Left; + case XK_KP_Up: return Qt::Key_Up; + case XK_KP_Right: return Qt::Key_Right; + case XK_KP_Down: return Qt::Key_Down; + //case XK_KP_Prior: return Qt::Key_ + case XK_KP_Page_Up: return Qt::Key_PageUp; + //case XK_KP_Next: return Qt::Key_ + case XK_KP_Page_Down: return Qt::Key_PageDown; + case XK_KP_End: return Qt::Key_End; + //case XK_KP_Begin: return Qt::Key_ + case XK_KP_Insert: return Qt::Key_Insert; + case XK_KP_Delete: return Qt::Key_Delete; + case XK_KP_Equal: return Qt::Key_Equal; + case XK_KP_Multiply: return Qt::Key_Asterisk; + case XK_KP_Add: return Qt::Key_Plus; + case XK_KP_Separator: return Qt::Key_Comma; //X11 definitions say this is often comma + case XK_KP_Subtract: return Qt::Key_Minus; + case XK_KP_Decimal: return Qt::Key_Period; + case XK_KP_Divide: return Qt::Key_Slash; + case XK_KP_0: return Qt::Key_0; + case XK_KP_1: return Qt::Key_1; + case XK_KP_2: return Qt::Key_2; + case XK_KP_3: return Qt::Key_3; + case XK_KP_4: return Qt::Key_4; + case XK_KP_5: return Qt::Key_5; + case XK_KP_6: return Qt::Key_6; + case XK_KP_7: return Qt::Key_7; + case XK_KP_8: return Qt::Key_8; + case XK_KP_9: return Qt::Key_9; + // Modifier Keys + case XK_Shift_L: return Qt::Key_Shift; + case XK_Shift_R: return Qt::Key_Shift; + case XK_Control_L: return Qt::Key_Control; + case XK_Control_R: return Qt::Key_Control; + case XK_Caps_Lock: return Qt::Key_CapsLock; + //case XK_Shift_Lock: return Qt::Key_ShiftLock; + case XK_Meta_L: return Qt::Key_Meta; + case XK_Meta_R: return Qt::Key_Meta; + case XK_Alt_L: return Qt::Key_Alt; + case XK_Alt_R: return Qt::Key_Alt; + case XK_Super_L: return Qt::Key_Super_L; + case XK_Super_R: return Qt::Key_Super_R; + case XK_Hyper_L: return Qt::Key_Hyper_L; + case XK_Hyper_R: return Qt::Key_Hyper_R; + case XK_space: return Qt::Key_Space; + case XK_exclam: return Qt::Key_Exclam; + case XK_quotedbl: return Qt::Key_QuoteDbl; + case XK_numbersign: return Qt::Key_NumberSign; + case XK_dollar: return Qt::Key_Dollar; + case XK_percent: return Qt::Key_Percent; + case XK_ampersand: return Qt::Key_Ampersand; + case XK_apostrophe: return Qt::Key_Apostrophe; + case XK_parenleft: return Qt::Key_ParenLeft; + case XK_parenright: return Qt::Key_ParenRight; + case XK_asterisk: return Qt::Key_Asterisk; + case XK_plus: return Qt::Key_Plus; + case XK_comma: return Qt::Key_Comma; + case XK_minus: return Qt::Key_Minus; + case XK_period: return Qt::Key_Period; + case XK_slash: return Qt::Key_Slash; + case XK_0: return Qt::Key_0; + case XK_1: return Qt::Key_1; + case XK_2: return Qt::Key_2; + case XK_3: return Qt::Key_3; + case XK_4: return Qt::Key_4; + case XK_5: return Qt::Key_5; + case XK_6: return Qt::Key_6; + case XK_7: return Qt::Key_7; + case XK_8: return Qt::Key_8; + case XK_9: return Qt::Key_9; + case XK_colon: return Qt::Key_Colon; + case XK_semicolon: return Qt::Key_Semicolon; + case XK_less: return Qt::Key_Less; + case XK_equal: return Qt::Key_Equal; + case XK_greater: return Qt::Key_Greater; + case XK_question: return Qt::Key_Question; + case XK_at: return Qt::Key_At; + case XK_A: return Qt::Key_A; + case XK_B: return Qt::Key_B; + case XK_C: return Qt::Key_C; + case XK_D: return Qt::Key_D; + case XK_E: return Qt::Key_E; + case XK_F: return Qt::Key_F; + case XK_G: return Qt::Key_G; + case XK_H: return Qt::Key_H; + case XK_I: return Qt::Key_I; + case XK_J: return Qt::Key_J; + case XK_K: return Qt::Key_K; + case XK_L: return Qt::Key_L; + case XK_M: return Qt::Key_M; + case XK_N: return Qt::Key_N; + case XK_O: return Qt::Key_O; + case XK_P: return Qt::Key_P; + case XK_Q: return Qt::Key_Q; + case XK_R: return Qt::Key_R; + case XK_S: return Qt::Key_S; + case XK_T: return Qt::Key_T; + case XK_U: return Qt::Key_U; + case XK_V: return Qt::Key_V; + case XK_W: return Qt::Key_W; + case XK_X: return Qt::Key_X; + case XK_Y : return Qt::Key_Y; + case XK_Z: return Qt::Key_Z; + case XK_bracketleft: return Qt::Key_BracketLeft; + case XK_backslash: return Qt::Key_Backslash; + case XK_bracketright: return Qt::Key_BracketRight; + case XK_asciicircum: return Qt::Key_AsciiCircum; + case XK_underscore: return Qt::Key_Underscore; + case XK_grave: return Qt::Key_Agrave; + case XK_a: return Qt::Key_A; + case XK_b: return Qt::Key_B; + case XK_c: return Qt::Key_C; + case XK_d: return Qt::Key_D; + case XK_e: return Qt::Key_E; + case XK_f : return Qt::Key_F; + case XK_g: return Qt::Key_G; + case XK_h: return Qt::Key_H; + case XK_i: return Qt::Key_I; + case XK_j: return Qt::Key_J; + case XK_k: return Qt::Key_K; + case XK_l: return Qt::Key_L; + case XK_m: return Qt::Key_M; + case XK_n: return Qt::Key_N; + case XK_o: return Qt::Key_O; + case XK_p: return Qt::Key_P; + case XK_q: return Qt::Key_Q; + case XK_r: return Qt::Key_R; + case XK_s: return Qt::Key_S; + case XK_t : return Qt::Key_T; + case XK_u: return Qt::Key_U; + case XK_v: return Qt::Key_V; + case XK_w: return Qt::Key_W; + case XK_x: return Qt::Key_X; + case XK_y: return Qt::Key_Y; + case XK_z: return Qt::Key_Z; + case XK_braceleft: return Qt::Key_BraceLeft; + case XK_bar: return Qt::Key_Bar; + case XK_braceright: return Qt::Key_BraceRight; + case XK_asciitilde: return Qt::Key_AsciiTilde; + + case XK_nobreakspace: return Qt::Key_nobreakspace; + case XK_exclamdown: return Qt::Key_exclamdown; + case XK_cent: return Qt::Key_cent; + case XK_sterling: return Qt::Key_sterling; + case XK_currency: return Qt::Key_currency; + case XK_yen: return Qt::Key_yen; + case XK_brokenbar: return Qt::Key_brokenbar; + case XK_section: return Qt::Key_section; + case XK_diaeresis: return Qt::Key_diaeresis; + case XK_copyright: return Qt::Key_copyright; + case XK_ordfeminine: return Qt::Key_ordfeminine; + case XK_guillemotleft: return Qt::Key_guillemotleft; + case XK_notsign: return Qt::Key_notsign; + case XK_hyphen: return Qt::Key_hyphen; + case XK_registered: return Qt::Key_registered; + case XK_macron: return Qt::Key_macron; + case XK_degree: return Qt::Key_degree; + case XK_plusminus: return Qt::Key_plusminus; + case XK_twosuperior: return Qt::Key_twosuperior; + case XK_threesuperior: return Qt::Key_threesuperior; + case XK_acute: return Qt::Key_acute; + case XK_mu: return Qt::Key_mu; + case XK_paragraph: return Qt::Key_paragraph; + case XK_periodcentered: return Qt::Key_periodcentered; + case XK_cedilla: return Qt::Key_cedilla; + case XK_onesuperior: return Qt::Key_onesuperior; + case XK_masculine: return Qt::Key_masculine; + case XK_guillemotright: return Qt::Key_guillemotright; + case XK_onequarter: return Qt::Key_onequarter; + case XK_onehalf: return Qt::Key_onehalf; + case XK_threequarters: return Qt::Key_threequarters; + case XK_questiondown: return Qt::Key_questiondown; + case XK_Agrave: return Qt::Key_Agrave; + case XK_Aacute: return Qt::Key_Aacute; + case XK_Acircumflex: return Qt::Key_Acircumflex; + case XK_Atilde: return Qt::Key_Atilde; + case XK_Adiaeresis: return Qt::Key_Adiaeresis; + case XK_Aring: return Qt::Key_Aring; + case XK_AE: return Qt::Key_AE; + case XK_Ccedilla: return Qt::Key_Ccedilla; + case XK_Egrave: return Qt::Key_Egrave; + case XK_Eacute: return Qt::Key_Eacute; + case XK_Ecircumflex: return Qt::Key_Ecircumflex; + case XK_Ediaeresis: return Qt::Key_Ediaeresis; + case XK_Igrave: return Qt::Key_Igrave; + case XK_Iacute: return Qt::Key_Iacute; + case XK_Icircumflex: return Qt::Key_Icircumflex; + case XK_Idiaeresis: return Qt::Key_Idiaeresis; + case XK_ETH: return Qt::Key_ETH; + //case XK_Eth: return Qt::Key_Eth; + case XK_Ntilde: return Qt::Key_Ntilde; + case XK_Ograve: return Qt::Key_Ograve; + case XK_Oacute: return Qt::Key_Oacute; + case XK_Ocircumflex: return Qt::Key_Ocircumflex; + case XK_Otilde: return Qt::Key_Otilde; + case XK_Odiaeresis: return Qt::Key_Odiaeresis; + case XK_multiply: return Qt::Key_multiply; + //case XK_Oslash: return Qt::Key_AsciiTilde; + case XK_Ooblique: return Qt::Key_Ooblique; + case XK_Ugrave: return Qt::Key_Ugrave; + case XK_Uacute: return Qt::Key_Uacute; + case XK_Ucircumflex: return Qt::Key_Ucircumflex; + case XK_Udiaeresis: return Qt::Key_Udiaeresis; + case XK_Yacute: return Qt::Key_Yacute; + case XK_THORN: return Qt::Key_THORN; + //case XK_Thorn: return Qt::Key_AsciiTilde; + case XK_ssharp: return Qt::Key_ssharp; + /*case XK_agrave: return Qt::Key_AsciiTilde; + case XK_aacute: return Qt::Key_AsciiTilde; + case XK_acircumflex: return Qt::Key_AsciiTilde; + case XK_atilde: return Qt::Key_AsciiTilde; + case XK_adiaeresis: return Qt::Key_AsciiTilde; + case XK_aring: return Qt::Key_AsciiTilde; + case XK_ae: return Qt::Key_AsciiTilde; + case XK_ccedilla: return Qt::Key_AsciiTilde; + case XK_egrave: return Qt::Key_AsciiTilde; + case XK_eacute: return Qt::Key_AsciiTilde; + case XK_ecircumflex: return Qt::Key_AsciiTilde; + case XK_ediaeresis: return Qt::Key_AsciiTilde; + case XK_igrave: return Qt::Key_AsciiTilde; + case XK_iacute: return Qt::Key_AsciiTilde; + case XK_icircumflex: return Qt::Key_AsciiTilde; + case XK_idiaeresis: return Qt::Key_AsciiTilde; + case XK_eth: return Qt::Key_AsciiTilde; + case XK_ntilde: return Qt::Key_AsciiTilde; + case XK_ograve: return Qt::Key_AsciiTilde; + case XK_oacute: return Qt::Key_AsciiTilde; + case XK_ocircumflex: return Qt::Key_AsciiTilde; + case XK_otilde: return Qt::Key_AsciiTilde; + case XK_odiaeresis: return Qt::Key_AsciiTilde; + case XK_division: return Qt::Key_AsciiTilde; + case XK_oslash: return Qt::Key_AsciiTilde; + case XK_ooblique: return Qt::Key_AsciiTilde; + case XK_ugrave: return Qt::Key_AsciiTilde; + case XK_uacute: return Qt::Key_AsciiTilde; + case XK_ucircumflex: return Qt::Key_AsciiTilde; + case XK_udiaeresis: return Qt::Key_AsciiTilde; + case XK_yacute: return Qt::Key_AsciiTilde; + case XK_thorn: return Qt::Key_AsciiTilde; + case XK_ydiaeresis: return Qt::Key_AsciiTilde; + + case: XK_Agonek: return Qt::Key_AsciiTilde; + case XK_breve: return Qt::Key_AsciiTilde; + case XK_Lstroke: return Qt::Key_AsciiTilde; + case XK_Lcaron: return Qt::Key_AsciiTilde; + case XK_Sacute: return Qt::Key_AsciiTilde; + case XK_Scaron: return Qt::Key_AsciiTilde; + case XK_Scedilla: return Qt::Key_AsciiTilde; + case XK_Tcaron: return Qt::Key_AsciiTilde; + case XK_Zacute: return Qt::Key_AsciiTilde; + case XK_Zcaron: return Qt::Key_AsciiTilde; + case XK_Zabovedot: return Qt::Key_AsciiTilde; + case XK_aogonek: return Qt::Key_AsciiTilde; + case XK_ogonek: return Qt::Key_AsciiTilde; + case XK_lstroke: return Qt::Key_AsciiTilde; + case XK_lcaron: return Qt::Key_AsciiTilde; + case XK_sacute: return Qt::Key_AsciiTilde; + case XK_caron: return Qt::Key_AsciiTilde; + case XK_scaron: return Qt::Key_AsciiTilde; + case XK_scedilla: return Qt::Key_AsciiTilde; + case XK_tcaron: return Qt::Key_AsciiTilde; + case XK_zacute: return Qt::Key_AsciiTilde; + case XK_doubleacute: return Qt::Key_AsciiTilde; + case XK_zcaron: return Qt::Key_AsciiTilde; + case XK_zabovedot: return Qt::Key_AsciiTilde; + case XK_Racute: return Qt::Key_AsciiTilde; + case XK_Abreve: return Qt::Key_AsciiTilde; + case XK_Lacute: return Qt::Key_AsciiTilde; + case XK_Cacute: return Qt::Key_AsciiTilde; + case XK_Ccaron: return Qt::Key_AsciiTilde; + case XK_Eogonek: return Qt::Key_AsciiTilde; + case XK_Ecaron: return Qt::Key_AsciiTilde; + case XK_Dcaron: return Qt::Key_AsciiTilde; + case XK_Dstroke: return Qt::Key_AsciiTilde; + case XK_Nacute: return Qt::Key_AsciiTilde; + case XK_Ncaron: return Qt::Key_AsciiTilde; + case XK_Odoubleacute: return Qt::Key_AsciiTilde; + case XK_Rcaron: return Qt::Key_AsciiTilde; + case XK_Uring: return Qt::Key_AsciiTilde; + case XK_Udoubleacute: return Qt::Key_AsciiTilde; + case XK_Tcedilla: return Qt::Key_AsciiTilde; + case XK_racute: return Qt::Key_AsciiTilde; + case XK_abreve: return Qt::Key_AsciiTilde; + case XK_lacute: return Qt::Key_AsciiTilde; + case XK_cacute: return Qt::Key_AsciiTilde; + case XK_ccaron: return Qt::Key_AsciiTilde; + case XK_eogonek: return Qt::Key_AsciiTilde; + case XK_ecaron: return Qt::Key_AsciiTilde; + case XK_dcaron: return Qt::Key_AsciiTilde; + case XK_dstroke: return Qt::Key_AsciiTilde; + case XK_nacute: return Qt::Key_AsciiTilde; + case XK_ncaron: return Qt::Key_AsciiTilde; + case XK_odoubleacute: return Qt::Key_AsciiTilde; + case XK_rcaron: return Qt::Key_AsciiTilde; + case XK_uring: return Qt::Key_AsciiTilde; + case XK_udoubleacute: return Qt::Key_AsciiTilde; + case XK_tcedilla: return Qt::Key_AsciiTilde; + case XK_abovedot: return Qt::Key_AsciiTilde; + case XK_Hstroke: return Qt::Key_AsciiTilde; + case XK_Hcircumflex: return Qt::Key_AsciiTilde; + case XK_Iabovedot: return Qt::Key_AsciiTilde; + case XK_Gbreve: return Qt::Key_AsciiTilde; + case XK_Jcircumflex: return Qt::Key_AsciiTilde; + case XK_hstroke: return Qt::Key_AsciiTilde; + case XK_hcircumflex: return Qt::Key_AsciiTilde; + case XK_idotless: return Qt::Key_AsciiTilde; + case XK_gbreve: return Qt::Key_AsciiTilde; + case XK_jcircumflex: return Qt::Key_AsciiTilde; + case XK_Cabovedot: return Qt::Key_AsciiTilde; + case XK_Ccircumflex: return Qt::Key_AsciiTilde; + case XK_Gabovedot: return Qt::Key_AsciiTilde; + case XK_Gcircumflex: return Qt::Key_AsciiTilde; + case XK_Ubreve: return Qt::Key_AsciiTilde; + case XK_Scircumflex: return Qt::Key_AsciiTilde; + case XK_cabovedot: return Qt::Key_AsciiTilde; + case XK_ccircumflex: return Qt::Key_AsciiTilde; + case XK_gabovedot: return Qt::Key_AsciiTilde; + case XK_gcircumflex: return Qt::Key_AsciiTilde; + case XK_ubreve: return Qt::Key_AsciiTilde; + case XK_scircumflex: return Qt::Key_AsciiTilde; + case XK_kra: return Qt::Key_AsciiTilde; + case XK_kappa: return Qt::Key_AsciiTilde; + case XK_Rcedilla: return Qt::Key_AsciiTilde; + case XK_Itilde: return Qt::Key_AsciiTilde; + case XK_Lcedilla: return Qt::Key_AsciiTilde; + case XK_Emacron: return Qt::Key_AsciiTilde; + case XK_Gcedilla: return Qt::Key_AsciiTilde; + case XK_Tslash: return Qt::Key_AsciiTilde; + case XK_rcedilla: return Qt::Key_AsciiTilde; + case XK_itilde: return Qt::Key_AsciiTilde; + case XK_lcedilla: return Qt::Key_AsciiTilde; + case XK_emacron: return Qt::Key_AsciiTilde; + case XK_gcedilla: return Qt::Key_AsciiTilde; + case XK_tslash: return Qt::Key_AsciiTilde; + case XK_ENG: return Qt::Key_AsciiTilde; + case XK_eng: return Qt::Key_AsciiTilde; + case XK_Amacron: return Qt::Key_AsciiTilde; + case XK_Iogonek: return Qt::Key_AsciiTilde; + case XK_Eabovedot: return Qt::Key_AsciiTilde; + case XK_Imacron: return Qt::Key_AsciiTilde; + case XK_Ncedilla: return Qt::Key_AsciiTilde; + case XK_Omacron: return Qt::Key_AsciiTilde; + case XK_Kcedilla: return Qt::Key_AsciiTilde; + case XK_Uogonek: return Qt::Key_AsciiTilde; + case XK_Utilde: return Qt::Key_AsciiTilde; + case XK_Umacron: return Qt::Key_AsciiTilde; + case XK_amacron: return Qt::Key_AsciiTilde; + case XK_iogonek: return Qt::Key_AsciiTilde; + case XK_eabovedot: return Qt::Key_AsciiTilde; + case XK_imacron: return Qt::Key_AsciiTilde; + case XK_ncedilla: return Qt::Key_AsciiTilde; + case XK_omacron: return Qt::Key_AsciiTilde; + case XK_kcedilla: return Qt::Key_AsciiTilde; + case XK_uogonek: return Qt::Key_AsciiTilde; + case XK_utilde: return Qt::Key_AsciiTilde; + case XK_umacron: return Qt::Key_AsciiTilde; + case XK_Wcircumflex: return Qt::Key_AsciiTilde; + case XK_wcircumflex: return Qt::Key_AsciiTilde; + case XK_Ycircumflex: return Qt::Key_AsciiTilde; + case XK_ycircumflex: return Qt::Key_AsciiTilde; + case XK_Babovedot: return Qt::Key_AsciiTilde; + case XK_babovedot: return Qt::Key_AsciiTilde; + case XK_Dabovedot: return Qt::Key_AsciiTilde; + case XK_dabovedot: return Qt::Key_AsciiTilde; + case XK_Fabovedot: return Qt::Key_AsciiTilde; + case XK_fabovedot: return Qt::Key_AsciiTilde; + case XK_Mabovedot: return Qt::Key_AsciiTilde; + case XK_mabovedot: return Qt::Key_AsciiTilde; + case XK_Pabovedot: return Qt::Key_AsciiTilde; + case XK_pabovedot: return Qt::Key_AsciiTilde; + case XK_Sabovedot: return Qt::Key_AsciiTilde; + case XK_sabovedot: return Qt::Key_AsciiTilde; + case XK_Tabovedot: return Qt::Key_AsciiTilde; + case XK_tabovedot: return Qt::Key_AsciiTilde; + case XK_Wgrave: return Qt::Key_AsciiTilde; + case XK_wgrave: return Qt::Key_AsciiTilde; + case XK_Wacute: return Qt::Key_AsciiTilde; + case XK_wacute: return Qt::Key_AsciiTilde; + case XK_Wdiaeresis: return Qt::Key_AsciiTilde; + case XK_wdiaeresis: return Qt::Key_AsciiTilde; + case XK_Ygrave: return Qt::Key_AsciiTilde; + case XK_ygrave: return Qt::Key_AsciiTilde; + case XK_OE: return Qt::Key_AsciiTilde; + case XK_oe: return Qt::Key_AsciiTilde; + case XK_Ydiaeresis: return Qt::Key_AsciiTilde;*/ + default: + qDebug() << "Unknown Key"; + } + qDebug() << " -- Simple Qt Map:" << (Qt::Key)(symbol); + qDebug() << " -- Key Sequence Map:" << QKeySequence(symbol); + qDebug() << " - Not implemented yet"; + return Qt::Key_unknown; +} + +NativeWindowSystem::MouseButton NativeWindowSystem::MouseToQt(int keycode){ + switch(keycode){ + case 1: + return NativeWindowSystem::LeftButton; + case 3: + return NativeWindowSystem::RightButton; + case 2: + return NativeWindowSystem::MidButton; + case 4: + return NativeWindowSystem::WheelUp; + case 5: + return NativeWindowSystem::WheelDown; + case 6: + return NativeWindowSystem::WheelLeft; + case 7: + return NativeWindowSystem::WheelRight; + case 8: + return NativeWindowSystem::BackButton; //Not sure if this is correct yet (1/27/17) + case 9: + return NativeWindowSystem::ForwardButton; //Not sure if this is correct yet (1/27/17) + default: + return NativeWindowSystem::NoButton; + } +} diff --git a/src-qt5/core/lumina-desktop-unified/src-events/NativeWindowSystem.cpp b/src-qt5/core/lumina-desktop-unified/src-events/NativeWindowSystem.cpp new file mode 100644 index 00000000..b9c1b6ef --- /dev/null +++ b/src-qt5/core/lumina-desktop-unified/src-events/NativeWindowSystem.cpp @@ -0,0 +1,1076 @@ +//=========================================== +// Lumina-DE source code +// Copyright (c) 2017, Ken Moore +// Available under the 3-clause BSD license +// See the LICENSE file for full details +//=========================================== +// This is the XCB version of the NativeWindowSystem class, +// used for interacting with the X11 display system on BSD/Linux/Unix systems +//=========================================== +#include "NativeWindowSystem.h" +#include <global-objects.h> + +#define DISABLE_COMPOSITING 0 + +//XCB Library includes +#include <xcb/xcb.h> +#include <xcb/xcb_atom.h> +#include <xcb/xproto.h> +#include <xcb/xcb_ewmh.h> +#include <xcb/xcb_icccm.h> +#include <xcb/xcb_image.h> +#include <xcb/xcb_aux.h> +#include <xcb/composite.h> +#include <xcb/damage.h> + +//XLib includes (XCB Damage lib does not appear to register for damage events properly) +#include <X11/extensions/Xdamage.h> + +//SYSTEM TRAY STANDARD DEFINITIONS +#define _NET_SYSTEM_TRAY_ORIENTATION_HORZ 0 +#define _NET_SYSTEM_TRAY_ORIENTATION_VERT 1 +#define SYSTEM_TRAY_REQUEST_DOCK 0 +#define SYSTEM_TRAY_BEGIN_MESSAGE 1 +#define SYSTEM_TRAY_CANCEL_MESSAGE 2 + +#define URGENCYHINT (1L << 8) //For window urgency detection + +#define ROOT_WIN_EVENT_MASK (XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT | \ + XCB_EVENT_MASK_BUTTON_PRESS | \ + XCB_EVENT_MASK_STRUCTURE_NOTIFY | \ + XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY | \ + XCB_EVENT_MASK_POINTER_MOTION | \ + XCB_EVENT_MASK_PROPERTY_CHANGE | \ + XCB_EVENT_MASK_FOCUS_CHANGE | \ + XCB_EVENT_MASK_ENTER_WINDOW) + +#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 | \ + 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, 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{ +public: + xcb_ewmh_connection_t EWMH; //This is where all the screen info and atoms are located + QHash<QString, xcb_atom_t> ATOMS; + xcb_screen_t *root_screen; + xcb_window_t root_window, wm_window, tray_window; + + //Functions for setting up these objects as needed + bool init_ATOMS(){ + xcb_intern_atom_cookie_t *cookie = xcb_ewmh_init_atoms(QX11Info::connection(), &EWMH); + if(!xcb_ewmh_init_atoms_replies(&EWMH, cookie, NULL) ){ + qDebug() << "Error with XCB atom initializations"; + return false; + } + + QStringList atoms; + atoms << "WM_TAKE_FOCUS" << "WM_DELETE_WINDOW" << "WM_PROTOCOLS" << "_NET_WM_WINDOW_OPACITY" + << "WM_CHANGE_STATE" << "_NET_SYSTEM_TRAY_OPCODE" << "_NET_SYSTEM_TRAY_ORIENTATION" << "_XEMBED" + << "_NET_SYSTEM_TRAY_VISUAL" << QString("_NET_SYSTEM_TRAY_S%1").arg(QString::number(QX11Info::appScreen())); + //Create all the requests for the atoms + QList<xcb_intern_atom_reply_t*> reply; + for(int i=0; i<atoms.length(); i++){ + reply << xcb_intern_atom_reply(QX11Info::connection(), \ + xcb_intern_atom(QX11Info::connection(), 0, atoms[i].length(), atoms[i].toLocal8Bit()), NULL); + } + //Now evaluate all the requests and save the atoms + for(int i=0; i<reply.length(); i++){ //NOTE: this will always be the same length as the "atoms" list + if(reply[i]!=0){ + ATOMS.insert(atoms[i], reply[i]->atom); + free(reply[i]); //done with this reply + }else{ + //Invalid atom - could not be created + qDebug() << "Could not initialize XCB atom:" << atoms[i]; + } + } //loop over reply + return (ATOMS.keys().length() == atoms.length()); + } + + WId getTransientFor(WId win){ + xcb_get_property_cookie_t cookie = xcb_icccm_get_wm_transient_for_unchecked(QX11Info::connection(), win); + xcb_window_t trans; + if(1!= xcb_icccm_get_wm_transient_for_reply(QX11Info::connection(), cookie, &trans, NULL) ){ + return win; //error in fetching transient window ID (or none found) + }else{ + return trans; + } +} + + bool register_wm(){ + uint32_t value_list[1] = {ROOT_WIN_EVENT_MASK}; + xcb_generic_error_t *status = xcb_request_check( QX11Info::connection(), xcb_change_window_attributes_checked(QX11Info::connection(), root_window, XCB_CW_EVENT_MASK, value_list)); + if(status!=0){ return false; } + uint32_t params[] = {1}; + wm_window = xcb_generate_id(QX11Info::connection()); //need a new ID + xcb_create_window(QX11Info::connection(), root_screen->root_depth, \ + wm_window, root_window, -1, -1, 1, 1, 0, \ + XCB_WINDOW_CLASS_INPUT_OUTPUT, root_screen->root_visual, \ + XCB_CW_OVERRIDE_REDIRECT, params); + if(wm_window==0){ return false; } + //Set the _NET_SUPPORTING_WM property on the root window first + xcb_ewmh_set_supporting_wm_check(&EWMH, root_window, wm_window); + //Also set this property on the child window (pointing to itself) + xcb_ewmh_set_supporting_wm_check(&EWMH, wm_window, wm_window); + //Now also setup the root event mask on the wm_window + status = xcb_request_check( QX11Info::connection(), xcb_change_window_attributes_checked(QX11Info::connection(), wm_window, XCB_CW_EVENT_MASK, value_list)); + if(status!=0){ return false; } + return true; + } + + bool start_system_tray(){ + xcb_atom_t _NET_SYSTEM_TRAY_S = ATOMS.value( QString("_NET_SYSTEM_TRAY_S%1").arg(QString::number(QX11Info::appScreen())) ); + //Make sure that there is no other system tray running + xcb_get_selection_owner_reply_t *ownreply = xcb_get_selection_owner_reply(QX11Info::connection(), \ + xcb_get_selection_owner_unchecked(QX11Info::connection(), _NET_SYSTEM_TRAY_S), NULL); + if(ownreply == 0){ + qWarning() << " - Could not get owner selection reply"; + return false; + }else if(ownreply->owner != 0){ + free(ownreply); + qWarning() << " - An alternate system tray is currently in use"; + return false; + } + free(ownreply); + //Now create the window to use (just offscreen) + tray_window = xcb_generate_id(QX11Info::connection()); //need a new ID + uint32_t params[] = {1}; + xcb_create_window(QX11Info::connection(), root_screen->root_depth, \ + tray_window, root_screen->root, -1, -1, 1, 1, 0, \ + XCB_WINDOW_CLASS_INPUT_OUTPUT, root_screen->root_visual, \ + XCB_CW_OVERRIDE_REDIRECT, params); + //Now register this widget as the system tray + xcb_set_selection_owner(QX11Info::connection(), tray_window, _NET_SYSTEM_TRAY_S, XCB_CURRENT_TIME); + //Make sure that it was registered properly + ownreply = xcb_get_selection_owner_reply(QX11Info::connection(), \ + xcb_get_selection_owner_unchecked(QX11Info::connection(), _NET_SYSTEM_TRAY_S), NULL); + if(ownreply==0 || ownreply->owner != tray_window){ + if(ownreply!=0){ free(ownreply); } + qWarning() << " - Could not register the system tray"; + xcb_destroy_window(QX11Info::connection(), tray_window); + return false; + } + free(ownreply); //done with structure + //Now register the orientation of the system tray + uint32_t orient = _NET_SYSTEM_TRAY_ORIENTATION_HORZ; + xcb_change_property(QX11Info::connection(), XCB_PROP_MODE_REPLACE, tray_window, \ + ATOMS.value("_NET_SYSTEM_TRAY_ORIENTATION"), XCB_ATOM_CARDINAL, 32, 1, &orient); + + //Now set the visual ID for the system tray (same as the root window, but TrueColor) + xcb_visualtype_t *type = xcb_aux_find_visual_by_attrs(root_screen, XCB_VISUAL_CLASS_TRUE_COLOR, 32); + if(type!=0){ + xcb_change_property(QX11Info::connection(), XCB_PROP_MODE_REPLACE, tray_window, \ + ATOMS.value("_NET_SYSTEM_TRAY_VISUAL"), XCB_ATOM_VISUALID, 32, 1, &type->visual_id); + }else{ + qWarning() << " - Could not set TrueColor visual for system tray"; + } + + //Finally, send out an X event letting others know that the system tray is up and running + xcb_client_message_event_t event; + event.response_type = XCB_CLIENT_MESSAGE; + event.format = 32; + event.window = root_screen->root; + event.type = EWMH.MANAGER; //MANAGER atom + event.data.data32[0] = XCB_TIME_CURRENT_TIME; //CurrentTime; + event.data.data32[1] = _NET_SYSTEM_TRAY_S; //_NET_SYSTEM_TRAY_S atom + event.data.data32[2] = tray_window; + event.data.data32[3] = 0; + event.data.data32[4] = 0; + + xcb_send_event(QX11Info::connection(), 0, root_screen->root, XCB_EVENT_MASK_STRUCTURE_NOTIFY | XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT, (const char *) &event); + return true; + } + +}; //end private objects class + + +//inline functions for setting up the internal objects + + +// === PUBLIC === +NativeWindowSystem::NativeWindowSystem() : QObject(){ + obj = 0; + pingTimer = 0; + screenLocked = false; +} + +NativeWindowSystem::~NativeWindowSystem(){ + xcb_ewmh_connection_wipe(&(obj->EWMH)); + free(obj); +} + +//Overarching start/stop functions +bool NativeWindowSystem::start(){ + //Initialize the XCB/EWMH objects + if(obj==0){ + obj = new p_objects(); //instantiate the private objects + obj->wm_window = 0; + obj->tray_window = 0; + xcb_intern_atom_cookie_t *cookie = xcb_ewmh_init_atoms(QX11Info::connection(), &obj->EWMH); + if(!xcb_ewmh_init_atoms_replies(&obj->EWMH, cookie, NULL) ){ + qDebug() << "Error with XCB atom initializations"; + return false; + } + obj->root_screen = xcb_aux_get_screen(QX11Info::connection(), QX11Info::appScreen()); + obj->root_window = obj->root_screen->root; //simplification for later - minor duplication of memory (unsigned int) + //Initialize all the extra atoms that the EWMH object does not have + if( !obj->init_ATOMS() ){ return false; } + } //Done with private object init + bool ok = obj->register_wm(); + if(ok){ + setRoot_supportedActions(); + ok = obj->start_system_tray(); + }else{ + qWarning() << "Could not register the WM"; + } + return ok; +} + +void NativeWindowSystem::stop(){ + +} + +void NativeWindowSystem::RegisterEventShortcut(Qt::Key key, bool set){ +//RegisterEventShortcut( , set); +} + +void NativeWindowSystem::RegisterEventShortcut(int keycode, bool set){ + //xcb_input_grab_device_button_checked + //xcb_input_xi_passive_grab_device_unchecked +} + +// === PRIVATE === +NativeWindowObject* 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() ){ return NWindows[i]; } + //if(checkRelated && NWindows[i]->isRelatedTo(id)){ return NWindows[i]; } + //else if(!checkRelated && id==NWindows[i]->id()){ return NWindows[i]; } + } + //Check to see if this is a transient for some other window + if(checkRelated){ + //WId tid = obj->getTransientFor(id); + //if(tid!=id){ return findWindow(tid, checkRelated); } //call it recursively as needed + //qDebug() << " -- Could not find Window!"; + } + return 0; +} + +NativeWindowObject* NativeWindowSystem::findTrayWindow(WId id){ + for(int i=0; i<TWindows.length(); i++){ + if(TWindows[i]->id()==id){ return TWindows[i]; } + else if(TWindows[i]->isRelatedTo(id)){ return TWindows[i]; } + } + return 0; +} + +void NativeWindowSystem::UpdateWindowProperties(NativeWindowObject* win, QList< NativeWindowObject::Property > props){ + //Put the properties in logical groups as appropriate (some XCB calls return multiple properties) + if(props.contains(NativeWindowObject::Title)){ + //Try the EWMH standards first + // _NET_WM_NAME + QString name; + xcb_get_property_cookie_t cookie = xcb_ewmh_get_wm_name_unchecked(&obj->EWMH, win->id()); + if(cookie.sequence != 0){ + xcb_ewmh_get_utf8_strings_reply_t data; + if( 1 == xcb_ewmh_get_wm_name_reply(&obj->EWMH, cookie, &data, NULL) ){ + name = QString::fromUtf8(data.strings, data.strings_len); + } + } + if(name.isEmpty()){ + //_NET_WM_VISIBLE_NAME + xcb_get_property_cookie_t cookie = xcb_ewmh_get_wm_visible_name_unchecked(&obj->EWMH, win->id()); + if(cookie.sequence != 0){ + xcb_ewmh_get_utf8_strings_reply_t data; + if( 1 == xcb_ewmh_get_wm_visible_name_reply(&obj->EWMH, cookie, &data, NULL) ){ + name = QString::fromUtf8(data.strings, data.strings_len); + } + } + } + if(name.isEmpty()){ + //Now try the ICCCM standard + xcb_get_property_cookie_t cookie = xcb_icccm_get_wm_name_unchecked(QX11Info::connection(), win->id()); + xcb_icccm_get_text_property_reply_t reply; + if(1 == xcb_icccm_get_wm_name_reply(QX11Info::connection(), cookie, &reply, NULL) ){ + name = QString::fromLocal8Bit(reply.name, reply.name_len); + xcb_icccm_get_text_property_reply_wipe(&reply); + } + } + win->setProperty(NativeWindowObject::Title, name); + } //end TITLE property + + if(props.contains(NativeWindowObject::ShortTitle)){ + //Try the EWMH standards first + // _NET_WM_ICON_NAME + QString name; + xcb_get_property_cookie_t cookie = xcb_ewmh_get_wm_icon_name_unchecked(&obj->EWMH, win->id()); + if(cookie.sequence != 0){ + xcb_ewmh_get_utf8_strings_reply_t data; + if( 1 == xcb_ewmh_get_wm_icon_name_reply(&obj->EWMH, cookie, &data, NULL) ){ + name = QString::fromUtf8(data.strings, data.strings_len); + } + } + if(name.isEmpty()){ + //_NET_WM_VISIBLE_ICON_NAME + xcb_get_property_cookie_t cookie = xcb_ewmh_get_wm_visible_icon_name_unchecked(&obj->EWMH, win->id()); + if(cookie.sequence != 0){ + xcb_ewmh_get_utf8_strings_reply_t data; + if( 1 == xcb_ewmh_get_wm_visible_icon_name_reply(&obj->EWMH, cookie, &data, NULL) ){ + name = QString::fromUtf8(data.strings, data.strings_len); + } + } + } + if(name.isEmpty()){ + //Now try the ICCCM standard + xcb_get_property_cookie_t cookie = xcb_icccm_get_wm_icon_name_unchecked(QX11Info::connection(), win->id()); + xcb_icccm_get_text_property_reply_t reply; + if(1 == xcb_icccm_get_wm_icon_name_reply(QX11Info::connection(), cookie, &reply, NULL) ){ + name = QString::fromLocal8Bit(reply.name, reply.name_len); + xcb_icccm_get_text_property_reply_wipe(&reply); + } + } + win->setProperty(NativeWindowObject::ShortTitle, name); + } //end SHORTTITLE property + + if(props.contains(NativeWindowObject::Icon)){ + //See if this is a tray icon first (different routine - entire app window is the icon) + QIcon icon; + if(win == findTrayWindow(win->id())){ + //Tray Icon Window + QPixmap pix; + //Get the current QScreen (for XCB->Qt conversion) + QList<QScreen*> scrnlist = QApplication::screens(); + //Try to grab the given window directly with Qt + for(int i=0; i<scrnlist.length() && pix.isNull(); i++){ + pix = scrnlist[i]->grabWindow(win->id()); + } + icon.addPixmap(pix); + }else{ + //Standard window + //Fetch the _NET_WM_ICON for the window and return it as a QIcon + xcb_get_property_cookie_t cookie = xcb_ewmh_get_wm_icon_unchecked(&obj->EWMH, win->id()); + xcb_ewmh_get_wm_icon_reply_t reply; + if(1 == xcb_ewmh_get_wm_icon_reply(&obj->EWMH, cookie, &reply, NULL)){ + xcb_ewmh_wm_icon_iterator_t iter = xcb_ewmh_get_wm_icon_iterator(&reply); + //Just use the first + bool done =false; + while(!done){ + //Now convert the current data into a Qt image + // - first 2 elements are width and height (removed via XCB functions) + // - data in rows from left to right and top to bottom + QImage image(iter.width, iter.height, QImage::Format_ARGB32); //initial setup + uint* dat = iter.data; + //dat+=2; //remember the first 2 element offset + for(int i=0; i<image.byteCount()/4; ++i, ++dat){ + ((uint*)image.bits())[i] = *dat; + } + icon.addPixmap(QPixmap::fromImage(image)); //layer this pixmap onto the icon + //Now see if there are any more icons available + done = (iter.rem<1); //number of icons remaining + if(!done){ xcb_ewmh_get_wm_icon_next(&iter); } //get the next icon data + } + xcb_ewmh_get_wm_icon_reply_wipe(&reply); + } + } //end type of window + win->setProperty(NativeWindowObject::Icon, icon); + } //end ICON property + + if(props.contains(NativeWindowObject::MinSize) || props.contains(NativeWindowObject::MaxSize) + || props.contains(NativeWindowObject::Size) || props.contains(NativeWindowObject::GlobalPos) ){ + //Try the ICCCM "Normal Hints" structure first (newer spec?) + xcb_get_property_cookie_t cookie = xcb_icccm_get_wm_normal_hints_unchecked(QX11Info::connection(), win->id()); + xcb_size_hints_t reply; + bool ok = false; + if(1==xcb_icccm_get_wm_normal_hints_reply(QX11Info::connection(), cookie, &reply, NULL) ){ ok = true; } + else{ + //Could not find normal hints, try the older "size hints" instead + cookie = xcb_icccm_get_wm_size_hints_unchecked(QX11Info::connection(), win->id(), XCB_ATOM_WM_SIZE_HINTS); + if(1==xcb_icccm_get_wm_size_hints_reply(QX11Info::connection(), cookie, &reply, NULL) ){ ok = true; } + } + if(ok){ + bool initsize = win->property(NativeWindowObject::Size).isNull(); //initial window size + if( (reply.flags&XCB_ICCCM_SIZE_HINT_US_POSITION)==XCB_ICCCM_SIZE_HINT_US_POSITION ){ win->setProperty(NativeWindowObject::GlobalPos, QPoint(reply.x,reply.y)); } + if( (reply.flags&XCB_ICCCM_SIZE_HINT_US_SIZE)==XCB_ICCCM_SIZE_HINT_US_SIZE ){ win->setProperty(NativeWindowObject::Size, QSize(reply.width, reply.height)); } + if( (reply.flags&XCB_ICCCM_SIZE_HINT_P_POSITION)==XCB_ICCCM_SIZE_HINT_P_POSITION ){ win->setProperty(NativeWindowObject::GlobalPos, QPoint(reply.x,reply.y)); } + if( (reply.flags&XCB_ICCCM_SIZE_HINT_P_SIZE)==XCB_ICCCM_SIZE_HINT_P_SIZE ){ win->setProperty(NativeWindowObject::Size, QSize(reply.width, reply.height)); } + if( (reply.flags&XCB_ICCCM_SIZE_HINT_P_MIN_SIZE)==XCB_ICCCM_SIZE_HINT_P_MIN_SIZE ){ win->setProperty(NativeWindowObject::MinSize, QSize(reply.min_width, reply.min_height)); } + if( (reply.flags&XCB_ICCCM_SIZE_HINT_P_MAX_SIZE)==XCB_ICCCM_SIZE_HINT_P_MAX_SIZE ){ win->setProperty(NativeWindowObject::MaxSize, QSize(reply.max_width, reply.max_height)); } + if( (reply.flags&XCB_ICCCM_SIZE_HINT_BASE_SIZE)==XCB_ICCCM_SIZE_HINT_BASE_SIZE && initsize ){ win->setProperty(NativeWindowObject::Size, QSize(reply.base_width, reply.base_height)); } + //if( (reply.flags&XCB_ICCCM_SIZE_HINT_P_RESIZE_INC)==XCB_ICCCM_SIZE_HINT_P_RESIZE_INC ){ hints.width_inc=reply.width_inc; hints.height_inc=reply.height_inc; } + //if( (reply.flags&XCB_ICCCM_SIZE_HINT_P_ASPECT)==XCB_ICCCM_SIZE_HINT_P_ASPECT ){ hints.min_aspect_num=reply.min_aspect_num; hints.min_aspect_den=reply.min_aspect_den; hints.max_aspect_num=reply.max_aspect_num; hints.max_aspect_den=reply.max_aspect_den;} + //if( (reply.flags&XCB_ICCCM_SIZE_HINT_P_WIN_GRAVITY)==XCB_ICCCM_SIZE_HINT_P_WIN_GRAVITY ){ hints.win_gravity=reply.win_gravity; } + } + } //end of geometry properties + + if(props.contains(NativeWindowObject::Name)){ + //Put the app/class name here (much more static than the "Title" properties + xcb_get_property_cookie_t cookie = xcb_icccm_get_wm_class_unchecked(QX11Info::connection(), win->id()); + xcb_icccm_get_wm_class_reply_t reply; + if(1 == xcb_icccm_get_wm_class_reply(QX11Info::connection(), cookie, &reply, NULL) ){ + //Returns: "<instance name>::::<class name>" + win->setProperty(NativeWindowObject::Name, ( QString::fromLocal8Bit(reply.instance_name)+"::::"+QString::fromLocal8Bit(reply.class_name) )); + xcb_icccm_get_wm_class_reply_wipe(&reply); + } + } //end NAME property + + if(props.contains(NativeWindowObject::Workspace)){ + xcb_get_property_cookie_t cookie = xcb_ewmh_get_wm_desktop_unchecked(&obj->EWMH, win->id()); + uint32_t num = 0; + int wkspace = -1; + if(1==xcb_ewmh_get_wm_desktop_reply(&obj->EWMH, cookie, &num, NULL) ){ + if(num!=0xFFFFFFFF){ wkspace = num; } + }/*else{ + //Error in fetching property (not set?) + // - put it on the current screen + out = WM_Get_Current_Desktop(); + }*/ + win->setProperty(NativeWindowObject::Workspace, wkspace); + } + if(props.contains(NativeWindowObject::FrameExtents)){ + //Just assign default values to this - need to automate it later + //win->setProperty(NativeWindowObject::FrameExtents, QVariant::fromValue<QList<int> >(QList<int>() << 5 << 5 << 5+QFontMetrics(QFont()).height() << 5) ); + } + if(props.contains(NativeWindowObject::RelatedWindows)){ + WId orig = win->id(); + WId tid = obj->getTransientFor(orig); + QList<WId> list; + while(tid != orig){ + list << tid; + orig = tid; + tid = obj->getTransientFor(orig); + } + win->setProperty(NativeWindowObject::RelatedWindows, QVariant::fromValue(list)); + } + if(props.contains(NativeWindowObject::Visible)){ + xcb_get_window_attributes_reply_t *attr = xcb_get_window_attributes_reply(QX11Info::connection(), xcb_get_window_attributes(QX11Info::connection(), win->id()) , NULL); + if(attr != 0){ + win->setProperty(NativeWindowObject::Visible, attr->map_state == XCB_MAP_STATE_VIEWABLE); + free(attr); + } + } + if(props.contains(NativeWindowObject::WinTypes)){ + QList< NativeWindowObject::Type> types; + xcb_get_property_cookie_t cookie = xcb_ewmh_get_wm_window_type_unchecked(&obj->EWMH, win->id()); + xcb_ewmh_get_atoms_reply_t reply; + if(1==xcb_ewmh_get_wm_window_type_reply(&obj->EWMH, cookie, &reply, NULL) ){ + for(unsigned int i=0; i<reply.atoms_len; i++){ + if(reply.atoms[i]==obj->EWMH._NET_WM_WINDOW_TYPE_DESKTOP){ types << NativeWindowObject::T_DESKTOP; } + else if(reply.atoms[i]==obj->EWMH._NET_WM_WINDOW_TYPE_DOCK){ types << NativeWindowObject::T_DOCK; } + else if(reply.atoms[i]==obj->EWMH._NET_WM_WINDOW_TYPE_TOOLBAR){ types << NativeWindowObject::T_TOOLBAR; } + else if(reply.atoms[i]==obj->EWMH._NET_WM_WINDOW_TYPE_MENU){ types << NativeWindowObject::T_MENU; } + else if(reply.atoms[i]==obj->EWMH._NET_WM_WINDOW_TYPE_UTILITY){ types << NativeWindowObject::T_UTILITY; } + else if(reply.atoms[i]==obj->EWMH._NET_WM_WINDOW_TYPE_SPLASH){ types << NativeWindowObject::T_SPLASH; } + else if(reply.atoms[i]==obj->EWMH._NET_WM_WINDOW_TYPE_DIALOG){ types << NativeWindowObject::T_DIALOG; } + else if(reply.atoms[i]==obj->EWMH._NET_WM_WINDOW_TYPE_DROPDOWN_MENU){ types << NativeWindowObject::T_DROPDOWN_MENU; } + else if(reply.atoms[i]==obj->EWMH._NET_WM_WINDOW_TYPE_POPUP_MENU){ types << NativeWindowObject::T_POPUP_MENU; } + else if(reply.atoms[i]==obj->EWMH._NET_WM_WINDOW_TYPE_TOOLTIP){ types << NativeWindowObject::T_TOOLTIP; } + else if(reply.atoms[i]==obj->EWMH._NET_WM_WINDOW_TYPE_NOTIFICATION){ types << NativeWindowObject::T_NOTIFICATION; } + else if(reply.atoms[i]==obj->EWMH._NET_WM_WINDOW_TYPE_COMBO){ types << NativeWindowObject::T_COMBO; } + else if(reply.atoms[i]==obj->EWMH._NET_WM_WINDOW_TYPE_DND){ types << NativeWindowObject::T_DND; } + else if(reply.atoms[i]==obj->EWMH._NET_WM_WINDOW_TYPE_NORMAL){ types << NativeWindowObject::T_NORMAL; } + } + } + if(types.isEmpty()){ types << NativeWindowObject::T_NORMAL; } + win->setProperty(NativeWindowObject::WinTypes, QVariant::fromValue< QList<NativeWindowObject::Type> >(types) ); + } +} + +void NativeWindowSystem::ChangeWindowProperties(NativeWindowObject* win, QList< NativeWindowObject::Property > props, QList<QVariant> vals){ + if(props.length() == 0 || vals.length()!=props.length() || win ==0 ){ return; } + //qDebug() << "Change Window Properties:" << props << vals; + if(props.contains(NativeWindowObject::Title)){ + + } + if(props.contains(NativeWindowObject::ShortTitle)){ + + } + if(props.contains(NativeWindowObject::Icon)){ + + } + if(props.contains(NativeWindowObject::Size) || props.contains(NativeWindowObject::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; + QSize sz = win->property(NativeWindowObject::Size).toSize(); + if(props.contains(NativeWindowObject::Size)){ + sz = vals[ props.indexOf(NativeWindowObject::Size) ] .toSize(); + } + valList.width = sz.width(); + valList.height = sz.height(); + if(props.contains(NativeWindowObject::GlobalPos)){ + QPoint pt = vals[ props.indexOf(NativeWindowObject::GlobalPos) ] .toPoint(); + valList.x = pt.x(); + valList.y = pt.y(); + }else{ + valList.x = win->property(NativeWindowObject::GlobalPos).toPoint().x(); + valList.y = win->property(NativeWindowObject::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); + } + if(props.contains(NativeWindowObject::Name)){ + + } + if(props.contains(NativeWindowObject::Workspace)){ + int num = vals[ props.indexOf(NativeWindowObject::Workspace) ].toInt(); + xcb_ewmh_set_wm_desktop(&obj->EWMH, win->id(), (num<0 ? 0xFFFFFFFF : qAbs(num) ) ); + } + if(props.contains(NativeWindowObject::RelatedWindows)){ + + } + if(props.contains(NativeWindowObject::Visible)){ + qDebug() << "Check Window Visibility:" << vals[ props.indexOf(NativeWindowObject::Visible) ]; + if( vals[ props.indexOf(NativeWindowObject::Visible) ].toBool() ){ + qDebug() << " - Map it!"; + xcb_map_window(QX11Info::connection(), win->id()); + }else{ + qDebug() << " - Unmap it!"; + xcb_unmap_window(QX11Info::connection(), win->id()); + } + } + if(props.contains(NativeWindowObject::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(NativeWindowObject::Active)].toBool() ){ + //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; + event.response_type = XCB_CLIENT_MESSAGE; + event.format = 32; + event.window = win->id(); + event.type = obj->ATOMS["WM_PROTOCOLS"]; + event.data.data32[0] = obj->ATOMS["WM_TAKE_FOCUS"]; + event.data.data32[1] = XCB_TIME_CURRENT_TIME; //CurrentTime; + event.data.data32[2] = 0; + event.data.data32[3] = 0; + event.data.data32[4] = 0; + + 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()); +*/ + } + } + +} + +void NativeWindowSystem::SetupNewWindow(NativeWindowObject *win){ + 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); //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) + // -- Retested 6/29/17 (no change) Ken Moore + //xcb_damage_damage_t dmgID = xcb_generate_id(QX11Info::connection()); //This is a typedef for a 32-bit unsigned integer + //xcb_damage_create(QX11Info::connection(), dmgID, win->id(), XCB_DAMAGE_REPORT_LEVEL_RAW_RECTANGLES); + // -- XLib (Note: This is only used because the XCB routine above does not work - needs to be fixed upstream in XCB itself). + Damage dmgID = XDamageCreate(QX11Info::display(), win->id(), XDamageReportRawRectangles); + + win->addDamageID( (uint) dmgID); //save this for later + }else{ + //xcb_reparent_window(QX11Info::connection(), win->id(), this->winId(), 0, 0); + //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 + } + //win->addFrameWinID(this->winId()); + registerClientEvents(win->id()); +} + +QImage NativeWindowSystem::GetWindowImage(NativeWindowObject* win){ + //qDebug() << "Update Window Image:" << win->name(); + QRect geom(QPoint(0,0), win->property(NativeWindowObject::Size).toSize()); + QImage img; //(geom.width(), geom.height(), QImage::Format_ARGB32); + //img.fill(QGuiApplication::palette().window()); + if(DISABLE_COMPOSITING){ + QList<QScreen*> screens = static_cast<QApplication*>( QApplication::instance() )->screens(); + if(!screens.isEmpty()){ + img = screens[0]->grabWindow(win->id(), geom.x(), geom.y(), geom.width(), geom.height()).toImage(); + } + }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){ return QImage(); } + + //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){ return QImage(); } + QImage tmp(ximg->data, ximg->width, ximg->height, ximg->stride, QImage::Format_ARGB32_Premultiplied); + img = tmp.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); + + //Cleanup the XCB data structures + xcb_free_pixmap(QX11Info::connection(), pix); + } + return img; + //win->setProperty(NativeWindowObject::WinImage, QVariant::fromValue<QImage>(img) ); +} + +// === PUBLIC SLOTS === +//These are the slots which are typically only used by the desktop system itself or the NativeEventFilter +void NativeWindowSystem::RegisterVirtualRoot(WId id){ + //Convert to XCB array + xcb_window_t array[1]; + 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(){ +//NET_WM standards (ICCCM implied - no standard way to list those) + xcb_atom_t list[] = {obj->EWMH._NET_WM_NAME, + obj->EWMH._NET_WM_ICON, + obj->EWMH._NET_WM_ICON_NAME, + obj->EWMH._NET_WM_DESKTOP, + /*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, + obj->EWMH._NET_WM_WINDOW_TYPE_SPLASH, obj->EWMH._NET_WM_WINDOW_TYPE_DIALOG, obj->EWMH._NET_WM_WINDOW_TYPE_NORMAL, + obj->EWMH._NET_WM_WINDOW_TYPE_DROPDOWN_MENU, obj->EWMH._NET_WM_WINDOW_TYPE_POPUP_MENU, obj->EWMH._NET_WM_WINDOW_TYPE_TOOLTIP, + obj->EWMH._NET_WM_WINDOW_TYPE_NOTIFICATION, obj->EWMH._NET_WM_WINDOW_TYPE_COMBO, obj->EWMH._NET_WM_WINDOW_TYPE_DND, + }; + xcb_ewmh_set_supported(&obj->EWMH, QX11Info::appScreen(), 20,list); +} + +void NativeWindowSystem::setRoot_numberOfWorkspaces(QStringList names){ + if(names.isEmpty()){ names << "one"; } + //First set the overall number of workspaces + xcb_ewmh_set_number_of_desktops(&obj->EWMH, QX11Info::appScreen(), names.length()); + //Now set the names for the workspaces + //EWMH LIBRARY BROKEN - appears to be a mismatch in the function header (looking for a single char array, instead of a list of char arrays) + // Ken Moore - 6/27/17 + /* + char *array[ names.length() ]; + for(int i=0; i<names.length(); i++){array[i] = names[i].toUtf8().data(); } //Convert to an array of char arrays + xcb_ewmh_set_desktop_names(&obj->EWMH, QX11Info::appScreen(), names.length(), array); + */ +} + +void NativeWindowSystem::setRoot_currentWorkspace(int num){ + xcb_ewmh_set_current_desktop(&obj->EWMH, QX11Info::appScreen(), num); +} + +void NativeWindowSystem::setRoot_clientList(QList<WId> list, bool stackorder){ + //convert the QList into a generic array + xcb_window_t array[list.length()]; + for(int i=0; i<list.length(); i++){ array[i] = list[i]; } + if(stackorder){ + xcb_ewmh_set_client_list_stacking(&obj->EWMH, QX11Info::appScreen(), list.length(), array); + }else{ + xcb_ewmh_set_client_list(&obj->EWMH, QX11Info::appScreen(), list.length(), array); + } +} + +void NativeWindowSystem::setRoot_desktopGeometry(QRect geom){ + //This one is a combo function + // This will set the "DESKTOP_VIEWPORT" property (point) + // as well as the "DESKTOP_GEOMETRY" property (size) + //Turn the QList into xcb_ewmh_coordinates_t* + xcb_ewmh_coordinates_t array[1]; + array[0].x=geom.x(); array[0].y=geom.y(); + //Now set the property + xcb_ewmh_set_desktop_viewport(&obj->EWMH, QX11Info::appScreen(), 1, array); + xcb_ewmh_set_desktop_geometry(&obj->EWMH, QX11Info::appScreen(), geom.width(), geom.height()); +} + +void NativeWindowSystem::setRoot_desktopWorkarea(QList<QRect> list){ + //Convert to the XCB/EWMH data structures + xcb_ewmh_geometry_t array[list.length()]; + for(int i=0; i<list.length(); i++){ + array[i].x = list[i].x(); array[i].y = list[i].y(); + array[i].width = list[i].width(); array[i].height = list[i].height(); + } + //Now set the property + xcb_ewmh_set_workarea(&obj->EWMH, QX11Info::appScreen(), list.length(), array); +} + +void NativeWindowSystem::setRoot_activeWindow(WId 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; + event.response_type = XCB_CLIENT_MESSAGE; + event.format = 32; + event.window = win; + event.type = obj->ATOMS["WM_PROTOCOLS"]; + event.data.data32[0] = obj->ATOMS["WM_TAKE_FOCUS"]; + event.data.data32[1] = XCB_TIME_CURRENT_TIME; //CurrentTime; + event.data.data32[2] = 0; + event.data.data32[3] = 0; + 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());*/ +} + +int NativeWindowSystem::currentWorkspace(){ + xcb_get_property_cookie_t cookie = xcb_ewmh_get_current_desktop_unchecked(&obj->EWMH, QX11Info::appScreen()); + uint32_t num = 0; + if(1==xcb_ewmh_get_current_desktop_reply(&obj->EWMH, cookie, &num, NULL) ){ + return num; + }else{ + return 0; + } +} + +//NativeWindowEventFilter interactions +void NativeWindowSystem::NewWindowDetected(WId id){ + //Make sure this can be managed first + if(findWindow(id, false) != 0){ findWindow(id,false)->setProperty(NativeWindowObject::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 + if(attr->override_redirect){ free(attr); return; } //window has override redirect set (do not manage) + free(attr); + xcb_reparent_window(QX11Info::connection(), id, QX11Info::appRootWindow(), 0, 0); + //Now go ahead and create/populate the container for this window + NativeWindowObject *win = new NativeWindowObject(id); + + //Register for events from this window + registerClientEvents(win->id()); + NWindows << win; + UpdateWindowProperties(win, NativeWindowObject::allProperties()); + if(win->showWindowFrame()){ + win->setProperty(NativeWindowObject::FrameExtents, QVariant::fromValue<QList<int> >( QList<int>() << 5 << 5 << 30 << 5 )); + } + qDebug() << "New Window [& associated ID's]:" << win->id() << win->property(NativeWindowObject::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)) ); + connect(win, SIGNAL(RequestPing(WId)), this, SLOT(RequestPing(WId)) ); + connect(win, SIGNAL(RequestReparent(WId, WId, QPoint)), this, SLOT(RequestReparent(WId, WId, QPoint)) ); + connect(win, SIGNAL(RequestPropertiesChange(WId, QList<NativeWindowObject::Property>, QList<QVariant>)), this, SLOT(RequestPropertiesChange(WId, QList<NativeWindowObject::Property>, QList<QVariant>)) ); + connect(win, SIGNAL(VerifyNewGeometry(WId)), this, SLOT(CheckWindowPosition(WId)) ); + SetupNewWindow(win); + CheckWindowPosition(id, true); //first time placement + xcb_map_window(QX11Info::connection(), win->id()); + emit NewWindowAvailable(win); +} + +void NativeWindowSystem::NewTrayWindowDetected(WId id){ + //Make sure this can be managed first + qDebug() << "New Tray Window Detected:" << id; + if(findTrayWindow(id) != 0){ return; } //already managed + qDebug() << " - Setup new tray window"; + /*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){ qDebug() << " - [WARN] No tray window attributes"; return; } //could not get attributes of window + if(attr->override_redirect){ qDebug() << " - [WARN] Override Redirect"; free(attr); return; } //window has override redirect set (do not manage) + qDebug() << " - free attr"; + free(attr);*/ + //Register for events from this window + #define TRAY_WIN_EVENT_MASK (XCB_EVENT_MASK_EXPOSURE | \ + XCB_EVENT_MASK_STRUCTURE_NOTIFY | \ + XCB_EVENT_MASK_SUBSTRUCTURE_REDIRECT | \ + XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY | \ + XCB_EVENT_MASK_ENTER_WINDOW) + + uint32_t value_list[1] = {TRAY_WIN_EVENT_MASK}; + qDebug() << " - change tray window attributes"; + xcb_change_window_attributes(QX11Info::connection(), id, XCB_CW_EVENT_MASK, value_list); + //Now go ahead and create/populate the container for this window + NativeWindowObject *win = new NativeWindowObject(id); + TWindows << win; + qDebug() << " - update tray window properties"; + UpdateWindowProperties(win, NativeWindowObject::allProperties()); + qDebug() << " - emit new tray window signal"; + emit NewTrayWindowAvailable(win); +} + +void NativeWindowSystem::WindowCloseDetected(WId id){ + NativeWindowObject *win = findWindow(id, false); + if(win==0){ win = findWindow(id, true); } + //qDebug() << "Got Window Closed" << id << win; + //qDebug() << "Old Window List:" << NWindows.length(); + if(win!=0){ + NWindows.removeAll(win); + win->emit WindowClosed(id); + //qDebug() << "Visible Window Closed!!!"; + emit WindowClosed(); + win->deleteLater(); + }else{ + win = findTrayWindow(id); + if(win!=0){ + TWindows.removeAll(win); + win->emit WindowClosed(id); + emit TrayWindowClosed(); + win->deleteLater(); + } + } + //qDebug() << " - Now:" << NWindows.length(); +} + +void NativeWindowSystem::WindowPropertyChanged(WId id, NativeWindowObject::Property prop){ + //NOTE: This is triggered by the NativeEventFilter - not by changes to the NativeWindow objects themselves + NativeWindowObject *win = findWindow(id, prop!=NativeWindowObject::Visible); + if(win==0){ win = findTrayWindow(id); } + if(win!=0){ + UpdateWindowProperties(win, QList<NativeWindowObject::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<NativeWindowObject::Property>() << prop); + } + } +} + +void NativeWindowSystem::WindowPropertiesChanged(WId id, QList<NativeWindowObject::Property> props){ + //NOTE: This is triggered by the NativeEventFilter - not by changes to the NativeWindow objects themselves + NativeWindowObject *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); + } + } +} + +void NativeWindowSystem::WindowPropertyChanged(WId id, NativeWindowObject::Property prop, QVariant val){ + NativeWindowObject *win = findWindow(id,prop!=NativeWindowObject::Visible); + if(win==0){ win = findTrayWindow(id); } + if(win!=0){ + win->setProperty(prop, val); + } +} + +void NativeWindowSystem::WindowPropertiesChanged(WId id, QList<NativeWindowObject::Property> props, QList<QVariant> vals){ + NativeWindowObject *win = findWindow(id); + if(win==0){ win = findTrayWindow(id); } + if(win!=0){ + for(int i=0; i<props.length() && i<vals.length(); i++){ win->setProperty(props[i], vals[i]); } + } +} + +void NativeWindowSystem::RequestPropertyChange(WId id, NativeWindowObject::Property prop, QVariant val){ + //This is just a simplified version of the multiple-property function + RequestPropertiesChange(id, QList<NativeWindowObject::Property>() << prop, QList<QVariant>() << val); +} + +void NativeWindowSystem::RequestPropertiesChange(WId win, QList<NativeWindowObject::Property> props, QList<QVariant> vals){ + //Find the window object associated with this id + bool istraywin = false; //just in case we care later if it is a tray window or a regular window + NativeWindowObject *WIN = findWindow(win); + if(WIN==0){ istraywin = true; WIN = findTrayWindow(win); } + if(WIN==0){ return; } //invalid window ID - no longer available + //Now make any changes as needed + ChangeWindowProperties(WIN, props, vals); +} + +void NativeWindowSystem::GotPong(WId id){ + if(waitingForPong.contains(id)){ + waitingForPong.remove(id); + } + if(waitingForPong.isEmpty() && pingTimer!=0){ pingTimer->stop(); } +} + +void NativeWindowSystem::NewKeyPress(int keycode, WId win){ + emit NewInputEvent(); + if(screenLocked){ return; } + Qt::Key key = KeycodeToQt(keycode); + if(key!=Qt::Key_unknown){ emit KeyPressDetected(win, key); } +} + +void NativeWindowSystem::NewKeyRelease(int keycode, WId win){ + emit NewInputEvent(); + if(screenLocked){ return; } + Qt::Key key = KeycodeToQt(keycode); + if(key!=Qt::Key_unknown){ emit KeyReleaseDetected(win, key); } +} + +void NativeWindowSystem::NewMousePress(int buttoncode, WId win){ + emit NewInputEvent(); + if(screenLocked){ return; } + emit MousePressDetected(win, MouseToQt(buttoncode)); +} + +void NativeWindowSystem::NewMouseRelease(int buttoncode, WId win){ + emit NewInputEvent(); + if(screenLocked){ return; } + emit MouseReleaseDetected(win, MouseToQt(buttoncode)); +} + +void NativeWindowSystem::CheckDamageID(WId win){ + //qDebug() << "Got Damage Event:" << win; + for(int i=0; i<NWindows.length(); i++){ + if(NWindows[i]->damageId() == win || NWindows[i]->id() == win || NWindows[i]->frameId()==win){ + //qDebug() << " - Found window"; + //UpdateWindowImage(NWindows[i]); + NWindows[i]->emit winImageChanged(); + return; + } + } + NativeWindowObject *WIN = findTrayWindow(win); + if(WIN!=0){ + UpdateWindowProperties(WIN, QList<NativeWindowObject::Property>() << NativeWindowObject::Icon); + } +} + +void NativeWindowSystem::raiseWindow(NativeWindowObject *win){ + qDebug() << "Raise Window:" << win->name() << win->id(); + //Note: Always ensure the desktop canvas is right under the main window that is raised + xcb_circulate_window(QX11Info::connection(), XCB_CIRCULATE_RAISE_LOWEST, Lumina::ROOTWIN->viewID()); + xcb_circulate_window(QX11Info::connection(), XCB_CIRCULATE_RAISE_LOWEST ,win->id()); +} + + +void NativeWindowSystem::lowerWindow(NativeWindowObject *win){ + qDebug() << "Lower Window:" << win->name() << win->id(); + xcb_circulate_window(QX11Info::connection(), XCB_CIRCULATE_LOWER_HIGHEST ,win->id()); +} + +// === PRIVATE SLOTS === +//These are the slots which are built-in and automatically connected when a new NativeWindow is created + +void NativeWindowSystem::RequestClose(WId win){ + //Send the window a WM_DELETE_WINDOW message + xcb_client_message_event_t event; + event.response_type = XCB_CLIENT_MESSAGE; + event.format = 32; + event.window = win; + event.type = obj->ATOMS.value("WM_PROTOCOLS"); + event.data.data32[0] = obj->ATOMS.value("WM_DELETE_WINDOW"); + event.data.data32[1] = XCB_TIME_CURRENT_TIME; //CurrentTime; + event.data.data32[2] = 0; + event.data.data32[3] = 0; + 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()); +} + +void NativeWindowSystem::RequestKill(WId win){ + xcb_kill_client(QX11Info::connection(), win); +} + +void NativeWindowSystem::RequestPing(WId win){ + waitingForPong.insert(win, QDateTime::currentDateTime().addSecs(5) ); + xcb_ewmh_send_wm_ping(&obj->EWMH, win, XCB_CURRENT_TIME); + if(pingTimer==0){ + pingTimer = new QTimer(this); + pingTimer->setInterval(2000); //2seconds + connect(pingTimer, SIGNAL(timeout()), this, SLOT(checkPings()) ); + } + pingTimer->start(); +} + +void NativeWindowSystem::RequestReparent(WId win, WId container, QPoint relorigin){ + NativeWindowObject *WIN = findWindow(win); + if(WIN==0){ return; } //could not find corresponding window structure +//Reparent the window into the container + xcb_reparent_window(QX11Info::connection(), win, container, relorigin.x(), relorigin.y()); + //xcb_map_window(QX11Info::connection(), win); + + //Now send the embed event to the app + //qDebug() << " - send _XEMBED event"; + xcb_client_message_event_t event; + event.response_type = XCB_CLIENT_MESSAGE; + event.format = 32; + event.window = win; + event.type = obj->ATOMS["_XEMBED"]; //_XEMBED + event.data.data32[0] = XCB_TIME_CURRENT_TIME; //CurrentTime; + event.data.data32[1] = 0; //XEMBED_EMBEDDED_NOTIFY + event.data.data32[2] = 0; + event.data.data32[3] = container; //WID of the container + 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); + + //Now setup any redirects and return + //this->SelectInput(win, true); //Notify of structure changes + registerClientEvents(win); + //xcb_composite_redirect_window(QX11Info::connection(), win, XCB_COMPOSITE_REDIRECT_MANUAL); //XCB_COMPOSITE_REDIRECT_[MANUAL/AUTOMATIC]); + + //Now map the window (will be a transparent child of the container) + xcb_map_window(QX11Info::connection(), win); + xcb_map_window(QX11Info::connection(), container); + //Now create/register the damage handler + // -- XCB (Note: The XCB damage registration is completely broken at the moment - 9/15/15, Ken Moore) + // -- Retested 6/29/17 (no change) Ken Moore + //xcb_damage_damage_t dmgID = xcb_generate_id(QX11Info::connection()); //This is a typedef for a 32-bit unsigned integer + //xcb_damage_create(QX11Info::connection(), dmgID, win, XCB_DAMAGE_REPORT_LEVEL_RAW_RECTANGLES); + // -- XLib (Note: This is only used because the XCB routine above does not work - needs to be fixed upstream in XCB itself). + Damage dmgID = XDamageCreate(QX11Info::display(), win, XDamageReportRawRectangles); + WIN->addDamageID( (uint) dmgID); //save this for later + //qDebug() << " - Done"; + //return ( (uint) dmgID ); +} +/* + xcb_reparent_window(QX11Info::connection(), client, parent, relorigin.x(), relorigin.y()); + + //Now ensure that we still get event for these windows + registerClientEvents(client); //make sure we re-do this after reparenting + registerClientEvents(parent); + xcb_map_window(QX11Info::connection(), parent); +}*/ diff --git a/src-qt5/core/lumina-desktop-unified/src-events/NativeWindowSystem.h b/src-qt5/core/lumina-desktop-unified/src-events/NativeWindowSystem.h new file mode 100644 index 00000000..0b6cd67e --- /dev/null +++ b/src-qt5/core/lumina-desktop-unified/src-events/NativeWindowSystem.h @@ -0,0 +1,156 @@ +//=========================================== +// Lumina-DE source code +// Copyright (c) 2017-2018, Ken Moore +// Available under the 3-clause BSD license +// See the LICENSE file for full details +//=========================================== +// This is a Qt5/Lumina wrapper around native graphics system calls +// It is primarily designed around the creation/modification of instances of +// the "NativeWindowObject" class for passing information around +//=========================================== +#ifndef _LUMINA_DESKTOP_NATIVE_WINDOW_SYSTEM_H +#define _LUMINA_DESKTOP_NATIVE_WINDOW_SYSTEM_H + +#include <NativeWindowObject.h> +#include <QObject> +#include <QHash> +#include <QTimer> + + +class NativeWindowSystem : public QObject{ + Q_OBJECT +private: + QList<NativeWindowObject*> NWindows; + QList<NativeWindowObject*> TWindows; + + //Now define a simple private_objects class so that each implementation + // has a storage container for defining/placing private objects as needed + class p_objects; + p_objects* obj; + + //Internal timers/variables for managing pings + QTimer *pingTimer; + QHash<WId, QDateTime> waitingForPong; + + void checkPings(){ + QDateTime cur = QDateTime::currentDateTime(); + QList<WId> waiting = waitingForPong.keys(); + for(int i=0; i<waiting.length(); i++){ + if(waitingForPong.value(waiting[i]) < cur){ + waitingForPong.remove(waiting[i]); //Timeout on this window + if(waitingForPong.isEmpty() && pingTimer!=0){ pingTimer->stop(); } + NativeWindowObject *win = findWindow(waiting[i]); + if(win==0){ win = findTrayWindow(waiting[i]); } + if(win!=0){ win->emit WindowNotResponding(waiting[i]); } + } + } + } + + //Generic private variables + bool screenLocked; + +public: + //enum Property{ None, CurrentWorkspace, Workspaces, VirtualRoots, WorkAreas }; + enum MouseButton{NoButton, LeftButton, RightButton, MidButton, BackButton, ForwardButton, TaskButton, WheelUp, WheelDown, WheelLeft, WheelRight}; + + //Simplifications to find an already-created window object + NativeWindowObject* findWindow(WId id, bool checkRelated = true); + + NativeWindowObject* findTrayWindow(WId id); + // Since some properties may be easier to update in bulk + // let the native system interaction do them in whatever logical groups are best + void UpdateWindowProperties(NativeWindowObject* win, QList< NativeWindowObject::Property > props); + void ChangeWindowProperties(NativeWindowObject* win, QList< NativeWindowObject::Property > props, QList<QVariant> vals); + + void SetupNewWindow(NativeWindowObject *win); + QImage GetWindowImage(NativeWindowObject *win); + + NativeWindowSystem(); + ~NativeWindowSystem(); + + //Overarching start/stop functions + bool start(); + void stop(); + + //General-purpose listing functions + QList<NativeWindowObject*> currentWindows(){ return NWindows; } + QList<NativeWindowObject*> currentTrayWindows(){ return TWindows; } + + //Small simplification functions + static Qt::Key KeycodeToQt(int keycode); + static NativeWindowSystem::MouseButton MouseToQt(int button); + void RegisterEventShortcut(Qt::Key key, bool set); + void RegisterEventShortcut(int keycode, bool set); + + void raiseWindow(NativeWindowObject *win); + void lowerWindow(NativeWindowObject *win); + +public slots: + //These are the slots which are typically only used by the desktop system itself or the NativeWindowEventFilter + + //This is called by the lock screen to keep the NWS aware of the current status + // it is **NOT** the function to call for the user to actually lock the session (that is in the screensaver/lockscreen class) + void ScreenLockChanged(bool lock){ + screenLocked = lock; + } + + //Root Window property registrations + void RegisterVirtualRoot(WId); + void setRoot_supportedActions(); + void setRoot_numberOfWorkspaces(QStringList names); + void setRoot_currentWorkspace(int); + void setRoot_clientList(QList<WId>, bool stackorder = false); + void setRoot_desktopGeometry(QRect); + void setRoot_desktopWorkarea(QList<QRect>); + void setRoot_activeWindow(WId); + + // - Workspaces + int currentWorkspace(); + //void GoToWorkspace(int); + + + //NativeWindowEventFilter interactions + void NewWindowDetected(WId); //will automatically create the new NativeWindow object + 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, NativeWindowObject::Property); //will rescan the window and update the object as needed + void WindowPropertiesChanged(WId, QList<NativeWindowObject::Property>); + void WindowPropertyChanged(WId, NativeWindowObject::Property, QVariant); //will save that property/value to the right object + void WindowPropertiesChanged(WId, QList<NativeWindowObject::Property>, QList<QVariant>); + void RequestPropertyChange(WId, NativeWindowObject::Property, QVariant); + void RequestPropertiesChange(WId, QList<NativeWindowObject::Property>, QList<QVariant>); + void GotPong(WId); + + void NewKeyPress(int keycode, WId win = 0); + void NewKeyRelease(int keycode, WId win = 0); + void NewMousePress(int buttoncode, WId win = 0); + void NewMouseRelease(int buttoncode, WId win = 0); + void CheckDamageID(WId); + +private slots: + //These are the slots which are built-in and automatically connected when a new NativeWindow is created + void RequestClose(WId); + void RequestKill(WId); + void RequestPing(WId); + void RequestReparent(WId, WId, QPoint); //client, parent, relative origin point in parent + + //Window-mgmt functions (see Window-mgmt.cpp for details) + void ArrangeWindows(WId primary, QString type); + void TileWindows(WId primary, QString type); + void CheckWindowPosition(WId id, bool newwindow = false); + void arrangeWindows(NativeWindowObject *primary, QString type, bool primaryonly = false); + +signals: + void NewWindowAvailable(NativeWindowObject*); + void WindowClosed(); + void NewTrayWindowAvailable(NativeWindowObject*); + void TrayWindowClosed(); + void NewInputEvent(); //a mouse or keypress was detected (lock-state independent); + void KeyPressDetected(WId, Qt::Key); //only emitted if lockstate = false + void KeyReleaseDetected(WId, Qt::Key); //only emitted if lockstate = false + void MousePressDetected(WId, NativeWindowSystem::MouseButton); //only emitted if lockstate = false + void MouseReleaseDetected(WId, NativeWindowSystem::MouseButton); //only emitted if lockstate = false + +}; + +#endif diff --git a/src-qt5/core/libLumina/obsolete/RootWindow-mgmt.cpp b/src-qt5/core/lumina-desktop-unified/src-events/Window-mgmt.cpp index 24ea639b..0b45c208 100644 --- a/src-qt5/core/libLumina/obsolete/RootWindow-mgmt.cpp +++ b/src-qt5/core/lumina-desktop-unified/src-events/Window-mgmt.cpp @@ -4,28 +4,38 @@ // Available under the 3-clause BSD license // See the LICENSE file for full details //=========================================== -#include "RootWindow.h" +#include "NativeWindowSystem.h" +inline QScreen* screenUnderMouse(){ + QPoint pos = QCursor::pos(); + QList<QScreen*> scrns = QGuiApplication::screens(); + for(int i=0; i<scrns.length(); i++){ + if(scrns[i]->geometry().contains(pos)){ return scrns[i]; } + } + return 0; +} + //Primary/private function -void RootWindow::arrangeWindows(RootSubWindow *primary, QString type, bool primaryonly){ +void NativeWindowSystem::arrangeWindows(NativeWindowObject *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]; } + for(int i=0; i<NWindows.length(); i++){ + if(NWindows[i]->property(NativeWindowObject::Active).toBool()){ primary = NWindows[i]; } } - if(primary==0 && !WINDOWS.isEmpty()){ primary = WINDOWS[0]; } //just use the first one in the list + if(primary==0 && !NWindows.isEmpty()){ primary = NWindows[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(); + if(screen==0){ return; } //should never happen (theoretically) 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; + int wkspace = primary->property(NativeWindowObject::Workspace).toInt(); + QList<NativeWindowObject*> winlist = NWindows; for(int i=0; i<winlist.length(); i++){ - if(winlist[i]->nativeWindow()->property(NativeWindow::Workspace).toInt()!=wkspace - || !winlist[i]->nativeWindow()->property(NativeWindow::Visible).toBool() + if(winlist[i]->property(NativeWindowObject::Workspace).toInt()!=wkspace + || !winlist[i]->property(NativeWindowObject::Visible).toBool() || desktopArea.intersected(winlist[i]->geometry()).isNull() ){ //window is outside of the desired area or invisible - ignore it winlist.removeAt(i); @@ -45,17 +55,17 @@ void RootWindow::arrangeWindows(RootSubWindow *primary, QString type, bool prima //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()); + winlist[i]->setGeometryNow( QRect( 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()); + winlist[i]->setGeometryNow( QRect( 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); + winlist[i]->setGeometryNow(geom); } //qDebug() << " - New Geometry:" << winlist[i]->geometry(); @@ -65,31 +75,31 @@ void RootWindow::arrangeWindows(RootSubWindow *primary, QString type, bool prima // ================ // Public slots for starting the arrangement routine(s) above // ================ -void RootWindow::ArrangeWindows(WId primary, QString type){ - RootSubWindow* win = windowForId(primary); +void NativeWindowSystem::ArrangeWindows(WId primary, QString type){ + NativeWindowObject* win = findWindow(primary); if(type.isEmpty()){ type = "center"; } //grab the default arrangement format arrangeWindows(win, type); } -void RootWindow::TileWindows(WId primary, QString type){ - RootSubWindow* win = windowForId(primary); +void NativeWindowSystem::TileWindows(WId primary, QString type){ + NativeWindowObject* win = findWindow(primary); if(type.isEmpty()){ type = "single_max"; } //grab the default arrangement format for tiling arrangeWindows(win, type); } -void RootWindow::CheckWindowPosition(WId id, bool newwindow){ +void NativeWindowSystem::CheckWindowPosition(WId id, bool newwindow){ //used after a "drop" to validate/snap/re-arrange window(s) as needed // if "newwindow" is true, then this is the first-placement routine for a window before it initially appears - RootSubWindow* win = windowForId(id); + NativeWindowObject* win = findWindow(id); if(win==0){ return; } //invalid window - QRect geom = win->nativeWindow()->geometry(); + QRect geom = win->geometry(); bool changed = false; //Make sure it is on the screen (quick check) if(geom.x() < 0){ changed = true; geom.moveLeft(0); } if(geom.y() < 0){ changed = true; geom.moveTop(0); } if(geom.width() < 20){ changed = true; geom.setWidth(100); } if(geom.height() < 20){ changed = true; geom.setHeight(100); } - if(changed){ win->setGeometry(geom); } + if(changed){ win->setGeometryNow(geom); } //Now run it through the window arrangement routine arrangeWindows(win, newwindow ?"center" : "snap", true); } diff --git a/src-qt5/core/lumina-desktop-unified/src-events/events.pri b/src-qt5/core/lumina-desktop-unified/src-events/events.pri index 48d500ed..3f586e8b 100644 --- a/src-qt5/core/lumina-desktop-unified/src-events/events.pri +++ b/src-qt5/core/lumina-desktop-unified/src-events/events.pri @@ -1,10 +1,17 @@ -#SOURCES *= $${PWD}/LXcbEventFilter.cpp +# Files +QT *= x11extras +LIBS *= -lc -lxcb -lxcb-ewmh -lxcb-icccm -lxcb-image -lxcb-composite -lxcb-damage -lxcb-util -lxcb-keysyms -lXdamage -#HEADERS *= $${PWD}/LXcbEventFilter.h +SOURCES *= $${PWD}/LShortcutEvents.cpp \ + $${PWD}/NativeEventFilter.cpp \ + $${PWD}/NativeKeyToQt.cpp \ + $${PWD}/NativeWindowSystem.cpp \ + $${PWD}/Window-mgmt.cpp -#Shortcut event files -SOURCES *= $${PWD}/LShortcutEvents.cpp -HEADERS *= $${PWD}/LShortcutEvents.h -#update the includepath so we can just (#include <LXcbEventFilter.h>) as needed without paths +HEADERS *= $${PWD}/LShortcutEvents.h \ + $${PWD}/NativeEventFilter.h \ + $${PWD}/NativeWindowSystem.h + +#update the includepath so we can just (#include <NativeEventFilter.h>) as needed without paths INCLUDEPATH *= ${PWD} 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 a0edde9f..bd812744 100644 --- a/src-qt5/core/lumina-desktop-unified/src-screensaver/LScreenSaver.cpp +++ b/src-qt5/core/lumina-desktop-unified/src-screensaver/LScreenSaver.cpp @@ -17,6 +17,8 @@ LScreenSaver::LScreenSaver() : QWidget(0,Qt::BypassWindowManagerHint | Qt::Windo locktimer->setSingleShot(true); hidetimer = new QTimer(this); hidetimer->setSingleShot(true); + mouseCheckTimer = new QTimer(this); + mouseCheckTimer->setInterval(10000); //10 seconds - fallback timer for mouse movement detection LOCKER = new LLockScreen(this); LOCKER->hide(); @@ -27,6 +29,7 @@ LScreenSaver::LScreenSaver() : QWidget(0,Qt::BypassWindowManagerHint | Qt::Windo connect(starttimer, SIGNAL(timeout()), this, SLOT(ShowScreenSaver()) ); connect(locktimer, SIGNAL(timeout()), this, SLOT(LockScreen()) ); connect(hidetimer, SIGNAL(timeout()), this, SLOT(HideLockScreen()) ); + connect(mouseCheckTimer, SIGNAL(timeout()), this, SLOT(checkMousePosition()) ); connect(LOCKER, SIGNAL(ScreenUnlocked()), this, SLOT(SSFinished()) ); connect(LOCKER, SIGNAL(InputDetected()), this, SLOT(newInputEvent()) ); } @@ -56,6 +59,7 @@ void LScreenSaver::UpdateTimers(){ void LScreenSaver::start(){ reloadSettings(); //setup all the initial time frames starttimer->start(); + mouseCheckTimer->start(); } void LScreenSaver::reloadSettings(){ @@ -76,6 +80,7 @@ void LScreenSaver::newInputEvent(){ //Only running, not locked HideScreenSaver(); } + lastMousePos = QCursor::pos(); //update the internal point UpdateTimers(); } @@ -87,6 +92,13 @@ void LScreenSaver::LockScreenNow(){ // =========== // PRIVATE SLOTS // =========== +void LScreenSaver::checkMousePosition(){ + QPoint pos = QCursor::pos(); + if(pos != lastMousePos){ + newInputEvent(); //this will update the internal position automatically + } +} + void LScreenSaver::ShowScreenSaver(){ if(DEBUG){ qDebug() << "Showing Screen Saver:" << QDateTime::currentDateTime().toString(); } //QApplication::setOverrideCursor(QCursor::BlankCursor); 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 2276fb6d..eec42481 100644 --- a/src-qt5/core/lumina-desktop-unified/src-screensaver/LScreenSaver.h +++ b/src-qt5/core/lumina-desktop-unified/src-screensaver/LScreenSaver.h @@ -21,9 +21,10 @@ public: bool isLocked(); private: - QTimer *starttimer, *locktimer, *hidetimer; + QTimer *starttimer, *locktimer, *hidetimer, *mouseCheckTimer; QList<SSBaseWidget*> BASES; LLockScreen *LOCKER; + QPoint lastMousePos; int cBright; bool SSRunning, SSLocked, updating; @@ -36,6 +37,7 @@ public slots: void LockScreenNow(); private slots: + void checkMousePosition(); void ShowScreenSaver(); void ShowLockScreen(); void HideScreenSaver(); diff --git a/src-qt5/core/lumina-desktop/LSession.cpp b/src-qt5/core/lumina-desktop/LSession.cpp index dab30f01..c1f49fc3 100644 --- a/src-qt5/core/lumina-desktop/LSession.cpp +++ b/src-qt5/core/lumina-desktop/LSession.cpp @@ -29,6 +29,7 @@ XCBEventFilter *evFilter = 0; LIconCache *ICONS = 0; LSession::LSession(int &argc, char ** argv) : LSingleApplication(argc, argv, "lumina-desktop"){ + xchange = false; if(this->isPrimaryProcess()){ connect(this, SIGNAL(InputsAvailable(QStringList)), this, SLOT(NewCommunication(QStringList)) ); this->setApplicationName("Lumina Desktop Environment"); @@ -272,7 +273,7 @@ void LSession::NewCommunication(QStringList list){ screensChanged(); }else if(list[i]=="--show-start"){ emit StartButtonActivated(); - } + }else if(list[i]=="--logout"){ QTimer::singleShot(1000, this, SLOT(StartLogout()));} } } @@ -346,6 +347,8 @@ void LSession::watcherChange(QString changed){ //qDebug() << "Set Qt5 theme engine: " << engine; if(engine.isEmpty()){ unsetenv("QT_QPA_PLATFORMTHEME"); } else{ setenv("QT_QPA_PLATFORMTHEME", engine.toUtf8().data(),1); } + }else{ + setenv("QT_QPA_PLATFORMTHEME", "lthemeengine",1); //ensure the lumina theme engine is always enabled } emit SessionConfigChanged(); }else if(changed.endsWith("desktopsettings.conf") ){ emit DesktopConfigChanged(); } diff --git a/src-qt5/core/lumina-desktop/desktop-plugins/applauncher/AppLauncherPlugin.cpp b/src-qt5/core/lumina-desktop/desktop-plugins/applauncher/AppLauncherPlugin.cpp index 0bf087c1..837e3268 100644 --- a/src-qt5/core/lumina-desktop/desktop-plugins/applauncher/AppLauncherPlugin.cpp +++ b/src-qt5/core/lumina-desktop/desktop-plugins/applauncher/AppLauncherPlugin.cpp @@ -47,6 +47,7 @@ void AppLauncherPlugin::loadButton(){ bool ok = info.canonicalPath().startsWith("/net/"); if(!ok){ ok = QFile::exists(path); } //do it this way to ensure the file existance check never runs for /net/ files if(!ok){ emit RemovePlugin(this->ID()); return;} + this->setAcceptDrops( info.isDir() ); icosize = this->height()-4 - 2.2*button->fontMetrics().height(); button->setFixedSize( this->width()-4, this->height()-4); button->setIconSize( QSize(icosize,icosize) ); @@ -316,3 +317,18 @@ void AppLauncherPlugin::renameFinished(int result){ qDebug() << " - SUCCESS"; } } + +void AppLauncherPlugin::fileDrop(bool copy, QList<QUrl> urls){ + for(int i=0; i<urls.length(); i++){ + QString oldpath = urls[i].toLocalFile(); + if(!QFile::exists(oldpath)){ continue; } //not a local file? + QString filename = oldpath.section("/",-1); + if(copy){ + qDebug() << "Copying File:" << oldpath << "->" << button->whatsThis()+"/"+filename; + QFile::copy(oldpath, button->whatsThis()+"/"+filename); + }else{ + qDebug() << "Moving File:" << oldpath << "->" << button->whatsThis()+"/"+filename; + QFile::rename(oldpath, button->whatsThis()+"/"+filename); + } + } +} 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 c8e3a475..6cff4bf7 100644 --- a/src-qt5/core/lumina-desktop/desktop-plugins/applauncher/AppLauncherPlugin.h +++ b/src-qt5/core/lumina-desktop/desktop-plugins/applauncher/AppLauncherPlugin.h @@ -18,6 +18,9 @@ #include <QTimer> #include <QMenu> #include <QCursor> +#include <QDrag> +#include <QMimeData> +#include <QtConcurrent> #include "../LDPlugin.h" @@ -38,6 +41,7 @@ private: QInputDialog *inputDLG; QString iconID; int icosize; + QPoint dragstartpos; private slots: void loadButton(); @@ -59,6 +63,8 @@ private slots: void fileRename(); void renameFinished(int result); + void fileDrop(bool copy, QList<QUrl> urls); + public slots: void LocaleChange(){ loadButton(); //force reload @@ -74,5 +80,51 @@ protected: QEvent::Type tmp = ev->type(); if(tmp == QEvent::StyleChange || tmp==QEvent::ThemeChange || tmp==QEvent::LanguageChange || tmp==QEvent::LocaleChange){ loadButton(); } } + + void mousePressEvent(QMouseEvent *ev){ + if(ev->button()==Qt::LeftButton){ + dragstartpos = ev->pos(); + } + } + + void mouseMoveEvent(QMouseEvent *ev){ + if( (ev->buttons() & Qt::LeftButton) ){ + if((ev->pos() - dragstartpos).manhattanLength() > (this->width()/4) ){ + //Start the drag event for this file + QDrag *drag = new QDrag(this); + QMimeData *md = new QMimeData; + md->setUrls( QList<QUrl>() << QUrl::fromLocalFile(button->whatsThis()) ); + drag->setMimeData(md); + //Now perform the drag and react appropriately + Qt::DropAction dropAction = drag->exec(Qt::CopyAction | Qt::MoveAction); + if(dropAction == Qt::MoveAction){ + // File Moved, remove it from here + //qDebug() << "File Moved:" << button->whatsThis(); + //DO NOT DELETE FILES - return code often is wrong (browser drops for instance) + } + } + }else{ + LDPlugin::mouseMoveEvent(ev); + } + } + + void dragEnterEvent(QDragEnterEvent *ev){ + if(ev->mimeData()->hasUrls() && this->acceptDrops()){ ev->acceptProposedAction(); } + } + + void dropEvent(QDropEvent *ev){ + QList<QUrl> urls = ev->mimeData()->urls(); + bool ok = !urls.isEmpty() && this->acceptDrops(); + if(ok){ + if(ev->proposedAction() == Qt::MoveAction){ + ev->setDropAction(Qt::MoveAction); + QtConcurrent::run(this, &AppLauncherPlugin::fileDrop, false, urls); + }else if(ev->proposedAction() == Qt::CopyAction){ + ev->setDropAction(Qt::CopyAction); + QtConcurrent::run(this, &AppLauncherPlugin::fileDrop, true, urls); + }else{ ok = false; } + } + if(ok){ ev->acceptProposedAction(); } + } }; #endif 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 2f9340c6..b7440a58 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_af.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_af.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation type="unfinished"></translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1301,37 +1301,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation type="unfinished"></translation> </message> @@ -1517,43 +1517,43 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation type="unfinished"></translation> </message> 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 2f9340c6..b7440a58 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ar.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ar.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation type="unfinished"></translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1301,37 +1301,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation type="unfinished"></translation> </message> @@ -1517,43 +1517,43 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation type="unfinished"></translation> </message> 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 2f9340c6..b7440a58 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_az.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_az.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation type="unfinished"></translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1301,37 +1301,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation type="unfinished"></translation> </message> @@ -1517,43 +1517,43 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation type="unfinished"></translation> </message> 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 d17703bb..e491dbee 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_bg.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_bg.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation>%1 % (зарежда се)</translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation>%1 % (%2 оставащи)</translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation>Работен плот</translation> </message> @@ -1301,37 +1301,37 @@ <translation>Lumina Desktop RSS</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation>Адрес на източника: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation>Заглавие: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation>Описание: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation>Уеб сайт: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation>Последно обновен: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation>Последно синхронизиран: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation>Следваща синхронизация: %1</translation> </message> @@ -1517,43 +1517,43 @@ <translation>Настройки на системата</translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation>Отписване</translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation>Рестартиране</translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation>Отказ</translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation>Заключване</translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation>Изключване</translation> </message> 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 2f9340c6..b7440a58 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_bn.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_bn.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation type="unfinished"></translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1301,37 +1301,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation type="unfinished"></translation> </message> @@ -1517,43 +1517,43 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation type="unfinished"></translation> </message> 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 2f9340c6..b7440a58 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_bs.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_bs.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation type="unfinished"></translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1301,37 +1301,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation type="unfinished"></translation> </message> @@ -1517,43 +1517,43 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation type="unfinished"></translation> </message> 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 4a65596e..c0183f05 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ca.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ca.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation>%1 % (Carregant)</translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation>%1 % (resten %2)</translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation>Escriptori</translation> </message> @@ -1301,37 +1301,37 @@ <translation>RSS de l'escriptori Lumina</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation>URL del canal: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation>Títol: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation>Descripció: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation>Lloc web: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation>Data de l'última construcció: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation>Última sincronització: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation>Propera sincronització: %1</translation> </message> @@ -1517,43 +1517,43 @@ <translation>Opcions del sistema</translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation>Surt</translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation>Reinicia</translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation>Atura</translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation>Cancel·la</translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation>Bloqueja</translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation>Atura temporalment</translation> </message> 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 eab383cb..0cca1e1b 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_cs.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_cs.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation>%1 % (Nabíjení)</translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation>%1 % (%2 Zbývá)</translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation>Plocha</translation> </message> @@ -1301,37 +1301,37 @@ <translation>RSS kanál prostředí Lumina</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation>URL adresa kanálu: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation>Název: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation>Popis: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation>Webová stránka: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation>Datum minulého sestavení: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation>Minulá synchronizace: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation>Příští synchronizace: %1</translation> </message> @@ -1517,43 +1517,43 @@ <translation>Předvolby systému</translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation>Odhlásit se</translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation>Restartovat</translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation>Vypnout</translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation>Storno</translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation>Zamknout</translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation>Uspat do paměti</translation> </message> 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 2f9340c6..b7440a58 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_cy.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_cy.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation type="unfinished"></translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1301,37 +1301,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation type="unfinished"></translation> </message> @@ -1517,43 +1517,43 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation type="unfinished"></translation> </message> 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 2507a671..629f85ef 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_da.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_da.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation>%1 % (lader)</translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation>%1 % (%2 tilbage)</translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation>Skrivebord</translation> </message> @@ -1301,37 +1301,37 @@ <translation>Lumina-skrivebordets RSS-læser</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation>Feed-URL: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation>Titel: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation>Beskrivelse: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation>Hjemmeside: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation>Seneste byggedato: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation>Seneste synkronisering: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation>Næste synkronisering: %1</translation> </message> @@ -1517,43 +1517,43 @@ <translation>Systemvalgmuligheder</translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation>Log ud</translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation>Genstart</translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation>Sluk</translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation>Annuller</translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation>Lås</translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation>Dvale</translation> </message> 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 65b16cdd..8aab1f1d 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_de.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_de.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation>%1 % (Aufladen)</translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation>%1 % (%2 verbleibend)</translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation>Arbeitsfläche</translation> </message> @@ -1301,37 +1301,37 @@ <translation type="unfinished">Lumina Desktop RSS</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation>Feed-URL: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation>Titel: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation>Beschreibung: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation>Internet-Seite: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation>Letzte Erstellung: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation>Letzter Abgleich: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation>Nächster Abgleich: %1</translation> </message> @@ -1517,43 +1517,43 @@ <translation>Systemoptionen</translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation>Abmelden</translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation>Neustart</translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation>Abbrechen</translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation>Sperren</translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation>In Bereitschaft versetzen</translation> </message> 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 341f847d..d0e3142f 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_el.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_el.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation type="unfinished"></translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1301,37 +1301,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation type="unfinished"></translation> </message> @@ -1517,43 +1517,43 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation type="unfinished"></translation> </message> 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 52d0e88f..30e03f6d 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 @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation>%1 % (Charging)</translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation>%1 % (%2 Remaining)</translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation>Desktop</translation> </message> @@ -1301,37 +1301,37 @@ <translation>Lumina Desktop RSS</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation>Feed URL: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation>Title: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation>Description: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation>Website: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation>Last Build Date: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation>Last Sync: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation>Next Sync: %1</translation> </message> @@ -1517,43 +1517,43 @@ <translation>System Options</translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation>Log Out</translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation>Restart</translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation>Cancel</translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation>Lock</translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation>Suspend</translation> </message> 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 ad847d47..36bfd83c 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 @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation>%1 % (Charging)</translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation>%1 % (%2 Remaining)</translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation>Desktop</translation> </message> @@ -1301,37 +1301,37 @@ <translation>Lumina Desktop RSS</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation>Feed URL: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation>Title: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation>Description: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation>Website: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation>Last Build Date: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation>Last Sync: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation>Next Sync: %1</translation> </message> @@ -1517,43 +1517,43 @@ <translation>System Options</translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation>Log Out</translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation>Restart</translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation>Cancel</translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation>Lock</translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation>Suspend</translation> </message> 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 2f9340c6..b7440a58 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 @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation type="unfinished"></translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1301,37 +1301,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation type="unfinished"></translation> </message> @@ -1517,43 +1517,43 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation type="unfinished"></translation> </message> 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 60c6c305..a0403866 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_es.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_es.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation>%1 % (Cargando)</translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation>%1 % (%2 Restante)</translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation>Escritorio</translation> </message> @@ -1301,37 +1301,37 @@ <translation>RSS del Escritorio Lumina</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation>URL del Feed: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation>Título: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation>Descripción: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation>Sitio Web: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation>Última Actualización: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation>Última Sincronización: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation>Siguiente Sincronización: %1</translation> </message> @@ -1517,43 +1517,43 @@ <translation>Opciones del Sistema</translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation>Cerrar Sesión</translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation>Reiniciar</translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation>Cancelar</translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation>Bloquear</translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation>Suspender</translation> </message> 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 e1b60acb..09a5ab40 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_et.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_et.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation>%1% (laeb)</translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation>%1% (%2 jäänud)</translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation>Töölaud</translation> </message> @@ -1301,37 +1301,37 @@ <translation>Lumina Töölaua RSS</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation>Uudisvoo URL: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation>Pealkiri: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation>Kirjeldus: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation>Veebileht: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation>Viimane koostamise aeg: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation>Viimane sünkr.: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation>Järgmine sünkr.: %1</translation> </message> @@ -1517,43 +1517,43 @@ <translation>Süsteemi valikud</translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation>Logi välja</translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation>Taaskäivita</translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation>Lülita välja</translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation>Loobu</translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation>Lukusta</translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation>Arvuti peatamine</translation> </message> 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 be61c50d..9316f8df 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_eu.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_eu.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation>%1 % (Kargatzen)</translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation>%1 % (%2 Faltan)</translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1301,37 +1301,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation type="unfinished"></translation> </message> @@ -1517,43 +1517,43 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation type="unfinished">Saioa amaitu</translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation>Berrabiarazi</translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation>Utzi</translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation type="unfinished"></translation> </message> 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 c066d6b2..c852493b 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_fa.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_fa.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation type="unfinished"></translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1301,37 +1301,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation type="unfinished"></translation> </message> @@ -1517,43 +1517,43 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation type="unfinished"></translation> </message> 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 73bdf6d8..c66d6ae1 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_fi.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_fi.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation>%1 % (lataa)</translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation>%1 % (%2 jäljellä)</translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation>Työpöytä</translation> </message> @@ -1301,37 +1301,37 @@ <translation>Lumina-työpöydän RSS</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation>Syötteen verkko-osoite: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation>Otsikko: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation>Kuvaus: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation>Sivusto: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation>Viimeisin koostamispäivä: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation>Viimeisin tahdistus: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation>Seuraava tahdistus: %1</translation> </message> @@ -1517,43 +1517,43 @@ <translation>Järjestelmäasetukset</translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation>Kirjaudu ulos</translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation>Käynnistä uudelleen</translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation>Peru</translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation>Lukitse</translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation>Valmiustila</translation> </message> 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 c0217392..197143cc 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_fr.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_fr.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation>%1 % (Chargement)</translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation>%1 % (%2 Restant)</translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation>Bureau</translation> </message> @@ -1301,37 +1301,37 @@ <translation>Lecteur de RSS de Lumina</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation>URL du Flux : %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation>Titre : %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation>Description : %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation>Site Web : %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation>Dernière Modification : %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation>Dernière Synchro. : %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation>Prochaine Synchro. : %1</translation> </message> @@ -1517,43 +1517,43 @@ <translation>Options Système</translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation>Se Déconnecter</translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation>Redémarrer</translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation>Annuler</translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation>Verrouiller</translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation>Mettre en Veille</translation> </message> 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 2f9340c6..b7440a58 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 @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation type="unfinished"></translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1301,37 +1301,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation type="unfinished"></translation> </message> @@ -1517,43 +1517,43 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation type="unfinished"></translation> </message> 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 2f9340c6..b7440a58 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_gl.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_gl.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation type="unfinished"></translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1301,37 +1301,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation type="unfinished"></translation> </message> @@ -1517,43 +1517,43 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation type="unfinished"></translation> </message> 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 b494b2cb..f0aced27 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_he.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_he.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation type="unfinished"></translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation type="unfinished">שולחן עבודה</translation> </message> @@ -1301,37 +1301,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation type="unfinished"></translation> </message> @@ -1517,43 +1517,43 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation type="unfinished">התנתק</translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation>ביטול</translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation>נעל</translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation type="unfinished"></translation> </message> 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 cee9a94d..a13425bf 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_hi.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_hi.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation>%1 %(चार्ज हो रहा है)</translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation>%1 %(%2 बचा है)</translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation type="unfinished">डेस्कटॉप</translation> </message> @@ -1301,37 +1301,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation type="unfinished"></translation> </message> @@ -1517,43 +1517,43 @@ <translation>उपकरण विकल्प</translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation>लॉगआउट</translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation>दोबारा चालू</translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation>रद्द</translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation>लॉक</translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation>रोकें</translation> </message> 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 2f9340c6..b7440a58 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_hr.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_hr.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation type="unfinished"></translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1301,37 +1301,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation type="unfinished"></translation> </message> @@ -1517,43 +1517,43 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation type="unfinished"></translation> </message> 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 88455320..8ee910a6 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_hu.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_hu.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation>%1 % (Töltés)</translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation>%1 % (%2 hátralévő)</translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation>Asztal</translation> </message> @@ -1301,37 +1301,37 @@ <translation>Lumina Desktop RSS</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation>Hírcsatorna URL: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation>Cím: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation>Leírás: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation>Weboldal: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation>Következő frissítés: %1</translation> </message> @@ -1517,43 +1517,43 @@ <translation>Rendszer opciók</translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation>Kijelentkezés</translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation>Újraindítás</translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation>Mégsem</translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation>Zárolás</translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation>Felfüggesztés</translation> </message> 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 2f3db87c..8786204e 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_id.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_id.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation>%1 % (pengisian baterai)</translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation>%1 % (%2 sisa)</translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation type="unfinished">Layar Kerja Utama</translation> </message> @@ -1301,37 +1301,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation type="unfinished"></translation> </message> @@ -1517,43 +1517,43 @@ <translation>Opsi Sistem</translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation>Log Keluar</translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation>mulai ulang</translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation>Batalkan</translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation>Kunci</translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation>Suspensi</translation> </message> 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 2f9340c6..b7440a58 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_is.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_is.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation type="unfinished"></translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1301,37 +1301,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation type="unfinished"></translation> </message> @@ -1517,43 +1517,43 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation type="unfinished"></translation> </message> 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 1cd93f4d..e7cfed3d 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_it.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_it.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation>%1 % (In Carica)</translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation>%1 % (%2 Rimanente)</translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation>Desktop</translation> </message> @@ -1301,37 +1301,37 @@ <translation>RSS del desktop Lumina</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation>URL del feed: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation>Titolo: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation>Descrizione: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation>Sito web: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation>Ultima data di versione: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation>Ultimo aggiornamento: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation>Prossimo aggiornamento: %1</translation> </message> @@ -1517,43 +1517,43 @@ <translation>Opzioni di Sistema</translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation>Esci</translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation>Riavvia</translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation>Cancella</translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation>Blocca</translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation>Sospendi</translation> </message> 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 15c0f6c7..1f08a1e7 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ja.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ja.ts @@ -668,12 +668,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation>%1 % (充電中)</translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation>%1 % (残り %2 %)</translation> </message> @@ -860,8 +860,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translatorcomment>これ、ファイルパスなので、「デスクトップ」と訳したらまずい</translatorcomment> <translation>Desktop</translation> @@ -1315,37 +1315,37 @@ <translation>Lumina デスクトップ RSS</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation>フィードの URL: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation>タイトル: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation>説明: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation>Web サイト: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation>最終更新日時: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation>最終同期日時: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation>次回同期日時: %1</translation> </message> @@ -1534,43 +1534,43 @@ <translation>システムのオプション</translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation>ログアウト</translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation>再起動</translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation>キャンセル</translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation>ロック</translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation>サスペンド</translation> </message> 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 2f9340c6..b7440a58 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ka.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ka.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation type="unfinished"></translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1301,37 +1301,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation type="unfinished"></translation> </message> @@ -1517,43 +1517,43 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation type="unfinished"></translation> </message> 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 0d69f01f..850e8ea7 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ko.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ko.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation>%1 % (충전중)</translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation>%1 % (%2 남음)</translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation type="unfinished">바탕 화면</translation> </message> @@ -1301,37 +1301,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation type="unfinished"></translation> </message> @@ -1517,43 +1517,43 @@ <translation>시스템 설정</translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation>로그 아웃</translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation>재시동</translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation>취소</translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation>잠그기</translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation>절전</translation> </message> 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 c6f635aa..c4020611 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_lt.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_lt.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation>%1 % (Kraunama)</translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation>%1 % (Liko %2)</translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation>Darbalaukis</translation> </message> @@ -1301,37 +1301,37 @@ <translation>Lumina darbalaukio RSS</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation>Kanalo URL: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation>Pavadinimas: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation>Aprašas: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation>Svetainė: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation>Paskutinio darinio data: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation>Paskutinis sinchronizavimas: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation>Kitas sinchronizavimas: %1</translation> </message> @@ -1517,43 +1517,43 @@ <translation>Sistemos parinktys</translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation>Atsijungti</translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation>Paleisti iš naujo</translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation>Išjungti</translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation>Atsisakyti</translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation>Užrakinti</translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation>Pristabdyti</translation> </message> 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 3cb0b2b0..5cdbd8fb 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_lv.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_lv.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation>%1 % (uzlādējas)</translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation>%1 % (%2 atlicis)</translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation>Darbvirsma</translation> </message> @@ -1301,37 +1301,37 @@ <translation>Lumina darbvirsmas RSS</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation>Plūsmas URL: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation>Virsraksts: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation>Apraksts: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation>Tīmekļa vietne: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation>Pēdējā būvējuma datums: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation>Pēdējā sinhronizācija: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation>Nākamā sinhronizēšana: %1</translation> </message> @@ -1517,43 +1517,43 @@ <translation>Sistēmas opcijas</translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation>Izrakstīties</translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation>Restartēt</translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation>Atcelt</translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation>Slēgt</translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation>Iemidzināt</translation> </message> 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 2f9340c6..b7440a58 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_mk.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_mk.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation type="unfinished"></translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1301,37 +1301,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation type="unfinished"></translation> </message> @@ -1517,43 +1517,43 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation type="unfinished"></translation> </message> 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 2f9340c6..b7440a58 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_mn.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_mn.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation type="unfinished"></translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1301,37 +1301,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation type="unfinished"></translation> </message> @@ -1517,43 +1517,43 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation type="unfinished"></translation> </message> 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 2f9340c6..b7440a58 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ms.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ms.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation type="unfinished"></translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1301,37 +1301,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation type="unfinished"></translation> </message> @@ -1517,43 +1517,43 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation type="unfinished"></translation> </message> 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 2f9340c6..b7440a58 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_mt.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_mt.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation type="unfinished"></translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1301,37 +1301,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation type="unfinished"></translation> </message> @@ -1517,43 +1517,43 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation type="unfinished"></translation> </message> 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 2f9340c6..b7440a58 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_nb.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_nb.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation type="unfinished"></translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1301,37 +1301,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation type="unfinished"></translation> </message> @@ -1517,43 +1517,43 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation type="unfinished"></translation> </message> 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 2b2f15a4..b07292d8 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_nl.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_nl.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation>%1 % (Bezig met opladen)</translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation>%1 % (%2 resterend)</translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation>Bureaublad</translation> </message> @@ -1301,37 +1301,37 @@ <translation>Lumina-bureaublad RSS</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation>Feed-URL: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation>Titel: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation>Omschrijving: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation>Website: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation>Laaste bouwdatum: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation>Laatste synchronisatie: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation>Volgende synchronisatie: %1</translation> </message> @@ -1517,43 +1517,43 @@ <translation>Systeemopties</translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation>Uitloggen</translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation>Herstarten</translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation>Annuleren</translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation>Vergrendelen</translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation>Pauzestand</translation> </message> 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 2f9340c6..b7440a58 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_pa.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_pa.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation type="unfinished"></translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1301,37 +1301,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation type="unfinished"></translation> </message> @@ -1517,43 +1517,43 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation type="unfinished"></translation> </message> 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 5ff8b01f..af9e65ba 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_pl.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_pl.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation>%1 % (Ładowanie)</translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation>%1 % (%2 pozostało)</translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation>Pulpit</translation> </message> @@ -1301,37 +1301,37 @@ <translation>Pulpit Lumina RSS</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation>URL kanału: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation>Tytuł: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation>Opis: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation>Witryna: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation>Data utworzenia: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation>Ostatnia synchronizacja %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation>Następna synchronizacja: %1</translation> </message> @@ -1517,43 +1517,43 @@ <translation>Opcje Systemu</translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation>Wyloguj</translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation>Uruchom ponownie</translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation>Zaniechaj</translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation>Zablokuj</translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation>Wstrzymanie</translation> </message> 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 82881d5b..21bbdb65 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_pt.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_pt.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation>%1 % (Carregando)</translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation>%1 % (%2 Restantes)</translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation type="unfinished">Área de Trabalho</translation> </message> @@ -1301,37 +1301,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation type="unfinished"></translation> </message> @@ -1517,43 +1517,43 @@ <translation>Opções do Sistema</translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation>Sair</translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation>Reiniciar</translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation>Cancelar</translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation>Bloquear</translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation>Suspender</translation> </message> 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 ec71e2ac..ca5b75cf 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 @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation>%1 % (carregando)</translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation>%1 % (%2 restantes)</translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation>Área de trabalho</translation> </message> @@ -1301,37 +1301,37 @@ <translation>Lumina Desktop RSS</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation>URL da postagem: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation>Título: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation>Descrição: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation>Site: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation>Última data da compilação: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation>Última sincronização: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation>Próxima sincronização: %1</translation> </message> @@ -1517,43 +1517,43 @@ <translation>Opções do sistema</translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation>Encerrar sessão</translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation>Reiniciar</translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation>Cancelar</translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation>Bloquear</translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation>Suspender</translation> </message> 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 2f9340c6..b7440a58 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ro.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ro.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation type="unfinished"></translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1301,37 +1301,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation type="unfinished"></translation> </message> @@ -1517,43 +1517,43 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation type="unfinished"></translation> </message> 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 0e54c34a..84e6a815 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ru.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ru.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation>%1 % (Заряжается)</translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation>%1 % (Осталось %2 )</translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation>Рабочий стол</translation> </message> @@ -1301,37 +1301,37 @@ <translation>RSS рабочего стола Lumina</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation>URL потока: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation>Заголовок: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation>Описание: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation>Вэбсайт: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation>Дата последней сборки: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation>Последняя синхронизация: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation>Следущая синхронизация: %1</translation> </message> @@ -1517,43 +1517,43 @@ <translation>Параметры Системы</translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation>Завершить Сеанс</translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation>Перезагрузить</translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation>Выключить питание</translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation>Отмена</translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation>Замок</translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation>Отложить</translation> </message> 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 13e6c9a6..b19ee78c 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_sk.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_sk.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation>%1 % (Nabíjania)</translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation>%1 % (%2 zostáva)</translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation type="unfinished">Pracovná plocha</translation> </message> @@ -1301,37 +1301,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation type="unfinished"></translation> </message> @@ -1517,43 +1517,43 @@ <translation>Systémové možnosti</translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation>Odhlásiť sa</translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation>Reštartovať</translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation>Zrušiť</translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation>Uzamknúť</translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation>Uspať</translation> </message> 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 ee11f368..4f250f1d 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_sl.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_sl.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation type="unfinished"></translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1301,37 +1301,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation type="unfinished"></translation> </message> @@ -1517,43 +1517,43 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation type="unfinished"></translation> </message> 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 2f9340c6..b7440a58 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_sr.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_sr.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation type="unfinished"></translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1301,37 +1301,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation type="unfinished"></translation> </message> @@ -1517,43 +1517,43 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation type="unfinished"></translation> </message> 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 e22270c5..f606b4e0 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_sv.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_sv.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation>%1 % (Laddar)</translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation>%1 % (%2 Återstår)</translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation>Skrivbord</translation> </message> @@ -1301,37 +1301,37 @@ <translation>Lumina Skrivbordets RSS läsare </translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation>RSS-Flödes URL: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation>Titel: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation>Beskrivning: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation>Webbplats: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation>Senaste bygg datum: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation>Senaste synkronisering: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation>Nästa synkronisering: %1</translation> </message> @@ -1517,43 +1517,43 @@ <translation>Systemalternativ</translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation>Logga ut</translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation>Starta om</translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation>Avbryt</translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation>Lås</translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation>Vänteläge</translation> </message> 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 2f9340c6..b7440a58 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_sw.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_sw.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation type="unfinished"></translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1301,37 +1301,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation type="unfinished"></translation> </message> @@ -1517,43 +1517,43 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation type="unfinished"></translation> </message> 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 2f9340c6..b7440a58 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ta.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_ta.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation type="unfinished"></translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1301,37 +1301,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation type="unfinished"></translation> </message> @@ -1517,43 +1517,43 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation type="unfinished"></translation> </message> 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 2f9340c6..b7440a58 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_tg.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_tg.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation type="unfinished"></translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1301,37 +1301,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation type="unfinished"></translation> </message> @@ -1517,43 +1517,43 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation type="unfinished"></translation> </message> 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 2f9340c6..b7440a58 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_th.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_th.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation type="unfinished"></translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1301,37 +1301,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation type="unfinished"></translation> </message> @@ -1517,43 +1517,43 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation type="unfinished"></translation> </message> 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 704e1491..8ff02ed3 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_tr.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_tr.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation>% %1 (Doluyor)</translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation>% %1 (Kalan %2)</translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation>Masaüstü</translation> </message> @@ -1301,37 +1301,37 @@ <translation>Lumina Masaüstü RSS</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation>Akış URL: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation>Başlık: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation>Açıklama: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation>Web sitesi: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation>Son Oluşturma Tarihi: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation>Son Eşitleme: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation>Sonraki Eşitleme: %1</translation> </message> @@ -1517,43 +1517,43 @@ <translation>Sistem Seçenekleri</translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation>Oturumu Kapat</translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation>Yeniden başlat</translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation>İptal</translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation>Kilitle</translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation>Beklet</translation> </message> 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 ec972577..cf287d79 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_uk.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_uk.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation>%1 % (Заряд)</translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation>%1 (залишилося %2)</translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation>Робочий стіл</translation> </message> @@ -1301,37 +1301,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation type="unfinished"></translation> </message> @@ -1517,43 +1517,43 @@ <translation>Параметри системи</translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation>Завершити сеанс</translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation>Перезапустити</translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation>Скасувати</translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation>Заблокувати</translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation>Призупинити</translation> </message> 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 2f9340c6..b7440a58 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_uz.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_uz.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation type="unfinished"></translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1301,37 +1301,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation type="unfinished"></translation> </message> @@ -1517,43 +1517,43 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation type="unfinished"></translation> </message> 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 2f9340c6..b7440a58 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_vi.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_vi.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation type="unfinished"></translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1301,37 +1301,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation type="unfinished"></translation> </message> @@ -1517,43 +1517,43 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation type="unfinished"></translation> </message> 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 8d7ea859..226730b6 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 @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation>%1 %(充电)</translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation>%1 (%2 剩余)</translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation>桌面</translation> </message> @@ -1301,37 +1301,37 @@ <translation>Lumina 桌面 RSS</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation>订阅地址: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation>标题: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation>描述: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation>网站: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation>最后构建日期: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation>最后更新于: %1</translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation>下次更新: %1</translation> </message> @@ -1517,43 +1517,43 @@ <translation>系统选项</translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation>注销</translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation>重启</translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation>取消</translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation>锁定</translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation>休眠</translation> </message> 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 2f9340c6..b7440a58 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 @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation type="unfinished"></translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1301,37 +1301,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation type="unfinished"></translation> </message> @@ -1517,43 +1517,43 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation type="unfinished"></translation> </message> 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 2f9340c6..b7440a58 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 @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation type="unfinished"></translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1301,37 +1301,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation type="unfinished"></translation> </message> @@ -1517,43 +1517,43 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation type="unfinished"></translation> </message> 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 2f9340c6..b7440a58 100644 --- a/src-qt5/core/lumina-desktop/i18n/lumina-desktop_zu.ts +++ b/src-qt5/core/lumina-desktop/i18n/lumina-desktop_zu.ts @@ -664,12 +664,12 @@ <context> <name>LBattery</name> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="96"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="98"/> <source>%1 % (Charging)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../panel-plugins/battery/LBattery.cpp" line="97"/> + <location filename="../panel-plugins/battery/LBattery.cpp" line="99"/> <source>%1 % (%2 Remaining)</source> <translation type="unfinished"></translation> </message> @@ -855,8 +855,8 @@ <context> <name>LSession</name> <message> - <location filename="../LSession.cpp" line="165"/> - <location filename="../LSession.cpp" line="352"/> + <location filename="../LSession.cpp" line="166"/> + <location filename="../LSession.cpp" line="355"/> <source>Desktop</source> <translation type="unfinished"></translation> </message> @@ -1301,37 +1301,37 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="143"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> <source>Feed URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="144"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> <source>Title: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="145"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> <source>Description: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="146"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> <source>Website: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="147"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> <source>Last Build Date: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="148"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="150"/> <source>Last Sync: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="149"/> + <location filename="../desktop-plugins/rssreader/RSSFeedPlugin.cpp" line="151"/> <source>Next Sync: %1</source> <translation type="unfinished"></translation> </message> @@ -1517,43 +1517,43 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="55"/> + <location filename="../SystemWindow.ui" line="68"/> <source>Log Out</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="71"/> + <location filename="../SystemWindow.ui" line="84"/> <source>Restart</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="87"/> + <location filename="../SystemWindow.ui" line="100"/> <source>Power Off</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="132"/> + <location filename="../SystemWindow.ui" line="145"/> <source>Update Now</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="154"/> + <location filename="../SystemWindow.ui" line="167"/> <source>Updates ready to install</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="192"/> + <location filename="../SystemWindow.ui" line="205"/> <location filename="../SystemWindow.cpp" line="63"/> <source>Cancel</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="221"/> + <location filename="../SystemWindow.ui" line="234"/> <source>Lock</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../SystemWindow.ui" line="237"/> + <location filename="../SystemWindow.ui" line="250"/> <source>Suspend</source> <translation type="unfinished"></translation> </message> 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 69ea5faa..1870eefb 100644 --- a/src-qt5/core/lumina-desktop/panel-plugins/battery/LBattery.cpp +++ b/src-qt5/core/lumina-desktop/panel-plugins/battery/LBattery.cpp @@ -78,19 +78,20 @@ void LBattery::updateBattery(bool force){ break; } } - if(icon<iconOld && icon==0){ - //Play some audio warning chime when - bool playaudio = sessionsettings->value("PlayBatteryLowAudio",true).toBool(); - if( playaudio ){ QString sfile = LSession::handle()->sessionSettings()->value("audiofiles/batterylow", LOS::LuminaShare()+"low-battery.ogg").toString(); + if(icon<iconOld && icon==0){ + //Play some audio warning chime when + bool playaudio = sessionsettings->value("PlayBatteryLowAudio",true).toBool(); + if( playaudio ){ + QString sfile = LSession::handle()->sessionSettings()->value("audiofiles/batterylow", LOS::LuminaShare()+"low-battery.ogg").toString(); LSession::handle()->playAudioFile(sfile); - } + } + } - 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; + 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) 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 607f911f..514c2cc0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_af.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_af.ts @@ -147,59 +147,59 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation type="unfinished"></translation> </message> 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 607f911f..514c2cc0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_ar.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_ar.ts @@ -147,59 +147,59 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation type="unfinished"></translation> </message> 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 607f911f..514c2cc0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_az.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_az.ts @@ -147,59 +147,59 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation type="unfinished"></translation> </message> 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 e2f19d0a..d6c2c195 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_bg.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_bg.ts @@ -147,59 +147,59 @@ <translation>Грешка във файла</translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation>Сила на звука %1%</translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation>Яркост на екрана %1%</translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation>Невалиден файл или адрес: %1</translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation>Информацията за стартиране липсва от прекия път (повреден пряк път): %1</translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation>Адресът липсва от прекия път към отдалечен адрес: %1</translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation>Пътят към директорията липсва от прекия път към директорията: %1</translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation>Непознат тип пряк път : %1</translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation>Грешка в програмата</translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation>Възникна грешка в програмата и трябваше да бъде затворена:</translation> </message> 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 607f911f..514c2cc0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_bn.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_bn.ts @@ -147,59 +147,59 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation type="unfinished"></translation> </message> 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 607f911f..514c2cc0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_bs.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_bs.ts @@ -147,59 +147,59 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation type="unfinished"></translation> </message> 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 ff2c550b..ac403ed0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_ca.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_ca.ts @@ -147,59 +147,59 @@ <translation>Error del fitxer</translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation>Volum de l'àudio: %1%</translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation>Brillantor de la pantalla: %1%</translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation>Fitxer o URL no vàlids: %1</translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation>L'entrada de l'aplicació no és vàlida: %1</translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation>La drecera de l'aplicació no té la informació de llançament (drecera malformada): %1</translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation>La drecera de l'URL no té l'URL: %1</translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation>La drecera del directori no té el camí cap al directori: %1</translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation>Tipus de drecera desconegut: %1</translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation>No s'ha pogut trobar "%1". Si us plau, assegureu-vos que estigui instal·lat.</translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation>Error de l'aplicació</translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation>L'aplicació següent ha tingut un error i s'ha hagut de tancar:</translation> </message> 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 fd7ed2cf..f038a5ed 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_cs.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_cs.ts @@ -147,59 +147,59 @@ <translation>Chyba souboru</translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation>Hlasitost zvuku %1%</translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation>Jas obrazovky %1%</translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation>Neplatný soubor nebo URL adresa: %1</translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation>Záznam pro aplikaci není platný: %1</translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation>V zástupci aplikace chybí informace pro spouštění (chybná zkratka):% 1</translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation>V zástupci URL adresy chybí URL: %1</translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation>V zástupci složky chybí popis jejího umístění: %1</translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation>Neznámý typ zkratky: %1</translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation>Nepodařilo se najít „%1“. Nejprve zajistěte, aby bylo nainstalované.</translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation>Chyba aplikace</translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation>V následující aplikaci došlo k chyba a bude proto ukončena:</translation> </message> 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 607f911f..514c2cc0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_cy.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_cy.ts @@ -147,59 +147,59 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation type="unfinished"></translation> </message> 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 770e717e..3e00f1b5 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_da.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_da.ts @@ -147,59 +147,59 @@ <translation>Filfejl</translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation>Lydstyrke %1%</translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation>Skærmlysstyrke %1%</translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation>Ugyldig fil eller URL: %1</translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation>Programpost er ugyldig: %1</translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation>Programgenvejen mangler korrekt opstartsinformation (forkert udformet genvej): %1</translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation>URL-genvejen mangler URL'en: %1</translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation>Mappegenvejen mangler stien til mappen: %1</translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation>Ukendt type genvej : %1</translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation>Kunne ikke finde "%1". Sørg for at programmet er installeret først.</translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation>Programfejl</translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation>Det følgende program oplevede en fejl og blev nødt til at afslutte:</translation> </message> 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 f1b09042..591f1398 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_de.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_de.ts @@ -147,59 +147,59 @@ <translation>Dateifehler</translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation>Lautstärke %1%</translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation>Bildschirmhelligkeit %1%</translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation>Ungültige Datei oder URL: %1</translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation>Anwendungseintrag ist ungültig: %1</translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation>Fehlende Startup-Informationen für Programm-Verknüpfung (deformierte Verknüpfung): %1</translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation>URL-Verknüpfung fehlt die URL: %1</translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation>Verzeichnisverknüpfung fehlt der Pfad zum Verzeichnis: %1</translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation>Unbekannter Typ für Vernüpfung: %1</translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation>Konnte "%1" nicht finden. Bitte stellen Sie zuerst sicher, dass es installiert ist.</translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation>Anwendungsfehler</translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation>Bei folgender Anwendung ist ein Fehler aufgetreten und sie wurde beendet:</translation> </message> 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 1cf5cbb8..9fc46d41 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_el.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_el.ts @@ -147,59 +147,59 @@ <translation>Σφάλμα Αρχείου</translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation>Ένταση ήχου %1%</translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation>Φωτεινότητα οθόνης %1%</translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation>Μη έγκυρο αρχείο ή URL: %1</translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation>Οι πληροφορίες εκτέλεσης λείπουν απο την συντόμευση της εφαρμογής (Δυσλειτουργία συντόμευσης): %1</translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation>Απο την URL συντόμευση λείπει το URL: %1</translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation>Απο την συντόμευση του καταλόγου λείπει η διαδρομή προς τον κατάλογο: %1</translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation>Άγνωστος τύπος συντόμευσης: %1</translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation>Αδυναμία έυρεσης "%1". Παρακαλώ βεβαιωθείτε ότι έχει ήδη εγκατασταθεί.</translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation>Πρόβλημα Εφαρμογής</translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation>Η παρακάτω εφαρμογή αντιμετώπισε ένα σφάλμα και πρέπει να τερματιστεί:</translation> </message> 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 dbca5225..b64ca952 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 @@ -147,59 +147,59 @@ <translation>File Error</translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation>Audio Volume %1%</translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation>Screen Brightness %1%</translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation>Invalid file or URL: %1</translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation>Application shortcut is missing the launch information (malformed shortcut): %1</translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation>URL shortcut is missing the URL: %1</translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation>Directory shortcut is missing the path to the directory: %1</translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation>Unknown type of shortcut: %1</translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation>Could not find "%1". Please ensure it is installed first.</translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation>Application Error</translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation>The following application experienced an error and needed to close:</translation> </message> 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 afa92889..00ca4e0d 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 @@ -147,59 +147,59 @@ <translation>File Error</translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation>Audio Volume %1%</translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation>Screen Brightness %1%</translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation>Invalid file or URL: %1</translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation>Application shortcut is missing the launch information (malformed shortcut): %1</translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation>URL shortcut is missing the URL: %1</translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation>Directory shortcut is missing the path to the directory: %1</translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation>Unknown type of shortcut: %1</translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation>Could not find "%1". Please ensure it is installed first.</translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation>Application Error</translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation>The following application experienced an error and needed to close:</translation> </message> 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 607f911f..514c2cc0 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 @@ -147,59 +147,59 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation type="unfinished"></translation> </message> 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 abfe4962..6c3c5d51 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_es.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_es.ts @@ -147,59 +147,59 @@ <translation>Error de Archivo</translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation>Volúmen del Sonido %1%</translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation>Brillo de Pantalla %1%</translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation>Archivo o URL no válido(a): %1</translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation>El acceso directo a la aplicación no contiene la información para la ejecución (acceso directo defectuoso): %1</translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation>El acceso directo a la URL no contiene la URL: %1</translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation>El acceso directo al directorio no contiene la dirección al directorio: %1</translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation>Tipo de acceso directo desconocido: %1</translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation>Error en la Aplicación</translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation>La siguiente aplicación presentó un error y necesita cerrarse:</translation> </message> 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 fa069632..ee3b4351 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_et.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_et.ts @@ -147,59 +147,59 @@ <translation>Faili viga</translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation>Helitugevus %1%</translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation>Ekraani heledus %1%</translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation>Vigane fail või aadress: %1</translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation>Rakenduse %1 kirje on vigane.</translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation>Rakenduse otseteel puudub käivitamise info (vigane otsetee): %1</translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation>Aadressi otseteel puudub aadress: %1</translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation>Kausta otseteel puudub kausta rada: %1</translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation>Teadmata tüüpi otsetee: %1</translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation>Ei leidnud "%1" . Palun veendu et see on paigaldatud.</translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation>Programmi viga</translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation>See rakendus sulgus, kuna esines viga:</translation> </message> 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 6a8f257b..cf77faf1 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_eu.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_eu.ts @@ -147,59 +147,59 @@ <translation>Fitxategiko akatsa</translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation>Audioaren bolumena %1%</translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation>Pantailaren distira %1%</translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation>Fitxategi edo URL okerra: %1</translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation>Aplikazioko lasterbideak ez dauka abiarazteko informazioa (lasterbide okerra): %1</translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation>URLko lasterbideak ez dauka URLa: %1</translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation>Direktorioko lasterbideak ez dauka direktorioroko bide izena: %1</translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation>Lasterbide mota ezezaguna: %1</translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation>Aplikazioko akatsa</translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation>Hurrengo aplikazioak akats bat izan du eta itxi behar da:</translation> </message> 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 607f911f..514c2cc0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_fa.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_fa.ts @@ -147,59 +147,59 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation type="unfinished"></translation> </message> 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 403651fe..b3441d40 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_fi.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_fi.ts @@ -147,59 +147,59 @@ <translation>Tiedostovirhe</translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation>Äänenvoimakkuus %1 %</translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation>Näytön kirkkaus %1 %</translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation>Virheellinen tiedosto tai verkko-osoite: %1</translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation>Sovelluksen pikakuvakkeesta puuttuvat käynnistystiedot (virheellinen pikakuvake): %1</translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation>Verkko-osoitteen pikakuvakkeesta puuttuu verkko-osoite: %1</translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation>Kansion pikakuvakkeesta puuttuu kansion sijainti: %1</translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation>Tuntematon pikakuvaketyyppi: %1</translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation>Sovellusvirhe</translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation>Seuraavat sovellukset kohtasivat virheen ja ne täytyy sulkea:</translation> </message> 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 567fcf63..4b73891b 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_fr.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_fr.ts @@ -147,59 +147,59 @@ <translation>Erreur de fichier</translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation>Volume Audio %1%</translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation>Luminosité de l'Écran %1%</translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation>Fichier ou URL invalide : %1</translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation>Programme invalide : %1</translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation>Informations de lancement manquantes dans le raccourci du programme (raccourci invalide) : %1</translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation>L'adresse est introuvable dans le raccourci URL : %1</translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation>Le chemin du dossier est vide dans le raccourci du dossier : %1</translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation>Type du raccourci inconnu : %1</translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <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="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation>Erreur du Programme</translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation>Le programme suivant a provoqué une erreur et a dû être fermé :</translation> </message> 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 607f911f..514c2cc0 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 @@ -147,59 +147,59 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation type="unfinished"></translation> </message> 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 607f911f..514c2cc0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_gl.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_gl.ts @@ -147,59 +147,59 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation type="unfinished"></translation> </message> 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 607f911f..514c2cc0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_he.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_he.ts @@ -147,59 +147,59 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation type="unfinished"></translation> </message> 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 1b33caf3..4df6a468 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_hi.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_hi.ts @@ -147,59 +147,59 @@ <translation>फाइल त्रुटि</translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation>ऑडियो ध्वनि %1%</translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation>स्क्रीन चमक %1%</translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation>अवैध फाइल या यूआरएल:%1</translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation>एप्लीकेशन शॉर्टकट में चालू करने सम्बन्धी जानकारी नहीं है( अपूर्ण शॉर्टकट):%1</translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation>यूआरएल के शॉर्टकट में यूआरएल नहीं है:%1</translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation>डायरेक्टरी के शॉर्टकट में डायरेक्टरी का पथ नहीं है:%1</translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation>अनजान प्रकार का शॉर्टकट:%1</translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation>एप्लीकेशन त्रुटि</translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation>इस एप्लीकेशन में त्रुटि है और इसे बंद करने की आवश्यकता है:</translation> </message> 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 607f911f..514c2cc0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_hr.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_hr.ts @@ -147,59 +147,59 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation type="unfinished"></translation> </message> 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 2356b492..a75ae74e 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_hu.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_hu.ts @@ -147,59 +147,59 @@ <translation>Fájl hiba</translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation>Hangerő: %1%</translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation>Képernyő fényessége: %1%</translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation>Érvénytelen fájl vagy URL: %1</translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation>a program hivatkozásában hiányosak az indítási adatok : %1</translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation>URL hivatkozás hiányos ebben: %1</translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation>Könyvtár hivatkozás hiányos ebben az útvonalban: %1</translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation>Ismeretlen hivatkozás: %1</translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation>Nem találom: "%1". Először győződj meg hogy telepítve van.</translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation>Alkalmazás hiba</translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation>Az alkalmazás hibát észlelt, és bezárandó:</translation> </message> 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 ee46566b..e099e24c 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_id.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_id.ts @@ -147,59 +147,59 @@ <translation>berkas error</translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation>Audio Volume %1%</translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation>kecerahan layar %1%</translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation>file yang tidak valid atau URL: %1</translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation>Aplikasi shortcut yang hilang informasi meluncurkan (jelek cacat): %1</translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation>URL shortcut hilang URL: %1</translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation type="unfinished">Direktori shortcut yang hilang path ke direktori: %1</translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation>Jenis diketahui shortcut: %1</translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation>aplikasi error</translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation type="unfinished">Aplikasi berikut mengalami kesalahan dan diperlukan untuk menutup:</translation> </message> 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 607f911f..514c2cc0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_is.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_is.ts @@ -147,59 +147,59 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation type="unfinished"></translation> </message> 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 3189ccfa..ada557e8 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_it.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_it.ts @@ -147,59 +147,59 @@ <translation>Errore File</translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation>Volume Suono %1%</translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation>luminosità dello Schermo %1%</translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation>File o URL Invalido: %1</translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation>Applicazione principale non valida: %1</translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation>Collegamento all'applicazione senzai informazioni di lancio (scorciatoia malformata):: %1</translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation>Collegamento URL senza l'URL: %1</translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation>Collegamento Directory senza il percorso della directory: %1</translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation type="unfinished">Tipo di abbreviazione sconosciuto : %1</translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation>Impossibile trovare "% 1". Assicurarsi che sia installato per primo.</translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation>Errore Applicazione</translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation>La seguente applicazione ha avuto un errore e deve chiudere:</translation> </message> 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 9eb3e794..4cc2bf0e 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_ja.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_ja.ts @@ -148,59 +148,59 @@ <translation>ファイルエラー</translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation>音声ボリューム %1%</translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation>画面の明るさ %1%</translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation>無効なファイルまたはURL: %1</translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation>アプリケーションエントリーが不正です: %1</translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation>アプリケーションショートカットの起動情報が失われています(無効なショートカット): %1</translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation>URL ショートカットの URL が失われています: %1</translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation>ディレクトリーショートカットのパス情報が失われています: %1</translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation>種類が不明なショートカットです: %1</translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation>"%1" が見つかりませんでした。まずそれがインストールされている事を確認してください。</translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation>アプリケーションエラー</translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation>このアプリケーションでエラーが発生したため、閉じる必要があります:</translation> </message> 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 607f911f..514c2cc0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_ka.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_ka.ts @@ -147,59 +147,59 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation type="unfinished"></translation> </message> 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 bcee9b12..255b8336 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_ko.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_ko.ts @@ -147,59 +147,59 @@ <translation>파일 오류</translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation>오디오 볼륨 %1%</translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation>화면 밝기 %1%</translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation>잘못된 파일이나 URL: %1</translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation>프로그램 바로 가기에 실행 정보가 없습니다 (잘못된 바로 가기): %1</translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation>URL 바로 가기에 URL이 없습니다: %1</translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation>디렉터리 바로 가기에 디렉터리 경로가 없습니다: %1</translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation>알 수 없는 종류의 바로 가기: %1</translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation>프로그램 오류</translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation>다음의 프로그램에 오류가 발생하여 종료하였습니다:</translation> </message> 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 e348dfba..a271c104 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_lt.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_lt.ts @@ -147,59 +147,59 @@ <translation>Failo klaida</translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation>Garso garsis %1%</translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation>Ekrano ryškumas %1%</translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation>Netinkamas failas ar URL: %1</translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation>Programos įrašas yra neteisingas: %1</translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation>Programos šaukinyje trūksta paleidimo informacijos (netaisyklingas šaukinys): %1</translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation>URL šaukinyje trūksta URL: %1</translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation>Katalogo šaukinyje trūksta kelio į katalogą: %1</translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation>Nežinomas šaukinio tipas : %1</translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation>Nepavyko rasti "%1". Iš pradžių, įsitikinkite ar ji įdiegta.</translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation>Programos klaida</translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation>Ši programa susidūrė su klaida ir turėjo būti užverta:</translation> </message> 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 8a818aa0..04fd8239 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_lv.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_lv.ts @@ -147,59 +147,59 @@ <translation>Faila kļūda</translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation>Audio skaļums %1%</translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation>Ekrāna spilgtums %1%</translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation>Nederīgs fails vai URL: %1</translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation>Lietotnes saīsnei trūkst palaišanas informācijas (nepareizi veidota saīsne): %1</translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation>URL saīsnei trūkst URL: %1</translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation>Kataloga saīsnei trūkst ceļš uz katalogu: %1</translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation>Nezināma tipa saīsne : %1</translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation>Lietotnes kļūda</translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation>Šai lietotnei radās kļūda un bija nepieciešams to aizvērt:</translation> </message> 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 607f911f..514c2cc0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_mk.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_mk.ts @@ -147,59 +147,59 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation type="unfinished"></translation> </message> 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 607f911f..514c2cc0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_mn.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_mn.ts @@ -147,59 +147,59 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation type="unfinished"></translation> </message> 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 607f911f..514c2cc0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_ms.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_ms.ts @@ -147,59 +147,59 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation type="unfinished"></translation> </message> 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 607f911f..514c2cc0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_mt.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_mt.ts @@ -147,59 +147,59 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation type="unfinished"></translation> </message> 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 607f911f..514c2cc0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_nb.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_nb.ts @@ -147,59 +147,59 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation type="unfinished"></translation> </message> 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 61b2a7c8..fe2794dd 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_nl.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_nl.ts @@ -147,59 +147,59 @@ <translation>Bestandsfout</translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation>Audiovolume %1%</translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation>Schermhelderheid %1%</translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation>Ongeldig bestand of URL: %1</translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation>De opstartinformatie van de applicatie-snelkoppeling ontbreekt (ongeldige snelkoppeling): %1</translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation>De URL in de URL-snelkoppeling ontbreekt: %1</translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation>Het mappad in de mapsnelkoppeling ontbreekt: %1</translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation>Onbekend soort snelkoppeling: %1</translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation>"%1" kan niet worden gevonden. Zorg ervoor dat het geïnstalleerd is.</translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation>Applicatiefout</translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation>Er is een fout opgetreden in de volgende applicatie en moet daarom worden gesloten:</translation> </message> 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 607f911f..514c2cc0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_pa.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_pa.ts @@ -147,59 +147,59 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation type="unfinished"></translation> </message> 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 81dc5121..fbfa6016 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_pl.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_pl.ts @@ -147,59 +147,59 @@ <translation>Błąd pliku</translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation>Głośność dźwięku %1%</translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation>Jasność ekranu %1%</translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation>Nieprawidłowy plik lub URL: %1</translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation>Ścieżka aplikacji jest błędna: %1</translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation>Skrót do aplikacji nie posiada odpowiednich informacji do uruchomienia (niewłaściwy skrót): %1</translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation>W skrócie URL brak adresu URL: %1</translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation>W skrócie do folderu brak ścieżki do folderu: %1</translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation>Nieznany błąd skrótu: %1</translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation>Nie można znaleźć "%1". Upewnij się, że jest zainstalowany.</translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation>Błąd aplikacji</translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation>Aplikacja napotkała błąd i musi zostać zamknięta:</translation> </message> 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 bf7c5214..c22093c7 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_pt.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_pt.ts @@ -147,59 +147,59 @@ <translation>Erro no Arquivo</translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation>Volume do Som %1%</translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation>Brilho da Tela %1%</translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation>Arquivo ou URL Inválidos: %1</translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation>Está faltando a informação do lançamento do atalho do aplicativo (atalho mal informado): 1%</translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation>Está faltando a URL do atalhos da URL: %1 </translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation>Está faltando o caminho para o diretório do atalho do diretório" %1</translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation>Tipo de atalho desconhecido: %1</translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation>Erro no Aplicativo</translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation>O seguinte aplicativo encontrou um erro e teve que ser fechado:</translation> </message> 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 01c4ffa9..542e135d 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 @@ -147,59 +147,59 @@ <translation>Erro de arquivo</translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation>Volume do som %1%</translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation>Brilho da tela %1%</translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation>Arquivo ou URL inválido: %1</translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation>A entrada do aplicativo é inválida: %1</translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation>O atalho do aplicativo não tem a informação de lançamento (atalho malformado): %1</translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation>Está faltando o URL no atalho: %1</translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation>Está faltando o caminho para o diretório no atalho: %1</translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation>Tipo de atalho desconhecido: %1</translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation>"%1" não pode ser localizado. Por favor, verifique se está instalado.</translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation>Erro do aplicativo</translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation>O seguinte aplicativo encontrou um erro e precisa ser fechado:</translation> </message> 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 607f911f..514c2cc0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_ro.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_ro.ts @@ -147,59 +147,59 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation type="unfinished"></translation> </message> 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 3762faca..7a502cbe 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_ru.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_ru.ts @@ -147,59 +147,59 @@ <translation>Ошибка Файла</translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation>Громкость %1%</translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation>Яркость Экрана %1%</translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation>Неверный файл или URL-адрес: %1</translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation>Приложение вывело ошибку: %1</translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation>В ярлыке приложения отсутствует информация для запуска (неверный формат ярлыка): %1</translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation>В ярлыке отсутствует URL-адрес: %1</translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation>В ярлыке отсутствует путь к папке: %1</translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation>Неизвестный тип ярлыка: %1</translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation>Не найден "%1". Пожалуйста, убедитесь, что он установлен в первую очередь.</translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation>Ошибка Приложения</translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation>Следующее приложение вызвало ошибку и должно быть закрыто:</translation> </message> 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 153fbcf6..18932a98 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_sk.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_sk.ts @@ -147,59 +147,59 @@ <translation>Chyba súboru</translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation>Hlasitosť zvuku %1%</translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation>Jas obrazovky %1%</translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation>Neplatný súbor alebo URL %1</translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation>Zástupca aplikácie - chýbajúce informácie: %1</translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation>chýba URL:%1</translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation>chýba cesta adresára: %1 </translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation>Neznámy typ skratky: %1</translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation>Chyba aplikácie </translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation>Nasledujúca aplikácia hlási chybu a musí byť ukončená: </translation> </message> 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 607f911f..514c2cc0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_sl.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_sl.ts @@ -147,59 +147,59 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation type="unfinished"></translation> </message> 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 607f911f..514c2cc0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_sr.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_sr.ts @@ -147,59 +147,59 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation type="unfinished"></translation> </message> 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 7745b210..e04e433e 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_sv.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_sv.ts @@ -147,59 +147,59 @@ <translation>Filfel</translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation>Ljudvolym %1%</translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation>Skärmljusstyrka %1%</translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation>Ogiltig fil eller URL %1</translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation>Programgenväg saknar startinformation (missbildad genväg): %1</translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation>URL-genvägen saknar URL: %1</translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation>Genvägen till katalogen saknar sökvägen till katalogen :%1</translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation>Okänd typ av genväg: %1</translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation>Kunde inte hitta "%1". Se till att du har detta programmet installerat först.</translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation>Programfel</translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation>Följande program upplevde ett fel och behövde stängas:</translation> </message> 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 607f911f..514c2cc0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_sw.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_sw.ts @@ -147,59 +147,59 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation type="unfinished"></translation> </message> 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 607f911f..514c2cc0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_ta.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_ta.ts @@ -147,59 +147,59 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation type="unfinished"></translation> </message> 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 607f911f..514c2cc0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_tg.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_tg.ts @@ -147,59 +147,59 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation type="unfinished"></translation> </message> 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 607f911f..514c2cc0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_th.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_th.ts @@ -147,59 +147,59 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation type="unfinished"></translation> </message> 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 06f75ad1..9e73a2b5 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_tr.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_tr.ts @@ -147,59 +147,59 @@ <translation>Dosya Hatası</translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation>Ses Düzeyi %1%</translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation>Ekran Parlaklığı %1%</translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation>Geçersiz Dosya ya da URL: %1</translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation>Uygulama kısayolunda başlatma bilgisi eksik (hatalı kısayol): %1</translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation>URL kısayolunda URL eksik: %1</translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation>Dizin kısayolunda dizin yolu eksik: %1</translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation>Bilinmeyen kısayol türü: %1</translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation>Uygulama Hatası</translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation>İzleyen uygulama bir hatayla karşılaştı ve kapatılması gerekti:</translation> </message> 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 8d8a2e09..a984132b 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_uk.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_uk.ts @@ -147,59 +147,59 @@ <translation>Помилка файлу</translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation>Гучність звуку %1%</translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation>Яскравість екрану %1%</translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation>Невірний файл або URL-адреса: %1</translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation>В ярлику програми відсутня інформація для запуску (невірний формат ярлика): %1</translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation>В ярлику URL-адреса відсутня: %1</translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation>В ярлику відсутній шлях до папки: %1</translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation>Невідомий тип ярлику : %1</translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation>Помилка програми</translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation>Наступна програма викликало помилку и має бути закрита:</translation> </message> 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 607f911f..514c2cc0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_uz.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_uz.ts @@ -147,59 +147,59 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation type="unfinished"></translation> </message> 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 607f911f..514c2cc0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_vi.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_vi.ts @@ -147,59 +147,59 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation type="unfinished"></translation> </message> 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 ffa75bdd..f937d362 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 @@ -147,59 +147,59 @@ <translation>文件错误</translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation>音频音量 %1%</translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation>屏幕亮度 %1%</translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation>无效的文件或网址:%1%</translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation>应用程序输入无效: %1</translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation>应用程序快捷方式缺少启动信息(错误的快捷方式):%1</translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation>网址快捷方式缺少网址 : %1</translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation>目录的快捷方式是丢失目录的路径 : %1</translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation>未知类型的快捷方式:%1</translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation>无法找到 “%1”。请确认它已被安装。</translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation>应用程序出错</translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation>下面的应用程序遇到错误,需要关闭:</translation> </message> 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 607f911f..514c2cc0 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 @@ -147,59 +147,59 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation type="unfinished"></translation> </message> 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 607f911f..514c2cc0 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 @@ -147,59 +147,59 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation type="unfinished"></translation> </message> 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 607f911f..514c2cc0 100644 --- a/src-qt5/core/lumina-open/i18n/lumina-open_zu.ts +++ b/src-qt5/core/lumina-open/i18n/lumina-open_zu.ts @@ -147,59 +147,59 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="191"/> - <location filename="../main.cpp" line="197"/> + <location filename="../main.cpp" line="199"/> + <location filename="../main.cpp" line="213"/> <source>Audio Volume %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="205"/> - <location filename="../main.cpp" line="214"/> + <location filename="../main.cpp" line="221"/> + <location filename="../main.cpp" line="230"/> <source>Screen Brightness %1%</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="246"/> + <location filename="../main.cpp" line="262"/> <source>Invalid file or URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="267"/> + <location filename="../main.cpp" line="283"/> <source>Application entry is invalid: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="278"/> + <location filename="../main.cpp" line="294"/> <source>Application shortcut is missing the launching information (malformed shortcut): %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="291"/> + <location filename="../main.cpp" line="307"/> <source>URL shortcut is missing the URL: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="302"/> + <location filename="../main.cpp" line="318"/> <source>Directory shortcut is missing the path to the directory: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="307"/> + <location filename="../main.cpp" line="323"/> <source>Unknown type of shortcut : %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="370"/> + <location filename="../main.cpp" line="386"/> <source>Could not find "%1". Please ensure it is installed first.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>Application Error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="419"/> + <location filename="../main.cpp" line="435"/> <source>The following application experienced an error and needed to close:</source> <translation type="unfinished"></translation> </message> diff --git a/src-qt5/core/lumina-open/main.cpp b/src-qt5/core/lumina-open/main.cpp index 2b9e9184..e53181f9 100644 --- a/src-qt5/core/lumina-open/main.cpp +++ b/src-qt5/core/lumina-open/main.cpp @@ -185,17 +185,33 @@ return; LaunchAutoStart(); return; }else if(QString(argv[i]).simplified() == "-volumeup"){ -int vol = LOS::audioVolume()+5; //increase 5% -if(vol>100){ vol=100; } -LOS::setAudioVolume(vol); -showOSD(argc,argv, QString(QObject::tr("Audio Volume %1%")).arg(QString::number(vol)) ); -return; + bool isInt = false; + int volupVal = 5; + if(argc > i){ + int parse = QString(argv[i+1]).toInt(&isInt,10); + if(isInt && 0 < parse && parse <= 20){ + volupVal = parse; + } + } + int vol = LOS::audioVolume()+volupVal; + if(vol>100){ vol=100; } + LOS::setAudioVolume(vol); + showOSD(argc,argv, QString(QObject::tr("Audio Volume %1%")).arg(QString::number(vol)) ); + return; }else if(QString(argv[i]).simplified() == "-volumedown"){ -int vol = LOS::audioVolume()-5; //decrease 5% -if(vol<0){ vol=0; } -LOS::setAudioVolume(vol); -showOSD(argc,argv, QString(QObject::tr("Audio Volume %1%")).arg(QString::number(vol)) ); -return; + bool isInt = false; + int voldownVal = 5; + if(argc > i){ + int parse = QString(argv[i+1]).toInt(&isInt,10); + if(isInt && 0 < parse && parse <= 20){ + voldownVal = parse; + } + } + int vol = LOS::audioVolume()-voldownVal; //decrease 5% + if(vol<0){ vol=0; } + LOS::setAudioVolume(vol); + showOSD(argc,argv, QString(QObject::tr("Audio Volume %1%")).arg(QString::number(vol)) ); + return; }else if(QString(argv[i]).simplified() == "-brightnessup"){ int bright = LOS::ScreenBrightness(); if(bright > 0){ //brightness control available diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/lthemeengine-qtplugin.pro b/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/lthemeengine-qtplugin.pro index 3dca4fd1..227a196e 100644 --- a/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/lthemeengine-qtplugin.pro +++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/lthemeengine-qtplugin.pro @@ -21,6 +21,9 @@ SOURCES += \ OTHER_FILES += lthemeengine.json +LIBS += -lXcursor +QT += x11extras + INCLUDEPATH += ../ HEADERS += \ 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 e581b016..789b3990 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 @@ -7,14 +7,18 @@ #include <QTimer> #include <QIcon> #include <QRegExp> + #ifdef QT_WIDGETS_LIB #include <QStyle> #include <QStyleFactory> #include <QApplication> #include <QWidget> #endif + #include <QFile> #include <QFileSystemWatcher> +#include <QDir> +#include <QTextStream> #include <stdlib.h> @@ -28,7 +32,11 @@ #include <private/qdbustrayicon_p.h> #endif - +#include <QX11Info> +#include <QCursor> +//Need access to the private QCursor header so we can refresh the mouse cursor cache +//#include <private/qcursor_p.h> //Does not work - looks like we need to use X11 stuff instead +#include <X11/Xcursor/Xcursor.h> Q_LOGGING_CATEGORY(llthemeengine, "lthemeengine") @@ -37,10 +45,11 @@ Q_LOGGING_CATEGORY(llthemeengine, "lthemeengine") lthemeenginePlatformTheme::lthemeenginePlatformTheme(){ if(QGuiApplication::desktopSettingsAware()){ readSettings(); - QMetaObject::invokeMethod(this, "applySettings", Qt::QueuedConnection); #ifdef QT_WIDGETS_LIB QMetaObject::invokeMethod(this, "createFSWatcher", Qt::QueuedConnection); #endif + QMetaObject::invokeMethod(this, "applySettings", Qt::QueuedConnection); + QGuiApplication::setFont(m_generalFont); } //qCDebug(llthemeengine) << "using lthemeengine plugin"; @@ -168,16 +177,26 @@ void lthemeenginePlatformTheme::applySettings(){ } #endif if(!m_update){ m_update = true; } + + //Mouse Cursor syncronization + QString mthemefile = QDir::homePath()+"/.icons/default/index.theme"; + if(!watcher->files().contains(mthemefile) && QFile::exists(mthemefile)){ + watcher->addPath(mthemefile); //X11 mouse cursor theme file + //qDebug() << "Add Mouse Cursor File to Watcher"; + syncMouseCursorTheme(mthemefile); + } } #ifdef QT_WIDGETS_LIB void lthemeenginePlatformTheme::createFSWatcher(){ - QFileSystemWatcher *watcher = new QFileSystemWatcher(this); - watcher->addPath(lthemeengine::configPath()); + watcher = new QFileSystemWatcher(this); + watcher->addPath(lthemeengine::configPath()); //theme engine settings directory + watcher->addPath(QDir::homePath()+"/.icons/default/index.theme"); //X11 mouse cursor theme file QTimer *timer = new QTimer(this); timer->setSingleShot(true); timer->setInterval(500); connect(watcher, SIGNAL(directoryChanged(QString)), timer, SLOT(start())); + connect(watcher, SIGNAL(fileChanged(QString)), this, SLOT(fileChanged(QString)) ); connect(timer, SIGNAL(timeout()), SLOT(updateSettings())); } @@ -188,6 +207,13 @@ void lthemeenginePlatformTheme::updateSettings(){ } #endif +void lthemeenginePlatformTheme::fileChanged(QString path){ + if(path.endsWith("default/index.theme")){ + //qDebug() << "Mouse Cursor File Changed"; + syncMouseCursorTheme(path); + } +} + void lthemeenginePlatformTheme::readSettings(){ if(m_customPalette){ delete m_customPalette; @@ -294,3 +320,57 @@ QPalette lthemeenginePlatformTheme::loadColorScheme(QString filePath){ else{ customPalette = *QPlatformTheme::palette(SystemPalette); } //load fallback palette return customPalette; } + +void lthemeenginePlatformTheme::syncMouseCursorTheme(QString indexfile){ + //Read the index file and pull out the theme name + QFile file(indexfile); + QString newtheme; + if(file.open(QIODevice::ReadOnly)){ + QTextStream stream(&file); + QString tmp; + while(!stream.atEnd()){ + tmp = stream.readLine().simplified(); + if(tmp.startsWith("Inherits=")){ newtheme = tmp.section("=",1,-1).simplified(); break; } + } + file.close(); + } + if(newtheme.isEmpty()){ return; } //nothing to do + QString curtheme = QString(XcursorGetTheme(QX11Info::display()) ); //currently-used theme + //qDebug() << "Sync Mouse Cursur Theme:" << curtheme << newtheme; + if(curtheme!=newtheme){ + qDebug() << " - Setting new cursor theme:" << newtheme; + XcursorSetTheme(QX11Info::display(), newtheme.toLocal8Bit().data()); //save the new theme name + }else{ + return; + } + //qDebug() << "Qt Stats:"; + //qDebug() << " TopLevelWindows:" << QGuiApplication::topLevelWindows().length(); + //qDebug() << " AllWindows:" << QGuiApplication::allWindows().length(); + //qDebug() << " AllWidgets:" << QApplication::allWidgets().length(); + + //XcursorSetThemeCore( QX11Info::display(), XcursorGetThemeCore(QX11Info::display()) ); //reset the theme core + //Load the cursors from the new theme + int defsize = XcursorGetDefaultSize(QX11Info::display()); + //qDebug() << "Default cursor size:" << defsize; + XcursorImages *imgs = XcursorLibraryLoadImages("left_ptr", NULL, defsize); + //qDebug() << "imgs:" << imgs << imgs->nimage; + XcursorCursors *curs = XcursorImagesLoadCursors(QX11Info::display(), imgs); + if(curs==0){ return; } //not found + //qDebug() << "Got Cursors:" << curs->ncursor; + //Now re-set the cursors for the current top-level X windows + QWindowList wins = QGuiApplication::allWindows(); //QGuiApplication::topLevelWindows(); + //qDebug() << "Got Windows:" << wins.length(); + for(int i=0; i<curs->ncursor; i++){ + for(int w=0; w<wins.length(); w++){ + XDefineCursor(curs->dpy, wins[w]->winId(), curs->cursors[i]); + } + } + XcursorCursorsDestroy(curs); //finished with this temporary structure + + /*QWidgetList wlist = QApplication::allWidgets(); + qDebug() << "Widget List:" << wlist.length(); + for(int i=0; i<wlist.length(); i++){ + QCursor cur(wlist[i]->cursor().shape()); + wlist[i]->cursor().swap( cur ); + }*/ +} 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 f521d457..359236b7 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 @@ -6,6 +6,7 @@ #include <QFont> #include <QPalette> #include <QLoggingCategory> +#include <QFileSystemWatcher> #if (QT_VERSION < QT_VERSION_CHECK(5, 5, 0)) #ifndef QT_NO_SYSTEMTRAYICON @@ -58,6 +59,7 @@ private slots: void createFSWatcher(); void updateSettings(); #endif + void fileChanged(QString); private: void readSettings(); @@ -77,6 +79,7 @@ private: bool m_usePalette = true; int m_toolButtonStyle = Qt::ToolButtonFollowStyle; int m_wheelScrollLines = 3; + QFileSystemWatcher *watcher; #if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0)) && !defined(QT_NO_DBUS) mutable bool m_dbusGlobalMenuAvailable = false; mutable bool m_checkDBusGlobalMenu = true; @@ -86,6 +89,7 @@ private: mutable bool m_checkDBusTray = true; #endif + void syncMouseCursorTheme(QString indexfile); }; Q_DECLARE_LOGGING_CATEGORY(llthemeengine) |