aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKen Moore <ken@ixsystems.com>2017-09-26 13:43:14 -0400
committerKen Moore <ken@ixsystems.com>2017-09-26 13:43:14 -0400
commit5020077eb17db2dac399b539ee451d3e5fe97a39 (patch)
tree28e215eddd84f7677cbb5df63957e14cf5f8c824
parentAdd a bunch of new files specifically for providing a new OpenGL-backed basis... (diff)
parentoops hadn't saved all my changes yet (diff)
downloadlumina-5020077eb17db2dac399b539ee451d3e5fe97a39.tar.gz
lumina-5020077eb17db2dac399b539ee451d3e5fe97a39.tar.bz2
lumina-5020077eb17db2dac399b539ee451d3e5fe97a39.zip
Merge branch 'master' of github.com:trueos/lumina
-rw-r--r--port-files/FreeBSD/x11/lumina-core/pkg-plist3
-rw-r--r--src-qt5/core-utils/lumina-xconfig/ScreenSettings.cpp8
-rw-r--r--src-qt5/core/libLumina/LDesktopUtils.cpp26
-rw-r--r--src-qt5/core/libLumina/LDesktopUtils.h2
-rw-r--r--src-qt5/core/libLumina/LuminaThemes.cpp56
-rw-r--r--src-qt5/core/libLumina/LuminaThemes.h8
-rw-r--r--src-qt5/core/libLumina/NativeEmbedWidget.cpp42
-rw-r--r--src-qt5/core/libLumina/NativeWindowSystem.cpp22
-rw-r--r--src-qt5/core/libLumina/RootSubWindow.cpp18
-rw-r--r--src-qt5/core/libLumina/RootSubWindow.h2
-rw-r--r--src-qt5/core/libLumina/RootWindow.cpp2
-rw-r--r--src-qt5/core/lumina-desktop/LSession.cpp12
-rw-r--r--src-qt5/core/lumina-desktop/LSession.h31
-rw-r--r--src-qt5/core/lumina-desktop/defaults/luminaDesktop-TrueOS.conf2
-rw-r--r--src-qt5/core/lumina-desktop/defaults/luminaDesktop.conf2
-rw-r--r--src-qt5/core/lumina-desktop/main.cpp1
-rw-r--r--src-qt5/desktop-utils/lumina-archiver/i18n/l-archiver_ca.ts66
-rw-r--r--src-qt5/desktop-utils/lumina-archiver/i18n/l-archiver_da.ts26
-rw-r--r--src-qt5/desktop-utils/lumina-archiver/i18n/l-archiver_fi.ts176
-rw-r--r--src-qt5/desktop-utils/lumina-archiver/i18n/l-archiver_lt.ts4
-rw-r--r--src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_fi.ts66
-rw-r--r--src-qt5/desktop-utils/lumina-fm-dev/main.cpp3
-rw-r--r--src-qt5/desktop-utils/lumina-fm-dev/widgets/DirWidget2.cpp4
-rw-r--r--src-qt5/desktop-utils/lumina-fm/widgets/fmwebdav.cpp36
-rw-r--r--src-qt5/desktop-utils/lumina-fm/widgets/fmwebdav.h36
-rw-r--r--src-qt5/desktop-utils/lumina-fm/widgets/vidnail.cpp33
-rw-r--r--src-qt5/desktop-utils/lumina-fm/widgets/vidnail.h25
-rw-r--r--src-qt5/desktop-utils/lumina-textedit/MainUI.cpp14
-rw-r--r--src-qt5/desktop-utils/lumina-textedit/MainUI.ui7
29 files changed, 458 insertions, 275 deletions
diff --git a/port-files/FreeBSD/x11/lumina-core/pkg-plist b/port-files/FreeBSD/x11/lumina-core/pkg-plist
index 174f3c92..d95c8baf 100644
--- a/port-files/FreeBSD/x11/lumina-core/pkg-plist
+++ b/port-files/FreeBSD/x11/lumina-core/pkg-plist
@@ -1646,6 +1646,9 @@ share/lthemeengine/colors/dusk.conf
share/lthemeengine/colors/sand.conf
share/lthemeengine/colors/simple.conf
share/lthemeengine/colors/waves.conf
+share/lthemeengine/desktop_qss/DarkGlass.qss
+share/lthemeengine/desktop_qss/Glass.qss
+share/lthemeengine/qss/scrollbar-simple.qss
share/lumina-desktop/Login.ogg
share/lumina-desktop/Logout.ogg
share/lumina-desktop/colors/Black.qss.colors
diff --git a/src-qt5/core-utils/lumina-xconfig/ScreenSettings.cpp b/src-qt5/core-utils/lumina-xconfig/ScreenSettings.cpp
index 3c0edc76..a9d40554 100644
--- a/src-qt5/core-utils/lumina-xconfig/ScreenSettings.cpp
+++ b/src-qt5/core-utils/lumina-xconfig/ScreenSettings.cpp
@@ -13,6 +13,7 @@
void RRSettings::ApplyPrevious(){
QList<ScreenInfo> screens;
QSettings set("lumina-desktop","lumina-xconfig");
+ if(set.allKeys().isEmpty()){ return; }
QString profile = set.value("default_profile","").toString();
if(profile.isEmpty() || !savedProfiles().contains(profile) ){ screens = PreviousSettings(); }
else{ screens = PreviousSettings(profile); }
@@ -167,6 +168,13 @@ bool RRSettings::SaveScreens(QList<ScreenInfo> screens, QString profile){
//Apply screen configuration
void RRSettings::Apply(QList<ScreenInfo> screens){
+ //Verify that there is at least 1 active/enabled monitor first
+ bool foundactive = false;
+ for(int i=0; i<screens.length() && !foundactive; i++){
+ if(screens[i].isactive){ foundactive = (screens[i].applyChange!=1); } //make sure we are not turning it off
+ else{ foundactive = (screens[i].applyChange==2); }
+ }
+ if(!foundactive){ return; } //never disable all screens
//Read all the settings and create the xrandr options to maintain these settings
QStringList opts;
//qDebug() << "Apply:" << screens.length();
diff --git a/src-qt5/core/libLumina/LDesktopUtils.cpp b/src-qt5/core/libLumina/LDesktopUtils.cpp
index 54e660e6..fb13a2a3 100644
--- a/src-qt5/core/libLumina/LDesktopUtils.cpp
+++ b/src-qt5/core/libLumina/LDesktopUtils.cpp
@@ -155,8 +155,8 @@ void LDesktopUtils::LoadSystemDefaults(bool skipOS){
if(sysDefaults.isEmpty()){ sysDefaults = LUtils::readFile(LOS::LuminaShare()+"luminaDesktop.conf"); }
//Find the number of the left-most desktop screen
QString screen = "0";
- QDesktopWidget *desk =QApplication::desktop();
QRect screenGeom;
+ QDesktopWidget *desk =QApplication::desktop();
for(int i=0; i<desk->screenCount(); i++){
if(desk->screenGeometry(i).x()==0){
screen = QString::number(i);
@@ -401,7 +401,7 @@ void LDesktopUtils::LoadSystemDefaults(bool skipOS){
QStringList syscolors = LTHEME::availableSystemColors();
//theme file
//qDebug() << "Detected Themes/colors:" << systhemes << syscolors;
- if( !themesettings[0].startsWith("/") || !QFile::exists(themesettings[0]) || !themesettings[0].endsWith(".qss.template")){
+ if( !themesettings[0].startsWith("/") || !QFile::exists(themesettings[0]) || !themesettings[0].endsWith(".qss")){
themesettings[0] = themesettings[0].section(".qss",0,0).simplified();
for(int i=0; i<systhemes.length(); i++){
if(systhemes[i].startsWith(themesettings[0]+"::::",Qt::CaseInsensitive)){
@@ -411,9 +411,9 @@ void LDesktopUtils::LoadSystemDefaults(bool skipOS){
}
}
//color file
- if( !themesettings[1].startsWith("/") || !QFile::exists(themesettings[1]) || !themesettings[1].endsWith(".qss.colors") ){
+ if( !themesettings[1].startsWith("/") || !QFile::exists(themesettings[1]) || !themesettings[1].endsWith(".conf") ){
//Remove any extra/invalid extension
- themesettings[1] = themesettings[1].section(".qss",0,0).simplified();
+ themesettings[1] = themesettings[1].section(".conf",0,0).simplified();
for(int i=0; i<syscolors.length(); i++){
if(syscolors[i].startsWith(themesettings[1]+"::::",Qt::CaseInsensitive)){
themesettings[1] = syscolors[i].section("::::",1,1); //Replace with the full path
@@ -434,13 +434,6 @@ void LDesktopUtils::LoadSystemDefaults(bool skipOS){
//Now save the settings files
if(setTheme){
LTHEME::setCurrentSettings( themesettings[0], themesettings[1], themesettings[2], themesettings[3], themesettings[4]);
- QSettings themeset("lthemeengine","lthemeengine");
- themeset.setValue("Appearance/icon_theme",themesettings[2]);
- //Quick hack for a "dark" theme/color to be uniform across the desktop/applications
- if(themesettings[0].contains("DarkGlass") || themesettings[1].contains("Black")){
- themeset.setValue("Appearance/custom_palette", true);
- themeset.setValue("Appearance/color_scheme_path", LOS::LuminaShare().section("/",0,-3)+"/lthemeengine/colors/darker.conf");
- }
}
LUtils::writeFile(setdir+"/sessionsettings.conf", sesset, true);
LUtils::writeFile(setdir+"/desktopsettings.conf", deskset, true);
@@ -463,12 +456,14 @@ void LDesktopUtils::LoadSystemDefaults(bool skipOS){
}
-bool LDesktopUtils::checkUserFiles(QString lastversion){
+bool LDesktopUtils::checkUserFiles(QString lastversion, QString currentversion){
+ //WARNING: Make sure you create a QApplication instance before calling this function!!!
+
//internal version conversion examples:
// [1.0.0 -> 1000000], [1.2.3 -> 1002003], [0.6.1 -> 6001]
//returns true if something changed
int oldversion = LDesktopUtils::VersionStringToNumber(lastversion);
- int nversion = LDesktopUtils::VersionStringToNumber(QApplication::applicationVersion());
+ int nversion = LDesktopUtils::VersionStringToNumber(currentversion);
bool newversion = ( oldversion < nversion ); //increasing version number
bool newrelease = ( lastversion.contains("-devel", Qt::CaseInsensitive) && QApplication::applicationVersion().contains("-release", Qt::CaseInsensitive) ); //Moving from devel to release
@@ -488,7 +483,10 @@ bool LDesktopUtils::checkUserFiles(QString lastversion){
//Convert from the old desktop numbering system to the new one (change occured with 1.0.1)
if(oldversion<=1000001){
QStringList DS = LUtils::readFile(dset);
- QList<QScreen*> screens = QApplication::screens();
+ char *tmp;
+ int tmpN = 0;
+ QApplication A(tmpN, &tmp);
+ QList<QScreen*> screens = A.screens();
for(int i=0; i<DS.length(); i++){
if(!DS[i].startsWith("[")){ continue; }
if(DS[i].startsWith("[desktop-")){
diff --git a/src-qt5/core/libLumina/LDesktopUtils.h b/src-qt5/core/libLumina/LDesktopUtils.h
index a9b44c67..b0ce6ba5 100644
--- a/src-qt5/core/libLumina/LDesktopUtils.h
+++ b/src-qt5/core/libLumina/LDesktopUtils.h
@@ -43,7 +43,7 @@ public:
//Load the default setup for the system
static void LoadSystemDefaults(bool skipOS = false);
- static bool checkUserFiles(QString lastversion); //returns true if something changed
+ static bool checkUserFiles(QString lastversion, QString currentversion); //returns true if something changed
static int VersionStringToNumber(QString version); //convert the lumina version string to a number for comparisons
//Migrating desktop settings from one ID to another
diff --git a/src-qt5/core/libLumina/LuminaThemes.cpp b/src-qt5/core/libLumina/LuminaThemes.cpp
index ddbc7b37..f6868651 100644
--- a/src-qt5/core/libLumina/LuminaThemes.cpp
+++ b/src-qt5/core/libLumina/LuminaThemes.cpp
@@ -25,42 +25,42 @@
QStringList LTHEME::availableSystemThemes(){
//returns: [name::::path] for each item
- QDir dir(LOS::LuminaShare()+"themes");
- QStringList list = dir.entryList(QStringList() <<"*.qss.template", QDir::Files, QDir::Name);
+ QDir dir(LOS::LuminaShare()+"../lthemeengine/desktop_qss");
+ QStringList list = dir.entryList(QStringList() <<"*.qss", QDir::Files, QDir::Name);
for(int i=0; i<list.length(); i++){
//Format the output entry [<name>::::<fullpath>]
- list[i] = list[i].section(".qss.",0,0)+"::::"+dir.absoluteFilePath(list[i]);
+ list[i] = list[i].section(".qss",0,0)+"::::"+dir.absoluteFilePath(list[i]);
}
return list;
}
QStringList LTHEME::availableLocalThemes(){ //returns: [name::::path] for each item
- QDir dir( QString(getenv("XDG_CONFIG_HOME"))+"/lumina-desktop/themes");
- QStringList list = dir.entryList(QStringList() <<"*.qss.template", QDir::Files, QDir::Name);
+ QDir dir( QString(getenv("XDG_CONFIG_HOME"))+"/lthemeengine/desktop_qss");
+ QStringList list = dir.entryList(QStringList() <<"*.qss", QDir::Files, QDir::Name);
for(int i=0; i<list.length(); i++){
//Format the output entry [<name>::::<fullpath>]
- list[i] = list[i].section(".qss.",0,0)+"::::"+dir.absoluteFilePath(list[i]);
+ list[i] = list[i].section(".qss",0,0)+"::::"+dir.absoluteFilePath(list[i]);
}
return list;
}
QStringList LTHEME::availableSystemColors(){ //returns: [name::::path] for each item
//returns: [name::::path] for each item
- QDir dir(LOS::LuminaShare()+"colors");
- QStringList list = dir.entryList(QStringList() <<"*.qss.colors", QDir::Files, QDir::Name);
+ QDir dir(LOS::LuminaShare()+"../lthemeengine/colors");
+ QStringList list = dir.entryList(QStringList() <<"*.conf", QDir::Files, QDir::Name);
for(int i=0; i<list.length(); i++){
//Format the output entry [<name>::::<fullpath>]
- list[i] = list[i].section(".qss.",0,0)+"::::"+dir.absoluteFilePath(list[i]);
+ list[i] = list[i].section(".conf",0,0)+"::::"+dir.absoluteFilePath(list[i]);
}
return list;
}
QStringList LTHEME::availableLocalColors(){ //returns: [name::::path] for each item
- QDir dir(QString(getenv("XDG_CONFIG_HOME"))+"/lumina-desktop/colors");
- QStringList list = dir.entryList(QStringList() <<"*.qss.colors", QDir::Files, QDir::Name);
+ QDir dir(QString(getenv("XDG_CONFIG_HOME"))+"/lthemeengine/colors");
+ QStringList list = dir.entryList(QStringList() <<"*.conf", QDir::Files, QDir::Name);
for(int i=0; i<list.length(); i++){
//Format the output entry [<name>::::<fullpath>]
- list[i] = list[i].section(".qss.",0,0)+"::::"+dir.absoluteFilePath(list[i]);
+ list[i] = list[i].section(".conf",0,0)+"::::"+dir.absoluteFilePath(list[i]);
}
return list;
}
@@ -122,15 +122,17 @@ QStringList LTHEME::availableSystemCursors(){ //returns: [name] for each item
//Save a new theme/color file
bool LTHEME::saveLocalTheme(QString name, QStringList contents){
- QString localdir = QString(getenv("XDG_CONFIG_HOME"))+"/lumina-desktop/themes/";
- if(!QFile::exists(localdir)){ QDir dir; dir.mkpath(localdir); }
- return LUtils::writeFile(localdir+name+".qss.template", contents, true);
+ return false; //old format - do not use!!
+ //QString localdir = QString(getenv("XDG_CONFIG_HOME"))+"/lumina-desktop/themes/";
+ //if(!QFile::exists(localdir)){ QDir dir; dir.mkpath(localdir); }
+ //return LUtils::writeFile(localdir+name+".qss.template", contents, true);
}
bool LTHEME::saveLocalColors(QString name, QStringList contents){
- QString localdir = QString(getenv("XDG_CONFIG_HOME"))+"/lumina-desktop/colors/";
- if(!QFile::exists(localdir)){ QDir dir; dir.mkpath(localdir); }
- return LUtils::writeFile(localdir+name+".qss.colors", contents, true);
+ return false; //old format - do not use!!
+ // QString localdir = QString(getenv("XDG_CONFIG_HOME"))+"/lumina-desktop/colors/";
+ //if(!QFile::exists(localdir)){ QDir dir; dir.mkpath(localdir); }
+ //return LUtils::writeFile(localdir+name+".qss.colors", contents, true);
}
//Return the currently selected Theme/Colors/Icons
@@ -181,22 +183,22 @@ QString LTHEME::currentCursor(){
//Change the current Theme/Colors/Icons
bool LTHEME::setCurrentSettings(QString themepath, QString colorpath, QString iconname, QString font, QString fontsize){
//QIcon::setThemeName(iconname);
+ //Save these settings into the theme engine settings
QSettings engineset("lthemeengine","lthemeengine");
engineset.setValue("Appearance/icon_theme", iconname);
- //engineset.setValue("Appearance/color_scheme_path", colorpath); //re-enable this once the color scheme has been synced with lthemeengine
- //Need to add theme path saving here too later
-
-
+ engineset.setValue("Appearance/custom_palette", QFile::exists(colorpath) );
+ engineset.setValue("Appearance/color_scheme_path", colorpath);
+ engineset.setValue("Interface/desktop_stylesheets", QStringList() << themepath);
+ return true;
//Now save the theme settings file
- QStringList contents;
+ /*QStringList contents;
contents << "THEMEFILE="+themepath;
contents << "COLORFILE="+colorpath;
contents << "ICONTHEME="+iconname;
contents << "FONTFAMILY="+font;
contents << "FONTSIZE="+fontsize;
bool ok = LUtils::writeFile(QString(getenv("XDG_CONFIG_HOME"))+"/lumina-desktop/themesettings.cfg", contents, true);
-
- return ok;
+ return ok;*/
}
//Change the current Cursor Theme
@@ -299,13 +301,13 @@ QStringList LTHEME::cursorInformation(QString name){
}
}
return out;
-}
+}
QStringList LTHEME::CustomEnvSettings(bool useronly){ //view all the key=value settings
QStringList newinfo;
if(!useronly){
QStringList sysfiles; sysfiles << L_ETCDIR+"/lumina_environment.conf" << LOS::LuminaShare()+"lumina_environment.conf";
- for(int i=0; i<sysfiles.length() && newinfo.isEmpty(); i++){
+ for(int i=0; i<sysfiles.length() && newinfo.isEmpty(); i++){
newinfo << LUtils::readFile(sysfiles[i]);
}
}
diff --git a/src-qt5/core/libLumina/LuminaThemes.h b/src-qt5/core/libLumina/LuminaThemes.h
index 39602f58..ca79e0bd 100644
--- a/src-qt5/core/libLumina/LuminaThemes.h
+++ b/src-qt5/core/libLumina/LuminaThemes.h
@@ -34,7 +34,7 @@ public:
//Save a new theme/color file
static bool saveLocalTheme(QString name, QStringList contents);
static bool saveLocalColors(QString name, QStringList contents);
-
+
//Return the currently selected Theme/Colors/Icons
static QStringList currentSettings(); //returns [theme path, colorspath, iconsname, font, fontsize]
static QString currentCursor(); //returns: current cursor theme name
@@ -45,16 +45,16 @@ public:
//Return the complete stylesheet for a given theme/colors
static QString assembleStyleSheet(QString themepath, QString colorpath, QString font, QString fontsize);
-
+
//Additional info for a cursor theme
static QStringList cursorInformation(QString name); //returns: [Name, Comment, Sample Image File]
-
+
//Environment settings
static QStringList CustomEnvSettings(bool useronly = false); //view all the key=value settings
static void LoadCustomEnvSettings(); //will push the custom settings into the environment (recommended before loading the initial QApplication)
static bool setCustomEnvSetting(QString var, QString val); //variable/value pair (use an empty val to clear it)
static QString readCustomEnvSetting(QString var);
-
+
};
// Qt Style override to allow custom themeing/colors
diff --git a/src-qt5/core/libLumina/NativeEmbedWidget.cpp b/src-qt5/core/libLumina/NativeEmbedWidget.cpp
index 876c701d..57b6edde 100644
--- a/src-qt5/core/libLumina/NativeEmbedWidget.cpp
+++ b/src-qt5/core/libLumina/NativeEmbedWidget.cpp
@@ -116,7 +116,8 @@ void NativeEmbedWidget::showWindow(){
}
QImage NativeEmbedWidget::windowImage(QRect geom){
- if(DISABLE_COMPOSITING){
+ //if(DISABLE_COMPOSITING){
+ if(!this->isVisible()){ return QImage(); } //nothing to grab yet
QList<QScreen*> screens = static_cast<QApplication*>( QApplication::instance() )->screens();
//for(int i=0; i<screens.length(); i++){
//if(screens[i]->contains(this)){
@@ -126,7 +127,7 @@ QImage NativeEmbedWidget::windowImage(QRect geom){
//}
//}
return QImage();
- }else{
+ /*}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);
@@ -144,7 +145,7 @@ QImage NativeEmbedWidget::windowImage(QRect geom){
xcb_free_pixmap(QX11Info::connection(), pix);
return img;
- }
+ }*/
}
void NativeEmbedWidget::setWinUnpaused(){
paused = false;
@@ -154,6 +155,7 @@ void NativeEmbedWidget::setWinUnpaused(){
}else if(this->isVisible()){
showWindow();
}
+ resyncWindow(); //make sure the window knows about the new location
}
// ============
// PUBLIC
@@ -203,6 +205,7 @@ bool NativeEmbedWidget::embedWindow(NativeWindow *window){
registerClientEvents(this->winId()); //child events get forwarded through the frame - watch this for changes too
//Also use a partial-composite here - make sure the window pixmap is available even when the window is obscured
xcb_composite_redirect_window(QX11Info::connection(), WIN->id(), XCB_COMPOSITE_REDIRECT_AUTOMATIC);
+ //xcb_composite_redirect_subwindows(QX11Info::connection(), WIN->id(), XCB_COMPOSITE_REDIRECT_MANUAL);
//Also alert us when the window visual changes
Damage dmgID = XDamageCreate(QX11Info::display(), WIN->id(), XDamageReportRawRectangles);
@@ -264,10 +267,10 @@ void NativeEmbedWidget::resume(){
void NativeEmbedWidget::resyncWindow(){
if(WIN==0){ return; }
- syncWinSize();
- if(DISABLE_COMPOSITING){
+ //syncWinSize();
+ //if(DISABLE_COMPOSITING){
// Specs say to send an artificial configure event to the window if the window was reparented into the frame
- QPoint loc = this->mapToGlobal( QPoint(0,0));
+ QPoint loc = this->mapToGlobal( QPoint(0,0) );
//Send an artificial configureNotify event to the window with the global position/size included
xcb_configure_notify_event_t *event = (xcb_configure_notify_event_t*) calloc(32,1); //always 32-byes long, even if we don't need all of it
event->x = loc.x();
@@ -283,12 +286,12 @@ void NativeEmbedWidget::resyncWindow(){
xcb_send_event(QX11Info::connection(), false, WIN->id(), XCB_EVENT_MASK_STRUCTURE_NOTIFY | XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY, (char *) event);
xcb_flush(QX11Info::connection());
free(event);
- }else{
+ /*}else{
//Window is floating invisibly - make sure it is in the right place
//Make sure the window size is syncronized and visual up to date
//syncWinSize();
QTimer::singleShot(10, this, SLOT(repaintWindow()) );
- }
+ }*/
}
@@ -328,11 +331,13 @@ void NativeEmbedWidget::hideEvent(QHideEvent *ev){
}
void NativeEmbedWidget::paintEvent(QPaintEvent *ev){
+ QPainter P(this);
+ P.setClipping(true);
+ P.setClipRect(0,0,this->width(), this->height());
+ P.fillRect(ev->rect(), Qt::transparent);
if(WIN==0){ return; }
QRect geom = ev->rect(); //atomic updates
//qDebug() << "Paint Rect:" << geom;
- //geom.adjust(-10,-10,10,10); //add an additional few pixels in each direction to be painted
- //geom = geom.intersected(QRect(0,0,this->width(), this->height())); //ensure intersection with actual window
QImage img;
if(!paused){ img = windowImage(geom); }
else if(!winImage.isNull()){
@@ -340,23 +345,8 @@ void NativeEmbedWidget::paintEvent(QPaintEvent *ev){
else{ img = winImage.scaled(geom.size()); } //this is a fast transformation - might be slightly distorted
}
//Need to paint the image from the window onto the widget as an overlay
+ P.drawImage( geom , img, QRect(QPoint(0,0), img.size()), Qt::NoOpaqueDetection); //1-to-1 mapping
- QPainter P(this);
- P.setClipping(true);
- P.setClipRect(0,0,this->width(), this->height());
- if(DISABLE_COMPOSITING){ P.fillRect(geom, Qt::black); } //get weird effects when partial-compositing is enabled if you layer transparent window frames above other windows
- //qDebug() << "Paint Embed Window:" << geom << winImage.size();
- //if(winImage.size() == this->size()){
- P.drawImage( geom , img, QRect(QPoint(0,0), img.size()), Qt::NoOpaqueDetection); //1-to-1 mapping
- //Note: Qt::NoOpaqueDetection Speeds up the paint by bypassing the checks to see if there are [semi-]transparent pixels
- // Since this is an embedded image - we fully expect there to be transparency all/most of the time.
- // }else{
- //P.drawImage( geom , winImage); //auto-scale it to fit (transforming a static image while paused?)
- // }
- //else{ QImage scaled = winImage.scaled(geom.size()); P.drawImage(geom, scaled); }
- //P.drawImage( geom , winImage, geom, Qt::NoOpaqueDetection); //1-to-1 mapping
- //Note: Qt::NoOpaqueDetection Speeds up the paint by bypassing the checks to see if there are [semi-]transparent pixels
- // Since this is an embedded image - we fully expect there to be transparency all/most of the time.
}
diff --git a/src-qt5/core/libLumina/NativeWindowSystem.cpp b/src-qt5/core/libLumina/NativeWindowSystem.cpp
index 0ee65929..e8e9655a 100644
--- a/src-qt5/core/libLumina/NativeWindowSystem.cpp
+++ b/src-qt5/core/libLumina/NativeWindowSystem.cpp
@@ -492,7 +492,27 @@ void NativeWindowSystem::UpdateWindowProperties(NativeWindow* win, QList< Native
}
if(props.contains(NativeWindow::WinTypes)){
QList< NativeWindow::Type> types;
- types << NativeWindow::T_NORMAL; //make this load appropriately later
+ 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 << NativeWindow::T_DESKTOP; }
+ else if(reply.atoms[i]==obj->EWMH._NET_WM_WINDOW_TYPE_DOCK){ types << NativeWindow::T_DOCK; }
+ else if(reply.atoms[i]==obj->EWMH._NET_WM_WINDOW_TYPE_TOOLBAR){ types << NativeWindow::T_TOOLBAR; }
+ else if(reply.atoms[i]==obj->EWMH._NET_WM_WINDOW_TYPE_MENU){ types << NativeWindow::T_MENU; }
+ else if(reply.atoms[i]==obj->EWMH._NET_WM_WINDOW_TYPE_UTILITY){ types << NativeWindow::T_UTILITY; }
+ else if(reply.atoms[i]==obj->EWMH._NET_WM_WINDOW_TYPE_SPLASH){ types << NativeWindow::T_SPLASH; }
+ else if(reply.atoms[i]==obj->EWMH._NET_WM_WINDOW_TYPE_DIALOG){ types << NativeWindow::T_DIALOG; }
+ else if(reply.atoms[i]==obj->EWMH._NET_WM_WINDOW_TYPE_DROPDOWN_MENU){ types << NativeWindow::T_DROPDOWN_MENU; }
+ else if(reply.atoms[i]==obj->EWMH._NET_WM_WINDOW_TYPE_POPUP_MENU){ types << NativeWindow::T_POPUP_MENU; }
+ else if(reply.atoms[i]==obj->EWMH._NET_WM_WINDOW_TYPE_TOOLTIP){ types << NativeWindow::T_TOOLTIP; }
+ else if(reply.atoms[i]==obj->EWMH._NET_WM_WINDOW_TYPE_NOTIFICATION){ types << NativeWindow::T_NOTIFICATION; }
+ else if(reply.atoms[i]==obj->EWMH._NET_WM_WINDOW_TYPE_COMBO){ types << NativeWindow::T_COMBO; }
+ else if(reply.atoms[i]==obj->EWMH._NET_WM_WINDOW_TYPE_DND){ types << NativeWindow::T_DND; }
+ else if(reply.atoms[i]==obj->EWMH._NET_WM_WINDOW_TYPE_NORMAL){ types << NativeWindow::T_NORMAL; }
+ }
+ }
+ if(types.isEmpty()){ types << NativeWindow::T_NORMAL; }
win->setProperty(NativeWindow::WinTypes, QVariant::fromValue< QList<NativeWindow::Type> >(types) );
}
}
diff --git a/src-qt5/core/libLumina/RootSubWindow.cpp b/src-qt5/core/libLumina/RootSubWindow.cpp
index 5fb8ece4..5040f2f9 100644
--- a/src-qt5/core/libLumina/RootSubWindow.cpp
+++ b/src-qt5/core/libLumina/RootSubWindow.cpp
@@ -242,6 +242,16 @@ void RootSubWindow::enableFrame(bool on){
WIN->setProperty(NativeWindow::FrameExtents, QVariant::fromValue< QList<int> >(extents) ); //save to structure now
}
+void RootSubWindow::enableFrame(QList<NativeWindow::Type> types){
+ static QList<NativeWindow::Type> noframe;
+ if(noframe.isEmpty()){ noframe << NativeWindow::T_DESKTOP << NativeWindow::T_DOCK << NativeWindow::T_TOOLBAR << NativeWindow::T_MENU << NativeWindow::T_SPLASH << NativeWindow::T_DROPDOWN_MENU << NativeWindow::T_POPUP_MENU << NativeWindow::T_TOOLTIP << NativeWindow::T_NOTIFICATION << NativeWindow::T_COMBO << NativeWindow::T_DND; }
+ for(int i=0; i<types.length(); i++){
+ if(noframe.contains(types[i])){ enableFrame(false); return; }
+ }
+ enableFrame(true);
+ //Now make buttons visible as appropriate for the type
+ //NativeWindow::T_UTILITY, NativeWindow::T_DIALOG, , NativeWindow::T_NORMAL
+}
void RootSubWindow::LoadProperties( QList< NativeWindow::Property> list){
QList<QVariant> vals;
//Always ensure that visibility changes are evaluated last
@@ -370,7 +380,7 @@ void RootSubWindow::propertiesChanged(QList<NativeWindow::Property> props, QList
switch(props[i]){
case NativeWindow::Visible:
if(!WinWidget->isPaused() && (this->isVisible()!=vals[i].toBool()) && activeState==Normal ){
- qDebug() << "Got Visibility Change:" << vals[i] << this->geometry() << WIN->geometry();
+ //qDebug() << "Got Visibility Change:" << vals[i] << this->geometry() << WIN->geometry();
if(vals[i].toBool()){ loadAnimation( DesktopSettings::instance()->value(DesktopSettings::Animation, "window/appear", "random").toString(), NativeWindow::Visible, vals[i]); }
else{ loadAnimation( DesktopSettings::instance()->value(DesktopSettings::Animation, "window/disappear", "random").toString(), NativeWindow::Visible, vals[i]); }
}
@@ -397,7 +407,7 @@ void RootSubWindow::propertiesChanged(QList<NativeWindow::Property> props, QList
i--;
}else if(!WinWidget->isPaused() && activeState==Normal){
if(WIN->property(NativeWindow::Size).toSize() != WinWidget->size()){
- qDebug() << "Got Direct Geometry Change:" << WIN->geometry();
+ //qDebug() << "Got Direct Geometry Change:" << WIN->geometry();
this->setGeometry( QRect(this->geometry().topLeft(), WIN->geometry().size()) );
WinWidget->resyncWindow();
}
@@ -434,8 +444,8 @@ void RootSubWindow::propertiesChanged(QList<NativeWindow::Property> props, QList
mainLayout->setContentsMargins( vals[i].value< QList<int> >().at(0),vals[i].value< QList<int> >().at(2) - titleLabel->height(),vals[i].value< QList<int> >().at(1),vals[i].value< QList<int> >().at(3));
break;*/
case NativeWindow::WinTypes:
- qDebug() << "Got Window Types:" << vals[i].value< QList<NativeWindow::Type> >();
- enableFrame(vals[i].value< QList<NativeWindow::Type> >().contains(NativeWindow::T_NORMAL) );
+ //qDebug() << "Got Window Types:" << vals[i].value< QList<NativeWindow::Type> >();
+ enableFrame(vals[i].value< QList<NativeWindow::Type> >() );
break;
default:
qDebug() << "Window Property Unused:" << props[i] << vals[i];
diff --git a/src-qt5/core/libLumina/RootSubWindow.h b/src-qt5/core/libLumina/RootSubWindow.h
index c1964724..598298e2 100644
--- a/src-qt5/core/libLumina/RootSubWindow.h
+++ b/src-qt5/core/libLumina/RootSubWindow.h
@@ -59,12 +59,14 @@ private:
void initWindowFrame();
void enableFrame(bool);
+ void enableFrame(QList<NativeWindow::Type> types);
void LoadProperties( QList< NativeWindow::Property> list);
static QStringList validAnimations(NativeWindow::Property);
public slots:
+ void ensureVisible(){ WIN->setProperty(NativeWindow::Visible, true); }
void giveMouseFocus(){ WinWidget->raiseWindow(); }
void removeMouseFocus(){ WinWidget->lowerWindow(); }
void giveKeyboardFocus(){ WIN->requestProperty(NativeWindow::Active, true, true); }
diff --git a/src-qt5/core/libLumina/RootWindow.cpp b/src-qt5/core/libLumina/RootWindow.cpp
index fdbc1eb8..705297be 100644
--- a/src-qt5/core/libLumina/RootWindow.cpp
+++ b/src-qt5/core/libLumina/RootWindow.cpp
@@ -239,7 +239,9 @@ void RootWindow::NewWindow(NativeWindow *win){
connect(subwin, SIGNAL(windowAnimFinished()), this, SLOT(checkMouseFocus()) );
WINDOWS << subwin;
}
+ //QApplication::processEvents();
CheckWindowPosition(win->id(), true); //first-time run
+ //QTimer::singleShot(300, subwin, SLOT(ensureVisible()));
win->setProperty(NativeWindow::Visible, true);
//win->requestProperty( NativeWindow::Active, true);
//win->requestProperties(QList<NativeWindow::Property>() << NativeWindow::Visible << NativeWindow::Active, QList<QVariant>() << true << true, true);
diff --git a/src-qt5/core/lumina-desktop/LSession.cpp b/src-qt5/core/lumina-desktop/LSession.cpp
index 2a1ec783..d1d6588e 100644
--- a/src-qt5/core/lumina-desktop/LSession.cpp
+++ b/src-qt5/core/lumina-desktop/LSession.cpp
@@ -120,7 +120,7 @@ void LSession::setupSession(){
//Setup the user's lumina settings directory as necessary
splash.showScreen("user");
if(DEBUG){ qDebug() << " - Init User Files:" << timer->elapsed();}
- checkUserFiles(); //adds these files to the watcher as well
+ //checkUserFiles(); //adds these files to the watcher as well
//Initialize the internal variables
DESKTOPS.clear();
@@ -387,11 +387,15 @@ void LSession::checkWindowGeoms(){
void LSession::checkUserFiles(){
//internal version conversion examples:
// [1.0.0 -> 1000000], [1.2.3 -> 1002003], [0.6.1 -> 6001]
- QString OVS = sessionsettings->value("DesktopVersion","0").toString(); //Old Version String
- bool changed = LDesktopUtils::checkUserFiles(OVS);
+ QSettings sset("lumina-desktop", "sessionsettings");
+ QString OVS = sset.value("DesktopVersion","0").toString(); //Old Version String
+ char *tmp;
+ int tmpN = 0;
+ QApplication A(tmpN, &tmp);
+ bool changed = LDesktopUtils::checkUserFiles(OVS, LDesktopUtils::LuminaDesktopVersion());
if(changed){
//Save the current version of the session to the settings file (for next time)
- sessionsettings->setValue("DesktopVersion", this->applicationVersion());
+ sset.setValue("DesktopVersion", LDesktopUtils::LuminaDesktopVersion());
}
}
diff --git a/src-qt5/core/lumina-desktop/LSession.h b/src-qt5/core/lumina-desktop/LSession.h
index 0d69df84..43cddac7 100644
--- a/src-qt5/core/lumina-desktop/LSession.h
+++ b/src-qt5/core/lumina-desktop/LSession.h
@@ -39,7 +39,7 @@
#define SYSTEM_TRAY_CANCEL_MESSAGE 2
/*class MenuProxyStyle : public QProxyStyle{
-public:
+public:
int pixelMetric(PixelMetric metric, const QStyleOption *option=0, const QWidget *widget=0) const{
if(metric==PM_SmallIconSize){ return 22; } //override QMenu icon size (make it larger)
else{ return QProxyStyle::pixelMetric(metric, option, widget); } //use the current style for everything else
@@ -51,6 +51,8 @@ class LSession : public LSingleApplication{
public:
LSession(int &argc, char **argv);
~LSession();
+
+ static void checkUserFiles();
//Functions to be called during startup
void setupSession();
@@ -63,7 +65,7 @@ public:
bool registerStartButton(QString ID);
void unregisterStartButton(QString ID);
- //Special functions for XCB event filter parsing only
+ //Special functions for XCB event filter parsing only
// (DO NOT USE MANUALLY)
void RootSizeChange();
void WindowPropertyEvent();
@@ -73,37 +75,37 @@ public:
void WindowConfigureEvent(WId);
void WindowDamageEvent(WId);
void WindowSelectionClearEvent(WId);
-
+
//System Access
//Return a pointer to the current session
static LSession* handle(){
return static_cast<LSession*>(LSession::instance());
}
-
+
static void LaunchApplication(QString cmd);
QFileInfoList DesktopFiles();
-
+
QRect screenGeom(int num);
-
+
AppMenu* applicationMenu();
void systemWindow();
SettingsMenu* settingsMenu();
LXCB *XCB; //class for XCB usage
-
+
QSettings* sessionSettings();
QSettings* DesktopPluginSettings();
-
+
//Keep track of which non-desktop window should be treated as active
WId activeWindow(); //This will return the last active window if a desktop element is currently active
-
+
//Temporarily change the session locale (nothing saved between sessions)
void switchLocale(QString localeCode);
-
+
//Play System Audio
void playAudioFile(QString filepath);
//Window Adjustment Routine (due to Fluxbox not respecting _NET_WM_STRUT)
void adjustWindowGeom(WId win, bool maximize = false);
-
+
private:
//WMProcess *WM;
QList<LDesktop*> DESKTOPS;
@@ -136,9 +138,9 @@ private:
QFileInfoList desktopFiles;
void CleanupSession();
-
+
int VersionStringToNumber(QString version);
-
+
public slots:
void StartLogout();
void StartShutdown(bool skipupdates = false);
@@ -161,7 +163,6 @@ private slots:
void removeTrayWindow(WId);
//Internal simplification functions
- void checkUserFiles();
void refreshWindowManager();
void updateDesktops();
void registerDesktopWindows();
@@ -189,7 +190,7 @@ signals:
void DesktopFilesChanged();
void MediaFilesChanged();
void WorkspaceChanged();
-
+
};
#endif
diff --git a/src-qt5/core/lumina-desktop/defaults/luminaDesktop-TrueOS.conf b/src-qt5/core/lumina-desktop/defaults/luminaDesktop-TrueOS.conf
index e453c0b8..e9520a3c 100644
--- a/src-qt5/core/lumina-desktop/defaults/luminaDesktop-TrueOS.conf
+++ b/src-qt5/core/lumina-desktop/defaults/luminaDesktop-TrueOS.conf
@@ -53,7 +53,7 @@ mime_default_application/x-tar_ifexists=lumina-archiver.desktop
#THEME SETTINGS
theme_themefile=DarkGlass #Name of the theme to use (disable for Lumina-Default)
-theme_colorfile=Black #Name of the color spec file to use for theming
+theme_colorfile=darker #Name of the color spec file to use for theming
theme_iconset=material-design-dark #Name of the icon theme to use
theme_font=Noto Sans #Name of the font family to use
theme_fontsize=10pt #Default size of the fonts to use on the desktop (can also use a percentage of the screen height (<number>%) )
diff --git a/src-qt5/core/lumina-desktop/defaults/luminaDesktop.conf b/src-qt5/core/lumina-desktop/defaults/luminaDesktop.conf
index 1327f148..40ece4f0 100644
--- a/src-qt5/core/lumina-desktop/defaults/luminaDesktop.conf
+++ b/src-qt5/core/lumina-desktop/defaults/luminaDesktop.conf
@@ -51,7 +51,7 @@ mime_default_application/x-shellscript=lumina-textedit.desktop
#THEME SETTINGS
theme_themefile=DarkGlass #Name of the theme to use (disable for Lumina-Default)
-theme_colorfile=Black #Name of the color spec file to use for theming
+theme_colorfile=darker #Name of the color spec file to use for theming
theme_iconset=material-design-dark #Name of the icon theme to use
theme_font=Arial #Name of the font family to use
theme_fontsize=10pt #Default size of the fonts to use on the desktop (can also use a percentage of the screen height (<number>%) )
diff --git a/src-qt5/core/lumina-desktop/main.cpp b/src-qt5/core/lumina-desktop/main.cpp
index b2bfa9be..c272f263 100644
--- a/src-qt5/core/lumina-desktop/main.cpp
+++ b/src-qt5/core/lumina-desktop/main.cpp
@@ -76,6 +76,7 @@ int main(int argc, char ** argv)
setenv("QT_QPA_PLATFORMTHEME", "lthemeengine", 1);
unsetenv("QT_AUTO_SCREEN_SCALE_FACTOR"); //causes pixel-specific scaling issues with the desktop - turn this on after-the-fact for other apps
//Startup the session
+ LSession::checkUserFiles(); //make sure to create any config files before creating the QApplication
LSession a(argc, argv);
if(!a.isPrimaryProcess()){ return 0; }
//Setup the log file
diff --git a/src-qt5/desktop-utils/lumina-archiver/i18n/l-archiver_ca.ts b/src-qt5/desktop-utils/lumina-archiver/i18n/l-archiver_ca.ts
index 98930879..9e347a2a 100644
--- a/src-qt5/desktop-utils/lumina-archiver/i18n/l-archiver_ca.ts
+++ b/src-qt5/desktop-utils/lumina-archiver/i18n/l-archiver_ca.ts
@@ -6,7 +6,7 @@
<message>
<location filename="../TarBackend.cpp" line="229"/>
<source>Could not read archive</source>
- <translation>No s&apos;ha pogut llegir l&apos;arxiu</translation>
+ <translation>No s'ha pogut llegir l'arxiu</translation>
</message>
<message>
<location filename="../TarBackend.cpp" line="231"/>
@@ -81,7 +81,7 @@
<message>
<location filename="../MainUI.ui" line="202"/>
<source>Add files to archive</source>
- <translation>Afegiu fitxers a l&apos;arxiu</translation>
+ <translation>Afegiu fitxers a l'arxiu</translation>
</message>
<message>
<location filename="../MainUI.ui" line="207"/>
@@ -91,7 +91,7 @@
<message>
<location filename="../MainUI.ui" line="210"/>
<source>Remove selection from archive</source>
- <translation>Elimina la selecció de l&apos;arxiu</translation>
+ <translation>Elimina la selecció de l'arxiu</translation>
</message>
<message>
<location filename="../MainUI.ui" line="215"/>
@@ -101,7 +101,7 @@
<message>
<location filename="../MainUI.ui" line="218"/>
<source>Extract archive into a directory</source>
- <translation>Extreu l&apos;arxiu en un directori</translation>
+ <translation>Extreu l'arxiu en un directori</translation>
</message>
<message>
<location filename="../MainUI.ui" line="223"/>
@@ -111,7 +111,7 @@
<message>
<location filename="../MainUI.ui" line="226"/>
<source>Add directory to archive</source>
- <translation>Afegeix un directori a l&apos;arxiu</translation>
+ <translation>Afegeix un directori a l'arxiu</translation>
</message>
<message>
<location filename="../MainUI.ui" line="231"/>
@@ -131,17 +131,17 @@
<message>
<location filename="../MainUI.ui" line="242"/>
<source>Copy an IMG to a USB device (may require admin permission)</source>
- <translation>Copia una IMG en un dispositiu USB (pot caldre permís d&apos;administrador)</translation>
+ <translation>Copia una IMG en un dispositiu USB (pot caldre permís d'administrador)</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="24"/>
<source>Archive Manager</source>
- <translation>Gestor d&apos;arxius</translation>
+ <translation>Gestor d'arxius</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="25"/>
<source>Admin Mode</source>
- <translation>Mode d&apos;administrador</translation>
+ <translation>Mode d'administrador</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="51"/>
@@ -179,7 +179,7 @@
<location filename="../MainUI.cpp" line="81"/>
<location filename="../MainUI.cpp" line="220"/>
<source>Opening Archive...</source>
- <translation>S&apos;obre l&apos;arxiu...</translation>
+ <translation>S'obre l'arxiu...</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="164"/>
@@ -301,7 +301,7 @@
<message>
<location filename="../MainUI.cpp" line="210"/>
<source>Could not overwrite file:</source>
- <translation>No s&apos;ha pogut sobreescriure el fitxer:</translation>
+ <translation>No s'ha pogut sobreescriure el fitxer:</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="218"/>
@@ -312,18 +312,18 @@
<location filename="../MainUI.cpp" line="226"/>
<location filename="../MainUI.cpp" line="233"/>
<source>Add to Archive</source>
- <translation>Afegeix a l&apos;arxiu</translation>
+ <translation>Afegeix a l'arxiu</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="228"/>
<location filename="../MainUI.cpp" line="235"/>
<source>Adding Items...</source>
- <translation>S&apos;afegeixen elements...</translation>
+ <translation>S'afegeixen elements...</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="246"/>
<source>Removing Items...</source>
- <translation>S&apos;eliminen elements...</translation>
+ <translation>S'eliminen elements...</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="251"/>
@@ -337,7 +337,7 @@
<location filename="../MainUI.cpp" line="278"/>
<location filename="../MainUI.cpp" line="290"/>
<source>Extracting...</source>
- <translation>S&apos;extreu...</translation>
+ <translation>S'extreu...</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="310"/>
@@ -350,67 +350,67 @@
<message>
<location filename="../../../core/libLumina/LuminaXDG.cpp" line="603"/>
<source>Multimedia</source>
- <translation type="unfinished"></translation>
+ <translation>Multimèdia</translation>
</message>
<message>
<location filename="../../../core/libLumina/LuminaXDG.cpp" line="604"/>
<source>Development</source>
- <translation type="unfinished"></translation>
+ <translation>Desenvolupament</translation>
</message>
<message>
<location filename="../../../core/libLumina/LuminaXDG.cpp" line="605"/>
<source>Education</source>
- <translation type="unfinished"></translation>
+ <translation>Educació</translation>
</message>
<message>
<location filename="../../../core/libLumina/LuminaXDG.cpp" line="606"/>
<source>Games</source>
- <translation type="unfinished"></translation>
+ <translation>Jocs</translation>
</message>
<message>
<location filename="../../../core/libLumina/LuminaXDG.cpp" line="607"/>
<source>Graphics</source>
- <translation type="unfinished"></translation>
+ <translation>Gràfics</translation>
</message>
<message>
<location filename="../../../core/libLumina/LuminaXDG.cpp" line="608"/>
<source>Network</source>
- <translation type="unfinished"></translation>
+ <translation>Xarxa</translation>
</message>
<message>
<location filename="../../../core/libLumina/LuminaXDG.cpp" line="609"/>
<source>Office</source>
- <translation type="unfinished"></translation>
+ <translation>Oficina</translation>
</message>
<message>
<location filename="../../../core/libLumina/LuminaXDG.cpp" line="610"/>
<source>Science</source>
- <translation type="unfinished"></translation>
+ <translation>Ciència</translation>
</message>
<message>
<location filename="../../../core/libLumina/LuminaXDG.cpp" line="611"/>
<source>Settings</source>
- <translation type="unfinished"></translation>
+ <translation>Paràmetres</translation>
</message>
<message>
<location filename="../../../core/libLumina/LuminaXDG.cpp" line="612"/>
<source>System</source>
- <translation type="unfinished"></translation>
+ <translation>Sistema</translation>
</message>
<message>
<location filename="../../../core/libLumina/LuminaXDG.cpp" line="613"/>
<source>Utility</source>
- <translation type="unfinished"></translation>
+ <translation>Utilitat</translation>
</message>
<message>
<location filename="../../../core/libLumina/LuminaXDG.cpp" line="614"/>
<source>Wine</source>
- <translation type="unfinished"></translation>
+ <translation>Wine</translation>
</message>
<message>
<location filename="../../../core/libLumina/LuminaXDG.cpp" line="615"/>
<source>Unsorted</source>
- <translation type="unfinished"></translation>
+ <translation>Sense classificar</translation>
</message>
</context>
<context>
@@ -443,7 +443,7 @@
<message>
<location filename="../imgDialog.ui" line="108"/>
<source>Wipe all extra space on device (conv = sync)</source>
- <translation>Neteja tot l&apos;espai extra al dispositiu (conv = sync)</translation>
+ <translation>Neteja tot l'espai extra al dispositiu (conv = sync)</translation>
</message>
<message>
<location filename="../imgDialog.ui" line="132"/>
@@ -473,7 +473,7 @@
<message>
<location filename="../imgDialog.cpp" line="22"/>
<source>Admin Mode</source>
- <translation>Mode d&apos;administrador</translation>
+ <translation>Mode d'administrador</translation>
</message>
<message>
<location filename="../imgDialog.cpp" line="36"/>
@@ -508,12 +508,12 @@
<message>
<location filename="../imgDialog.cpp" line="170"/>
<source>Administrator Permissions Needed</source>
- <translation>Calen permisos d&apos;administrador</translation>
+ <translation>Calen permisos d'administrador</translation>
</message>
<message>
<location filename="../imgDialog.cpp" line="170"/>
<source>This operation requires administrator priviledges.</source>
- <translation>Aquesta operació requereix privilegis d&apos;administrador.</translation>
+ <translation>Aquesta operació requereix privilegis d'administrador.</translation>
</message>
<message>
<location filename="../imgDialog.cpp" line="170"/>
@@ -528,7 +528,7 @@
<message>
<location filename="../imgDialog.cpp" line="175"/>
<source>The process could not be completed:</source>
- <translation>El procés no s&apos;ha pogut completar:</translation>
+ <translation>El procés no s'ha pogut completar:</translation>
</message>
<message>
<location filename="../imgDialog.cpp" line="178"/>
@@ -538,7 +538,7 @@
<message>
<location filename="../imgDialog.cpp" line="178"/>
<source>The image was successfully burned to the USB device</source>
- <translation>La imatge s&apos;ha gravat correctament al dispositiu USB.</translation>
+ <translation>La imatge s'ha gravat correctament al dispositiu USB.</translation>
</message>
</context>
</TS>
diff --git a/src-qt5/desktop-utils/lumina-archiver/i18n/l-archiver_da.ts b/src-qt5/desktop-utils/lumina-archiver/i18n/l-archiver_da.ts
index de00be03..ad4de0bd 100644
--- a/src-qt5/desktop-utils/lumina-archiver/i18n/l-archiver_da.ts
+++ b/src-qt5/desktop-utils/lumina-archiver/i18n/l-archiver_da.ts
@@ -350,67 +350,67 @@
<message>
<location filename="../../../core/libLumina/LuminaXDG.cpp" line="603"/>
<source>Multimedia</source>
- <translation type="unfinished"></translation>
+ <translation>Multimedie</translation>
</message>
<message>
<location filename="../../../core/libLumina/LuminaXDG.cpp" line="604"/>
<source>Development</source>
- <translation type="unfinished"></translation>
+ <translation>Udvikling</translation>
</message>
<message>
<location filename="../../../core/libLumina/LuminaXDG.cpp" line="605"/>
<source>Education</source>
- <translation type="unfinished"></translation>
+ <translation>Uddannelse</translation>
</message>
<message>
<location filename="../../../core/libLumina/LuminaXDG.cpp" line="606"/>
<source>Games</source>
- <translation type="unfinished"></translation>
+ <translation>Spil</translation>
</message>
<message>
<location filename="../../../core/libLumina/LuminaXDG.cpp" line="607"/>
<source>Graphics</source>
- <translation type="unfinished"></translation>
+ <translation>Grafik</translation>
</message>
<message>
<location filename="../../../core/libLumina/LuminaXDG.cpp" line="608"/>
<source>Network</source>
- <translation type="unfinished"></translation>
+ <translation>Netværk</translation>
</message>
<message>
<location filename="../../../core/libLumina/LuminaXDG.cpp" line="609"/>
<source>Office</source>
- <translation type="unfinished"></translation>
+ <translation>Kontor</translation>
</message>
<message>
<location filename="../../../core/libLumina/LuminaXDG.cpp" line="610"/>
<source>Science</source>
- <translation type="unfinished"></translation>
+ <translation>Videnskab</translation>
</message>
<message>
<location filename="../../../core/libLumina/LuminaXDG.cpp" line="611"/>
<source>Settings</source>
- <translation type="unfinished"></translation>
+ <translation>Indstillinger</translation>
</message>
<message>
<location filename="../../../core/libLumina/LuminaXDG.cpp" line="612"/>
<source>System</source>
- <translation type="unfinished"></translation>
+ <translation>System</translation>
</message>
<message>
<location filename="../../../core/libLumina/LuminaXDG.cpp" line="613"/>
<source>Utility</source>
- <translation type="unfinished"></translation>
+ <translation>Hjælpeværktøj</translation>
</message>
<message>
<location filename="../../../core/libLumina/LuminaXDG.cpp" line="614"/>
<source>Wine</source>
- <translation type="unfinished"></translation>
+ <translation>Wine</translation>
</message>
<message>
<location filename="../../../core/libLumina/LuminaXDG.cpp" line="615"/>
<source>Unsorted</source>
- <translation type="unfinished"></translation>
+ <translation>Usorteret</translation>
</message>
</context>
<context>
diff --git a/src-qt5/desktop-utils/lumina-archiver/i18n/l-archiver_fi.ts b/src-qt5/desktop-utils/lumina-archiver/i18n/l-archiver_fi.ts
index 5b1d98dc..4525f584 100644
--- a/src-qt5/desktop-utils/lumina-archiver/i18n/l-archiver_fi.ts
+++ b/src-qt5/desktop-utils/lumina-archiver/i18n/l-archiver_fi.ts
@@ -6,22 +6,22 @@
<message>
<location filename="../TarBackend.cpp" line="229"/>
<source>Could not read archive</source>
- <translation type="unfinished"></translation>
+ <translation>Arkistoa ei voitu lukea</translation>
</message>
<message>
<location filename="../TarBackend.cpp" line="231"/>
<source>Archive Loaded</source>
- <translation type="unfinished"></translation>
+ <translation>Arkisto ladattu</translation>
</message>
<message>
<location filename="../TarBackend.cpp" line="264"/>
<source>Extraction Finished</source>
- <translation type="unfinished"></translation>
+ <translation>Purku valmis</translation>
</message>
<message>
<location filename="../TarBackend.cpp" line="266"/>
<source>Modification Finished</source>
- <translation type="unfinished"></translation>
+ <translation>Muutos valmis</translation>
</message>
</context>
<context>
@@ -29,307 +29,307 @@
<message>
<location filename="../MainUI.ui" line="35"/>
<source>Archive:</source>
- <translation type="unfinished"></translation>
+ <translation>Arkisto:</translation>
</message>
<message>
<location filename="../MainUI.ui" line="125"/>
<location filename="../MainUI.cpp" line="65"/>
<location filename="../MainUI.cpp" line="296"/>
<source>File</source>
- <translation type="unfinished"></translation>
+ <translation>Tiedosto</translation>
</message>
<message>
<location filename="../MainUI.ui" line="134"/>
<source>Edit</source>
- <translation type="unfinished"></translation>
+ <translation>Muokkaa</translation>
</message>
<message>
<location filename="../MainUI.ui" line="145"/>
<source>Burn to Disk</source>
- <translation type="unfinished"></translation>
+ <translation>Polta levylle</translation>
</message>
<message>
<location filename="../MainUI.ui" line="178"/>
<source>&amp;Open Archive</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;Avaa arkisto</translation>
</message>
<message>
<location filename="../MainUI.ui" line="181"/>
<source>Open archive</source>
- <translation type="unfinished"></translation>
+ <translation>Avaa arkisto</translation>
</message>
<message>
<location filename="../MainUI.ui" line="186"/>
<source>&amp;New Archive</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;Uusi arkisto</translation>
</message>
<message>
<location filename="../MainUI.ui" line="189"/>
<source>New archive</source>
- <translation type="unfinished"></translation>
+ <translation>Uusi arkisto</translation>
</message>
<message>
<location filename="../MainUI.ui" line="194"/>
<source>&amp;Quit</source>
- <translation type="unfinished"></translation>
+ <translation>&amp;Lopeta</translation>
</message>
<message>
<location filename="../MainUI.ui" line="199"/>
<source>Add File(s)</source>
- <translation type="unfinished"></translation>
+ <translation>Lisää tiedostoja</translation>
</message>
<message>
<location filename="../MainUI.ui" line="202"/>
<source>Add files to archive</source>
- <translation type="unfinished"></translation>
+ <translation>Lisää arkistoon tiedostoja</translation>
</message>
<message>
<location filename="../MainUI.ui" line="207"/>
<source>Remove File(s)</source>
- <translation type="unfinished"></translation>
+ <translation>Poista tiedostoja</translation>
</message>
<message>
<location filename="../MainUI.ui" line="210"/>
<source>Remove selection from archive</source>
- <translation type="unfinished"></translation>
+ <translation>Poista arkistosta tiedostoja</translation>
</message>
<message>
<location filename="../MainUI.ui" line="215"/>
<source>Extract All</source>
- <translation type="unfinished"></translation>
+ <translation>Pura kaikki</translation>
</message>
<message>
<location filename="../MainUI.ui" line="218"/>
<source>Extract archive into a directory</source>
- <translation type="unfinished"></translation>
+ <translation>Pura arkisto kansioon</translation>
</message>
<message>
<location filename="../MainUI.ui" line="223"/>
<source>Add Directory</source>
- <translation type="unfinished"></translation>
+ <translation>Lisää kansio</translation>
</message>
<message>
<location filename="../MainUI.ui" line="226"/>
<source>Add directory to archive</source>
- <translation type="unfinished"></translation>
+ <translation>Lisää arkistoon kansio</translation>
</message>
<message>
<location filename="../MainUI.ui" line="231"/>
<source>Extract Selection</source>
- <translation type="unfinished"></translation>
+ <translation>Pura valinta</translation>
</message>
<message>
<location filename="../MainUI.ui" line="234"/>
<source>Extract Selected Items</source>
- <translation type="unfinished"></translation>
+ <translation>Pura valitut kohteet</translation>
</message>
<message>
<location filename="../MainUI.ui" line="239"/>
<source>USB Image</source>
- <translation type="unfinished"></translation>
+ <translation>USB-levykuva</translation>
</message>
<message>
<location filename="../MainUI.ui" line="242"/>
<source>Copy an IMG to a USB device (may require admin permission)</source>
- <translation type="unfinished"></translation>
+ <translation>Kopioi IMG-levykuva USB-laitteeseen (voi vaatia ylläpitäjän oikeuksia)</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="24"/>
<source>Archive Manager</source>
- <translation type="unfinished"></translation>
+ <translation>Arkistonhallinta</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="25"/>
<source>Admin Mode</source>
- <translation type="unfinished"></translation>
+ <translation>Ylläpitäjän tila</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="51"/>
<source>CTRL+N</source>
- <translation type="unfinished"></translation>
+ <translation>Ctrl+N</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="52"/>
<source>CTRL+O</source>
- <translation type="unfinished"></translation>
+ <translation>Ctrl+O</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="53"/>
<source>CTRL+Q</source>
- <translation type="unfinished"></translation>
+ <translation>Ctrl+Q</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="54"/>
<source>CTRL+E</source>
- <translation type="unfinished"></translation>
+ <translation>Ctrl+E</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="65"/>
<location filename="../MainUI.cpp" line="296"/>
<source>MimeType</source>
- <translation type="unfinished"></translation>
+ <translation>MIME-tyyppi</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="65"/>
<location filename="../MainUI.cpp" line="296"/>
<source>Size</source>
- <translation type="unfinished"></translation>
+ <translation>Koko</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="81"/>
<location filename="../MainUI.cpp" line="220"/>
<source>Opening Archive...</source>
- <translation type="unfinished"></translation>
+ <translation>Avataan arkistoa...</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="164"/>
<source>All Types %1</source>
- <translation type="unfinished"></translation>
+ <translation>Kaikki tyypit %1</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="165"/>
<location filename="../MainUI.cpp" line="183"/>
<source>Uncompressed Archive (*.tar)</source>
- <translation type="unfinished"></translation>
+ <translation>Pakkaamaton arkisto (*.tar)</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="166"/>
<location filename="../MainUI.cpp" line="184"/>
<source>GZip Compressed Archive (*.tar.gz *.tgz)</source>
- <translation type="unfinished"></translation>
+ <translation>GZip-pakattu arkisto (*.tar.gz *.tgz)</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="167"/>
<location filename="../MainUI.cpp" line="185"/>
<source>BZip Compressed Archive (*.tar.bz *.tbz)</source>
- <translation type="unfinished"></translation>
+ <translation>BZip-pakattu arkisto (*.tar.bz *.tbz)</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="168"/>
<location filename="../MainUI.cpp" line="186"/>
<source>BZip2 Compressed Archive (*.tar.bz2 *.tbz2)</source>
- <translation type="unfinished"></translation>
+ <translation>BZip2-pakattu arkisto (*.tar.bz2 *.tbz2)</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="169"/>
<location filename="../MainUI.cpp" line="188"/>
<source>LMZA Compressed Archive (*.tar.lzma *.tlz)</source>
- <translation type="unfinished"></translation>
+ <translation>LMZA-pakattu arkisto (*.tar.lzma *.tlz)</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="170"/>
<location filename="../MainUI.cpp" line="187"/>
<source>XZ Compressed Archive (*.tar.xz *.txz)</source>
- <translation type="unfinished"></translation>
+ <translation>XZ-pakattu arkisto (*.tar.xz *.txz)</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="171"/>
<location filename="../MainUI.cpp" line="189"/>
<source>CPIO Archive (*.cpio)</source>
- <translation type="unfinished"></translation>
+ <translation>CPIO-arkisto (*.cpio)</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="172"/>
<location filename="../MainUI.cpp" line="190"/>
<source>PAX Archive (*.pax)</source>
- <translation type="unfinished"></translation>
+ <translation>PAX-arkisto (*.pax)</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="173"/>
<location filename="../MainUI.cpp" line="191"/>
<source>AR Archive (*.ar)</source>
- <translation type="unfinished"></translation>
+ <translation>AR-arkisto (*.ar)</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="174"/>
<location filename="../MainUI.cpp" line="192"/>
<source>SHAR Archive (*.shar)</source>
- <translation type="unfinished"></translation>
+ <translation>SHAR-arkisto (*.shar)</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="175"/>
<location filename="../MainUI.cpp" line="193"/>
<source>Zip Archive (*.zip)</source>
- <translation type="unfinished"></translation>
+ <translation>Zip-arkisto (*.zip)</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="176"/>
<location filename="../MainUI.cpp" line="194"/>
<source>7-Zip Archive (*.7z)</source>
- <translation type="unfinished"></translation>
+ <translation>7-Zip-arkisto (*.7z)</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="182"/>
<source>All Known Types %1</source>
- <translation type="unfinished"></translation>
+ <translation>Kaikki tunnetut tyypit %1</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="195"/>
<source>READ-ONLY: ISO image (*.iso *.img)</source>
- <translation type="unfinished"></translation>
+ <translation>VAIN LUKU: ISO-levykuva (*.iso *.img)</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="196"/>
<source>READ-ONLY: XAR archive (*.xar)</source>
- <translation type="unfinished"></translation>
+ <translation>VAIN LUKU: XAR-arkisto (*.xar)</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="197"/>
<source>READ-ONLY: Java archive (*.jar)</source>
- <translation type="unfinished"></translation>
+ <translation>VAIN LUKU: Java-arkisto (*.jar)</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="198"/>
<source>READ-ONLY: RedHat Package (*.rpm)</source>
- <translation type="unfinished"></translation>
+ <translation>VAIN LUKU: RedHat-paketti (*.rpm)</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="199"/>
<source>Show All Files (*)</source>
- <translation type="unfinished"></translation>
+ <translation>Näytä kaikki tiedostot (*)</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="207"/>
<source>Create Archive</source>
- <translation type="unfinished"></translation>
+ <translation>Luo arkisto</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="210"/>
<source>Error</source>
- <translation type="unfinished"></translation>
+ <translation>Virhe</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="210"/>
<source>Could not overwrite file:</source>
- <translation type="unfinished"></translation>
+ <translation>Ei voitu korvata tiedostoa:</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="218"/>
<source>Open Archive</source>
- <translation type="unfinished"></translation>
+ <translation>Avaa arkisto</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="226"/>
<location filename="../MainUI.cpp" line="233"/>
<source>Add to Archive</source>
- <translation type="unfinished"></translation>
+ <translation>Lisää arkistoon</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="228"/>
<location filename="../MainUI.cpp" line="235"/>
<source>Adding Items...</source>
- <translation type="unfinished"></translation>
+ <translation>Lisätään kohteita...</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="246"/>
<source>Removing Items...</source>
- <translation type="unfinished"></translation>
+ <translation>Poistetaan kohteita...</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="251"/>
<location filename="../MainUI.cpp" line="276"/>
<source>Extract Into Directory</source>
- <translation type="unfinished"></translation>
+ <translation>Pura kansioon</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="253"/>
@@ -337,12 +337,12 @@
<location filename="../MainUI.cpp" line="278"/>
<location filename="../MainUI.cpp" line="290"/>
<source>Extracting...</source>
- <translation type="unfinished"></translation>
+ <translation>Puretaan...</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="310"/>
<source>Link To: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Linkki kohteeseen: %1</translation>
</message>
</context>
<context>
@@ -418,127 +418,127 @@
<message>
<location filename="../imgDialog.ui" line="14"/>
<source>Burn IMG to device</source>
- <translation type="unfinished"></translation>
+ <translation>Polta IMG-levykuva laitteelle</translation>
</message>
<message>
<location filename="../imgDialog.ui" line="29"/>
<source>IMG File</source>
- <translation type="unfinished"></translation>
+ <translation>IMG-tiedosto</translation>
</message>
<message>
<location filename="../imgDialog.ui" line="54"/>
<source>Block Size</source>
- <translation type="unfinished"></translation>
+ <translation>Lohkokoko</translation>
</message>
<message>
<location filename="../imgDialog.ui" line="84"/>
<source>USB Device</source>
- <translation type="unfinished"></translation>
+ <translation>USB-laite</translation>
</message>
<message>
<location filename="../imgDialog.ui" line="96"/>
<source>Refresh Device List</source>
- <translation type="unfinished"></translation>
+ <translation>Virkistä laiteluettelo</translation>
</message>
<message>
<location filename="../imgDialog.ui" line="108"/>
<source>Wipe all extra space on device (conv = sync)</source>
- <translation type="unfinished"></translation>
+ <translation>Pyyhi laitteen kaikki ylimääräinen tila (conv=sync)</translation>
</message>
<message>
<location filename="../imgDialog.ui" line="132"/>
<source>Burning to USB:</source>
- <translation type="unfinished"></translation>
+ <translation>Poltetaan USB:lle:</translation>
</message>
<message>
<location filename="../imgDialog.ui" line="166"/>
<source>Time Elapsed:</source>
- <translation type="unfinished"></translation>
+ <translation>Aikaa kulunut:</translation>
</message>
<message>
<location filename="../imgDialog.ui" line="222"/>
<source>Cancel</source>
- <translation type="unfinished"></translation>
+ <translation>Peru</translation>
</message>
<message>
<location filename="../imgDialog.ui" line="229"/>
<source>Start</source>
- <translation type="unfinished"></translation>
+ <translation>Käynnistä</translation>
</message>
<message>
<location filename="../imgDialog.cpp" line="21"/>
<source>Burn IMG to Device</source>
- <translation type="unfinished"></translation>
+ <translation>Polta IMG-levykuva laitteelle</translation>
</message>
<message>
<location filename="../imgDialog.cpp" line="22"/>
<source>Admin Mode</source>
- <translation type="unfinished"></translation>
+ <translation>Ylläpitäjän tila</translation>
</message>
<message>
<location filename="../imgDialog.cpp" line="36"/>
<source>Kilobyte(s)</source>
- <translation type="unfinished"></translation>
+ <translation>kilotavu(a)</translation>
</message>
<message>
<location filename="../imgDialog.cpp" line="37"/>
<source>Megabyte(s)</source>
- <translation type="unfinished"></translation>
+ <translation>megatavu(a)</translation>
</message>
<message>
<location filename="../imgDialog.cpp" line="38"/>
<source>Gigabyte(s)</source>
- <translation type="unfinished"></translation>
+ <translation>gigatavu(a)</translation>
</message>
<message>
<location filename="../imgDialog.cpp" line="110"/>
<source>Cancel Image Burn?</source>
- <translation type="unfinished"></translation>
+ <translation>Perutaanko levykuvan poltto?</translation>
</message>
<message>
<location filename="../imgDialog.cpp" line="110"/>
<source>Do you wish to stop the current IMG burn process?</source>
- <translation type="unfinished"></translation>
+ <translation>Haluatko pysäyttää käynnissä olevan IMG-levykuvan polton?</translation>
</message>
<message>
<location filename="../imgDialog.cpp" line="110"/>
<source>Warning: This will leave the USB device in an inconsistent state</source>
- <translation type="unfinished"></translation>
+ <translation>Varoitus: Tämä jättää USB-laitteesi epävakaaseen tilaan</translation>
</message>
<message>
<location filename="../imgDialog.cpp" line="170"/>
<source>Administrator Permissions Needed</source>
- <translation type="unfinished"></translation>
+ <translation>Ylläpitäjäoikeudet vaaditaan</translation>
</message>
<message>
<location filename="../imgDialog.cpp" line="170"/>
<source>This operation requires administrator priviledges.</source>
- <translation type="unfinished"></translation>
+ <translation>Tämä toiminto vaatii ylläpitäjän oikeuksia.</translation>
</message>
<message>
<location filename="../imgDialog.cpp" line="170"/>
<source>Would you like to enable these priviledges?</source>
- <translation type="unfinished"></translation>
+ <translation>Haluatko ottaa nämä oikeudet käyttöön?</translation>
</message>
<message>
<location filename="../imgDialog.cpp" line="175"/>
<source>ERROR</source>
- <translation type="unfinished"></translation>
+ <translation>VIRHE</translation>
</message>
<message>
<location filename="../imgDialog.cpp" line="175"/>
<source>The process could not be completed:</source>
- <translation type="unfinished"></translation>
+ <translation>Toimenpidettä ei saatu loppuun:</translation>
</message>
<message>
<location filename="../imgDialog.cpp" line="178"/>
<source>SUCCESS</source>
- <translation type="unfinished"></translation>
+ <translation>ONNISTUI</translation>
</message>
<message>
<location filename="../imgDialog.cpp" line="178"/>
<source>The image was successfully burned to the USB device</source>
- <translation type="unfinished"></translation>
+ <translation>Levykuva poltettiin ongelmitta USB-laitteelle</translation>
</message>
</context>
</TS>
diff --git a/src-qt5/desktop-utils/lumina-archiver/i18n/l-archiver_lt.ts b/src-qt5/desktop-utils/lumina-archiver/i18n/l-archiver_lt.ts
index 1c53233d..121263bb 100644
--- a/src-qt5/desktop-utils/lumina-archiver/i18n/l-archiver_lt.ts
+++ b/src-qt5/desktop-utils/lumina-archiver/i18n/l-archiver_lt.ts
@@ -513,12 +513,12 @@
<message>
<location filename="../imgDialog.cpp" line="170"/>
<source>This operation requires administrator priviledges.</source>
- <translation type="unfinished"></translation>
+ <translation>Ši operacija reikalauja administratoriaus teisių.</translation>
</message>
<message>
<location filename="../imgDialog.cpp" line="170"/>
<source>Would you like to enable these priviledges?</source>
- <translation type="unfinished"></translation>
+ <translation>Ar norėtumėte leisti šias teises?</translation>
</message>
<message>
<location filename="../imgDialog.cpp" line="175"/>
diff --git a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_fi.ts b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_fi.ts
index 0116a041..0d4a273d 100644
--- a/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_fi.ts
+++ b/src-qt5/desktop-utils/lumina-calculator/i18n/l-calc_fi.ts
@@ -6,67 +6,67 @@
<message>
<location filename="../../../core/libLumina/LuminaXDG.cpp" line="603"/>
<source>Multimedia</source>
- <translation type="unfinished"></translation>
+ <translation>Multimedia</translation>
</message>
<message>
<location filename="../../../core/libLumina/LuminaXDG.cpp" line="604"/>
<source>Development</source>
- <translation type="unfinished"></translation>
+ <translation>Kehitys</translation>
</message>
<message>
<location filename="../../../core/libLumina/LuminaXDG.cpp" line="605"/>
<source>Education</source>
- <translation type="unfinished"></translation>
+ <translation>Kasvatus</translation>
</message>
<message>
<location filename="../../../core/libLumina/LuminaXDG.cpp" line="606"/>
<source>Games</source>
- <translation type="unfinished"></translation>
+ <translation>Pelit</translation>
</message>
<message>
<location filename="../../../core/libLumina/LuminaXDG.cpp" line="607"/>
<source>Graphics</source>
- <translation type="unfinished"></translation>
+ <translation>Grafiikka</translation>
</message>
<message>
<location filename="../../../core/libLumina/LuminaXDG.cpp" line="608"/>
<source>Network</source>
- <translation type="unfinished"></translation>
+ <translation>Verkko</translation>
</message>
<message>
<location filename="../../../core/libLumina/LuminaXDG.cpp" line="609"/>
<source>Office</source>
- <translation type="unfinished"></translation>
+ <translation>Toimisto</translation>
</message>
<message>
<location filename="../../../core/libLumina/LuminaXDG.cpp" line="610"/>
<source>Science</source>
- <translation type="unfinished"></translation>
+ <translation>Tiede</translation>
</message>
<message>
<location filename="../../../core/libLumina/LuminaXDG.cpp" line="611"/>
<source>Settings</source>
- <translation type="unfinished"></translation>
+ <translation>Asetukset</translation>
</message>
<message>
<location filename="../../../core/libLumina/LuminaXDG.cpp" line="612"/>
<source>System</source>
- <translation type="unfinished"></translation>
+ <translation>Järjestelmä</translation>
</message>
<message>
<location filename="../../../core/libLumina/LuminaXDG.cpp" line="613"/>
<source>Utility</source>
- <translation type="unfinished"></translation>
+ <translation>Työkalut</translation>
</message>
<message>
<location filename="../../../core/libLumina/LuminaXDG.cpp" line="614"/>
<source>Wine</source>
- <translation type="unfinished"></translation>
+ <translation>Wine</translation>
</message>
<message>
<location filename="../../../core/libLumina/LuminaXDG.cpp" line="615"/>
<source>Unsorted</source>
- <translation type="unfinished"></translation>
+ <translation>Lajittelematta</translation>
</message>
</context>
<context>
@@ -75,102 +75,102 @@
<location filename="../mainUI.ui" line="14"/>
<location filename="../mainUI.cpp" line="53"/>
<source>Calculator</source>
- <translation type="unfinished"></translation>
+ <translation>Laskin</translation>
</message>
<message>
<location filename="../mainUI.ui" line="657"/>
<source>Advanced Operations</source>
- <translation type="unfinished"></translation>
+ <translation>Lisätoiminnot</translation>
</message>
<message>
<location filename="../mainUI.cpp" line="83"/>
<source>Percentage %1</source>
- <translation type="unfinished"></translation>
+ <translation>Osuus %1</translation>
</message>
<message>
<location filename="../mainUI.cpp" line="85"/>
<source>Power %1</source>
- <translation type="unfinished"></translation>
+ <translation>Potenssi %1</translation>
</message>
<message>
<location filename="../mainUI.cpp" line="87"/>
<source>Base-10 Exponential %1</source>
- <translation type="unfinished"></translation>
+ <translation>10-kantainen eksponentti %1</translation>
</message>
<message>
<location filename="../mainUI.cpp" line="89"/>
<source>Exponential %1</source>
- <translation type="unfinished"></translation>
+ <translation>Eksponentti %1</translation>
</message>
<message>
<location filename="../mainUI.cpp" line="91"/>
<source>Constant Pi %1</source>
- <translation type="unfinished"></translation>
+ <translation>Vakio pii %1</translation>
</message>
<message>
<location filename="../mainUI.cpp" line="94"/>
<source>Square Root %1</source>
- <translation type="unfinished"></translation>
+ <translation>Neliöjuuri %1</translation>
</message>
<message>
<location filename="../mainUI.cpp" line="96"/>
<source>Logarithm %1</source>
- <translation type="unfinished"></translation>
+ <translation>Logaritmi %1</translation>
</message>
<message>
<location filename="../mainUI.cpp" line="98"/>
<source>Natural Log %1</source>
- <translation type="unfinished"></translation>
+ <translation>Luonnollinen logaritmi %1</translation>
</message>
<message>
<location filename="../mainUI.cpp" line="101"/>
<source>Sine %1</source>
- <translation type="unfinished"></translation>
+ <translation>Sini %1</translation>
</message>
<message>
<location filename="../mainUI.cpp" line="103"/>
<source>Cosine %1</source>
- <translation type="unfinished"></translation>
+ <translation>Kosini %1</translation>
</message>
<message>
<location filename="../mainUI.cpp" line="105"/>
<source>Tangent %1</source>
- <translation type="unfinished"></translation>
+ <translation>Tangentti %1</translation>
</message>
<message>
<location filename="../mainUI.cpp" line="108"/>
<source>Arc Sine %1</source>
- <translation type="unfinished"></translation>
+ <translation>Arkussini %1</translation>
</message>
<message>
<location filename="../mainUI.cpp" line="110"/>
<source>Arc Cosine %1</source>
- <translation type="unfinished"></translation>
+ <translation>Arkuskosini %1</translation>
</message>
<message>
<location filename="../mainUI.cpp" line="112"/>
<source>Arc Tangent %1</source>
- <translation type="unfinished"></translation>
+ <translation>Arkustangentti %1</translation>
</message>
<message>
<location filename="../mainUI.cpp" line="115"/>
<source>Hyperbolic Sine %1</source>
- <translation type="unfinished"></translation>
+ <translation>Hyperbolinen sini %1</translation>
</message>
<message>
<location filename="../mainUI.cpp" line="117"/>
<source>Hyperbolic Cosine %1</source>
- <translation type="unfinished"></translation>
+ <translation>Hyperbolinen kosini %1</translation>
</message>
<message>
<location filename="../mainUI.cpp" line="119"/>
<source>Hyperbolic Tangent %1</source>
- <translation type="unfinished"></translation>
+ <translation>Hyperbolinen tangentti %1</translation>
</message>
<message>
<location filename="../mainUI.cpp" line="182"/>
<source>Save Calculator History</source>
- <translation type="unfinished"></translation>
+ <translation>Tallenna laskimen historia</translation>
</message>
</context>
</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm-dev/main.cpp b/src-qt5/desktop-utils/lumina-fm-dev/main.cpp
index 61d2dc95..a4a6244e 100644
--- a/src-qt5/desktop-utils/lumina-fm-dev/main.cpp
+++ b/src-qt5/desktop-utils/lumina-fm-dev/main.cpp
@@ -2,6 +2,7 @@
#include <QDebug>
#include <QFile>
#include <QStringList>
+#include <QElapsedTimer>
#include "MainUI.h"
#include <LuminaOS.h>
@@ -10,6 +11,7 @@
#include <LuminaSingleApplication.h>
#include "BrowserWidget.h"
+QElapsedTimer* timer = 0;
int main(int argc, char ** argv)
{
@@ -27,6 +29,7 @@ int main(int argc, char ** argv)
MainUI w;
QObject::connect(&a, SIGNAL(InputsAvailable(QStringList)), &w, SLOT(slotSingleInstance(QStringList)) );
//QObject::connect(&themes, SIGNAL(updateIcons()), &w, SLOT(setupIcons()) );
+ timer = new QElapsedTimer(); timer->start(); qDebug() << " - Init:" << timer->elapsed();
w.OpenDirs(in);
w.show();
diff --git a/src-qt5/desktop-utils/lumina-fm-dev/widgets/DirWidget2.cpp b/src-qt5/desktop-utils/lumina-fm-dev/widgets/DirWidget2.cpp
index 3790d145..2e837cfd 100644
--- a/src-qt5/desktop-utils/lumina-fm-dev/widgets/DirWidget2.cpp
+++ b/src-qt5/desktop-utils/lumina-fm-dev/widgets/DirWidget2.cpp
@@ -28,6 +28,8 @@
#define DEBUG 0
+extern QElapsedTimer* timer;
+
DirWidget::DirWidget(QString objID, QWidget *parent) : QWidget(parent), ui(new Ui::DirWidget){
ui->setupUi(this); //load the designer file
ID = objID;
@@ -90,6 +92,8 @@ DirWidget::DirWidget(QString objID, QWidget *parent) : QWidget(parent), ui(new U
createShortcuts();
createMenus();
line_dir->setCompleter(new QCompleter(dirtreeModel, this));
+ qDebug() << " - Fini:" << timer->elapsed();
+
}
DirWidget::~DirWidget(){
diff --git a/src-qt5/desktop-utils/lumina-fm/widgets/fmwebdav.cpp b/src-qt5/desktop-utils/lumina-fm/widgets/fmwebdav.cpp
new file mode 100644
index 00000000..6e65ebaf
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/widgets/fmwebdav.cpp
@@ -0,0 +1,36 @@
+#include "fmwebdav.h"
+
+fmwebdav::fmwebdav(QObject *parent) : QNetworkAccessManager(parent) ,wdRootPath(), wdUsername(), wdUassword(), wdBaseUrl(), wdCurrentConnectionType(QWebdav::HTTP){
+// typical Qnetwork connection stuff goes here
+// probably ssl parts too
+}
+
+fmwebdav::~fmwebdav(){
+}
+
+QString fmwebdav::hostname() const{ return wdBaseUrl.host(); }
+
+int fmwebdav::port() const{ return wdBaseUrl.port(); }
+
+QString fmwebdav::rootPath() const{ return wdRootPath;}
+
+QString fmwebdav::username() const{ return wdUsername; }
+
+QString fmwebdav::password() const{ return wdPassword; }
+
+fmwebdav::QWebdavConnectionType : fmwebdav::connectionType() const{ return wdCurrentConnectionType; }
+
+bool fmwebdav::isSSL() const{ return (wdCurrentConnectionType==QWebdav::HTTPS); }
+
+void QWebdav::setConnectionSettings(const QWebdavConnectionType connectionType, const QString *hostname, const QString *rootPath, const QString *username, const QString *password, int *port){
+ wdRootPath = rootPath;
+ if ((wdRootPath.endsWith("/")){ wdRootPath.chop(1); }
+ wdCurrentConnectionType = connectionType;
+ wdBaseUrl.setScheme();
+ wdBaseUrl.setHost(hostname);
+ wdBaseUrl.setPath(rootPath);
+ if (port != 0) { // use user-defined port number if not 80 or 443
+ if ( ! ( ( (port == 80) && (wdCurrentConnectionType==QWebdav::HTTP) ) || ( (port == 443) && (wdCurrentConnectionType==QWebdav::HTTPS) ) ) ){ wdBaseUrl.setPort(port); }
+ wdUsername = username;
+ wdPassword = password;
+}
diff --git a/src-qt5/desktop-utils/lumina-fm/widgets/fmwebdav.h b/src-qt5/desktop-utils/lumina-fm/widgets/fmwebdav.h
new file mode 100644
index 00000000..04d29e3b
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/widgets/fmwebdav.h
@@ -0,0 +1,36 @@
+#ifndef FMWEBDAV_H
+#define FMWEBDAV_H
+
+#include <QtCore>
+#include <QtNetwork>
+#include <QNetworkAccessManager>
+
+public:
+
+ enum QWebdavConnectionType {HTTP = 1, HTTPS};
+
+ QString hostname() const;
+ int port() const;
+ QString rootPath() const;
+ QString username() const;
+ QString password() const;
+ QWebdavConnectionType connectionType() const;
+ bool isSSL() const;
+
+ void setConnectionSettings( const QWebdavConnectionType connectionType, const QString *hostname, const QString *rootPath = "/", const QString *username = "", const QString *password = "", int *port = 0;
+
+
+private:
+
+ QString wdRootPath;
+ QString wdUsername;
+ QString wdPassword;
+ QUrl wdBaseUrl;
+ QWebdavConnectionType wdCurrentConnectionType;
+
+
+
+
+
+
+#endif // FMWEBDAV
diff --git a/src-qt5/desktop-utils/lumina-fm/widgets/vidnail.cpp b/src-qt5/desktop-utils/lumina-fm/widgets/vidnail.cpp
new file mode 100644
index 00000000..ee7fb9e3
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/widgets/vidnail.cpp
@@ -0,0 +1,33 @@
+#include "vidnail.h"
+vidnail::vidnail(QWidget *parent) : QMainWindow(parent), mplayer(parent, QMediaPlayer::VideoSurface){ //there is no UI, so not sure how to alter the constructor
+}
+
+vidnail::~vidnail()
+{
+
+vidnail::grabvideothumbnail(){
+ vsurface = new QAbstractVideoSurface();
+ mplayer.setVideoOutput(vsurface);
+ mplayer.setMedia($file); // video file to get thumbnail of
+ imageCaptured = QPixmap();
+ mplayer.setPosition(2000); // time in milliseconds
+ mplayer.setMuted(true); // just to make sure no sound is emited
+ mplayer.play();
+
+ currentFrame = frame;
+ const QImage::Format imageFormat = QVideoFrame::imageFormatFromPixelFormat(format.pixelFormat());
+ const QSize size = format.frameSize();
+
+ this->imageFormat = imageFormat;
+ QAbstractVideoSurface::start(format);
+ QImage image( currentFrame.bits(), currentFrame.width(), currentFrame.height(), currentFrame.bytesPerLine(), imageFormat);
+ imageCaptured = QPixmap::fromImage(image.copy(image.rect()));
+
+// Now do scaling with regular thumbnail process to make proper size
+
+ mplayer.stop();
+ vsurface.stop();
+}
+
+
+
diff --git a/src-qt5/desktop-utils/lumina-fm/widgets/vidnail.h b/src-qt5/desktop-utils/lumina-fm/widgets/vidnail.h
new file mode 100644
index 00000000..ad565749
--- /dev/null
+++ b/src-qt5/desktop-utils/lumina-fm/widgets/vidnail.h
@@ -0,0 +1,25 @@
+#ifndef VIDNAIL_H
+#define VIDNAIL_H
+
+#include <QMediaPlayer>
+#include <QtMultimediaWidgets>
+#include "videowidgetsurface.h"
+#include <QPixmap>
+#include <QAbstractVideoSurface>
+#include <QImage>
+#include <QRect>
+#include <QVideoFrame>
+
+public:
+
+ void grabvideothumbnail();
+
+private:
+
+ QAbstractVideoSurface *vsurface;
+ QImage::Format imageFormat;
+ QPixmap imageCaptured;
+
+
+#endif // VIDNAIL_H
+
diff --git a/src-qt5/desktop-utils/lumina-textedit/MainUI.cpp b/src-qt5/desktop-utils/lumina-textedit/MainUI.cpp
index 52a29c01..4c2ce0bd 100644
--- a/src-qt5/desktop-utils/lumina-textedit/MainUI.cpp
+++ b/src-qt5/desktop-utils/lumina-textedit/MainUI.cpp
@@ -496,11 +496,11 @@ void MainUI::closeEvent(QCloseEvent *ev){
unsaved << tmp->currentFile();
}
}
- bool quitnow = unsaved.isEmpty();
- if(!quitnow && !ui->actionShow_Popups->isChecked()){ quitnow = true; }
- if(!quitnow){
- quitnow = (QMessageBox::Yes == QMessageBox::question(this, tr("Lose Unsaved Changes?"), QString(tr("There are unsaved changes.\nDo you want to close the editor anyway?\n\n%1")).arg(unsaved.join("\n")), QMessageBox::Yes | QMessageBox::No, QMessageBox::No) );
- }
- if(quitnow){ QMainWindow::closeEvent(ev); }
- else{ ev->ignore(); }
+ bool savenow = unsaved.isEmpty();
+ if(!savenow && !ui->actionShow_Popups->isChecked()){ savenow = true; }
+ if(!savenow){
+ savenow = (QMessageBox::Yes == QMessageBox::question(this, tr("Save Changes before closing?"), QString(tr("There are unsaved changes.\nDo you want save them before you close the editor?\n\n%1")).arg(unsaved.join("\n")), QMessageBox::Yes | QMessageBox::No, QMessageBox::No) );
+ }
+ if(!savenow){ QMainWindow::closeEvent(ev); }
+ else{ ev->ignore(); SaveFile(); }
}
diff --git a/src-qt5/desktop-utils/lumina-textedit/MainUI.ui b/src-qt5/desktop-utils/lumina-textedit/MainUI.ui
index de5c1ee1..fec94a21 100644
--- a/src-qt5/desktop-utils/lumina-textedit/MainUI.ui
+++ b/src-qt5/desktop-utils/lumina-textedit/MainUI.ui
@@ -182,7 +182,7 @@
<x>0</x>
<y>0</y>
<width>505</width>
- <height>21</height>
+ <height>28</height>
</rect>
</property>
<property name="contextMenuPolicy">
@@ -437,6 +437,11 @@
</property>
</action>
</widget>
+ <tabstops>
+ <tabstop>line_find</tabstop>
+ <tabstop>line_replace</tabstop>
+ <tabstop>tool_hideReplaceGroup</tabstop>
+ </tabstops>
<resources/>
<connections/>
</ui>
bgstack15