aboutsummaryrefslogtreecommitdiff
path: root/src-qt5
diff options
context:
space:
mode:
Diffstat (limited to 'src-qt5')
-rw-r--r--src-qt5/OS-detect.pri7
-rw-r--r--src-qt5/core/libLumina/DesktopSettings.cpp2
-rw-r--r--src-qt5/core/libLumina/DesktopSettings.h2
-rw-r--r--src-qt5/core/libLumina/ExternalProcess.h6
-rw-r--r--src-qt5/core/libLumina/NativeEmbedWidget.cpp83
-rw-r--r--src-qt5/core/libLumina/NativeEmbedWidget.h8
-rw-r--r--src-qt5/core/libLumina/NativeWindow.cpp4
-rw-r--r--src-qt5/core/libLumina/RootSubWindow-animations.cpp97
-rw-r--r--src-qt5/core/libLumina/RootSubWindow.cpp69
-rw-r--r--src-qt5/core/libLumina/RootSubWindow.h7
-rw-r--r--src-qt5/core/libLumina/RootWindow.cpp17
-rw-r--r--src-qt5/core/libLumina/RootWindow.pri4
-rw-r--r--src-qt5/core/libLumina/XDGMime.cpp362
-rw-r--r--src-qt5/core/libLumina/XDGMime.h57
-rw-r--r--src-qt5/core/libLumina/XDGMime.pri10
-rw-r--r--src-qt5/core/lumina-desktop-unified/LSession.cpp45
-rw-r--r--src-qt5/core/lumina-desktop-unified/LSession.h4
-rw-r--r--src-qt5/core/lumina-desktop-unified/defaults/desktop/keys.conf4
-rw-r--r--src-qt5/core/lumina-desktop-unified/global-includes.h1
-rw-r--r--src-qt5/core/lumina-desktop-unified/lumina-desktop.pro1
-rw-r--r--src-qt5/core/lumina-desktop-unified/main.cpp2
-rw-r--r--src-qt5/core/lumina-desktop-unified/src-desktop/ContextMenu.h2
-rw-r--r--src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/lthemeengineplatformtheme.cpp427
-rw-r--r--src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/lthemeengineplatformtheme.h31
-rw-r--r--src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/main.cpp34
-rw-r--r--src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengineproxystyle.cpp70
-rw-r--r--src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengineproxystyle.h31
-rw-r--r--src-qt5/core/lumina-theme-engine/src/lthemeengine-style/plugin.cpp34
-rw-r--r--src-qt5/core/lumina-theme-engine/src/lthemeengine/appearancepage.cpp532
-rw-r--r--src-qt5/core/lumina-theme-engine/src/lthemeengine/appearancepage.h32
-rw-r--r--src-qt5/core/lumina-theme-engine/src/lthemeengine/fontconfigdialog.cpp180
-rw-r--r--src-qt5/core/lumina-theme-engine/src/lthemeengine/fontconfigdialog.h28
-rw-r--r--src-qt5/core/lumina-theme-engine/src/lthemeengine/fontspage.cpp143
-rw-r--r--src-qt5/core/lumina-theme-engine/src/lthemeengine/fontspage.h28
-rw-r--r--src-qt5/core/lumina-theme-engine/src/lthemeengine/iconthemepage.cpp276
-rw-r--r--src-qt5/core/lumina-theme-engine/src/lthemeengine/iconthemepage.h28
-rw-r--r--src-qt5/core/lumina-theme-engine/src/lthemeengine/interfacepage.cpp184
-rw-r--r--src-qt5/core/lumina-theme-engine/src/lthemeengine/interfacepage.h28
-rw-r--r--src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.cpp149
-rw-r--r--src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.h28
-rw-r--r--src-qt5/core/lumina-theme-engine/src/lthemeengine/main.cpp95
-rw-r--r--src-qt5/core/lumina-theme-engine/src/lthemeengine/mainwindow.cpp93
-rw-r--r--src-qt5/core/lumina-theme-engine/src/lthemeengine/mainwindow.h28
-rw-r--r--src-qt5/core/lumina-theme-engine/src/lthemeengine/paletteeditdialog.cpp181
-rw-r--r--src-qt5/core/lumina-theme-engine/src/lthemeengine/paletteeditdialog.h28
-rw-r--r--src-qt5/core/lumina-theme-engine/src/lthemeengine/qsseditordialog.cpp96
-rw-r--r--src-qt5/core/lumina-theme-engine/src/lthemeengine/qsseditordialog.h28
-rw-r--r--src-qt5/core/lumina-theme-engine/src/lthemeengine/qsspage.cpp296
-rw-r--r--src-qt5/core/lumina-theme-engine/src/lthemeengine/qsspage.h28
-rw-r--r--src-qt5/core/lumina-theme-engine/src/lthemeengine/tabpage.cpp31
-rw-r--r--src-qt5/core/lumina-theme-engine/src/lthemeengine/tabpage.h28
-rw-r--r--src-qt5/desktop-utils/lumina-fileinfo/i18n/l-fileinfo_cs.ts18
-rw-r--r--src-qt5/desktop-utils/lumina-fileinfo/i18n/l-fileinfo_es.ts6
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_ca.ts72
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_cs.ts115
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_es.ts52
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_fr.ts28
-rw-r--r--src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_zh_CN.ts4
-rw-r--r--src-qt5/desktop-utils/lumina-screenshot/i18n/l-screenshot_ca.ts16
-rw-r--r--src-qt5/desktop-utils/lumina-screenshot/i18n/l-screenshot_cs.ts26
-rw-r--r--src-qt5/desktop-utils/lumina-screenshot/i18n/l-screenshot_da.ts2
-rw-r--r--src-qt5/desktop-utils/lumina-screenshot/i18n/l-screenshot_es.ts18
-rw-r--r--src-qt5/desktop-utils/lumina-screenshot/i18n/l-screenshot_ru.ts4
-rw-r--r--src-qt5/desktop-utils/lumina-screenshot/i18n/l-screenshot_zh_CN.ts2
-rw-r--r--src-qt5/desktop-utils/lumina-textedit/i18n/l-te_cs.ts42
-rw-r--r--src-qt5/desktop-utils/lumina-textedit/i18n/l-te_da.ts4
-rw-r--r--src-qt5/desktop-utils/lumina-textedit/i18n/l-te_es.ts2
-rw-r--r--src-qt5/desktop-utils/lumina-textedit/i18n/l-te_ru.ts4
-rw-r--r--src-qt5/experimental/lumina-terminal/i18n/l-terminal_zh_CN.ts14
69 files changed, 1903 insertions, 2515 deletions
diff --git a/src-qt5/OS-detect.pri b/src-qt5/OS-detect.pri
index eb7fd231..ac195000 100644
--- a/src-qt5/OS-detect.pri
+++ b/src-qt5/OS-detect.pri
@@ -75,7 +75,12 @@ isEmpty(OS){
#Apply any special rules for particular distros
equals(LINUX_DISTRO,"Fedora"){
isEmpty(L_ETCDIR){ L_ETCDIR=/etc }
- }
+ }
+ equals(LINUX_DISTRO,"Gentoo"){
+ isEmpty(L_BINDIR){ L_BINDIR = $${PREFIX}/bin }
+ isEmpty(L_ETCDIR){ L_ETCDIR = $${PREFIX}/../etc }
+ isEmpty(L_MANDIR){ L_MANDIR = $${PREFIX}/share/man }
+ }
}else{
OS="Unknown";
}
diff --git a/src-qt5/core/libLumina/DesktopSettings.cpp b/src-qt5/core/libLumina/DesktopSettings.cpp
index 47dc29de..8bda1ac5 100644
--- a/src-qt5/core/libLumina/DesktopSettings.cpp
+++ b/src-qt5/core/libLumina/DesktopSettings.cpp
@@ -238,6 +238,8 @@ QString DesktopSettings::rel_path(DesktopSettings::File file){
name="keys"; break;
case DesktopSettings::Theme:
name="theme"; break;
+ case DesktopSettings::Animation:
+ name="animations"; break;
}
return FILEPREFIX+name+".conf";
}
diff --git a/src-qt5/core/libLumina/DesktopSettings.h b/src-qt5/core/libLumina/DesktopSettings.h
index 57a85791..dcb10bb6 100644
--- a/src-qt5/core/libLumina/DesktopSettings.h
+++ b/src-qt5/core/libLumina/DesktopSettings.h
@@ -25,7 +25,7 @@
class DesktopSettings : public QObject{
Q_OBJECT
public:
- enum File{ System, Favorites, Environment, Session, Desktop, ContextMenu, Keys, Theme };
+ enum File{ System, Favorites, Environment, Session, Desktop, ContextMenu, Keys, Theme, Animation };
DesktopSettings(QObject *parent = 0);
~DesktopSettings();
diff --git a/src-qt5/core/libLumina/ExternalProcess.h b/src-qt5/core/libLumina/ExternalProcess.h
index a8a5e605..b1e56af8 100644
--- a/src-qt5/core/libLumina/ExternalProcess.h
+++ b/src-qt5/core/libLumina/ExternalProcess.h
@@ -44,7 +44,7 @@ private slots:
}
public:
- ExternalProcess(QString logfile = "", bool manageCursors = true) : QProcess(){
+ ExternalProcess(QString logfile = "", bool manageCursors = false) : QProcess(){
this->setProcessChannelMode(QProcess::MergedChannels);
cursorRestored = !manageCursors;
if(logfile.isEmpty()){
@@ -62,9 +62,9 @@ public:
}*/
}
- static void launch(QString program, QStringList args = QStringList()){
+ static void launch(QString program, QStringList args = QStringList(), bool manageCursors = false){
//Quick launch of a process with logging disabled and automatic cleanup
- ExternalProcess *tmp = new ExternalProcess();
+ ExternalProcess *tmp = new ExternalProcess("", manageCursors);
if(args.isEmpty()){ tmp->start(program); }
else{ tmp->start(program, args); }
}
diff --git a/src-qt5/core/libLumina/NativeEmbedWidget.cpp b/src-qt5/core/libLumina/NativeEmbedWidget.cpp
index 80c843e0..ed0fd89c 100644
--- a/src-qt5/core/libLumina/NativeEmbedWidget.cpp
+++ b/src-qt5/core/libLumina/NativeEmbedWidget.cpp
@@ -37,8 +37,8 @@ inline void registerClientEvents(WId id){
// ============
//Simplification functions for the XCB/XLib interactions
void NativeEmbedWidget::syncWinSize(QSize sz){
- if(WIN==0){ return; }
- if(!sz.isValid()){ sz = this->size(); } //use the current widget size
+ if(WIN==0 ){ return; }
+ else if(!sz.isValid()){ sz = this->size(); } //use the current widget size
//qDebug() << "Sync Window Size:" << sz;
if(sz == winSize){ return; } //no change
const uint32_t valList[2] = {(uint32_t) sz.width(), (uint32_t) sz.height()};
@@ -58,9 +58,11 @@ void NativeEmbedWidget::hideWindow(){
void NativeEmbedWidget::showWindow(){
xcb_map_window(QX11Info::connection(), WIN->id());
+ QTimer::singleShot(0,this, SLOT(repaintWindow()));
}
QImage NativeEmbedWidget::windowImage(QRect geom){
+ //if(paused){ return QImage(); }
//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);
@@ -85,7 +87,8 @@ QImage NativeEmbedWidget::windowImage(QRect geom){
// ============
NativeEmbedWidget::NativeEmbedWidget(QWidget *parent) : QWidget(parent){
WIN = 0; //nothing embedded yet
- this->setSizeIncrement(2,2);
+ paused = false;
+ //this->setSizeIncrement(2,2);
}
bool NativeEmbedWidget::embedWindow(NativeWindow *window){
@@ -141,9 +144,22 @@ bool NativeEmbedWidget::isEmbedded(){
// ==============
// PUBLIC SLOTS
// ==============
+//Pause/resume
+void NativeEmbedWidget::pause(){
+ if(winImage.isNull()){ repaintWindow(); } //make sure we have one image already cached first
+ paused = true;
+}
+
+void NativeEmbedWidget::resume(){
+ paused = false;
+ //syncWinSize();
+ //showWindow();
+ repaintWindow(); //update the cached image right away
+}
+
void NativeEmbedWidget::resyncWindow(){
if(WIN==0){ return; }
- return; //skip the stuff below (not working)
+ /*return; //skip the stuff below (not working)
QRect geom = WIN->geometry();
//Send an artificial configureNotify event to the window with the global position/size included
xcb_configure_notify_event_t event;
@@ -158,12 +174,28 @@ void NativeEmbedWidget::resyncWindow(){
event.event = WIN->id();
event.response_type = XCB_CONFIGURE_NOTIFY;
xcb_send_event(QX11Info::connection(), false, WIN->id(), XCB_EVENT_MASK_STRUCTURE_NOTIFY | XCB_EVENT_MASK_SUBSTRUCTURE_NOTIFY, (const char *) &event);
-
- xcb_flush(QX11Info::connection());
+ */
+ //Just jitter the window size by 1 pixel really quick so the window knows to update it's geometry
+ QSize sz = this->size();
+ uint32_t valList[2] = {(uint32_t) sz.width()-1, (uint32_t) sz.height()};
+ uint32_t mask = XCB_CONFIG_WINDOW_WIDTH | XCB_CONFIG_WINDOW_HEIGHT;
+ xcb_configure_window(QX11Info::connection(), WIN->id(), mask, valList);
+ xcb_flush(QX11Info::connection());
+ valList[0] = (uint32_t) sz.width();
+ xcb_configure_window(QX11Info::connection(), WIN->id(), mask, valList);
+ xcb_flush(QX11Info::connection());
+ syncWinSize();
+ QTimer::singleShot(0, this, SLOT(repaintWindow()) );
}
void NativeEmbedWidget::repaintWindow(){
- this->update();
+ //qDebug() << "Update Window Image:" << !paused;
+ if(paused){ return; }
+ QImage tmp = windowImage( QRect(QPoint(0,0), this->size()) );
+ if(!tmp.isNull()){
+ winImage = tmp;
+ }//else{ qDebug() << "Got Null Image!!"; }
+ this->parentWidget()->update();
}
// ==============
// PROTECTED
@@ -186,23 +218,30 @@ void NativeEmbedWidget::hideEvent(QHideEvent *ev){
}
void NativeEmbedWidget::paintEvent(QPaintEvent *ev){
- //QWidget::paintEvent(ev); //ensure all the Qt-compositing is done first
- if(this->size()!=winSize){ return; } //do not paint here - waiting to re-sync the sizes
if(WIN==0){ QWidget::paintEvent(ev); return; }
+ else if( winImage.isNull() ){ /*QTimer::singleShot(0, this, SLOT(repaintWindow()) );*/ return; }
+ else if(paused){ return; }
+ //else if(this->size()!=winSize){ QTimer::singleShot(0,this, SLOT(syncWinSize())); return; } //do not paint here - waiting to re-sync the sizes
+ //else if(this->size() != winImage.size()){ QTimer::singleShot(0, this, SLOT(repaintWindow()) ); return; }
//Need to paint the image from the window onto the widget as an overlay
- QRect geom = QRect(0,0,this->width(), this->height()); //always paint the whole window
- //qDebug() << "Get Paint image:" << ev->rect() << geom;
- //geom = ev->rect(); //atomic updates
- //geom.adjust(-1,-1,1,1); //add an additional pixel in each direction to be painted
- //geom = geom.intersected(QRect(0,0,this->width(), this->height())); //ensure intersection with actual window
- QImage img = windowImage(geom);
- if(!img.isNull()){
- if(img.size() != geom.size()){ return; }
+ QRect geom = ev->rect(); //atomic updates
+ geom.adjust(-10,-10,10,10); //add an additional few pixels in each direction to be painted
+ geom = geom.intersected(QRect(0,0,this->width(), this->height())); //ensure intersection with actual window
+ if( !QRect(QPoint(0,0),winImage.size()).contains(geom) ){ QTimer::singleShot(0,this, SLOT(repaintWindow()) );return; }
QPainter P(this);
- P.drawImage( geom , img, QRect(geom.topLeft(), img.size()), Qt::NoOpaqueDetection); //1-to-1 mapping
- //qDebug() << "Painted Rect:" << ev->rect() << this->geometry();
+ P.setClipping(true);
+ P.setClipRect(0,0,this->width(), this->height());
+ //qDebug() << "Paint Embed Window:" << geom << winImage.size();
+ if(winImage.size() == this->size()){
+ 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.
+ }else{
+ P.drawImage( geom , winImage);
+ }
+ //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 most of the time.
- }
- //qDebug() << "Done Painting";
+ // 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/NativeEmbedWidget.h b/src-qt5/core/libLumina/NativeEmbedWidget.h
index 78c11dfc..65e03c51 100644
--- a/src-qt5/core/libLumina/NativeEmbedWidget.h
+++ b/src-qt5/core/libLumina/NativeEmbedWidget.h
@@ -24,6 +24,8 @@ class NativeEmbedWidget : public QWidget{
private:
NativeWindow *WIN;
QSize winSize;
+ QImage winImage;
+ bool paused;
private slots:
//Simplification functions
@@ -41,7 +43,13 @@ public:
bool detachWindow();
bool isEmbedded(); //status of the embed
+
+
public slots:
+ //Pause/resume
+ void pause();
+ void resume();
+
void resyncWindow();
void repaintWindow();
diff --git a/src-qt5/core/libLumina/NativeWindow.cpp b/src-qt5/core/libLumina/NativeWindow.cpp
index 94d39cb7..48d0380b 100644
--- a/src-qt5/core/libLumina/NativeWindow.cpp
+++ b/src-qt5/core/libLumina/NativeWindow.cpp
@@ -89,11 +89,11 @@ QRect NativeWindow::geometry(){
QRect geom( hash.value(NativeWindow::GlobalPos).toPoint(), hash.value(NativeWindow::Size).toSize() );
//Now adjust the window geom by the frame margins
QList<int> frame = hash.value(NativeWindow::FrameExtents).value< QList<int> >(); //Left,Right,Top,Bottom
- qDebug() << "Calculate Geometry:" << geom << frame;
+ //qDebug() << "Calculate Geometry:" << geom << frame;
if(frame.length()==4){
geom = geom.adjusted( -frame[0], -frame[2], frame[1], frame[3] );
}
- qDebug() << " - Total:" << geom;
+ //qDebug() << " - Total:" << geom;
return geom;
}
// ==== PUBLIC SLOTS ===
diff --git a/src-qt5/core/libLumina/RootSubWindow-animations.cpp b/src-qt5/core/libLumina/RootSubWindow-animations.cpp
new file mode 100644
index 00000000..ac813e3a
--- /dev/null
+++ b/src-qt5/core/libLumina/RootSubWindow-animations.cpp
@@ -0,0 +1,97 @@
+//===========================================
+// Lumina Desktop source code
+// Copyright (c) 2017, Ken Moore
+// Available under the 3-clause BSD license
+// See the LICENSE file for full details
+//===========================================
+#include "RootSubWindow.h"
+#include <QDebug>
+
+QStringList RootSubWindow::validAnimations(NativeWindow::Property prop){
+ QStringList valid;
+ if(prop == NativeWindow::Visible){
+ valid << "zoom" << "wipe-center-vertical" << "wipe-center-horizontal" << "shade-top" << "shade-right" << "shade-left" << "shade-bottom";
+ }
+ return valid;
+}
+
+void RootSubWindow::loadAnimation(QString name, NativeWindow::Property prop, QVariant nval){
+ animResetProp.clear();
+ //Special case - random animation each time
+ if(name=="random"){
+ QStringList valid = validAnimations(prop);
+ name = valid.at(qrand()%valid.length());
+ }
+ //Now setup the animation
+ if(prop == NativeWindow::Visible){
+ //NOTE: Assigns values for "invisible->visible" animation: will reverse it afterwards as needed
+ anim->setPropertyName("geometry");
+ QRect geom = this->geometry();
+ if(name == "zoom"){
+ //Zoom to/from the center point
+ anim->setStartValue( QRect(geom.center(), QSize(0,0)) );
+ anim->setEndValue(geom);
+ }else if(name == "wipe-center-vertical"){
+ anim->setStartValue( QRect( geom.center().x(), geom.y(), 0, geom.height()) );
+ anim->setEndValue( geom );
+ }else if(name == "wipe-center-horizontal"){
+ anim->setStartValue( QRect( geom.x(), geom.center().y(), geom.width(), 0) );
+ anim->setEndValue( geom );
+ }else if(name == "shade-top"){
+ anim->setStartValue( QRect( geom.x(), geom.y(), geom.width(), 0) );
+ anim->setEndValue( geom );
+ }else if(name == "shade-bottom"){
+ anim->setStartValue( QRect( geom.x(), geom.y()+geom.height(), geom.width(), 0) );
+ anim->setEndValue( geom );
+ }else if(name == "shade-left"){
+ anim->setStartValue( QRect( geom.x(), geom.y(), 0, geom.height()) );
+ anim->setEndValue( geom );
+ }else if(name == "shade-right"){
+ anim->setStartValue( QRect( geom.x()+geom.width(), geom.y(), 0, geom.height()) );
+ anim->setEndValue( geom );
+ }else{
+ //Invalid/None animation
+ if(nval.toBool()){ this->show(); }
+ else{ this->hide(); }
+ return;
+ }
+ if(nval.toBool()){
+ this->setGeometry( anim->startValue().toRect() ); //ensure the window is the initial geom before it becomes visible
+ }else{
+ QVariant tmp = anim->startValue();
+ anim->setStartValue(anim->endValue());
+ anim->setEndValue(tmp);
+ animResetProp = anim->startValue();
+ QTimer::singleShot(anim->duration(), this, SLOT(hide()) );
+ }
+ WinWidget->pause();
+ anim->start();
+ this->show();
+ } //end of Visibility animation
+}
+
+void RootSubWindow::animFinished(){
+ if(closing){ this->close(); return;}
+ else if(anim->propertyName()=="geometry"){
+ if(!animResetProp.isNull()){
+ /*qDebug() << "Animation Finished, Reset Geometry:" << animResetProp.toRect();
+ qDebug() << " - Starting Value:" << anim->startValue().toRect();
+ qDebug() << " - Ending Value:" << anim->endValue().toRect();*/
+ this->setGeometry( animResetProp.toRect() );
+ //Also ensure that the proper geometry is saved to the window structure
+ QRect curg = this->geometry();
+ QRect wing = WIN->geometry();
+ //qDebug() << " - After Animation Reset:" << curg << wing;
+ if(curg!=wing){
+ QRect clientg = clientGlobalGeom();
+ //qDebug() << "Sub Window geometry:" << clientg;
+ WIN->setProperties(QList< NativeWindow::Property>() << NativeWindow::Size << NativeWindow::GlobalPos,
+ QList<QVariant>() << clientg.size() << clientg.topLeft() );
+ WinWidget->resyncWindow(); //also let the window know about the current geometry
+ }
+ }
+ }
+ animResetProp = QVariant(); //clear the variable
+ WinWidget->resume();
+
+}
diff --git a/src-qt5/core/libLumina/RootSubWindow.cpp b/src-qt5/core/libLumina/RootSubWindow.cpp
index 9ef6464e..c2da8aef 100644
--- a/src-qt5/core/libLumina/RootSubWindow.cpp
+++ b/src-qt5/core/libLumina/RootSubWindow.cpp
@@ -14,6 +14,7 @@
#define WIN_BORDER 5
#include <LIconCache.h>
+#include <DesktopSettings.h>
// === PUBLIC ===
RootSubWindow::RootSubWindow(QWidget *root, NativeWindow *win) : QFrame(root){
@@ -246,6 +247,14 @@ void RootSubWindow::LoadProperties( QList< NativeWindow::Property> list){
propertiesChanged(list, vals);
}
+QRect RootSubWindow::clientGlobalGeom(){
+ QRect tot = this->geometry();
+ QList<int> frame = WIN->property(NativeWindow::FrameExtents).value< QList<int> >();
+ //Now adjust this to take out the frame
+ tot.adjust(frame[0], frame[2], -frame[1], -frame[3]);
+ return tot;
+}
+
// === PUBLIC SLOTS ===
void RootSubWindow::clientClosed(){
//qDebug() << "Client Closed";
@@ -296,6 +305,7 @@ void RootSubWindow::startMoving(){
activeState = Move;
offset = this->mapFromGlobal(curpt);
setMouseCursor(activeState, true); //this one is an override cursor
+ //WinWidget->pause();
//Also need to capture the mouse
this->grabMouse();
}
@@ -312,24 +322,8 @@ void RootSubWindow::propertiesChanged(QList<NativeWindow::Property> props, QList
switch(props[i]){
case NativeWindow::Visible:
//qDebug() << "Got Visibility Change:" << vals[i] << this->geometry() << WIN->geometry();
- if(vals[i].toBool()){
- if(lastGeom.isNull()){ animResetProp = this->geometry(); }
- else{ animResetProp = lastGeom; }
- anim->setPropertyName("geometry");
- anim->setStartValue( QRect(animResetProp.toRect().center(), QSize(0,0)) );
- anim->setEndValue(animResetProp);
- this->setGeometry( anim->startValue().toRect() ); //ensure the window is the initial geom before it becomes visible
- anim->start();
- this->show();
- }else{
- animResetProp = this->geometry(); //hide event - should already be the right geom
- lastGeom = this->geometry();
- anim->setPropertyName("geometry");
- anim->setStartValue(this->geometry());
- anim->setEndValue( QRect(this->geometry().center(), QSize(0,0) ) );
- anim->start();
- QTimer::singleShot(anim->duration(), this, SLOT(hide()) );
- }
+ if(vals[i].toBool()){ loadAnimation( DesktopSettings::instance()->value(DesktopSettings::Animation, "window/appear", "random").toString(), NativeWindow::Visible, vals[i]); }
+ else{ loadAnimation( DesktopSettings::instance()->value(DesktopSettings::Animation, "window/disappear", "random").toString(), NativeWindow::Visible, vals[i]); }
break;
case NativeWindow::Title:
titleLabel->setText(vals[i].toString());
@@ -340,11 +334,6 @@ void RootSubWindow::propertiesChanged(QList<NativeWindow::Property> props, QList
else{ otherB->setIcon(vals[i].value<QIcon>()); }
break;
case NativeWindow::GlobalPos:
- //qDebug() << "Got Global Pos:" << this->pos() << WinWidget->mapToGlobal(QPoint(0,0)) << WIN->geometry().topLeft() << vals[i].toPoint();
- if(activeState == RootSubWindow::Normal){
- this->move( WIN->geometry().topLeft() );
- }
- break;
case NativeWindow::Size:
//qDebug() << " - SIZE CHANGE";
if(WIN->property(NativeWindow::FrameExtents).isNull() && (i<props.indexOf(NativeWindow::FrameExtents)) ){
@@ -353,11 +342,8 @@ void RootSubWindow::propertiesChanged(QList<NativeWindow::Property> props, QList
vals << vals.takeAt(i);
i--;
}else if(anim->state() != QPropertyAnimation::Running ){
- if(vals[i].toSize() != WinWidget->size() && activeState==Normal){
- //qDebug() << "Got Widget Size Change:" << vals[i].toSize() << WinWidget->size();
- WinWidget->resize(vals[i].toSize());
- this->resize( WIN->geometry().size() );
- //qDebug() << " - Size after change:" << WinWidget->size() << this->size() << WIN->geometry();
+ if(vals[i].toSize() != WinWidget->size() && activeState==Normal && vals[i]==WIN->property(NativeWindow::Size)){
+ this->setGeometry(WIN->geometry());
}
}
break;
@@ -388,20 +374,6 @@ void RootSubWindow::propertiesChanged(QList<NativeWindow::Property> props, QList
}
}
-void RootSubWindow::animFinished(){
- if(closing){ this->close(); return;}
- else if(anim->propertyName()=="geometry"){
- if(!animResetProp.isNull()){
- /*qDebug() << "Animation Finished, Reset Geometry:" << animResetProp;
- qDebug() << " - Starting Value:" << anim->startValue();
- qDebug() << " - Ending Value:" << anim->endValue();
- qDebug() << " - Current Value:" << this->geometry();*/
- this->setGeometry( animResetProp.toRect() );
- }
- }
- animResetProp = QVariant(); //clear the variable
-}
-
// === PROTECTED ===
void RootSubWindow::mousePressEvent(QMouseEvent *ev){
activate();
@@ -409,7 +381,7 @@ void RootSubWindow::mousePressEvent(QMouseEvent *ev){
//qDebug() << "Frame Mouse Press Event";
offset.setX(0); offset.setY(0);
if(activeState != Normal){ return; } // do nothing - already in a state of grabbed mouse
- this->activate();
+ //this->activate();
if(this->childAt(ev->pos())!=0){
//Check for any non-left-click event and skip it
if(ev->button()!=Qt::LeftButton){ return; }
@@ -420,6 +392,8 @@ void RootSubWindow::mousePressEvent(QMouseEvent *ev){
activeState = getStateAtPoint(ev->pos(), true); //also have it set the offset variable
}
setMouseCursor(activeState, true); //this one is an override cursor
+ //if(activeState!=Normal){WinWidget->pause(); }
+ if(activeState!=Normal && activeState!=Move){WinWidget->pause(); }
QFrame::mousePressEvent(ev);
}
@@ -498,7 +472,9 @@ void RootSubWindow::mouseMoveEvent(QMouseEvent *ev){
default:
break;
}
- this->setGeometry(geom);
+ //if( (geom.width()%2==0 && geom.height()%2==0) || activeState==Move){
+ this->setGeometry(geom);
+ //}
}
QFrame::mouseMoveEvent(ev);
}
@@ -511,6 +487,8 @@ void RootSubWindow::mouseReleaseEvent(QMouseEvent *ev){
otherM->popup(ev->globalPos());
return;
}
+ if(activeState!=Normal){ WinWidget->resume(); }
+ if(activeState!=Normal && activeState!=Move){WinWidget->resume(); }
activeState = Normal;
QApplication::restoreOverrideCursor();
setMouseCursor( getStateAtPoint(ev->pos()) );
@@ -529,8 +507,5 @@ void RootSubWindow::moveEvent(QMoveEvent *ev){
QFrame::moveEvent(ev);
if(!closing && anim->state()!=QAbstractAnimation::Running){
moveTimer->start();
- //WinWidget->resyncWindow();
- //WIN->requestProperty(NativeWindow::GlobalPos, ev->pos() );
}
-
}
diff --git a/src-qt5/core/libLumina/RootSubWindow.h b/src-qt5/core/libLumina/RootSubWindow.h
index de6aba89..079a6201 100644
--- a/src-qt5/core/libLumina/RootSubWindow.h
+++ b/src-qt5/core/libLumina/RootSubWindow.h
@@ -39,6 +39,7 @@ private:
//Functions for getting/setting state
ModState getStateAtPoint(QPoint pt, bool setoffset = false); //generally used for mouse location detection
void setMouseCursor(ModState, bool override = false); //Update the mouse cursor based on state
+
//Native window embed objects
NativeWindow *WIN;
NativeEmbedWidget *WinWidget;
@@ -60,10 +61,14 @@ private:
void LoadProperties( QList< NativeWindow::Property> list);
+ static QStringList validAnimations(NativeWindow::Property);
+
public slots:
void clientClosed();
void LoadAllProperties();
+ QRect clientGlobalGeom();
+
//Button Actions - public so they can be tied to key shortcuts and stuff as well
void toggleMinimize();
void toggleMaximize();
@@ -77,6 +82,8 @@ public slots:
private slots:
void propertiesChanged(QList<NativeWindow::Property>, QList<QVariant>);
+
+ void loadAnimation(QString name, NativeWindow::Property, QVariant nval); //new val
void animFinished();
protected:
diff --git a/src-qt5/core/libLumina/RootWindow.cpp b/src-qt5/core/libLumina/RootWindow.cpp
index 31faaf50..90ad8739 100644
--- a/src-qt5/core/libLumina/RootWindow.cpp
+++ b/src-qt5/core/libLumina/RootWindow.cpp
@@ -10,6 +10,8 @@
#include <QScreen>
#include <QDebug>
+#define DEBUG 1
+
// === PUBLIC ===
RootWindow::RootWindow() : QWidget(0, Qt::Window | Qt::BypassWindowManagerHint | Qt::WindowStaysOnBottomHint){
qRegisterMetaType<WId>("WId");
@@ -100,12 +102,14 @@ void RootWindow::updateScreenPixmap(screeninfo *info){
// === PUBLIC SLOTS ===
void RootWindow::ResizeRoot(){
+ if(DEBUG){ qDebug() << "Resize Root..."; }
QList<QScreen*> scrns = QApplication::screens();
//Update all the screen locations and ID's in the WALLPAPERS list
QRect fullscreen;
QStringList valid;
//Update the size of the rootWindow itself
for(int i=0; i<scrns.length(); i++){
+ if(DEBUG){ qDebug() << " - Found Screen:" << scrns[i]->name() << scrns[i]->geometry(); }
fullscreen = fullscreen.united(scrns[i]->geometry());
valid << scrns[i]->name();
for(int j=0; j<WALLPAPERS.length(); j++){
@@ -129,11 +133,13 @@ void RootWindow::ResizeRoot(){
}
}
//Trigger a repaint and send out any signals
+ if(DEBUG){ qDebug() << " - FullScreen Geometry:" << fullscreen; }
this->setGeometry(fullscreen);
this->update();
emit RootResized(fullscreen);
if(!valid.isEmpty()){ emit NewScreens(valid); }
if(!invalid.isEmpty()){ emit RemovedScreens(invalid); }
+ if(DEBUG){ qDebug() << " - Geom after change:" << this->geometry(); }
}
void RootWindow::ChangeWallpaper(QString id, RootWindow::ScaleType scale, QString file){
@@ -148,6 +154,7 @@ void RootWindow::ChangeWallpaper(QString id, RootWindow::ScaleType scale, QStrin
}
}
if(!found){
+ ResizeRoot();
//Need to create a new screeninfo structure
QList<QScreen*> scrns = QApplication::screens();
for(int i=0; i<scrns.length(); i++){
@@ -169,7 +176,7 @@ void RootWindow::ChangeWallpaper(QString id, RootWindow::ScaleType scale, QStrin
void RootWindow::NewWindow(NativeWindow *win){
RootSubWindow *subwin = 0;
- qDebug() << "Got New Window:" << win->property(NativeWindow::Title);
+ //qDebug() << "Got New Window:" << win->property(NativeWindow::Title);
for(int i=0; i<WINDOWS.length() && subwin==0; i++){
if(WINDOWS[i]->id() == win->id()){ subwin = WINDOWS[i]; }
}
@@ -185,7 +192,7 @@ void RootWindow::NewWindow(NativeWindow *win){
void RootWindow::CloseWindow(WId win){
for(int i=0; i<WINDOWS.length(); i++){
- if(WINDOWS[i]->id() == win){ qDebug() << "Remove Window From Root List"; WINDOWS.takeAt(i)->clientClosed(); break; }
+ if(WINDOWS[i]->id() == win){ WINDOWS.takeAt(i)->clientClosed(); break; }
}
}
@@ -196,10 +203,12 @@ void RootWindow::paintEvent(QPaintEvent *ev){
//qDebug() << "RootWindow: PaintEvent:" << ev->rect(); //<< QDateTime::currentDateTime()->toString(QDateTime::ShortDate);
bool found = false;
QPainter painter(this);
+ QRect geom = ev->rect();
+ geom.adjust(-10,-10,10,10); //give it a few more pixels in each direction to repaint (noticing some issues in Qt 5.7.1)
for(int i=0; i<WALLPAPERS.length(); i++){
- if(WALLPAPERS[i].area.intersects(ev->rect()) ){
+ if(WALLPAPERS[i].area.intersects(geom) ){
found = true;
- QRect intersect = WALLPAPERS[i].area.intersected(ev->rect());
+ QRect intersect = WALLPAPERS[i].area.intersected(geom);
painter.drawPixmap( intersect, WALLPAPERS[i].wallpaper, intersect.translated(-WALLPAPERS[i].area.x(), -WALLPAPERS[i].area.y()) );
}
}
diff --git a/src-qt5/core/libLumina/RootWindow.pri b/src-qt5/core/libLumina/RootWindow.pri
index e4d5f00b..b83240e5 100644
--- a/src-qt5/core/libLumina/RootWindow.pri
+++ b/src-qt5/core/libLumina/RootWindow.pri
@@ -1,7 +1,8 @@
# Files
SOURCES *= $${PWD}/RootWindow.cpp \
- $${PWD}/RootSubWindow.cpp
+ $${PWD}/RootSubWindow.cpp \
+ $${PWD}/RootSubWindow-animations.cpp
HEADERS *= $${PWD}/RootWindow.h \
$${PWD}/RootSubWindow.h
@@ -12,3 +13,4 @@ INCLUDEPATH *= ${PWD}
include(LUtils.pri)
include(NativeWindow.pri)
include(LIconCache.pri)
+include(DesktopSettings.pri)
diff --git a/src-qt5/core/libLumina/XDGMime.cpp b/src-qt5/core/libLumina/XDGMime.cpp
new file mode 100644
index 00000000..3983f6b5
--- /dev/null
+++ b/src-qt5/core/libLumina/XDGMime.cpp
@@ -0,0 +1,362 @@
+//===========================================
+// Lumina-DE source code
+// Copyright (c) 2013-2017, Ken Moore
+// Available under the 3-clause BSD license
+// See the LICENSE file for full details
+//===========================================
+#include "XDGMime.h"
+#include <LUtils.h>
+#include <LuminaOS.h>
+
+static QStringList mimeglobs;
+static qint64 mimechecktime;
+
+QString XDGMime::fromFileName(QString filename){
+ //Convert a filename into a mimetype
+ return findAppMimeForFile(filename.section("/",-1),false);
+}
+
+QStringList XDGMime::listFromFileName(QString filename){
+ //Convert a filename into a list of mimetypes (arranged in descending priority)
+ return findAppMimeForFile(filename.section("/",-1),true).split("::::");
+}
+QString XDGMime::toIconName(QString mime){
+ if(!mime.contains("/") || mime.isEmpty() ){ return "unknown"; } //not a mime type
+ //Mime type to icon name
+ mime.replace("/","-"); //translate to icon mime name
+ return mime;
+}
+
+
+QStringList XDGMime::toFileExtensions(QString mime){
+ QStringList out;
+ QStringList mimes = XDGMime::loadMimeFileGlobs2().filter(mime);
+ for(int i=0; i<mimes.length(); i++){
+ out << mimes[i].section(":",2,2); // "*.<extension>"
+ }
+ //qDebug() << "Mime to Files:" << mime << out;
+ return out;
+}
+
+// ====================
+// BACKEND FUNCTIONS
+// ====================
+QStringList XDGMime::systemMimeDirs(){
+ //Returns a list of all the directories where *.xml MIME files can be found
+ QStringList appDirs = QString(getenv("XDG_DATA_HOME")).split(":");
+ appDirs << QString(getenv("XDG_DATA_DIRS")).split(":");
+ if(appDirs.isEmpty()){ appDirs << "/usr/local/share" << "/usr/share"; }
+ //Now create a valid list
+ QStringList out;
+ for(int i=0; i<appDirs.length(); i++){
+ if( QFile::exists(appDirs[i]+"/mime") ){
+ out << appDirs[i]+"/mime";
+ }
+ }
+ return out;
+}
+
+QString XDGMime::findAppMimeForFile(QString filename, bool multiple){
+ QString out;
+ QString extension = filename.section(".",1,-1);
+ if("."+extension == filename){ extension.clear(); } //hidden file without extension
+ //qDebug() << "MIME SEARCH:" << filename << extension;
+ QStringList mimefull = XDGMime::loadMimeFileGlobs2();
+ QStringList mimes;
+ //Just in case the filename is a mimetype itself
+ if( mimefull.filter(":"+filename+":").length() == 1){
+ return filename;
+ }
+while(mimes.isEmpty()){
+ //Check for an exact mimetype match
+ if(mimefull.filter(":"+extension+":").length() == 1){
+ return extension;
+ }
+ //Look for globs at the end of the filename
+ if(!extension.isEmpty()){
+ mimes = mimefull.filter(":*."+extension);
+ //If nothing found, try a case-insensitive search
+ if(mimes.isEmpty()){ mimes = mimefull.filter(":*."+extension, Qt::CaseInsensitive); }
+ //Now ensure that the filter was accurate (*.<extention>.<something> will still be caught)
+ for(int i=0; i<mimes.length(); i++){
+ if(!filename.endsWith( mimes[i].section(":*",-1), Qt::CaseInsensitive )){ mimes.removeAt(i); i--; }
+ else if(mimes[i].section(":",0,0).length()==2){ mimes[i].prepend("0"); } //ensure 3-character priority number
+ else if(mimes[i].section(":",0,0).length()==1){ mimes[i].prepend("00"); } //ensure 3-character priority number
+ }
+ }
+ //Look for globs at the start of the filename
+ if(mimes.isEmpty()){
+ mimes = mimefull.filter(":"+filename.left(2)); //look for the first 2 characters initially
+ //Note: This initial filter will only work if the wildcard (*) is not within the first 2 characters of the pattern
+ //Now ensure that the filter was accurate
+ for(int i=0; i<mimes.length(); i++){
+ if(!filename.startsWith( mimes[i].section(":",3,-1,QString::SectionSkipEmpty).section("*",0,0), Qt::CaseInsensitive )){ mimes.removeAt(i); i--; }
+ }
+ }
+ if(mimes.isEmpty()){
+ if(extension.contains(".")){ extension = extension.section(".",1,-1); }
+ else{ break; }
+ }
+ } //end of mimes while loop
+ mimes.sort(); //this automatically puts them in reverse weight order (100 on down)
+ QStringList matches;
+ //qDebug() << "Mimes:" << mimes;
+ for(int m=mimes.length()-1; m>=0; m--){
+ QString mime = mimes[m].section(":",1,1,QString::SectionSkipEmpty);
+ matches << mime;
+ }
+ //qDebug() << "Matches:" << matches;
+ if(multiple && !matches.isEmpty() ){ out = matches.join("::::"); }
+ else if( !matches.isEmpty() ){ out = matches.first(); }
+ else{ //no mimetype found - assign one (internal only - no system database changes)
+ if(extension.isEmpty()){ out = "unknown/"+filename.toLower(); }
+ else{ out = "unknown/"+extension.toLower(); }
+ }
+ //qDebug() << "Out:" << out;
+ return out;
+}
+
+QStringList XDGMime::listFileMimeDefaults(){
+ //This will spit out a itemized list of all the mimetypes and relevant info
+ // Output format: <mimetype>::::<extension>::::<default>::::<localized comment>
+ QStringList mimes = XDGMime::loadMimeFileGlobs2();
+ //Now start filling the output list
+ QStringList out;
+ for(int i=0; i<mimes.length(); i++){
+ QString mimetype = mimes[i].section(":",1,1);
+ QStringList tmp = mimes.filter(mimetype);
+ //Collect all the different extensions with this mimetype
+ QStringList extlist;
+ for(int j=0; j<tmp.length(); j++){
+ mimes.removeAll(tmp[j]);
+ extlist << tmp[j].section(":",2,2);
+ }
+ extlist.removeDuplicates(); //just in case
+ //Now look for a current default for this mimetype
+ QString dapp = XDGMime::findDefaultAppForMime(mimetype); //default app;
+
+ //Create the output entry
+ //qDebug() << "Mime entry:" << i << mimetype << dapp;
+ out << mimetype+"::::"+extlist.join(", ")+"::::"+dapp+"::::"+XDGMime::findMimeComment(mimetype);
+
+ i--; //go back one (continue until the list is empty)
+ }
+ return out;
+}
+
+QString XDGMime::findMimeComment(QString mime){
+ QString comment;
+ QStringList dirs = XDGMime::systemMimeDirs();
+ QString lang = QString(getenv("LANG")).section(".",0,0);
+ QString shortlang = lang.section("_",0,0);
+ for(int i=0; i<dirs.length(); i++){
+ if(QFile::exists(dirs[i]+"/"+mime+".xml")){
+ QStringList info = LUtils::readFile(dirs[i]+"/"+mime+".xml");
+ QStringList filter = info.filter("<comment xml:lang=\""+lang+"\">");
+ //First look for a full language match, then short language, then general comment
+ if(filter.isEmpty()){ filter = info.filter("<comment xml:lang=\""+shortlang+"\">"); }
+ if(filter.isEmpty()){ filter = info.filter("<comment>"); }
+ if(!filter.isEmpty()){
+ comment = filter.first().section(">",1,1).section("</",0,0);
+ break;
+ }
+ }
+ }
+ return comment;
+}
+
+QString XDGMime::findDefaultAppForMime(QString mime){
+ //First get the priority-ordered list of default file locations
+ QStringList dirs;
+ dirs << QString(getenv("XDG_CONFIG_HOME"))+"/lumina-mimeapps.list" \
+ << QString(getenv("XDG_CONFIG_HOME"))+"/mimeapps.list";
+ QStringList tmp = QString(getenv("XDG_CONFIG_DIRS")).split(":");
+ for(int i=0; i<tmp.length(); i++){ dirs << tmp[i]+"/lumina-mimeapps.list"; }
+ for(int i=0; i<tmp.length(); i++){ dirs << tmp[i]+"/mimeapps.list"; }
+ dirs << QString(getenv("XDG_DATA_HOME"))+"/applications/lumina-mimeapps.list" \
+ << QString(getenv("XDG_DATA_HOME"))+"/applications/mimeapps.list";
+ tmp = QString(getenv("XDG_DATA_DIRS")).split(":");
+ for(int i=0; i<tmp.length(); i++){ dirs << tmp[i]+"/applications/lumina-mimeapps.list"; }
+ for(int i=0; i<tmp.length(); i++){ dirs << tmp[i]+"/applications/mimeapps.list"; }
+
+ //Now go through all the files in order of priority until a default is found
+ QString cdefault;
+ for(int i=0; i<dirs.length() && cdefault.isEmpty(); i++){
+ if(!QFile::exists(dirs[i])){ continue; }
+ QStringList info = LUtils::readFile(dirs[i]);
+ if(info.isEmpty()){ continue; }
+ QStringList white; //lists to keep track of during the search (black unused at the moment)
+ QString workdir = dirs[i].section("/",0,-2); //just the directory
+ // qDebug() << "Check File:" << mime << dirs[i] << workdir;
+ int def = info.indexOf("[Default Applications]"); //find this line to start on
+ if(def>=0){
+ for(int d=def+1; d<info.length(); d++){
+ //qDebug() << "Check Line:" << info[d];
+ if(info[d].startsWith("[")){ break; } //starting a new section now - finished with defaults
+ if(info[d].contains(mime+"=") ){
+ white = info[d].section("=",1,-1).split(";") + white; //exact mime match - put at front of list
+ break; //already found exact match
+ }else if(info[d].contains("*") && info[d].contains("=") ){
+ QRegExp rg(info[d].section("=",0,0), Qt::CaseSensitive, QRegExp::WildcardUnix);
+ if(rg.exactMatch(mime)){
+ white << info[d].section("=",1,-1).split(";"); //partial mime match - put at end of list
+ }
+ }
+ }
+ }
+ // Now check for any white-listed files in this work dir
+ // find the full path to the file (should run even if nothing in this file)
+ //qDebug() << "WhiteList:" << white;
+ for(int w=0; w<white.length(); w++){
+ if(white[w].isEmpty()){ continue; }
+ //First check for absolute paths to *.desktop file
+ if( white[w].startsWith("/") ){
+ if( QFile::exists(white[w]) ){ cdefault=white[w]; break; }
+ else{ white.removeAt(w); w--; } //invalid file path - remove it from the list
+ }
+ //Now check for relative paths to file (in current priority-ordered work dir)
+ else if( QFile::exists(workdir+"/"+white[w]) ){ cdefault=workdir+"/"+white[w]; break; }
+ //Now go through the XDG DATA dirs and see if the file is in there
+ else{
+ white[w] = LUtils::AppToAbsolute(white[w]);
+ if(QFile::exists(white[w])){ cdefault = white[w]; }
+ }
+ }
+ /* WRITTEN BUT UNUSED CODE FOR MIMETYPE ASSOCIATIONS
+ //Skip using this because it is simply an alternate/unsupported standard that conflicts with
+ the current mimetype database standards. It is better/faster to parse 1 or 2 database glob files
+ rather than have to iterate through hundreds of *.desktop files *every* time you need to
+ find an application
+
+ if(addI<0 && remI<0){
+ //Simple Format: <mimetype>=<*.desktop file>;<*.desktop file>;.....
+ // (usually only one desktop file listed)
+ info = info.filter(mimetype+"=");
+ //Load the listed default(s)
+ for(int w=0; w<info.length(); w++){
+ white << info[w].section("=",1,50).split(";");
+ }
+ }else{
+ //Non-desktop specific mimetypes file: has a *very* convoluted/inefficient algorithm (required by spec)
+ if(addI<0){ addI = info.length(); } //no add section
+ if(remI<0){ remI = info.length(); } // no remove section:
+ //Whitelist items
+ for(int a=addI+1; a!=remI && a<info.length(); a++){
+ if(info[a].contains(mimetype+"=")){
+ QStringList tmp = info[a].section("=",1,50).split(";");
+ for(int t=0; t<tmp.length(); t++){
+ if(!black.contains(tmp[t])){ white << tmp[t]; } //make sure this item is not on the black list
+ }
+ break;
+ }
+ }
+ //Blacklist items
+ for(int a=remI+1; a!=addI && a<info.length(); a++){
+ if(info[a].contains(mimetype+"=")){ black << info[a].section("=",1,50).split(";"); break;}
+ }
+
+ //STEPS 3/4 not written yet
+
+ } //End of non-DE mimetypes file */
+
+ } //End loop over file
+ return cdefault;
+}
+
+QStringList XDGMime::findAvailableAppsForMime(QString mime){
+ QStringList dirs = LUtils::systemApplicationDirs();
+ QStringList out;
+ //Loop over all possible directories that contain *.destop files
+ // and check for the mimeinfo.cache file
+ for(int i=0; i<dirs.length(); i++){
+ if(QFile::exists(dirs[i]+"/mimeinfo.cache")){
+ QStringList matches = LUtils::readFile(dirs[i]+"/mimeinfo.cache").filter(mime+"=");
+ //Find any matches for our mimetype in the cache
+ for(int j=0; j<matches.length(); j++){
+ QStringList files = matches[j].section("=",1,1).split(";",QString::SkipEmptyParts);
+ //Verify that each file exists before putting the full path to the file in the output
+ for(int m=0; m<files.length(); m++){
+ if(QFile::exists(dirs[i]+"/"+files[m])){
+ out << dirs[i]+"/"+files[m];
+ }else if(files[m].contains("-")){ //kde4-<filename> -> kde4/<filename> (stupid KDE variations!!)
+ files[m].replace("-","/");
+ if(QFile::exists(dirs[i]+"/"+files[m])){
+ out << dirs[i]+"/"+files[m];
+ }
+ }
+ }
+ }
+ }
+ }
+ //qDebug() << "Found Apps for Mime:" << mime << out << dirs;
+ return out;
+}
+
+void XDGMime::setDefaultAppForMime(QString mime, QString app){
+ QString filepath = QString(getenv("XDG_CONFIG_HOME"))+"/lumina-mimeapps.list";
+ QStringList cinfo = LUtils::readFile(filepath);
+ //If this is a new file, make sure to add the header appropriately
+ if(cinfo.isEmpty()){ cinfo << "#Automatically generated with lumina-config" << "# DO NOT CHANGE MANUALLY" << "[Default Applications]"; }
+ //Check for any current entry for this mime type
+ QStringList tmp = cinfo.filter(mime+"=");
+ int index = -1;
+ if(!tmp.isEmpty()){ index = cinfo.indexOf(tmp.first()); }
+ //Now add the new default entry (if necessary)
+ if(app.isEmpty()){
+ if(index>=0){ cinfo.removeAt(index); } //Remove entry
+ }else{
+ if(index<0){
+ cinfo << mime+"="+app+";"; //new entry
+ }else{
+ cinfo[index] = mime+"="+app+";"; //overwrite existing entry
+ }
+ }
+ LUtils::writeFile(filepath, cinfo, true);
+ return;
+}
+
+QStringList XDGMime::findAVFileExtensions(){
+ //output format: QDir name filter for valid A/V file extensions
+ QStringList globs = XDGMime::loadMimeFileGlobs2();
+ QStringList av = globs.filter(":audio/");
+ av << globs.filter(":video/");
+ for(int i=0; i<av.length(); i++){
+ //Just use all audio/video mimetypes (for now)
+ av[i] = av[i].section(":",2,2);
+ //Qt5 Auto detection (broken - QMediaPlayer seg faults with Qt 5.3 - 11/24/14)
+ /*if( QMultimedia::NotSupported != QMediaPlayer::hasSupport(av[i].section(":",1,1)) ){ av[i] = av[i].section(":",2,2); }
+ else{ av.removeAt(i); i--; }*/
+ }
+ av.removeDuplicates();
+ return av;
+}
+
+QStringList XDGMime::loadMimeFileGlobs2(){
+ //output format: <weight>:<mime type>:<file extension (*.something)>
+ if(mimeglobs.isEmpty() || (mimechecktime < (QDateTime::currentMSecsSinceEpoch()-30000)) ){
+ //qDebug() << "Loading globs2 mime DB files";
+ mimeglobs.clear();
+ mimechecktime = QDateTime::currentMSecsSinceEpoch(); //save the current time this was last checked
+ QStringList dirs = XDGMime::systemMimeDirs();
+ for(int i=0; i<dirs.length(); i++){
+ if(QFile::exists(dirs[i]+"/globs2")){
+ QFile file(dirs[i]+"/globs2");
+ if(!file.exists()){ continue; }
+ if(!file.open(QIODevice::ReadOnly | QIODevice::Text)){ continue; }
+ QTextStream in(&file);
+ while(!in.atEnd()){
+ QString line = in.readLine();
+ if(!line.startsWith("#")){
+ mimeglobs << line.simplified();
+ }
+ }
+ file.close();
+ }
+ if(i==dirs.length()-1 && mimeglobs.isEmpty()){
+ //Could not find the mimetype database on the system - use the fallback file distributed with Lumina
+ if(dirs.last()!= LOS::LuminaShare()){ dirs << LOS::LuminaShare(); } //just in case it was not installed
+ }
+ }//end loop over dirs
+ }
+ return mimeglobs;
+}
diff --git a/src-qt5/core/libLumina/XDGMime.h b/src-qt5/core/libLumina/XDGMime.h
new file mode 100644
index 00000000..a8d91142
--- /dev/null
+++ b/src-qt5/core/libLumina/XDGMime.h
@@ -0,0 +1,57 @@
+//===========================================
+// Lumina-DE source code
+// Copyright (c) 2013-2017, Ken Moore
+// Available under the 3-clause BSD license
+// See the LICENSE file for full details
+//===========================================
+// These structures/classes are for conforming to the FreeDesktop standards
+// REFERENCE:
+// (DATABASE) https://www.freedesktop.org/wiki/Specifications/shared-mime-info-spec/
+// (APPLICATIONS) https://www.freedesktop.org/wiki/Specifications/mime-apps-spec/
+// Mime Application Version Compliance: 1.0.1 (11/14/14) (Skips random *.desktop parsing: ~80% compliant)
+//===========================================
+#ifndef _LUMINA_LIBRARY_XDG_MIME_CLASS_H
+#define _LUMINA_LIBRARY_XDG_MIME_CLASS_H
+
+#include <QFile>
+#include <QDir>
+#include <QFileInfo>
+#include <QStringList>
+#include <QString>
+#include <QList>
+#include <QDateTime>
+#include <QTextStream>
+#include <QRegExp>
+#include <QDebug>
+
+class XDGMime{
+public:
+ // PRIMARY FUNCTIONS
+ static QString fromFileName(QString filename); //Convert a filename into a mimetype
+ static QStringList listFromFileName(QString filename); //Convert a filename into a list of mimetypes (arranged in descending priority)
+ static QString toIconName(QString mime); //Mime type to icon name
+ //Find the file extension for a particular mime-type
+ static QStringList toFileExtensions(QString mime);
+
+ // LESSER-USED FUNCTIONS
+ //List all the mime-type directories
+ static QStringList systemMimeDirs();
+ //Find the mime-type of a particular file extension
+ static QString findAppMimeForFile(QString filename, bool multiple = false);
+ // Simplification function for finding all info regarding current mime defaults
+ static QStringList listFileMimeDefaults();
+ //Find the localized comment string for a particular mime-type
+ static QString findMimeComment(QString mime);
+ //Find the default application for a mime-type
+ static QString findDefaultAppForMime(QString mime);
+ //Fine the available applications for a mime-type
+ static QStringList findAvailableAppsForMime(QString mime);
+ //Set the default application for a mime-type
+ static void setDefaultAppForMime(QString mime, QString app);
+ //List all the registered audio/video file extensions
+ static QStringList findAVFileExtensions();
+ //Load all the "globs2" mime database files
+ static QStringList loadMimeFileGlobs2();
+
+};
+#endif
diff --git a/src-qt5/core/libLumina/XDGMime.pri b/src-qt5/core/libLumina/XDGMime.pri
new file mode 100644
index 00000000..f7cb8b6d
--- /dev/null
+++ b/src-qt5/core/libLumina/XDGMime.pri
@@ -0,0 +1,10 @@
+#QT *= multimedia svg
+
+#XDG Mime Files
+SOURCES *= $${PWD}/XDGMime.cpp
+HEADERS *= $${PWD}/XDGMime.h
+
+INCLUDEPATH *= ${PWD}
+
+#include LUtils and LuminaOS
+include(LUtils.pri)
diff --git a/src-qt5/core/lumina-desktop-unified/LSession.cpp b/src-qt5/core/lumina-desktop-unified/LSession.cpp
index 0b9a9b35..c6f79584 100644
--- a/src-qt5/core/lumina-desktop-unified/LSession.cpp
+++ b/src-qt5/core/lumina-desktop-unified/LSession.cpp
@@ -18,8 +18,6 @@
NativeWindowSystem* Lumina::NWS = 0;
NativeEventFilter* Lumina::NEF = 0;
LScreenSaver* Lumina::SS = 0;
-//DesktopSettings* Lumina::SETTINGS = 0;
-//Lumina::WM = 0;
QThread* Lumina::EVThread = 0;
RootWindow* Lumina::ROOTWIN = 0;
XDGDesktopList* Lumina::APPLIST = 0;
@@ -49,7 +47,6 @@ LSession::LSession(int &argc, char ** argv) : LSingleApplication(argc, argv, "lu
//Now initialize the global objects (but do not start them yet)
Lumina::NEF = new NativeEventFilter();
Lumina::NWS = new NativeWindowSystem();
- //Lumina::SETTINGS = new DesktopSettings();
Lumina::SS = new LScreenSaver();
//Now put the Native Window System into it's own thread to keep things snappy
Lumina::EVThread = new QThread();
@@ -67,7 +64,6 @@ LSession::~LSession(){
//Clean up the global objects as needed
if(Lumina::NEF!=0){ Lumina::NEF->deleteLater(); }
if(Lumina::NWS!=0){ Lumina::NWS->deleteLater(); }
- //if(Lumina::EFILTER!=0){ Lumina::EFILTER->deleteLater(); }
if(Lumina::SS!=0){ Lumina::SS->deleteLater(); }
if(Lumina::EVThread!=0){
if(Lumina::EVThread->isRunning()){ Lumina::EVThread->quit(); }
@@ -385,11 +381,46 @@ void LSession::StartReboot(bool skipupdates){
QCoreApplication::exit(0);
}
-void LSession::LaunchApplication(QString app){
-
+void LSession::LaunchApplication(QString exec){
+ ExternalProcess::launch(exec);
}
-void LSession::LaunchStandardApplication(QString app){
+void LSession::LaunchStandardApplication(QString app, QStringList args){
+ //Find/replace standardized apps with thier mimetypes
+ if(app.startsWith("--")){ app = "application/"+app.section("--",-1).simplified(); }
+ //First see if this is a mimetype with a default application
+ if(app.count("/")==1 && !app.startsWith("/")){
+ QString mimeapp = XDGMime::findDefaultAppForMime(app);
+ if(!mimeapp.isEmpty()){ app = mimeapp; }
+ }
+ if(app.endsWith(".desktop")){
+ //Get the XDGDesktop structure
+ XDGDesktop *desk = 0; bool cleanup = false;
+ if(app.startsWith("/") && QFile::exists(app)){ desk = new XDGDesktop(app); cleanup = true; }
+ if(!desk->isValid()){
+ //Need to find the app within the current list
+ QHash<QString, XDGDesktop*>applist = Lumina::APPLIST->files;
+ if(cleanup){ desk->deleteLater(); desk = 0; cleanup = false; }
+ app = app.section("/",-1); //make sure this is a relative path
+ QStringList list = applist.keys().filter("/"+app);
+ if(!list.filter(QDir::homePath()).isEmpty()){ desk = applist[list.filter(QDir::homePath()).first()]; } //prefer user-override files
+ if(desk==0 || !desk->isValid()){
+ desk = 0;
+ for(int i=0; i<list.length() && desk==0; i++){
+ XDGDesktop *tmp = applist[list[i]];
+ if(tmp->isValid()){ desk = tmp; }
+ }
+ }
+ }
+ if(desk!=0 && desk->isValid()){
+ //Got the application - go ahead and assemble the startup command
+ QString exec = desk->generateExec(args); //args are embedded into the exec command as needed
+ ExternalProcess::launch(exec, QStringList(), desk->startupNotify);
+ }
+ if(cleanup){ desk->deleteLater(); }
+ }else{
+ ExternalProcess::launch(app, args, false); // do not use startup notify cursor
+ }
}
diff --git a/src-qt5/core/lumina-desktop-unified/LSession.h b/src-qt5/core/lumina-desktop-unified/LSession.h
index 0d666bfa..85cc050c 100644
--- a/src-qt5/core/lumina-desktop-unified/LSession.h
+++ b/src-qt5/core/lumina-desktop-unified/LSession.h
@@ -32,8 +32,8 @@ public slots:
void StartLogout();
void StartShutdown(bool skipupdates = false);
void StartReboot(bool skipupdates = false);
- void LaunchApplication(QString app);
- void LaunchStandardApplication(QString app);
+ void LaunchApplication(QString exec);
+ void LaunchStandardApplication(QString app, QStringList args = QStringList());
void reloadIconTheme(); //will emit the IconThemeChanged signal when ready
void switchLocale(QString localeCode); //will emit the LocaleChanged signal when ready
diff --git a/src-qt5/core/lumina-desktop-unified/defaults/desktop/keys.conf b/src-qt5/core/lumina-desktop-unified/defaults/desktop/keys.conf
index c1417b85..59959194 100644
--- a/src-qt5/core/lumina-desktop-unified/defaults/desktop/keys.conf
+++ b/src-qt5/core/lumina-desktop-unified/defaults/desktop/keys.conf
@@ -4,5 +4,5 @@ Pause=Lockscreen
Alt+L=Lockscreen
[desktop]
-Alt+F1=Launch: terminal
-Print=Launch: screenshot
+Alt+F1=Launch: --terminal
+Print=Launch: --screenshot
diff --git a/src-qt5/core/lumina-desktop-unified/global-includes.h b/src-qt5/core/lumina-desktop-unified/global-includes.h
index 1d0ab068..92f895c2 100644
--- a/src-qt5/core/lumina-desktop-unified/global-includes.h
+++ b/src-qt5/core/lumina-desktop-unified/global-includes.h
@@ -62,6 +62,7 @@
#include <NativeWindow.h>
#include <NativeWindowSystem.h>
#include <NativeEventFilter.h>
+#include <XDGMime.h>
// Standard C includes
#include <unistd.h>
diff --git a/src-qt5/core/lumina-desktop-unified/lumina-desktop.pro b/src-qt5/core/lumina-desktop-unified/lumina-desktop.pro
index defa66f4..79f2ba6f 100644
--- a/src-qt5/core/lumina-desktop-unified/lumina-desktop.pro
+++ b/src-qt5/core/lumina-desktop-unified/lumina-desktop.pro
@@ -19,6 +19,7 @@ include(../libLumina/DesktopSettings.pri)
include(../libLumina/RootWindow.pri)
include(../libLumina/ExternalProcess.pri)
include(../libLumina/NativeWindow.pri)
+include(../libLumina/XDGMime.pri)
#include all the main individual source groups
include(src-screensaver/screensaver.pri)
diff --git a/src-qt5/core/lumina-desktop-unified/main.cpp b/src-qt5/core/lumina-desktop-unified/main.cpp
index 0b67de46..8e40f7eb 100644
--- a/src-qt5/core/lumina-desktop-unified/main.cpp
+++ b/src-qt5/core/lumina-desktop-unified/main.cpp
@@ -30,6 +30,8 @@ int main(int argc, char ** argv)
setenv("XDG_CURRENT_DESKTOP","Lumina",1);
setenv("QT_NO_GLIB", "1", 1); //Disable the glib event loop within Qt at runtime (performance hit + bugs)
unsetenv("QT_QPA_PLATFORMTHEME"); //causes issues with Lumina themes - not many people have this by default...
+ unsetenv("QT_AUTO_SCREEN_SCALE_FACTOR"); //need exact-pixel measurements (no fake scaling)
+
//Startup the session
if(DEBUG){ qDebug() << "Starting unified session"; }
LSession a(argc, argv);
diff --git a/src-qt5/core/lumina-desktop-unified/src-desktop/ContextMenu.h b/src-qt5/core/lumina-desktop-unified/src-desktop/ContextMenu.h
index 1e3165ec..7fd21967 100644
--- a/src-qt5/core/lumina-desktop-unified/src-desktop/ContextMenu.h
+++ b/src-qt5/core/lumina-desktop-unified/src-desktop/ContextMenu.h
@@ -32,6 +32,8 @@ private slots:
signals:
void LockSession();
void showLeaveDialog();
+ void LaunchStandardApplication(QString);
+ void LaunchApplication(QString);
};
#endif
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 02f6a10f..dcede34c 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
@@ -1,31 +1,3 @@
-/*
- * Copyright (c) 2014-2017, Ilya Kotov <forkotov02@hotmail.ru>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
#include <QVariant>
#include <QSettings>
#include <QGuiApplication>
@@ -60,248 +32,199 @@ Q_LOGGING_CATEGORY(llthemeengine, "lthemeengine")
//QT_QPA_PLATFORMTHEME=lthemeengine
-lthemeenginePlatformTheme::lthemeenginePlatformTheme()
-{
- if(QGuiApplication::desktopSettingsAware())
- {
- readSettings();
- QMetaObject::invokeMethod(this, "applySettings", Qt::QueuedConnection);
+lthemeenginePlatformTheme::lthemeenginePlatformTheme(){
+ if(QGuiApplication::desktopSettingsAware()){
+ readSettings();
+ QMetaObject::invokeMethod(this, "applySettings", Qt::QueuedConnection);
#ifdef QT_WIDGETS_LIB
- QMetaObject::invokeMethod(this, "createFSWatcher", Qt::QueuedConnection);
+ QMetaObject::invokeMethod(this, "createFSWatcher", Qt::QueuedConnection);
#endif
- QGuiApplication::setFont(m_generalFont);
+ QGuiApplication::setFont(m_generalFont);
}
- qCDebug(llthemeengine) << "using lthemeengine plugin";
+ qCDebug(llthemeengine) << "using lthemeengine plugin";
#ifdef QT_WIDGETS_LIB
- if(!QStyleFactory::keys().contains("lthemeengine-style"))
- qCCritical(llthemeengine) << "unable to find lthemeengine proxy style";
+ if(!QStyleFactory::keys().contains("lthemeengine-style"))
+ qCCritical(llthemeengine) << "unable to find lthemeengine proxy style";
#endif
}
-lthemeenginePlatformTheme::~lthemeenginePlatformTheme()
-{
- if(m_customPalette)
- delete m_customPalette;
+lthemeenginePlatformTheme::~lthemeenginePlatformTheme(){
+ if(m_customPalette)
+ delete m_customPalette;
}
#if (QT_VERSION >= QT_VERSION_CHECK(5, 7, 0)) && !defined(QT_NO_DBUS)
-QPlatformMenuBar *lthemeenginePlatformTheme::createPlatformMenuBar() const
-{
- if(m_checkDBusGlobalMenu)
- {
- QDBusConnection conn = QDBusConnection::sessionBus();
- m_dbusGlobalMenuAvailable = conn.interface()->isServiceRegistered("com.canonical.AppMenu.Registrar");
- qCDebug(llthemeengine) << "D-Bus global menu:" << (m_dbusGlobalMenuAvailable ? "yes" : "no");
+QPlatformMenuBar *lthemeenginePlatformTheme::createPlatformMenuBar() const{
+ if(m_checkDBusGlobalMenu){
+ QDBusConnection conn = QDBusConnection::sessionBus();
+ m_dbusGlobalMenuAvailable = conn.interface()->isServiceRegistered("com.canonical.AppMenu.Registrar");
+ qCDebug(llthemeengine) << "D-Bus global menu:" << (m_dbusGlobalMenuAvailable ? "yes" : "no");
}
- return (m_dbusGlobalMenuAvailable ? new QDBusMenuBar() : nullptr);
+ return (m_dbusGlobalMenuAvailable ? new QDBusMenuBar() : nullptr);
}
#endif
#if !defined(QT_NO_DBUS) && !defined(QT_NO_SYSTEMTRAYICON)
-QPlatformSystemTrayIcon *lthemeenginePlatformTheme::createPlatformSystemTrayIcon() const
-{
- if(m_checkDBusTray)
- {
- QDBusMenuConnection conn;
- m_dbusTrayAvailable = conn.isStatusNotifierHostRegistered();
- m_checkDBusTray = false;
- qCDebug(llthemeengine) << "D-Bus system tray:" << (m_dbusTrayAvailable ? "yes" : "no");
+QPlatformSystemTrayIcon *lthemeenginePlatformTheme::createPlatformSystemTrayIcon() const{
+ if(m_checkDBusTray){
+ QDBusMenuConnection conn;
+ m_dbusTrayAvailable = conn.isStatusNotifierHostRegistered();
+ m_checkDBusTray = false;
+ qCDebug(llthemeengine) << "D-Bus system tray:" << (m_dbusTrayAvailable ? "yes" : "no");
}
- return (m_dbusTrayAvailable ? new QDBusTrayIcon() : nullptr);
+ return (m_dbusTrayAvailable ? new QDBusTrayIcon() : nullptr);
}
#endif
-const QPalette *lthemeenginePlatformTheme::palette(QPlatformTheme::Palette type) const
-{
- Q_UNUSED(type);
- return (m_usePalette ? m_customPalette : nullptr);
+const QPalette *lthemeenginePlatformTheme::palette(QPlatformTheme::Palette type) const{
+ Q_UNUSED(type);
+ return (m_usePalette ? m_customPalette : nullptr);
}
-const QFont *lthemeenginePlatformTheme::font(QPlatformTheme::Font type) const
-{
- if(type == QPlatformTheme::FixedFont)
- return &m_fixedFont;
- return &m_generalFont;
+const QFont *lthemeenginePlatformTheme::font(QPlatformTheme::Font type) const{
+ if(type == QPlatformTheme::FixedFont)
+ return &m_fixedFont;
+ return &m_generalFont;
}
-QVariant lthemeenginePlatformTheme::themeHint(QPlatformTheme::ThemeHint hint) const
-{
- switch (hint)
- {
- case QPlatformTheme::CursorFlashTime:
- return m_cursorFlashTime;
- case MouseDoubleClickInterval:
- return m_doubleClickInterval;
- case QPlatformTheme::ToolButtonStyle:
- return m_toolButtonStyle;
- case QPlatformTheme::SystemIconThemeName:
- return m_iconTheme;
- case QPlatformTheme::StyleNames:
- return QStringList() << "lthemeengine-style";
- case QPlatformTheme::IconThemeSearchPaths:
- return lthemeengine::iconPaths();
- case DialogButtonBoxLayout:
- return m_buttonBoxLayout;
- case QPlatformTheme::UiEffects:
- return m_uiEffects;
+QVariant lthemeenginePlatformTheme::themeHint(QPlatformTheme::ThemeHint hint) const{
+ switch (hint){
+ case QPlatformTheme::CursorFlashTime: return m_cursorFlashTime;
+ case MouseDoubleClickInterval: return m_doubleClickInterval;
+ case QPlatformTheme::ToolButtonStyle: return m_toolButtonStyle;
+ case QPlatformTheme::SystemIconThemeName: return m_iconTheme;
+ case QPlatformTheme::StyleNames: return QStringList() << "lthemeengine-style";
+ case QPlatformTheme::IconThemeSearchPaths: return lthemeengine::iconPaths();
+ case DialogButtonBoxLayout: return m_buttonBoxLayout;
+ case QPlatformTheme::UiEffects: return m_uiEffects;
#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0))
- case QPlatformTheme::WheelScrollLines:
- return m_wheelScrollLines;
+ case QPlatformTheme::WheelScrollLines: return m_wheelScrollLines;
#endif
- default:
- return QPlatformTheme::themeHint(hint);
+ default: return QPlatformTheme::themeHint(hint);
}
}
-void lthemeenginePlatformTheme::applySettings()
-{
- if(!QGuiApplication::desktopSettingsAware())
- return;
-
+void lthemeenginePlatformTheme::applySettings(){
+ if(!QGuiApplication::desktopSettingsAware())
+ return;
#if (QT_VERSION >= QT_VERSION_CHECK(5, 5, 0))
- if(!m_update)
- {
- //do not override application palette
- if(QCoreApplication::testAttribute(Qt::AA_SetPalette))
- {
- m_usePalette = false;
- qCDebug(llthemeengine) << "palette support is disabled";
+ if(!m_update){
+ //do not override application palette
+ if(QCoreApplication::testAttribute(Qt::AA_SetPalette)){
+ m_usePalette = false;
+ qCDebug(llthemeengine) << "palette support is disabled";
}
- }
+ }
#endif
-
#ifdef QT_WIDGETS_LIB
- if(hasWidgets())
- {
- qApp->setFont(m_generalFont);
-
- //Qt 5.6 or higher should be use themeHint function on application startup.
- //So, there is no need to call this function first time.
+ if(hasWidgets()){
+ qApp->setFont(m_generalFont);
+ //Qt 5.6 or higher should be use themeHint function on application startup.
+ //So, there is no need to call this function first time.
#if (QT_VERSION >= QT_VERSION_CHECK(5, 6, 0))
- if(m_update)
- qApp->setWheelScrollLines(m_wheelScrollLines);
+ if(m_update)
+ qApp->setWheelScrollLines(m_wheelScrollLines);
#else
- qApp->setWheelScrollLines(m_wheelScrollLines);
+ qApp->setWheelScrollLines(m_wheelScrollLines);
#endif
-
- if(m_update && qApp->style()->objectName() == "lthemeengine-style") //ignore application style
- qApp->setStyle("lthemeengine-style"); //recreate style object
-
- if(m_update && m_usePalette)
- {
- if(m_customPalette)
- qApp->setPalette(*m_customPalette);
- else
- qApp->setPalette(qApp->style()->standardPalette());
- }
-
+ if(m_update && qApp->style()->objectName() == "lthemeengine-style") //ignore application style
+ qApp->setStyle("lthemeengine-style"); //recreate style object
+ if(m_update && m_usePalette){
+ if(m_customPalette)
+ qApp->setPalette(*m_customPalette);
+ else
+ qApp->setPalette(qApp->style()->standardPalette());
+ }
//do not override application style
if(m_prevStyleSheet == qApp->styleSheet())
- qApp->setStyleSheet(m_userStyleSheet);
+ qApp->setStyleSheet(m_userStyleSheet);
else
- qCDebug(llthemeengine) << "custom style sheet is disabled";
- m_prevStyleSheet = m_userStyleSheet;
+ qCDebug(llthemeengine) << "custom style sheet is disabled";
+ m_prevStyleSheet = m_userStyleSheet;
}
#endif
- QGuiApplication::setFont(m_generalFont); //apply font
- QIcon::setThemeName(m_iconTheme); //apply icons
- if(m_customPalette && m_usePalette)
- QGuiApplication::setPalette(*m_customPalette); //apply palette
-
+ QGuiApplication::setFont(m_generalFont); //apply font
+ QIcon::setThemeName(m_iconTheme); //apply icons
+ if(m_customPalette && m_usePalette)
+ QGuiApplication::setPalette(*m_customPalette); //apply palette
#ifdef QT_WIDGETS_LIB
- if(hasWidgets())
- {
- foreach (QWidget *w, qApp->allWidgets())
- {
- QEvent e(QEvent::ThemeChange);
- QApplication::sendEvent(w, &e);
- }
+ if(hasWidgets()){
+ foreach (QWidget *w, qApp->allWidgets()){
+ QEvent e(QEvent::ThemeChange);
+ QApplication::sendEvent(w, &e);
+ }
}
#endif
-
- if(!m_update)
- m_update = true;
+ if(!m_update)
+ m_update = true;
}
-
#ifdef QT_WIDGETS_LIB
-void lthemeenginePlatformTheme::createFSWatcher()
-{
- QFileSystemWatcher *watcher = new QFileSystemWatcher(this);
- watcher->addPath(lthemeengine::configPath());
- QTimer *timer = new QTimer(this);
- timer->setSingleShot(true);
- timer->setInterval(3000);
- connect(watcher, SIGNAL(directoryChanged(QString)), timer, SLOT(start()));
- connect(timer, SIGNAL(timeout()), SLOT(updateSettings()));
+void lthemeenginePlatformTheme::createFSWatcher(){
+ QFileSystemWatcher *watcher = new QFileSystemWatcher(this);
+ watcher->addPath(lthemeengine::configPath());
+ QTimer *timer = new QTimer(this);
+ timer->setSingleShot(true);
+ timer->setInterval(3000);
+ connect(watcher, SIGNAL(directoryChanged(QString)), timer, SLOT(start()));
+ connect(timer, SIGNAL(timeout()), SLOT(updateSettings()));
}
-void lthemeenginePlatformTheme::updateSettings()
-{
- qCDebug(llthemeengine) << "updating settings..";
- readSettings();
- applySettings();
+void lthemeenginePlatformTheme::updateSettings(){
+ qCDebug(llthemeengine) << "updating settings..";
+ readSettings();
+ applySettings();
}
#endif
-void lthemeenginePlatformTheme::readSettings()
-{
- if(m_customPalette)
- {
- delete m_customPalette;
- m_customPalette = 0;
+void lthemeenginePlatformTheme::readSettings(){
+ if(m_customPalette){
+ delete m_customPalette;
+ m_customPalette = 0;
}
-
- QSettings settings(lthemeengine::configFile(), QSettings::IniFormat);
-
- settings.beginGroup("Appearance");
- m_style = settings.value("style", "Fusion").toString();
- if(settings.value("custom_palette", false).toBool())
- {
- QString schemePath = settings.value("color_scheme_path").toString();
- m_customPalette = new QPalette(loadColorScheme(schemePath));
+ QSettings settings(lthemeengine::configFile(), QSettings::IniFormat);
+ settings.beginGroup("Appearance");
+ m_style = settings.value("style", "Fusion").toString();
+ if(settings.value("custom_palette", false).toBool()){
+ QString schemePath = settings.value("color_scheme_path").toString();
+ m_customPalette = new QPalette(loadColorScheme(schemePath));
}
- m_iconTheme = settings.value("icon_theme").toString();
- settings.endGroup();
-
- settings.beginGroup("Fonts");
- m_generalFont = settings.value("general", QPlatformTheme::font(QPlatformTheme::SystemFont)).value<QFont>();
- m_fixedFont = settings.value("fixed", QPlatformTheme::font(QPlatformTheme::FixedFont)).value<QFont>();
- settings.endGroup();
-
- settings.beginGroup("Interface");
- m_doubleClickInterval = QPlatformTheme::themeHint(QPlatformTheme::MouseDoubleClickInterval).toInt();
- m_doubleClickInterval = settings.value("double_click_interval", m_doubleClickInterval).toInt();
- m_cursorFlashTime = QPlatformTheme::themeHint(QPlatformTheme::CursorFlashTime).toInt();
- m_cursorFlashTime = settings.value("cursor_flash_time", m_cursorFlashTime).toInt();
- m_buttonBoxLayout = QPlatformTheme::themeHint(QPlatformTheme::DialogButtonBoxLayout).toInt();
- m_buttonBoxLayout = settings.value("buttonbox_layout", m_buttonBoxLayout).toInt();
- QCoreApplication::setAttribute(Qt::AA_DontShowIconsInMenus, !settings.value("menus_have_icons", true).toBool());
- m_toolButtonStyle = settings.value("toolbutton_style", Qt::ToolButtonFollowStyle).toInt();
- m_wheelScrollLines = settings.value("wheel_scroll_lines", 3).toInt();
-
- //load effects
- m_uiEffects = QPlatformTheme::themeHint(QPlatformTheme::UiEffects).toInt();
- if(settings.childKeys().contains("gui_effects"))
- {
- QStringList effectList = settings.value("gui_effects").toStringList();
- m_uiEffects = 0;
- if(effectList.contains("General"))
- m_uiEffects |= QPlatformTheme::GeneralUiEffect;
+ m_iconTheme = settings.value("icon_theme").toString();
+ settings.endGroup();
+ settings.beginGroup("Fonts");
+ m_generalFont = settings.value("general", QPlatformTheme::font(QPlatformTheme::SystemFont)).value<QFont>();
+ m_fixedFont = settings.value("fixed", QPlatformTheme::font(QPlatformTheme::FixedFont)).value<QFont>();
+ settings.endGroup();
+ settings.beginGroup("Interface");
+ m_doubleClickInterval = QPlatformTheme::themeHint(QPlatformTheme::MouseDoubleClickInterval).toInt();
+ m_doubleClickInterval = settings.value("double_click_interval", m_doubleClickInterval).toInt();
+ m_cursorFlashTime = QPlatformTheme::themeHint(QPlatformTheme::CursorFlashTime).toInt();
+ m_cursorFlashTime = settings.value("cursor_flash_time", m_cursorFlashTime).toInt();
+ m_buttonBoxLayout = QPlatformTheme::themeHint(QPlatformTheme::DialogButtonBoxLayout).toInt();
+ m_buttonBoxLayout = settings.value("buttonbox_layout", m_buttonBoxLayout).toInt();
+ QCoreApplication::setAttribute(Qt::AA_DontShowIconsInMenus, !settings.value("menus_have_icons", true).toBool());
+ m_toolButtonStyle = settings.value("toolbutton_style", Qt::ToolButtonFollowStyle).toInt();
+ m_wheelScrollLines = settings.value("wheel_scroll_lines", 3).toInt();
+ //load effects
+ m_uiEffects = QPlatformTheme::themeHint(QPlatformTheme::UiEffects).toInt();
+ if(settings.childKeys().contains("gui_effects")){
+ QStringList effectList = settings.value("gui_effects").toStringList();
+ m_uiEffects = 0;
+ if(effectList.contains("General"))
+ m_uiEffects |= QPlatformTheme::GeneralUiEffect;
if(effectList.contains("AnimateMenu"))
- m_uiEffects |= QPlatformTheme::AnimateMenuUiEffect;
- if(effectList.contains("FadeMenu"))
+ m_uiEffects |= QPlatformTheme::AnimateMenuUiEffect;
+ if(effectList.contains("FadeMenu"))
m_uiEffects |= QPlatformTheme::FadeMenuUiEffect;
- if(effectList.contains("AnimateCombo"))
- m_uiEffects |= QPlatformTheme::AnimateComboUiEffect;
- if(effectList.contains("AnimateTooltip"))
- m_uiEffects |= QPlatformTheme::AnimateTooltipUiEffect;
- if(effectList.contains("FadeTooltip"))
- m_uiEffects |= QPlatformTheme::FadeTooltipUiEffect;
- if(effectList.contains("AnimateToolBox"))
- m_uiEffects |= QPlatformTheme::AnimateToolBoxUiEffect;
- }
-
+ if(effectList.contains("AnimateCombo"))
+ m_uiEffects |= QPlatformTheme::AnimateComboUiEffect;
+ if(effectList.contains("AnimateTooltip"))
+ m_uiEffects |= QPlatformTheme::AnimateTooltipUiEffect;
+ if(effectList.contains("FadeTooltip"))
+ m_uiEffects |= QPlatformTheme::FadeTooltipUiEffect;
+ if(effectList.contains("AnimateToolBox"))
+ m_uiEffects |= QPlatformTheme::AnimateToolBoxUiEffect;
+ }
//load style sheets
#ifdef QT_WIDGETS_LIB
QStringList qssPaths = settings.value("stylesheets").toStringList();
@@ -311,56 +234,44 @@ void lthemeenginePlatformTheme::readSettings()
}
#ifdef QT_WIDGETS_LIB
-bool lthemeenginePlatformTheme::hasWidgets()
-{
- return qobject_cast<QApplication *> (qApp) != nullptr;
+bool lthemeenginePlatformTheme::hasWidgets(){
+ return qobject_cast<QApplication *> (qApp) != nullptr;
}
#endif
-QString lthemeenginePlatformTheme::loadStyleSheets(const QStringList &paths)
-{
- QString content;
- foreach (QString path, paths)
- {
- if(!QFile::exists(path))
- continue;
-
- QFile file(path);
- file.open(QIODevice::ReadOnly);
- content.append(file.readAll());
+QString lthemeenginePlatformTheme::loadStyleSheets(const QStringList &paths){
+ QString content;
+ foreach (QString path, paths){
+ if(!QFile::exists(path))
+ continue;
+ QFile file(path);
+ file.open(QIODevice::ReadOnly);
+ content.append(file.readAll());
}
- QRegExp regExp("//.*(\\n|$)");
- regExp.setMinimal(true);
- content.remove(regExp);
- return content;
+ QRegExp regExp("//.*(\\n|$)");
+ regExp.setMinimal(true);
+ content.remove(regExp);
+ return content;
}
-QPalette lthemeenginePlatformTheme::loadColorScheme(const QString &filePath)
-{
- QPalette customPalette;
- QSettings settings(filePath, QSettings::IniFormat);
- settings.beginGroup("ColorScheme");
- QStringList activeColors = settings.value("active_colors").toStringList();
- QStringList inactiveColors = settings.value("inactive_colors").toStringList();
- QStringList disabledColors = settings.value("disabled_colors").toStringList();
- settings.endGroup();
-
- if(activeColors.count() == QPalette::NColorRoles &&
- inactiveColors.count() == QPalette::NColorRoles &&
- disabledColors.count() == QPalette::NColorRoles)
- {
- for (int i = 0; i < QPalette::NColorRoles; i++)
- {
- QPalette::ColorRole role = QPalette::ColorRole(i);
- customPalette.setColor(QPalette::Active, role, QColor(activeColors.at(i)));
- customPalette.setColor(QPalette::Inactive, role, QColor(inactiveColors.at(i)));
- customPalette.setColor(QPalette::Disabled, role, QColor(disabledColors.at(i)));
+QPalette lthemeenginePlatformTheme::loadColorScheme(const QString &filePath){
+ QPalette customPalette;
+ QSettings settings(filePath, QSettings::IniFormat);
+ settings.beginGroup("ColorScheme");
+ QStringList activeColors = settings.value("active_colors").toStringList();
+ QStringList inactiveColors = settings.value("inactive_colors").toStringList();
+ QStringList disabledColors = settings.value("disabled_colors").toStringList();
+ settings.endGroup();
+ if(activeColors.count() == QPalette::NColorRoles && inactiveColors.count() == QPalette::NColorRoles && disabledColors.count() == QPalette::NColorRoles){
+ for (int i = 0; i < QPalette::NColorRoles; i++){
+ QPalette::ColorRole role = QPalette::ColorRole(i);
+ customPalette.setColor(QPalette::Active, role, QColor(activeColors.at(i)));
+ customPalette.setColor(QPalette::Inactive, role, QColor(inactiveColors.at(i)));
+ customPalette.setColor(QPalette::Disabled, role, QColor(disabledColors.at(i)));
}
}
- else
- {
- customPalette = *QPlatformTheme::palette(SystemPalette); //load fallback palette
+ else{
+ customPalette = *QPlatformTheme::palette(SystemPalette); //load fallback palette
}
-
- return customPalette;
+ return customPalette;
}
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 3996b451..5313b73e 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
@@ -1,31 +1,3 @@
-/*
- * Copyright (c) 2014-2017, Ilya Kotov <forkotov02@hotmail.ru>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
#ifndef LTHEMEENGINEPLATFORMTHEME_H
#define LTHEMEENGINEPLATFORMTHEME_H
@@ -50,8 +22,7 @@ class QPlatformSystemTrayIcon;
class QPlatformMenuBar;
#endif
-class lthemeenginePlatformTheme : public QObject, public QPlatformTheme
-{
+class lthemeenginePlatformTheme : public QObject, public QPlatformTheme{
Q_OBJECT
public:
lthemeenginePlatformTheme();
diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/main.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/main.cpp
index 37798f70..12e4a581 100644
--- a/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/main.cpp
+++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/main.cpp
@@ -1,46 +1,16 @@
-/*
- * Copyright (c) 2014-2017, Ilya Kotov <forkotov02@hotmail.ru>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
#include <qpa/qplatformthemeplugin.h>
#include "lthemeengineplatformtheme.h"
QT_BEGIN_NAMESPACE
-class lthemeenginePlatformThemePlugin: public QPlatformThemePlugin
-{
+class lthemeenginePlatformThemePlugin: public QPlatformThemePlugin{
Q_OBJECT
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QPA.QPlatformThemeFactoryInterface.5.1" FILE "lthemeengine.json")
public:
QPlatformTheme *create(const QString &key, const QStringList &params);
};
-QPlatformTheme *lthemeenginePlatformThemePlugin::create(const QString &key, const QStringList &params)
-{
+QPlatformTheme *lthemeenginePlatformThemePlugin::create(const QString &key, const QStringList &params){
Q_UNUSED(params);
if (key.toLower() == "lthemeengine")
return new lthemeenginePlatformTheme();
diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengineproxystyle.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengineproxystyle.cpp
index c9833a30..2c66144f 100644
--- a/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengineproxystyle.cpp
+++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengineproxystyle.cpp
@@ -1,63 +1,29 @@
-/*
- * Copyright (c) 2014-2017, Ilya Kotov <forkotov02@hotmail.ru>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
#include <QSettings>
#include <lthemeengine/lthemeengine.h>
#include "lthemeengineproxystyle.h"
-lthemeengineProxyStyle::lthemeengineProxyStyle(const QString &key) :
- QProxyStyle(key)
-{
- QSettings settings(lthemeengine::configFile(), QSettings::IniFormat);
- m_dialogButtonsHaveIcons = settings.value("Interface/dialog_buttons_have_icons", Qt::PartiallyChecked).toInt();
- m_activateItemOnSingleClick = settings.value("Interface/activate_item_on_single_click", Qt::PartiallyChecked).toInt();
+lthemeengineProxyStyle::lthemeengineProxyStyle(const QString &key) : QProxyStyle(key){
+ QSettings settings(lthemeengine::configFile(), QSettings::IniFormat);
+ m_dialogButtonsHaveIcons = settings.value("Interface/dialog_buttons_have_icons", Qt::PartiallyChecked).toInt();
+ m_activateItemOnSingleClick = settings.value("Interface/activate_item_on_single_click", Qt::PartiallyChecked).toInt();
}
-lthemeengineProxyStyle::~lthemeengineProxyStyle()
-{
- //qDebug("%s", Q_FUNC_INFO);
+lthemeengineProxyStyle::~lthemeengineProxyStyle(){
+ //qDebug("%s", Q_FUNC_INFO);
}
-int lthemeengineProxyStyle::styleHint(QStyle::StyleHint hint, const QStyleOption *option, const QWidget *widget, QStyleHintReturn *returnData) const
-{
- if(hint == QStyle::SH_DialogButtonBox_ButtonsHaveIcons)
- {
- if(m_dialogButtonsHaveIcons == Qt::Unchecked)
- return 0;
- else if(m_dialogButtonsHaveIcons == Qt::Checked)
- return 1;
+int lthemeengineProxyStyle::styleHint(QStyle::StyleHint hint, const QStyleOption *option, const QWidget *widget, QStyleHintReturn *returnData) const{
+ if(hint == QStyle::SH_DialogButtonBox_ButtonsHaveIcons){
+ if(m_dialogButtonsHaveIcons == Qt::Unchecked)
+ return 0;
+ else if(m_dialogButtonsHaveIcons == Qt::Checked)
+ return 1;
}
- else if(hint == QStyle::QStyle::SH_ItemView_ActivateItemOnSingleClick)
- {
- if(m_activateItemOnSingleClick == Qt::Unchecked)
- return 0;
- else if(m_activateItemOnSingleClick == Qt::Checked)
- return 1;
+ else if(hint == QStyle::QStyle::SH_ItemView_ActivateItemOnSingleClick){
+ if(m_activateItemOnSingleClick == Qt::Unchecked)
+ return 0;
+ else if(m_activateItemOnSingleClick == Qt::Checked)
+ return 1;
}
- return QProxyStyle::styleHint(hint, option, widget, returnData);
+ return QProxyStyle::styleHint(hint, option, widget, returnData);
}
diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengineproxystyle.h b/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengineproxystyle.h
index 47a18099..0d168897 100644
--- a/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengineproxystyle.h
+++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/lthemeengineproxystyle.h
@@ -1,38 +1,9 @@
-/*
- * Copyright (c) 2014-2017, Ilya Kotov <forkotov02@hotmail.ru>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
#ifndef LTHEMEENGINEPROXYSTYLE_H
#define LTHEMEENGINEPROXYSTYLE_H
#include <QProxyStyle>
-class lthemeengineProxyStyle : public QProxyStyle
-{
+class lthemeengineProxyStyle : public QProxyStyle{
Q_OBJECT
public:
explicit lthemeengineProxyStyle(const QString &key);
diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/plugin.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/plugin.cpp
index 9d63093e..fb9e5fb2 100644
--- a/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/plugin.cpp
+++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine-style/plugin.cpp
@@ -1,39 +1,10 @@
-/*
- * Copyright (c) 2014-2017, Ilya Kotov <forkotov02@hotmail.ru>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
#include <QStylePlugin>
#include <QSettings>
#include <QStyleFactory>
#include <lthemeengine/lthemeengine.h>
#include "lthemeengineproxystyle.h"
-class lthemeengineStylePlugin : public QStylePlugin
-{
+class lthemeengineStylePlugin : public QStylePlugin{
Q_OBJECT
Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QStyleFactoryInterface" FILE "lthemeengine.json")
@@ -41,8 +12,7 @@ public:
QStyle *create(const QString &key);
};
-QStyle *lthemeengineStylePlugin::create(const QString &key)
-{
+QStyle *lthemeengineStylePlugin::create(const QString &key){
if (key == "lthemeengine-style")
{
QSettings settings(lthemeengine::configFile(), QSettings::IniFormat);
diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/appearancepage.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/appearancepage.cpp
index b9175d6e..95f2c9b7 100644
--- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/appearancepage.cpp
+++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/appearancepage.cpp
@@ -1,31 +1,3 @@
-/*
- * Copyright (c) 2014-2017, Ilya Kotov <forkotov02@hotmail.ru>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
#include <QStyleFactory>
#include <QMdiSubWindow>
#include <QSettings>
@@ -40,379 +12,273 @@
#include "ui_appearancepage.h"
#include "ui_previewform.h"
-AppearancePage::AppearancePage(QWidget *parent) :
- TabPage(parent),
- m_ui(new Ui::AppearancePage)
-{
- m_ui->setupUi(this);
- QStringList keys = QStyleFactory::keys();
- keys.removeAll("lthemeengine-style"); //hide lthemeengine proxy style
- m_ui->styleComboBox->addItems(keys);
-
- connect(m_ui->paletteComboBox, SIGNAL(activated(int)), SLOT(updatePalette()));
- connect(m_ui->customPaletteButton, SIGNAL(clicked()), SLOT(updatePalette()));
- connect(m_ui->defaultPaletteButton, SIGNAL(clicked()), SLOT(updatePalette()));
-
- m_previewWidget = new QWidget(this);
- m_previewUi = new Ui::PreviewForm();
- m_previewUi->setupUi(m_previewWidget);
- QMdiSubWindow *w = m_ui->mdiArea->addSubWindow(m_previewWidget, Qt::CustomizeWindowHint
- | Qt::WindowMinMaxButtonsHint
- | Qt::WindowTitleHint);
- w->move(10, 10);
-
- QMenu *menu = new QMenu(this);
- menu->addAction(QIcon::fromTheme("list-add"), tr("Create"), this, SLOT(createColorScheme()));
- m_changeColorSchemeAction = menu->addAction(tr("Edit"), this, SLOT(changeColorScheme()));
- menu->addAction(tr("Create a Copy"), this, SLOT(copyColorScheme()));
- m_renameColorSchemeAction = menu->addAction(tr("Rename"), this, SLOT(renameColorScheme()));
- menu->addSeparator();
- m_removeColorSchemeAction = menu->addAction(tr("Remove"), this, SLOT(removeColorScheme()));
- m_ui->colorSchemeButton->setMenu(menu);
-
- m_changeColorSchemeAction->setIcon(QIcon::fromTheme("accessories-text-editor"));
- m_removeColorSchemeAction->setIcon(QIcon::fromTheme("list-remove"));
- connect(menu, SIGNAL(aboutToShow()), SLOT(updateActions()));
-
- readSettings();
+AppearancePage::AppearancePage(QWidget *parent) : TabPage(parent), m_ui(new Ui::AppearancePage){
+ m_ui->setupUi(this);
+ QStringList keys = QStyleFactory::keys();
+ keys.removeAll("lthemeengine-style"); //hide lthemeengine proxy style
+ m_ui->styleComboBox->addItems(keys);
+ connect(m_ui->paletteComboBox, SIGNAL(activated(int)), SLOT(updatePalette()));
+ connect(m_ui->customPaletteButton, SIGNAL(clicked()), SLOT(updatePalette()));
+ connect(m_ui->defaultPaletteButton, SIGNAL(clicked()), SLOT(updatePalette()));
+ m_previewWidget = new QWidget(this);
+ m_previewUi = new Ui::PreviewForm();
+ m_previewUi->setupUi(m_previewWidget);
+ QMdiSubWindow *w = m_ui->mdiArea->addSubWindow(m_previewWidget, Qt::CustomizeWindowHint | Qt::WindowMinMaxButtonsHint | Qt::WindowTitleHint);
+ w->move(10, 10);
+
+ QMenu *menu = new QMenu(this);
+ menu->addAction(QIcon::fromTheme("list-add"), tr("Create"), this, SLOT(createColorScheme()));
+ m_changeColorSchemeAction = menu->addAction(tr("Edit"), this, SLOT(changeColorScheme()));
+ menu->addAction(tr("Create a Copy"), this, SLOT(copyColorScheme()));
+ m_renameColorSchemeAction = menu->addAction(tr("Rename"), this, SLOT(renameColorScheme()));
+ menu->addSeparator();
+ m_removeColorSchemeAction = menu->addAction(tr("Remove"), this, SLOT(removeColorScheme()));
+ m_ui->colorSchemeButton->setMenu(menu);
+ m_changeColorSchemeAction->setIcon(QIcon::fromTheme("accessories-text-editor"));
+ m_removeColorSchemeAction->setIcon(QIcon::fromTheme("list-remove"));
+ connect(menu, SIGNAL(aboutToShow()), SLOT(updateActions()));
+
+ readSettings();
}
-AppearancePage::~AppearancePage()
-{
- if(m_selectedStyle)
- delete m_selectedStyle;
+AppearancePage::~AppearancePage(){
+ if(m_selectedStyle)
+ delete m_selectedStyle;
delete m_ui;
delete m_previewUi;
}
-void AppearancePage::writeSettings()
-{
- QSettings settings(lthemeengine::configFile(), QSettings::IniFormat);
- settings.beginGroup("Appearance");
- settings.setValue("style", m_ui->styleComboBox->currentText());
- settings.setValue("custom_palette", m_ui->customPaletteButton->isChecked());
- settings.setValue("color_scheme_path", m_ui->colorSchemeComboBox->currentData().toString());
- settings.endGroup();
+void AppearancePage::writeSettings(){
+ QSettings settings(lthemeengine::configFile(), QSettings::IniFormat);
+ settings.beginGroup("Appearance");
+ settings.setValue("style", m_ui->styleComboBox->currentText());
+ settings.setValue("custom_palette", m_ui->customPaletteButton->isChecked());
+ settings.setValue("color_scheme_path", m_ui->colorSchemeComboBox->currentData().toString());
+ settings.endGroup();
}
-void AppearancePage::on_styleComboBox_activated(const QString &text)
-{
- QStyle *style = QStyleFactory::create(text);
- if(!style)
- return;
+void AppearancePage::on_styleComboBox_activated(const QString &text){
+ QStyle *style = QStyleFactory::create(text);
+ if(!style)
+ return;
setStyle(m_previewWidget, style);
-
if(m_selectedStyle)
- delete m_selectedStyle;
- m_selectedStyle = style;
-
- updatePalette();
+ delete m_selectedStyle;
+ m_selectedStyle = style;
+ updatePalette();
}
-void AppearancePage::on_colorSchemeComboBox_activated(int)
-{
- m_customPalette = loadColorScheme(m_ui->colorSchemeComboBox->currentData().toString());
- updatePalette();
+void AppearancePage::on_colorSchemeComboBox_activated(int){
+ m_customPalette = loadColorScheme(m_ui->colorSchemeComboBox->currentData().toString());
+ updatePalette();
}
-void AppearancePage::createColorScheme()
-{
- QString name = QInputDialog::getText(this, tr("Enter Color Scheme Name"), tr("File name:"));
- if(name.isEmpty())
- return;
-
+void AppearancePage::createColorScheme(){
+ QString name = QInputDialog::getText(this, tr("Enter Color Scheme Name"), tr("File name:"));
+ if(name.isEmpty())
+ return;
if(!name.endsWith(".conf", Qt::CaseInsensitive))
- name.append(".conf");
-
- if(m_ui->colorSchemeComboBox->findText(name.section('.',0,0)) != -1)
- {
- QMessageBox::warning(this, tr("Error"), tr("The color scheme \"%1\" already exists")
- .arg(name.section('.',0,0)));
+ name.append(".conf");
+ if(m_ui->colorSchemeComboBox->findText(name.section('.',0,0)) != -1){
+ QMessageBox::warning(this, tr("Error"), tr("The color scheme \"%1\" already exists").arg(name.section('.',0,0)));
return;
- }
-
+ }
QString schemePath = lthemeengine::userColorSchemePath() + "/" + name;
-
createColorScheme(schemePath, palette());
m_ui->colorSchemeComboBox->addItem(name.section('.',0,0), schemePath);
}
-void AppearancePage::changeColorScheme()
-{
- if(m_ui->colorSchemeComboBox->currentIndex() < 0)
- return;
-
- if(!QFileInfo(m_ui->colorSchemeComboBox->currentData().toString()).isWritable())
- {
- QMessageBox::information(this, tr("Warning"), tr("The color scheme \"%1\" is read only")
- .arg(m_ui->colorSchemeComboBox->currentText()));
- return;
+void AppearancePage::changeColorScheme(){
+ if(m_ui->colorSchemeComboBox->currentIndex() < 0)
+ return;
+ if(!QFileInfo(m_ui->colorSchemeComboBox->currentData().toString()).isWritable()){
+ QMessageBox::information(this, tr("Warning"), tr("The color scheme \"%1\" is read only").arg(m_ui->colorSchemeComboBox->currentText()));
+ return;
}
-
PaletteEditDialog d(m_customPalette, m_selectedStyle, this);
connect(&d, SIGNAL(paletteChanged(QPalette)), SLOT(setPreviewPalette(QPalette)));
- if(d.exec() == QDialog::Accepted)
- {
- m_customPalette = d.selectedPalette();
- createColorScheme(m_ui->colorSchemeComboBox->currentData().toString(), m_customPalette);
+ if(d.exec() == QDialog::Accepted){
+ m_customPalette = d.selectedPalette();
+ createColorScheme(m_ui->colorSchemeComboBox->currentData().toString(), m_customPalette);
}
updatePalette();
}
-void AppearancePage::removeColorScheme()
-{
- int index = m_ui->colorSchemeComboBox->currentIndex();
- if(index < 0 || m_ui->colorSchemeComboBox->count() <= 1)
- return;
-
- if(!QFileInfo(m_ui->colorSchemeComboBox->currentData().toString()).isWritable())
- {
- QMessageBox::information(this, tr("Warning"), tr("The color scheme \"%1\" is read only")
- .arg(m_ui->colorSchemeComboBox->currentText()));
- return;
+void AppearancePage::removeColorScheme(){
+ int index = m_ui->colorSchemeComboBox->currentIndex();
+ if(index < 0 || m_ui->colorSchemeComboBox->count() <= 1)
+ return;
+ if(!QFileInfo(m_ui->colorSchemeComboBox->currentData().toString()).isWritable()){
+ QMessageBox::information(this, tr("Warning"), tr("The color scheme \"%1\" is read only").arg(m_ui->colorSchemeComboBox->currentText()));
+ return;
}
-
- int button = QMessageBox::question(this, tr("Confirm Remove"),
- tr("Are you sure you want to remove color scheme \"%1\"?")
- .arg(m_ui->colorSchemeComboBox->currentText()),
- QMessageBox::Yes | QMessageBox::No);
+ int button = QMessageBox::question(this, tr("Confirm Remove"),tr("Are you sure you want to remove color scheme \"%1\"?").arg(m_ui->colorSchemeComboBox->currentText()), QMessageBox::Yes | QMessageBox::No);
if(button != QMessageBox::Yes)
- return;
-
- if(QFile::remove(m_ui->colorSchemeComboBox->currentData().toString()))
- {
+ return;
+ if(QFile::remove(m_ui->colorSchemeComboBox->currentData().toString())){
m_ui->colorSchemeComboBox->removeItem(index);
on_colorSchemeComboBox_activated(0);
- }
+ }
}
-void AppearancePage::copyColorScheme()
-{
- if(m_ui->colorSchemeComboBox->currentIndex() < 0)
- return;
-
- QString name = QInputDialog::getText(this, tr("Enter Color Scheme Name"), tr("File name:"),
- QLineEdit::Normal,
- tr("%1 (copy)").arg(m_ui->colorSchemeComboBox->currentText()));
+void AppearancePage::copyColorScheme(){
+ if(m_ui->colorSchemeComboBox->currentIndex() < 0)
+ return;
+ QString name = QInputDialog::getText(this, tr("Enter Color Scheme Name"), tr("File name:"),QLineEdit::Normal, tr("%1 (copy)").arg(m_ui->colorSchemeComboBox->currentText()));
if(name.isEmpty() || name == m_ui->colorSchemeComboBox->currentText())
- return;
-
- if(!name.endsWith(".conf", Qt::CaseInsensitive))
- name.append(".conf");
-
- if(m_ui->colorSchemeComboBox->findText(name.section('.',0,0)) != -1)
- {
- QMessageBox::warning(this, tr("Error"), tr("The color scheme \"%1\" already exists")
- .arg(name.section('.',0,0)));
- return;
- }
-
- QString newPath = lthemeengine::userColorSchemePath() + "/" + name;
- QFile::copy(m_ui->colorSchemeComboBox->currentData().toString(), newPath);
- m_ui->colorSchemeComboBox->addItem(name.section('.',0,0), newPath);
+ return;
+ if(!name.endsWith(".conf", Qt::CaseInsensitive))name.append(".conf");
+ if(m_ui->colorSchemeComboBox->findText(name.section('.',0,0)) != -1){
+ QMessageBox::warning(this, tr("Error"), tr("The color scheme \"%1\" already exists").arg(name.section('.',0,0)));
+ return;
+ }
+ QString newPath = lthemeengine::userColorSchemePath() + "/" + name;
+ QFile::copy(m_ui->colorSchemeComboBox->currentData().toString(), newPath);
+ m_ui->colorSchemeComboBox->addItem(name.section('.',0,0), newPath);
}
-void AppearancePage::renameColorScheme()
-{
- int index = m_ui->colorSchemeComboBox->currentIndex();
-
+void AppearancePage::renameColorScheme(){
+ int index = m_ui->colorSchemeComboBox->currentIndex();
if(index < 0)
+ return;
+ if(!QFileInfo(m_ui->colorSchemeComboBox->currentData().toString()).isWritable()){
+ QMessageBox::information(this, tr("Warning"), tr("The color scheme \"%1\" is read only").arg(m_ui->colorSchemeComboBox->currentText()));
return;
-
- if(!QFileInfo(m_ui->colorSchemeComboBox->currentData().toString()).isWritable())
- {
- QMessageBox::information(this, tr("Warning"), tr("The color scheme \"%1\" is read only")
- .arg(m_ui->colorSchemeComboBox->currentText()));
- return;
- }
-
- QString name = QInputDialog::getText(this, tr("Enter Color Scheme Name"), tr("File name:"),
- QLineEdit::Normal, m_ui->colorSchemeComboBox->currentText());
- if(name.isEmpty() || name == m_ui->colorSchemeComboBox->currentText())
- return;
-
- if(!name.endsWith(".conf", Qt::CaseInsensitive))
- name.append(".conf");
-
- if(m_ui->colorSchemeComboBox->findText(name.section('.',0,0)) != -1)
- {
- QMessageBox::warning(this, tr("Error"), tr("The color scheme \"%1\" already exists")
- .arg(name.section('.',0,0)));
+ }
+ QString name = QInputDialog::getText(this, tr("Enter Color Scheme Name"), tr("File name:"), QLineEdit::Normal, m_ui->colorSchemeComboBox->currentText());
+ if(name.isEmpty() || name == m_ui->colorSchemeComboBox->currentText())
return;
- }
-
- QString newPath = lthemeengine::userColorSchemePath() + "/" + name;
- QFile::rename(m_ui->colorSchemeComboBox->currentData().toString(), newPath);
- m_ui->colorSchemeComboBox->setItemText(index, name.section('.',0,0));
- m_ui->colorSchemeComboBox->setItemData(index, newPath);
+ if(!name.endsWith(".conf", Qt::CaseInsensitive))name.append(".conf");
+ if(m_ui->colorSchemeComboBox->findText(name.section('.',0,0)) != -1){
+ QMessageBox::warning(this, tr("Error"), tr("The color scheme \"%1\" already exists").arg(name.section('.',0,0)));
+ return;
+ }
+ QString newPath = lthemeengine::userColorSchemePath() + "/" + name;
+ QFile::rename(m_ui->colorSchemeComboBox->currentData().toString(), newPath);
+ m_ui->colorSchemeComboBox->setItemText(index, name.section('.',0,0));
+ m_ui->colorSchemeComboBox->setItemData(index, newPath);
}
-void AppearancePage::updatePalette()
-{
+void AppearancePage::updatePalette(){
if(!m_selectedStyle)
- return;
-
- setPreviewPalette(m_ui->customPaletteButton->isChecked() ?
- m_customPalette : m_selectedStyle->standardPalette());
+ return;
+ setPreviewPalette(m_ui->customPaletteButton->isChecked() ? m_customPalette : m_selectedStyle->standardPalette());
}
-void AppearancePage::setPreviewPalette(const QPalette &p)
-{
- QPalette previewPalette = palette();
-
- QPalette::ColorGroup colorGroup = QPalette::Disabled;
-
- if(m_ui->paletteComboBox->currentIndex() == 0)
- {
- colorGroup = QPalette::Active;
- }
- else if(m_ui->paletteComboBox->currentIndex() == 1)
- {
- colorGroup = QPalette::Inactive;
+void AppearancePage::setPreviewPalette(const QPalette &p){
+ QPalette previewPalette = palette();
+ QPalette::ColorGroup colorGroup = QPalette::Disabled;
+ if(m_ui->paletteComboBox->currentIndex() == 0){
+ colorGroup = QPalette::Active;
}
-
- for (int i = 0; i < QPalette::NColorRoles; i++)
- {
- QPalette::ColorRole role = QPalette::ColorRole(i);
- previewPalette.setColor(QPalette::Active, role, p.color(colorGroup, role));
- previewPalette.setColor(QPalette::Inactive, role, p.color(colorGroup, role));
- }
-
- setPalette(m_ui->mdiArea, previewPalette);
+ else if(m_ui->paletteComboBox->currentIndex() == 1){
+ colorGroup = QPalette::Inactive;
+ }
+ for (int i = 0; i < QPalette::NColorRoles; i++){
+ QPalette::ColorRole role = QPalette::ColorRole(i);
+ previewPalette.setColor(QPalette::Active, role, p.color(colorGroup, role));
+ previewPalette.setColor(QPalette::Inactive, role, p.color(colorGroup, role));
+ }
+ setPalette(m_ui->mdiArea, previewPalette);
}
-void AppearancePage::updateActions()
-{
- if(m_ui->colorSchemeComboBox->count() == 0 ||
- !QFileInfo(m_ui->colorSchemeComboBox->currentData().toString()).isWritable())
- {
- m_changeColorSchemeAction->setVisible(false);
- m_renameColorSchemeAction->setVisible(false);
- m_removeColorSchemeAction->setVisible(false);
- }
- else
- {
- m_changeColorSchemeAction->setVisible(true);
- m_renameColorSchemeAction->setVisible(true);
- m_removeColorSchemeAction->setVisible(m_ui->colorSchemeComboBox->count() > 1);
+void AppearancePage::updateActions(){
+ if(m_ui->colorSchemeComboBox->count() == 0 || !QFileInfo(m_ui->colorSchemeComboBox->currentData().toString()).isWritable()){
+ m_changeColorSchemeAction->setVisible(false);
+ m_renameColorSchemeAction->setVisible(false);
+ m_removeColorSchemeAction->setVisible(false);
}
+ else{
+ m_changeColorSchemeAction->setVisible(true);
+ m_renameColorSchemeAction->setVisible(true);
+ m_removeColorSchemeAction->setVisible(m_ui->colorSchemeComboBox->count() > 1);
+ }
}
-void AppearancePage::readSettings()
-{
- QSettings settings(lthemeengine::configFile(), QSettings::IniFormat);
- settings.beginGroup("Appearance");
- QString style = settings.value("style", "Fusion").toString();
- m_ui->styleComboBox->setCurrentText(style);
-
- m_ui->customPaletteButton->setChecked(settings.value("custom_palette", false).toBool());
- QString colorSchemePath = settings.value("color_scheme_path").toString();
-
- QDir("/").mkpath(lthemeengine::userColorSchemePath());
- findColorSchemes(lthemeengine::userColorSchemePath());
- findColorSchemes(lthemeengine::sharedColorSchemePath().join(", "));
-
- if(m_ui->colorSchemeComboBox->count() == 0)
- {
- m_customPalette = palette(); //load fallback palette
- }
- else
- {
- int index = m_ui->colorSchemeComboBox->findData(colorSchemePath);
- if(index >= 0)
- m_ui->colorSchemeComboBox->setCurrentIndex(index);
- m_customPalette = loadColorScheme(m_ui->colorSchemeComboBox->currentData().toString());
+void AppearancePage::readSettings(){
+ QSettings settings(lthemeengine::configFile(), QSettings::IniFormat);
+ settings.beginGroup("Appearance");
+ QString style = settings.value("style", "Fusion").toString();
+ m_ui->styleComboBox->setCurrentText(style);
+ m_ui->customPaletteButton->setChecked(settings.value("custom_palette", false).toBool());
+ QString colorSchemePath = settings.value("color_scheme_path").toString();
+ QDir("/").mkpath(lthemeengine::userColorSchemePath());
+ findColorSchemes(lthemeengine::userColorSchemePath());
+ findColorSchemes(lthemeengine::sharedColorSchemePath().join(", "));
+ if(m_ui->colorSchemeComboBox->count() == 0){
+ m_customPalette = palette(); //load fallback palette
}
-
+ else{
+ int index = m_ui->colorSchemeComboBox->findData(colorSchemePath);
+ if(index >= 0)
+ m_ui->colorSchemeComboBox->setCurrentIndex(index);
+ m_customPalette = loadColorScheme(m_ui->colorSchemeComboBox->currentData().toString());
+ }
on_styleComboBox_activated(m_ui->styleComboBox->currentText());
-
settings.endGroup();
}
-void AppearancePage::setStyle(QWidget *w, QStyle *s)
-{
- foreach (QObject *o, w->children())
- {
- if(o->isWidgetType())
- {
- setStyle(qobject_cast<QWidget *>(o), s);
- }
+void AppearancePage::setStyle(QWidget *w, QStyle *s){
+ foreach (QObject *o, w->children()){
+ if(o->isWidgetType()){
+ setStyle(qobject_cast<QWidget *>(o), s);
}
- w->setStyle(s);
+ }
+ w->setStyle(s);
}
-void AppearancePage::setPalette(QWidget *w, QPalette p)
-{
- foreach (QObject *o, w->children())
- {
- if(o->isWidgetType())
- {
- setPalette(qobject_cast<QWidget *>(o), p);
- }
+void AppearancePage::setPalette(QWidget *w, QPalette p){
+ foreach (QObject *o, w->children()){
+ if(o->isWidgetType()){
+ setPalette(qobject_cast<QWidget *>(o), p);
+ }
}
- w->setPalette(p);
+ w->setPalette(p);
}
-void AppearancePage::findColorSchemes(const QString &path)
-{
- QDir dir(path);
- dir.setFilter(QDir::Files);
- dir.setNameFilters(QStringList() << "*.conf");
-
- foreach (QFileInfo info, dir.entryInfoList())
- {
- m_ui->colorSchemeComboBox->addItem(info.baseName(), info.filePath());
+void AppearancePage::findColorSchemes(const QString &path){
+ QDir dir(path);
+ dir.setFilter(QDir::Files);
+ dir.setNameFilters(QStringList() << "*.conf");
+ foreach (QFileInfo info, dir.entryInfoList()){
+ m_ui->colorSchemeComboBox->addItem(info.baseName(), info.filePath());
}
}
-QPalette AppearancePage::loadColorScheme(const QString &filePath)
-{
- QPalette customPalette;
- QSettings settings(filePath, QSettings::IniFormat);
- settings.beginGroup("ColorScheme");
- QStringList activeColors = settings.value("active_colors").toStringList();
- QStringList inactiveColors = settings.value("inactive_colors").toStringList();
- QStringList disabledColors = settings.value("disabled_colors").toStringList();
- settings.endGroup();
-
- if(activeColors.count() == QPalette::NColorRoles &&
- inactiveColors.count() == QPalette::NColorRoles &&
- disabledColors.count() == QPalette::NColorRoles)
- {
- for (int i = 0; i < QPalette::NColorRoles; i++)
- {
- QPalette::ColorRole role = QPalette::ColorRole(i);
- customPalette.setColor(QPalette::Active, role, QColor(activeColors.at(i)));
- customPalette.setColor(QPalette::Inactive, role, QColor(inactiveColors.at(i)));
- customPalette.setColor(QPalette::Disabled, role, QColor(disabledColors.at(i)));
- }
+QPalette AppearancePage::loadColorScheme(const QString &filePath){
+ QPalette customPalette;
+ QSettings settings(filePath, QSettings::IniFormat);
+ settings.beginGroup("ColorScheme");
+ QStringList activeColors = settings.value("active_colors").toStringList();
+ QStringList inactiveColors = settings.value("inactive_colors").toStringList();
+ QStringList disabledColors = settings.value("disabled_colors").toStringList();
+ settings.endGroup();
+ if(activeColors.count() == QPalette::NColorRoles && inactiveColors.count() == QPalette::NColorRoles && disabledColors.count() == QPalette::NColorRoles){
+ for (int i = 0; i < QPalette::NColorRoles; i++){
+ QPalette::ColorRole role = QPalette::ColorRole(i);
+ customPalette.setColor(QPalette::Active, role, QColor(activeColors.at(i)));
+ customPalette.setColor(QPalette::Inactive, role, QColor(inactiveColors.at(i)));
+ customPalette.setColor(QPalette::Disabled, role, QColor(disabledColors.at(i)));
+ }
}
- else
- {
- customPalette = palette(); //load fallback palette
- }
-
+ else{
+ customPalette = palette(); //load fallback palette
+ }
return customPalette;
}
-void AppearancePage::createColorScheme(const QString &name, const QPalette &palette)
-{
- QSettings settings(name, QSettings::IniFormat);
- settings.beginGroup("ColorScheme");
-
- QStringList activeColors, inactiveColors, disabledColors;
- for (int i = 0; i < QPalette::NColorRoles; i++)
- {
- QPalette::ColorRole role = QPalette::ColorRole(i);
- activeColors << palette.color(QPalette::Active, role).name();
- inactiveColors << palette.color(QPalette::Inactive, role).name();
- disabledColors << palette.color(QPalette::Disabled, role).name();
+void AppearancePage::createColorScheme(const QString &name, const QPalette &palette){
+ QSettings settings(name, QSettings::IniFormat);
+ settings.beginGroup("ColorScheme");
+ QStringList activeColors, inactiveColors, disabledColors;
+ for (int i = 0; i < QPalette::NColorRoles; i++){
+ QPalette::ColorRole role = QPalette::ColorRole(i);
+ activeColors << palette.color(QPalette::Active, role).name();
+ inactiveColors << palette.color(QPalette::Inactive, role).name();
+ disabledColors << palette.color(QPalette::Disabled, role).name();
}
-
- settings.setValue("active_colors",activeColors);
- settings.setValue("inactive_colors",inactiveColors);
- settings.setValue("disabled_colors",disabledColors);
-
- settings.endGroup();
-
+ settings.setValue("active_colors",activeColors);
+ settings.setValue("inactive_colors",inactiveColors);
+ settings.setValue("disabled_colors",disabledColors);
+ settings.endGroup();
}
diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/appearancepage.h b/src-qt5/core/lumina-theme-engine/src/lthemeengine/appearancepage.h
index 3a7752c7..23bab52f 100644
--- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/appearancepage.h
+++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/appearancepage.h
@@ -1,31 +1,3 @@
-/*
- * Copyright (c) 2014-2017, Ilya Kotov <forkotov02@hotmail.ru>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
#ifndef APPEARANCEPAGE_H
#define APPEARANCEPAGE_H
@@ -39,14 +11,12 @@ class PreviewForm;
class QStyle;
class QAction;
-class AppearancePage : public TabPage
-{
+class AppearancePage : public TabPage{
Q_OBJECT
public:
explicit AppearancePage(QWidget *parent = 0);
~AppearancePage();
-
void writeSettings();
private slots:
diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/fontconfigdialog.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/fontconfigdialog.cpp
index 398a2436..13c92bf0 100644
--- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/fontconfigdialog.cpp
+++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/fontconfigdialog.cpp
@@ -1,31 +1,3 @@
-/*
- * Copyright (c) 2014-2017, Ilya Kotov <forkotov02@hotmail.ru>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
#include <QXmlStreamWriter>
#include <QFile>
#include <QDir>
@@ -33,106 +5,80 @@
#include "fontconfigdialog.h"
#include "ui_fontconfigdialog.h"
-FontConfigDialog::FontConfigDialog(QWidget *parent) :
- QDialog(parent),
- m_ui(new Ui::FontConfigDialog)
-{
- m_ui->setupUi(this);
-
- m_ui->hintingStyleComboBox->addItem(tr("None"), "hintnone");
- m_ui->hintingStyleComboBox->addItem(tr("Slight"), "hintslight");
- m_ui->hintingStyleComboBox->addItem(tr("Medium"), "hintmedium");
- m_ui->hintingStyleComboBox->addItem(tr("Full"), "hintfull");
-
- m_ui->rgbaComboBox->addItem(tr("None"), "none");
- m_ui->rgbaComboBox->addItem("rgb", "rgb");
- m_ui->rgbaComboBox->addItem("bgr", "bgr");
- m_ui->rgbaComboBox->addItem("vrgb", "vrgb");
- m_ui->rgbaComboBox->addItem("vbgr", "vbgr");
-
- m_ui->lcdFilterComboBox->addItem("lcdnone");
- m_ui->lcdFilterComboBox->addItem("lcddefault");
- m_ui->lcdFilterComboBox->addItem("lcdlight");
- m_ui->lcdFilterComboBox->addItem("lcdlegacy");
+FontConfigDialog::FontConfigDialog(QWidget *parent) : QDialog(parent), m_ui(new Ui::FontConfigDialog){
+ m_ui->setupUi(this);
+
+ m_ui->hintingStyleComboBox->addItem(tr("None"), "hintnone");
+ m_ui->hintingStyleComboBox->addItem(tr("Slight"), "hintslight");
+ m_ui->hintingStyleComboBox->addItem(tr("Medium"), "hintmedium");
+ m_ui->hintingStyleComboBox->addItem(tr("Full"), "hintfull");
+ m_ui->rgbaComboBox->addItem(tr("None"), "none");
+ m_ui->rgbaComboBox->addItem("rgb", "rgb");
+ m_ui->rgbaComboBox->addItem("bgr", "bgr");
+ m_ui->rgbaComboBox->addItem("vrgb", "vrgb");
+ m_ui->rgbaComboBox->addItem("vbgr", "vbgr");
+ m_ui->lcdFilterComboBox->addItem("lcdnone");
+ m_ui->lcdFilterComboBox->addItem("lcddefault");
+ m_ui->lcdFilterComboBox->addItem("lcdlight");
+ m_ui->lcdFilterComboBox->addItem("lcdlegacy");
}
-FontConfigDialog::~FontConfigDialog()
-{
- delete m_ui;
+FontConfigDialog::~FontConfigDialog(){
+ delete m_ui;
}
-void FontConfigDialog::accept()
-{
- QDir::home().mkpath(".config/fontconfig/");
- QString path = QDir::homePath() + "/.config/fontconfig/fonts.conf";
- qDebug("FontConfigDialog: fontconfig path: %s", qPrintable(path));
-
-
- if(QFile::exists(path))
- {
- if(QMessageBox::question(this, tr("Font Configuration"),
- tr("<i>%1</i> already exists. Do you want to replace it?").arg(path),
- QMessageBox::Yes | QMessageBox::No) == QMessageBox::No)
- {
- QDialog::reject();
- return;
- }
-
- QFile::remove(path + ".back");
- QFile::copy(path, path + ".back");
+void FontConfigDialog::accept(){
+ QDir::home().mkpath(".config/fontconfig/");
+ QString path = QDir::homePath() + "/.config/fontconfig/fonts.conf";
+ qDebug("FontConfigDialog: fontconfig path: %s", qPrintable(path));
+ if(QFile::exists(path)){
+ if(QMessageBox::question(this, tr("Font Configuration"), tr("<i>%1</i> already exists. Do you want to replace it?").arg(path), QMessageBox::Yes | QMessageBox::No) == QMessageBox::No){
+ QDialog::reject();
+ return;
+ }
+ QFile::remove(path + ".back");
+ QFile::copy(path, path + ".back");
}
-
- QFile file(path);
- if(!file.open(QIODevice::WriteOnly))
- {
- qWarning("FontConfigDialog: unable to open file: %s", qPrintable(file.errorString()));
- return;
+ QFile file(path);
+ if(!file.open(QIODevice::WriteOnly)){
+ qWarning("FontConfigDialog: unable to open file: %s", qPrintable(file.errorString()));
+ return;
}
-
- QXmlStreamWriter stream(&file);
- stream.setAutoFormatting(true);
-
- stream.writeStartDocument();
- stream.writeDTD("<!DOCTYPE fontconfig SYSTEM \"fonts.dtd\">");
- stream.writeStartElement("fontconfig");
-
+ QXmlStreamWriter stream(&file);
+ stream.setAutoFormatting(true);
+ stream.writeStartDocument();
+ stream.writeDTD("<!DOCTYPE fontconfig SYSTEM \"fonts.dtd\">");
+ stream.writeStartElement("fontconfig");
+ stream.writeStartElement("match");
+ stream.writeAttribute("target", "font");
+ writeOption(&stream, "antialias", "bool", m_ui->antialisingCheckBox->isChecked() ? "true" : "false");
+ writeOption(&stream, "hinting", "bool", m_ui->hintingCheckBox->isChecked() ? "true" : "false");
+ writeOption(&stream, "hintstyle", "const", m_ui->hintingStyleComboBox->currentData().toString());
+ writeOption(&stream, "rgba", "const", m_ui->rgbaComboBox->currentData().toString());
+ writeOption(&stream, "autohint", "bool", m_ui->autohinterCheckBox->isChecked() ? "true" : "false");
+ writeOption(&stream, "lcdfilter", "const", m_ui->lcdFilterComboBox->currentText());
+ writeOption(&stream, "dpi", "double", QString::number(m_ui->dpiSpinBox->value()));
+ stream.writeEndElement();
+ if(m_ui->disableBoldAutohintCheckBox->isChecked()){
stream.writeStartElement("match");
stream.writeAttribute("target", "font");
- writeOption(&stream, "antialias", "bool", m_ui->antialisingCheckBox->isChecked() ? "true" : "false");
- writeOption(&stream, "hinting", "bool", m_ui->hintingCheckBox->isChecked() ? "true" : "false");
- writeOption(&stream, "hintstyle", "const", m_ui->hintingStyleComboBox->currentData().toString());
- writeOption(&stream, "rgba", "const", m_ui->rgbaComboBox->currentData().toString());
+ stream.writeStartElement("test");
+ stream.writeAttribute("name", "weight");
+ stream.writeAttribute("compare", "more");
+ stream.writeTextElement("const", "medium");
+ stream.writeEndElement();
writeOption(&stream, "autohint", "bool", m_ui->autohinterCheckBox->isChecked() ? "true" : "false");
- writeOption(&stream, "lcdfilter", "const", m_ui->lcdFilterComboBox->currentText());
- writeOption(&stream, "dpi", "double", QString::number(m_ui->dpiSpinBox->value()));
stream.writeEndElement();
-
- if(m_ui->disableBoldAutohintCheckBox->isChecked())
- {
- stream.writeStartElement("match");
- stream.writeAttribute("target", "font");
-
- stream.writeStartElement("test");
- stream.writeAttribute("name", "weight");
- stream.writeAttribute("compare", "more");
- stream.writeTextElement("const", "medium");
- stream.writeEndElement();
-
- writeOption(&stream, "autohint", "bool", m_ui->autohinterCheckBox->isChecked() ? "true" : "false");
-
- stream.writeEndElement();
}
- stream.writeEndElement();
- stream.writeEndDocument();
-
- QDialog::accept();
+ stream.writeEndElement();
+ stream.writeEndDocument();
+ QDialog::accept();
}
-void FontConfigDialog::writeOption(QXmlStreamWriter *stream, const QString &name, const QString &type, const QString &value)
-{
- stream->writeStartElement("edit");
- stream->writeAttribute("name", name);
- stream->writeAttribute("mode", "assign");
- stream->writeTextElement(type, value);
- stream->writeEndElement();
+void FontConfigDialog::writeOption(QXmlStreamWriter *stream, const QString &name, const QString &type, const QString &value){
+ stream->writeStartElement("edit");
+ stream->writeAttribute("name", name);
+ stream->writeAttribute("mode", "assign");
+ stream->writeTextElement(type, value);
+ stream->writeEndElement();
}
diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/fontconfigdialog.h b/src-qt5/core/lumina-theme-engine/src/lthemeengine/fontconfigdialog.h
index 5b7e31a5..09991787 100644
--- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/fontconfigdialog.h
+++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/fontconfigdialog.h
@@ -1,31 +1,3 @@
-/*
- * Copyright (c) 2014-2017, Ilya Kotov <forkotov02@hotmail.ru>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
#ifndef FONTCONFIGDIALOG_H
#define FONTCONFIGDIALOG_H
diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/fontspage.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/fontspage.cpp
index db48a3cc..8d1ed1ab 100644
--- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/fontspage.cpp
+++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/fontspage.cpp
@@ -1,31 +1,3 @@
-/*
- * Copyright (c) 2014-2017, Ilya Kotov <forkotov02@hotmail.ru>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
#include <QSignalMapper>
#include <QMessageBox>
#include <QSettings>
@@ -38,89 +10,70 @@
#include "fontconfigdialog.h"
#include "ui_fontspage.h"
-FontsPage::FontsPage(QWidget *parent) :
- TabPage(parent),
- m_ui(new Ui::FontsPage)
-{
- m_ui->setupUi(this);
-
- QSignalMapper *mapper = new QSignalMapper(this);
- mapper->setMapping(m_ui->changeGeneralFontButton, m_ui->generalFontLabel);
- mapper->setMapping(m_ui->changeFixedWidthFontButton, m_ui->fixedFontLabel);
- connect(m_ui->changeGeneralFontButton, SIGNAL(clicked()), mapper, SLOT(map()));
- connect(m_ui->changeFixedWidthFontButton, SIGNAL(clicked()), mapper, SLOT(map()));
- connect(mapper, SIGNAL(mapped(QWidget*)), SLOT(onFontChangeRequested(QWidget*)));
+FontsPage::FontsPage(QWidget *parent) : TabPage(parent), m_ui(new Ui::FontsPage){
+ m_ui->setupUi(this);
- readSettings();
+ QSignalMapper *mapper = new QSignalMapper(this);
+ mapper->setMapping(m_ui->changeGeneralFontButton, m_ui->generalFontLabel);
+ mapper->setMapping(m_ui->changeFixedWidthFontButton, m_ui->fixedFontLabel);
+ connect(m_ui->changeGeneralFontButton, SIGNAL(clicked()), mapper, SLOT(map()));
+ connect(m_ui->changeFixedWidthFontButton, SIGNAL(clicked()), mapper, SLOT(map()));
+ connect(mapper, SIGNAL(mapped(QWidget*)), SLOT(onFontChangeRequested(QWidget*)));
+ readSettings();
- //icons
- m_ui->createFontsConfButton->setIcon(QIcon::fromTheme("document-new"));
- m_ui->removeFontsConfButton->setIcon(QIcon::fromTheme("edit-delete"));
+ //icons
+ m_ui->createFontsConfButton->setIcon(QIcon::fromTheme("document-new"));
+ m_ui->removeFontsConfButton->setIcon(QIcon::fromTheme("edit-delete"));
}
-FontsPage::~FontsPage()
-{
- delete m_ui;
+FontsPage::~FontsPage(){
+ delete m_ui;
}
-void FontsPage::writeSettings()
-{
- QSettings settings(lthemeengine::configFile(), QSettings::IniFormat);
- settings.beginGroup("Fonts");
- settings.setValue("general", m_ui->generalFontLabel->font());
- settings.setValue("fixed", m_ui->fixedFontLabel->font());
- settings.endGroup();
+void FontsPage::writeSettings(){
+ QSettings settings(lthemeengine::configFile(), QSettings::IniFormat);
+ settings.beginGroup("Fonts");
+ settings.setValue("general", m_ui->generalFontLabel->font());
+ settings.setValue("fixed", m_ui->fixedFontLabel->font());
+ settings.endGroup();
}
-void FontsPage::onFontChangeRequested(QWidget *widget)
-{
- bool ok = false;
- QFont font = QFontDialog::getFont (&ok, widget->font(), this);
- if(ok)
- {
- widget->setFont(font);
- qobject_cast<QLabel*>(widget)->setText(font.family () + " " + QString::number(font.pointSize ()));
+void FontsPage::onFontChangeRequested(QWidget *widget){
+ bool ok = false;
+ QFont font = QFontDialog::getFont (&ok, widget->font(), this);
+ if(ok){
+ widget->setFont(font);
+ qobject_cast<QLabel*>(widget)->setText(font.family () + " " + QString::number(font.pointSize ()));
}
}
-void FontsPage::readSettings()
-{
- QSettings settings(lthemeengine::configFile(), QSettings::IniFormat);
- settings.beginGroup("Fonts");
- loadFont(&settings, m_ui->generalFontLabel, "general");
- loadFont(&settings, m_ui->fixedFontLabel, "fixed");
- settings.endGroup();
+void FontsPage::readSettings(){
+ QSettings settings(lthemeengine::configFile(), QSettings::IniFormat);
+ settings.beginGroup("Fonts");
+ loadFont(&settings, m_ui->generalFontLabel, "general");
+ loadFont(&settings, m_ui->fixedFontLabel, "fixed");
+ settings.endGroup();
}
-void FontsPage::loadFont(QSettings *settings, QLabel *label, const QString &key)
-{
- QFont font = settings->value(key, QApplication::font()).value<QFont>();
- label->setText(font.family () + " " + QString::number(font.pointSize ()));
- label->setFont(font);
+void FontsPage::loadFont(QSettings *settings, QLabel *label, const QString &key){
+ QFont font = settings->value(key, QApplication::font()).value<QFont>();
+ label->setText(font.family () + " " + QString::number(font.pointSize ()));
+ label->setFont(font);
}
-void FontsPage::on_createFontsConfButton_clicked()
-{
- FontConfigDialog d(this);
- d.exec();
+void FontsPage::on_createFontsConfButton_clicked(){
+ FontConfigDialog d(this);
+ d.exec();
}
-void FontsPage::on_removeFontsConfButton_clicked()
-{
- QString path = QDir::homePath() + "/.config/fontconfig/fonts.conf";
-
-
- if(QFile::exists(path))
- {
- if(QMessageBox::question(this, tr("Remove Font Configuration"),
- tr("Are you sure you want to delete <i>%1</i>?").arg(path),
- QMessageBox::Yes | QMessageBox::No) == QMessageBox::No)
- {
- return;
- }
-
- QFile::remove(path + ".back");
- QFile::copy(path, path + ".back");
- QFile::remove(path);
+void FontsPage::on_removeFontsConfButton_clicked(){
+ QString path = QDir::homePath() + "/.config/fontconfig/fonts.conf";
+ if(QFile::exists(path)){
+ if(QMessageBox::question(this, tr("Remove Font Configuration"), tr("Are you sure you want to delete <i>%1</i>?").arg(path), QMessageBox::Yes | QMessageBox::No) == QMessageBox::No){
+ return;
}
+ QFile::remove(path + ".back");
+ QFile::copy(path, path + ".back");
+ QFile::remove(path);
+ }
}
diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/fontspage.h b/src-qt5/core/lumina-theme-engine/src/lthemeengine/fontspage.h
index a9c5f1f6..2b522fee 100644
--- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/fontspage.h
+++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/fontspage.h
@@ -1,31 +1,3 @@
-/*
- * Copyright (c) 2014-2017, Ilya Kotov <forkotov02@hotmail.ru>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
#ifndef FONTSPAGE_H
#define FONTSPAGE_H
diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/iconthemepage.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/iconthemepage.cpp
index ca9a3388..cfe002aa 100644
--- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/iconthemepage.cpp
+++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/iconthemepage.cpp
@@ -1,31 +1,3 @@
-/*
- * Copyright (c) 2014-2017, Ilya Kotov <forkotov02@hotmail.ru>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
#include <QSettings>
#include <QFileInfo>
#include <QFileInfoList>
@@ -37,178 +9,136 @@
#include "iconthemepage.h"
#include "ui_iconthemepage.h"
-IconThemePage::IconThemePage(QWidget *parent) :
- TabPage(parent),
- m_ui(new Ui::IconThemePage)
-{
- m_ui->setupUi(this);
- loadThemes();
- readSettings();
+IconThemePage::IconThemePage(QWidget *parent) : TabPage(parent), m_ui(new Ui::IconThemePage){
+ m_ui->setupUi(this);
+ loadThemes();
+ readSettings();
}
-IconThemePage::~IconThemePage()
-{
- delete m_ui;
+IconThemePage::~IconThemePage(){
+ delete m_ui;
}
-void IconThemePage::writeSettings()
-{
- QSettings settings(lthemeengine::configFile(), QSettings::IniFormat);
- QTreeWidgetItem *item = m_ui->treeWidget->currentItem();
- if(item)
- settings.setValue("Appearance/icon_theme", item->data(3, Qt::UserRole));
+void IconThemePage::writeSettings(){
+ QSettings settings(lthemeengine::configFile(), QSettings::IniFormat);
+ QTreeWidgetItem *item = m_ui->treeWidget->currentItem();
+ if(item)
+ settings.setValue("Appearance/icon_theme", item->data(3, Qt::UserRole));
}
-void IconThemePage::readSettings()
-{
- QSettings settings(lthemeengine::configFile(), QSettings::IniFormat);
- QString name = settings.value("Appearance/icon_theme").toString();
-
- if(name.isEmpty())
- return;
-
- for(int i = 0; i < m_ui->treeWidget->topLevelItemCount(); ++i)
- {
- QTreeWidgetItem *item = m_ui->treeWidget->topLevelItem(i);
- if(item->data(3, Qt::UserRole).toString() == name)
- {
- m_ui->treeWidget->setCurrentItem(item);
- break;
+void IconThemePage::readSettings(){
+ QSettings settings(lthemeengine::configFile(), QSettings::IniFormat);
+ QString name = settings.value("Appearance/icon_theme").toString();
+ if(name.isEmpty())
+ return;
+ for(int i = 0; i < m_ui->treeWidget->topLevelItemCount(); ++i){
+ QTreeWidgetItem *item = m_ui->treeWidget->topLevelItem(i);
+ if(item->data(3, Qt::UserRole).toString() == name){
+ m_ui->treeWidget->setCurrentItem(item);
+ break;
}
- }
+ }
}
-void IconThemePage::loadThemes()
-{
- QFileInfoList themeFileList;
- foreach(QString path, lthemeengine::iconPaths())
- {
- QDir dir(path);
- dir.setFilter(QDir::Dirs | QDir::NoDotDot | QDir::NoDot);
- foreach (QFileInfo info, dir.entryInfoList())
- {
- QDir themeDir(info.absoluteFilePath());
- themeDir.setFilter(QDir::Files);
- themeFileList << themeDir.entryInfoList(QStringList() << "index.theme");
- }
+void IconThemePage::loadThemes(){
+ QFileInfoList themeFileList;
+ foreach(QString path, lthemeengine::iconPaths()){
+ QDir dir(path);
+ dir.setFilter(QDir::Dirs | QDir::NoDotDot | QDir::NoDot);
+ foreach (QFileInfo info, dir.entryInfoList()){
+ QDir themeDir(info.absoluteFilePath());
+ themeDir.setFilter(QDir::Files);
+ themeFileList << themeDir.entryInfoList(QStringList() << "index.theme");
+ }
}
-
- foreach(QFileInfo info, themeFileList)
- {
- loadTheme(info.canonicalFilePath());
+ foreach(QFileInfo info, themeFileList){
+ loadTheme(info.canonicalFilePath());
}
}
-void IconThemePage::loadTheme(const QString &path)
-{
- QSettings config(path, QSettings::IniFormat);
- config.setIniCodec("UTF-8");
-
- config.beginGroup("Icon Theme");
- QStringList dirs = config.value("Directories").toStringList();
- if(dirs.isEmpty() || config.value("Hidden", false).toBool())
- return;
-
+void IconThemePage::loadTheme(const QString &path){
+ QSettings config(path, QSettings::IniFormat);
+ config.setIniCodec("UTF-8");
+ config.beginGroup("Icon Theme");
+ QStringList dirs = config.value("Directories").toStringList();
+ if(dirs.isEmpty() || config.value("Hidden", false).toBool())
+ return;
QString name, comment;
QString lang = QLocale::system().name();
-
name = config.value(QString("Name[%1]").arg(lang)).toString();
comment = config.value(QString("Comment[%1]").arg(lang)).toString();
-
if(lang.contains("_"))
- lang = lang.split("_").first();
-
- if(name.isEmpty())
+ lang = lang.split("_").first();
+ if(name.isEmpty())
name = config.value(QString("Name[%1]").arg(lang)).toString();
-
- if(comment.isEmpty())
- comment = config.value(QString("Comment[%1]").arg(lang)).toString();
-
- if(name.isEmpty())
- name = config.value("Name").toString();
-
- if(comment.isEmpty())
- comment = config.value("Comment").toString();
-
- config.endGroup();
-
- QIcon icon1 = findIcon(path, 24, "document-save");
- QIcon icon2 = findIcon(path, 24, "document-print");
- QIcon icon3 = findIcon(path, 24, "media-playback-stop");
-
- QTreeWidgetItem *item = new QTreeWidgetItem();
- item->setIcon(0, icon1);
- item->setIcon(1, icon2);
- item->setIcon(2, icon3);
- item->setText(3, name);
- item->setData(3, Qt::UserRole, QFileInfo(path).path().section("/", -1));
- item->setToolTip(3, comment);
- item->setSizeHint(0, QSize(24,24));
- m_ui->treeWidget->addTopLevelItem(item);
-
- m_ui->treeWidget->resizeColumnToContents(0);
- m_ui->treeWidget->resizeColumnToContents(1);
- m_ui->treeWidget->resizeColumnToContents(2);
- m_ui->treeWidget->resizeColumnToContents(3);
+ if(comment.isEmpty())
+ comment = config.value(QString("Comment[%1]").arg(lang)).toString();
+ if(name.isEmpty())
+ name = config.value("Name").toString();
+ if(comment.isEmpty())
+ comment = config.value("Comment").toString();
+ config.endGroup();
+ QIcon icon1 = findIcon(path, 24, "document-save");
+ QIcon icon2 = findIcon(path, 24, "document-print");
+ QIcon icon3 = findIcon(path, 24, "media-playback-stop");
+ QTreeWidgetItem *item = new QTreeWidgetItem();
+ item->setIcon(0, icon1);
+ item->setIcon(1, icon2);
+ item->setIcon(2, icon3);
+ item->setText(3, name);
+ item->setData(3, Qt::UserRole, QFileInfo(path).path().section("/", -1));
+ item->setToolTip(3, comment);
+ item->setSizeHint(0, QSize(24,24));
+ m_ui->treeWidget->addTopLevelItem(item);
+ m_ui->treeWidget->resizeColumnToContents(0);
+ m_ui->treeWidget->resizeColumnToContents(1);
+ m_ui->treeWidget->resizeColumnToContents(2);
+ m_ui->treeWidget->resizeColumnToContents(3);
}
-QIcon IconThemePage::findIcon(const QString &themePath, int size, const QString &name)
-{
- QSettings config(themePath, QSettings::IniFormat);
- config.beginGroup("Icon Theme");
- QStringList dirs = config.value("Directories").toStringList();
- QStringList parents = config.value("Inherits").toStringList();
- bool haveInherits = config.contains("Inherits");
- config.endGroup();
-
- foreach (QString dir, dirs)
- {
- config.beginGroup(dir);
- if(config.value("Size").toInt() == size)
- {
- QDir iconDir = QFileInfo(themePath).path() + "/" + dir;
- iconDir.setFilter(QDir::Files);
- iconDir.setNameFilters(QStringList () << name + ".*");
- if(iconDir.entryInfoList().isEmpty())
- continue;
- return QIcon(iconDir.entryInfoList().first().absoluteFilePath());
- }
- config.endGroup();
+QIcon IconThemePage::findIcon(const QString &themePath, int size, const QString &name){
+ QSettings config(themePath, QSettings::IniFormat);
+ config.beginGroup("Icon Theme");
+ QStringList dirs = config.value("Directories").toStringList();
+ QStringList parents = config.value("Inherits").toStringList();
+ bool haveInherits = config.contains("Inherits");
+ config.endGroup();
+ foreach (QString dir, dirs){
+ config.beginGroup(dir);
+ if(config.value("Size").toInt() == size){
+ QDir iconDir = QFileInfo(themePath).path() + "/" + dir;
+ iconDir.setFilter(QDir::Files);
+ iconDir.setNameFilters(QStringList () << name + ".*");
+ if(iconDir.entryInfoList().isEmpty())
+ continue;
+ return QIcon(iconDir.entryInfoList().first().absoluteFilePath());
+ }
+ config.endGroup();
}
-
- foreach (QString dir, dirs)
- {
- config.beginGroup(dir);
- if(abs(config.value("Size").toInt() - size) < 4)
- {
- QDir iconDir = QFileInfo(themePath).path() + "/" + dir;
- iconDir.setFilter(QDir::Files);
- iconDir.setNameFilters(QStringList () << name + ".*");
- if(iconDir.entryInfoList().isEmpty())
- continue;
- return QIcon(iconDir.entryInfoList().first().absoluteFilePath());
- }
- config.endGroup();
+ foreach (QString dir, dirs){
+ config.beginGroup(dir);
+ if(abs(config.value("Size").toInt() - size) < 4){
+ QDir iconDir = QFileInfo(themePath).path() + "/" + dir;
+ iconDir.setFilter(QDir::Files);
+ iconDir.setNameFilters(QStringList () << name + ".*");
+ if(iconDir.entryInfoList().isEmpty())
+ continue;
+ return QIcon(iconDir.entryInfoList().first().absoluteFilePath());
}
-
- if (!haveInherits)
- return QIcon();
-
+ config.endGroup();
+ }
+ if (!haveInherits)
+ return QIcon();
parents.append("hicolor"); //add fallback themes
parents.append("gnome");
parents.removeDuplicates();
-
- foreach (QString parent, parents)
- {
- QString parentThemePath = QDir(QFileInfo(themePath).path() + "/../" + parent).canonicalPath() + "/index.theme";
-
- if(!QFile::exists(parentThemePath) || parentThemePath == themePath)
- continue;
-
+ foreach (QString parent, parents){
+ QString parentThemePath = QDir(QFileInfo(themePath).path() + "/../" + parent).canonicalPath() + "/index.theme";
+ if(!QFile::exists(parentThemePath) || parentThemePath == themePath)
+ continue;
QIcon icon = findIcon(parentThemePath, size, name);
if(!icon.isNull())
- return icon;
- }
-
+ return icon;
+ }
return QIcon();
}
diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/iconthemepage.h b/src-qt5/core/lumina-theme-engine/src/lthemeengine/iconthemepage.h
index 0ccd64e0..8a6635ef 100644
--- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/iconthemepage.h
+++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/iconthemepage.h
@@ -1,31 +1,3 @@
-/*
- * Copyright (c) 2014-2017, Ilya Kotov <forkotov02@hotmail.ru>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
#ifndef ICONTHEMEPAGE_H
#define ICONTHEMEPAGE_H
diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/interfacepage.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/interfacepage.cpp
index a9f40080..a44e75e4 100644
--- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/interfacepage.cpp
+++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/interfacepage.cpp
@@ -1,31 +1,3 @@
-/*
- * Copyright (c) 2014-2017, Ilya Kotov <forkotov02@hotmail.ru>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
#include <QSettings>
#include <QApplication>
#include <QDialogButtonBox>
@@ -33,108 +5,84 @@
#include "interfacepage.h"
#include "ui_interfacepage.h"
-InterfacePage::InterfacePage(QWidget *parent) :
- TabPage(parent),
- m_ui(new Ui::InterfacePage)
-{
- m_ui->setupUi(this);
-
- m_ui->buttonLayoutComboBox->addItem("Windows", QDialogButtonBox::WinLayout);
- m_ui->buttonLayoutComboBox->addItem("Mac OS X", QDialogButtonBox::MacLayout);
- m_ui->buttonLayoutComboBox->addItem("KDE", QDialogButtonBox::KdeLayout);
- m_ui->buttonLayoutComboBox->addItem("GNOME", QDialogButtonBox::GnomeLayout);
-
- m_ui->toolButtonStyleComboBox->addItem(tr("Only display the icon"), Qt::ToolButtonIconOnly);
- m_ui->toolButtonStyleComboBox->addItem(tr("Only display the text"), Qt::ToolButtonTextOnly);
- m_ui->toolButtonStyleComboBox->addItem(tr("The text appears beside the icon"), Qt::ToolButtonTextBesideIcon);
- m_ui->toolButtonStyleComboBox->addItem(tr("The text appears under the icon"), Qt::ToolButtonTextUnderIcon);
- m_ui->toolButtonStyleComboBox->addItem(tr("Follow the application style"), Qt::ToolButtonFollowStyle);
-
- readSettings();
+InterfacePage::InterfacePage(QWidget *parent) : TabPage(parent), m_ui(new Ui::InterfacePage){
+ m_ui->setupUi(this);
+
+ m_ui->buttonLayoutComboBox->addItem("Windows", QDialogButtonBox::WinLayout);
+ m_ui->buttonLayoutComboBox->addItem("Mac OS X", QDialogButtonBox::MacLayout);
+ m_ui->buttonLayoutComboBox->addItem("KDE", QDialogButtonBox::KdeLayout);
+ m_ui->buttonLayoutComboBox->addItem("GNOME", QDialogButtonBox::GnomeLayout);
+ m_ui->toolButtonStyleComboBox->addItem(tr("Only display the icon"), Qt::ToolButtonIconOnly);
+ m_ui->toolButtonStyleComboBox->addItem(tr("Only display the text"), Qt::ToolButtonTextOnly);
+ m_ui->toolButtonStyleComboBox->addItem(tr("The text appears beside the icon"), Qt::ToolButtonTextBesideIcon);
+ m_ui->toolButtonStyleComboBox->addItem(tr("The text appears under the icon"), Qt::ToolButtonTextUnderIcon);
+ m_ui->toolButtonStyleComboBox->addItem(tr("Follow the application style"), Qt::ToolButtonFollowStyle);
+ readSettings();
}
-InterfacePage::~InterfacePage()
-{
- delete m_ui;
+InterfacePage::~InterfacePage(){
+ delete m_ui;
}
-void InterfacePage::writeSettings()
-{
- QSettings settings(lthemeengine::configFile(), QSettings::IniFormat);
- settings.beginGroup("Interface");
- settings.setValue("double_click_interval", m_ui->doubleClickIntervalSpinBox->value());
- settings.setValue("cursor_flash_time", m_ui->cursorFlashTimeSpinBox->value());
- settings.setValue("buttonbox_layout", m_ui->buttonLayoutComboBox->currentData());
- settings.setValue("menus_have_icons", m_ui->menuIconsCheckBox->isChecked());
- settings.setValue("activate_item_on_single_click", m_ui->singleClickCheckBox->checkState());
- settings.setValue("dialog_buttons_have_icons", m_ui->dialogIconsCheckBox->checkState());
- settings.setValue("toolbutton_style", m_ui->toolButtonStyleComboBox->currentData());
- settings.setValue("wheel_scroll_lines", m_ui->wheelScrollLinesSpinBox->value());
-
- QStringList effects;
- if(m_ui->guiEffectsCheckBox->isChecked())
- effects << "General";
-
+void InterfacePage::writeSettings(){
+ QSettings settings(lthemeengine::configFile(), QSettings::IniFormat);
+ settings.beginGroup("Interface");
+ settings.setValue("double_click_interval", m_ui->doubleClickIntervalSpinBox->value());
+ settings.setValue("cursor_flash_time", m_ui->cursorFlashTimeSpinBox->value());
+ settings.setValue("buttonbox_layout", m_ui->buttonLayoutComboBox->currentData());
+ settings.setValue("menus_have_icons", m_ui->menuIconsCheckBox->isChecked());
+ settings.setValue("activate_item_on_single_click", m_ui->singleClickCheckBox->checkState());
+ settings.setValue("dialog_buttons_have_icons", m_ui->dialogIconsCheckBox->checkState());
+ settings.setValue("toolbutton_style", m_ui->toolButtonStyleComboBox->currentData());
+ settings.setValue("wheel_scroll_lines", m_ui->wheelScrollLinesSpinBox->value());
+ QStringList effects;
+ if(m_ui->guiEffectsCheckBox->isChecked())
+ effects << "General";
if(m_ui->menuEffectComboBox->currentIndex() == 1)
- effects << "AnimateMenu";
+ effects << "AnimateMenu";
else if(m_ui->menuEffectComboBox->currentIndex() == 2)
- effects << "FadeMenu";
-
- if(m_ui->comboBoxEffectComboBox->currentIndex() == 1)
+ effects << "FadeMenu";
+ if(m_ui->comboBoxEffectComboBox->currentIndex() == 1)
effects << "AnimateCombo";
-
- if(m_ui->toolTipEffectComboBox->currentIndex() == 1)
- effects << "AnimateTooltip";
- else if(m_ui->toolTipEffectComboBox->currentIndex() == 2)
- effects << "FadeTooltip";
-
- if(m_ui->toolBoxEffectComboBox->currentIndex() == 1)
- effects << "AnimateToolBox";
-
- settings.setValue("gui_effects", effects);
- settings.endGroup();
+ if(m_ui->toolTipEffectComboBox->currentIndex() == 1)
+ effects << "AnimateTooltip";
+ else if(m_ui->toolTipEffectComboBox->currentIndex() == 2)
+ effects << "FadeTooltip";
+ if(m_ui->toolBoxEffectComboBox->currentIndex() == 1)
+ effects << "AnimateToolBox";
+ settings.setValue("gui_effects", effects);
+ settings.endGroup();
}
-void InterfacePage::readSettings()
-{
- QSettings settings(lthemeengine::configFile(), QSettings::IniFormat);
- settings.beginGroup("Interface");
- m_ui->doubleClickIntervalSpinBox->setValue(qApp->doubleClickInterval());
- m_ui->cursorFlashTimeSpinBox->setValue(qApp->cursorFlashTime());
-
- m_ui->guiEffectsCheckBox->setChecked(qApp->isEffectEnabled(Qt::UI_General));
-
- int layout = settings.value("buttonbox_layout", style()->styleHint(QStyle::SH_DialogButtonLayout)).toInt();
- int index = m_ui->buttonLayoutComboBox->findData(layout);
- if(index >= 0)
- m_ui->buttonLayoutComboBox->setCurrentIndex(index);
-
+void InterfacePage::readSettings(){
+ QSettings settings(lthemeengine::configFile(), QSettings::IniFormat);
+ settings.beginGroup("Interface");
+ m_ui->doubleClickIntervalSpinBox->setValue(qApp->doubleClickInterval());
+ m_ui->cursorFlashTimeSpinBox->setValue(qApp->cursorFlashTime());
+ m_ui->guiEffectsCheckBox->setChecked(qApp->isEffectEnabled(Qt::UI_General));
+ int layout = settings.value("buttonbox_layout", style()->styleHint(QStyle::SH_DialogButtonLayout)).toInt();
+ int index = m_ui->buttonLayoutComboBox->findData(layout);
+ if(index >= 0)
+ m_ui->buttonLayoutComboBox->setCurrentIndex(index);
if(qApp->isEffectEnabled(Qt::UI_AnimateMenu))
- m_ui->menuEffectComboBox->setCurrentIndex(1);
+ m_ui->menuEffectComboBox->setCurrentIndex(1);
else if(qApp->isEffectEnabled(Qt::UI_FadeMenu))
- m_ui->menuEffectComboBox->setCurrentIndex(2);
-
+ m_ui->menuEffectComboBox->setCurrentIndex(2);
if(qApp->isEffectEnabled(Qt::UI_AnimateCombo))
- m_ui->comboBoxEffectComboBox->setCurrentIndex(1);
-
- if(qApp->isEffectEnabled(Qt::UI_AnimateTooltip))
+ m_ui->comboBoxEffectComboBox->setCurrentIndex(1);
+ if(qApp->isEffectEnabled(Qt::UI_AnimateTooltip))
m_ui->toolTipEffectComboBox->setCurrentIndex(1);
- else if(qApp->isEffectEnabled(Qt::UI_FadeTooltip))
+ else if(qApp->isEffectEnabled(Qt::UI_FadeTooltip))
m_ui->toolTipEffectComboBox->setCurrentIndex(2);
-
- if(qApp->isEffectEnabled(Qt::UI_AnimateToolBox))
- m_ui->toolBoxEffectComboBox->setCurrentIndex(1);
-
- m_ui->singleClickCheckBox->setCheckState((Qt::CheckState)settings.value("activate_item_on_single_click", Qt::PartiallyChecked).toInt());
- m_ui->dialogIconsCheckBox->setCheckState((Qt::CheckState)settings.value("dialog_buttons_have_icons", Qt::PartiallyChecked).toInt());
- m_ui->menuIconsCheckBox->setChecked(!qApp->testAttribute(Qt::AA_DontShowIconsInMenus));
-
- int toolbarStyle = settings.value("toolbutton_style", Qt::ToolButtonFollowStyle).toInt();
- index = m_ui->toolButtonStyleComboBox->findData(toolbarStyle);
- if(index >= 0)
- m_ui->toolButtonStyleComboBox->setCurrentIndex(index);
-
- m_ui->wheelScrollLinesSpinBox->setValue(settings.value("wheel_scroll_lines", 3).toInt());
-
- settings.endGroup();
+ if(qApp->isEffectEnabled(Qt::UI_AnimateToolBox))
+ m_ui->toolBoxEffectComboBox->setCurrentIndex(1);
+ m_ui->singleClickCheckBox->setCheckState((Qt::CheckState)settings.value("activate_item_on_single_click", Qt::PartiallyChecked).toInt());
+ m_ui->dialogIconsCheckBox->setCheckState((Qt::CheckState)settings.value("dialog_buttons_have_icons", Qt::PartiallyChecked).toInt());
+ m_ui->menuIconsCheckBox->setChecked(!qApp->testAttribute(Qt::AA_DontShowIconsInMenus));
+ int toolbarStyle = settings.value("toolbutton_style", Qt::ToolButtonFollowStyle).toInt();
+ index = m_ui->toolButtonStyleComboBox->findData(toolbarStyle);
+ if(index >= 0)
+ m_ui->toolButtonStyleComboBox->setCurrentIndex(index);
+ m_ui->wheelScrollLinesSpinBox->setValue(settings.value("wheel_scroll_lines", 3).toInt());
+ settings.endGroup();
}
diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/interfacepage.h b/src-qt5/core/lumina-theme-engine/src/lthemeengine/interfacepage.h
index 637b6bf1..7946e599 100644
--- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/interfacepage.h
+++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/interfacepage.h
@@ -1,31 +1,3 @@
-/*
- * Copyright (c) 2014-2017, Ilya Kotov <forkotov02@hotmail.ru>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
#ifndef INTERFACEPAGE_H
#define INTERFACEPAGE_H
diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.cpp
index 65328963..979c8c43 100644
--- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.cpp
+++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.cpp
@@ -1,31 +1,3 @@
-/*
- * Copyright (c) 2014-2017, Ilya Kotov <forkotov02@hotmail.ru>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
#include <QDir>
#include <QLocale>
#include "lthemeengine.h"
@@ -35,98 +7,83 @@
#endif
-QString lthemeengine::configPath()
-{
- return QDir::homePath() + "/.config/lthemeengine/";
+QString lthemeengine::configPath(){
+ return QDir::homePath() + "/.config/lthemeengine/";
}
-QString lthemeengine::configFile()
-{
- return configPath() + "lthemeengine.conf";
+QString lthemeengine::configFile(){
+ return configPath() + "lthemeengine.conf";
}
-QStringList lthemeengine::iconPaths()
-{
- QString xdgDataDirs = qgetenv("XDG_DATA_DIRS");
- QString xdgDataHome = qgetenv("XDG_DATA_HOME");
-
- QStringList paths;
- paths << QDir::homePath() + "/.icons/";
-
- if(xdgDataDirs.isEmpty())
- {
- paths << "/usr/share/icons";
- paths << "/usr/local/share/icons";
+QStringList lthemeengine::iconPaths(){
+ QString xdgDataDirs = qgetenv("XDG_DATA_DIRS");
+ QString xdgDataHome = qgetenv("XDG_DATA_HOME");
+ QStringList paths;
+ paths << QDir::homePath() + "/.icons/";
+ if(xdgDataDirs.isEmpty()){
+ paths << "/usr/share/icons";
+ paths << "/usr/local/share/icons";
}
- else
- {
- foreach (QString p, xdgDataDirs.split(":"))
- paths << QDir(p + "/icons/").absolutePath();
+ else{
+ foreach (QString p, xdgDataDirs.split(":"))
+ paths << QDir(p + "/icons/").absolutePath();
}
-
- if(xdgDataHome.isEmpty())
- xdgDataHome = QDir::homePath() + "/.local/share";
-
+ if(xdgDataHome.isEmpty())
+ xdgDataHome = QDir::homePath() + "/.local/share";
paths << "/usr/share/pixmaps";
paths << xdgDataHome + "/icons";
paths.removeDuplicates();
-
//remove invalid
- foreach (QString p, paths)
- {
- if(!QDir(p).exists())
- paths.removeAll(p);
- }
- return paths;
+ foreach (QString p, paths){
+ if(!QDir(p).exists())
+ paths.removeAll(p);
+ }
+ return paths;
}
-QString lthemeengine::userStyleSheetPath()
-{
- return configPath() + "qss/";
+QString lthemeengine::userStyleSheetPath(){
+ return configPath() + "qss/";
}
-QStringList lthemeengine::sharedStyleSheetPath()
- {
- QStringList dirs;
- dirs << QString(getenv("XDG_CONFIG_HOME"));
- dirs << QString(getenv("XDG_CONFIG_DIRS")).split(":");
- for(int i=0; i<dirs.length(); i++){
- dirs[i].append("/lthemeengine/colors/");
+QStringList lthemeengine::sharedStyleSheetPath(){
+ QStringList dirs;
+ dirs << QString(getenv("XDG_CONFIG_HOME"));
+ dirs << QString(getenv("XDG_CONFIG_DIRS")).split(":");
+ for(int i=0; i<dirs.length(); i++){
+ dirs[i].append("/lthemeengine/colors/");
}
- if(dirs.isEmpty()){
- dirs << LTHEMEENGINE_DATADIR"/lthemeengine/qss/"; //no XDG settings - use the hardcoded path
+ if(dirs.isEmpty()){
+ dirs << LTHEMEENGINE_DATADIR"/lthemeengine/qss/"; //no XDG settings - use the hardcoded path
}
- return dirs;
+ return dirs;
}
- QString lthemeengine::userColorSchemePath(){
- return configPath() + "colors/";
- }
+QString lthemeengine::userColorSchemePath(){
+ return configPath() + "colors/";
+}
-QStringList lthemeengine::sharedColorSchemePath()
- {
- QStringList dirs;
- dirs << QString(getenv("XDG_CONFIG_HOME"));
- dirs << QString(getenv("XDG_CONFIG_DIRS")).split(":");
- for(int i=0; i<dirs.length(); i++){
- dirs[i].append("/lthemeengine/colors/");
+QStringList lthemeengine::sharedColorSchemePath(){
+ QStringList dirs;
+ dirs << QString(getenv("XDG_CONFIG_HOME"));
+ dirs << QString(getenv("XDG_CONFIG_DIRS")).split(":");
+ for(int i=0; i<dirs.length(); i++){
+ dirs[i].append("/lthemeengine/colors/");
}
- if(dirs.isEmpty()){
- dirs << LTHEMEENGINE_DATADIR"/lthemeengine/colors/"; //no XDG settings - use the hardcoded path
+ if(dirs.isEmpty()){
+ dirs << LTHEMEENGINE_DATADIR"/lthemeengine/colors/"; //no XDG settings - use the hardcoded path
}
- return dirs;
- }
+ return dirs;
+}
-QString lthemeengine::systemLanguageID()
-{
+QString lthemeengine::systemLanguageID(){
#ifdef Q_OS_UNIX
- QByteArray v = qgetenv ("LC_ALL");
- if (v.isEmpty())
- v = qgetenv ("LC_MESSAGES");
+ QByteArray v = qgetenv ("LC_ALL");
+ if (v.isEmpty())
+ v = qgetenv ("LC_MESSAGES");
if (v.isEmpty())
- v = qgetenv ("LANG");
- if (!v.isEmpty())
+ v = qgetenv ("LANG");
+ if (!v.isEmpty())
return QLocale (v).name();
#endif
- return QLocale::system().name();
+ return QLocale::system().name();
}
diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.h b/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.h
index 171f720a..93a1d433 100644
--- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.h
+++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/lthemeengine.h
@@ -1,31 +1,3 @@
-/*
- * Copyright (c) 2014-2017, Ilya Kotov <forkotov02@hotmail.ru>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
#ifndef LTHEMEENGINE_H
#define LTHEMEENGINE_H
diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/main.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/main.cpp
index 1961d17d..55d0fc36 100644
--- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/main.cpp
+++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/main.cpp
@@ -1,31 +1,3 @@
-/*
- * Copyright (c) 2014-2017, Ilya Kotov <forkotov02@hotmail.ru>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
#include <QApplication>
#include <QLibraryInfo>
#include <QLocale>
@@ -36,49 +8,34 @@
#include <QStyleFactory>
#include "mainwindow.h"
-int main(int argc, char **argv)
-{
- QApplication app(argc, argv);
- QTranslator translator;
- QString locale = lthemeengine::systemLanguageID();
- translator.load(QString(":/lthemeengine_") + locale);
- app.installTranslator(&translator);
-
- QTranslator qt_translator;
- qt_translator.load(QLibraryInfo::location (QLibraryInfo::TranslationsPath) + "/qtbase_" + locale);
- app.installTranslator(&qt_translator);
-
- qDebug("Configuration path: %s", qPrintable(lthemeengine::configPath()));
- qDebug("Shared QSS path: %s", qPrintable(lthemeengine::sharedStyleSheetPath().join(", ")));
-
- //checking environment
- QStringList errorMessages;
- QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
-
- if(env.contains("QT_STYLE_OVERRIDE"))
- {
- errorMessages << app.translate("main", "Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable");
+int main(int argc, char **argv){
+ QApplication app(argc, argv);
+ QTranslator translator;
+ QString locale = lthemeengine::systemLanguageID();
+ translator.load(QString(":/lthemeengine_") + locale);
+ app.installTranslator(&translator);
+ QTranslator qt_translator;
+ qt_translator.load(QLibraryInfo::location (QLibraryInfo::TranslationsPath) + "/qtbase_" + locale);
+ app.installTranslator(&qt_translator);
+ qDebug("Configuration path: %s", qPrintable(lthemeengine::configPath()));
+ qDebug("Shared QSS path: %s", qPrintable(lthemeengine::sharedStyleSheetPath().join(", ")));
+ //checking environment
+ QStringList errorMessages;
+ QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
+ if(env.contains("QT_STYLE_OVERRIDE")){
+ errorMessages << app.translate("main", "Please remove the <b>QT_STYLE_OVERRIDE</b> environment variable");
}
-
- if(env.value("QT_QPA_PLATFORMTHEME") != "lthemeengine")
- {
- errorMessages << app.translate("main", "The <b>QT_QPA_PLATFORMTHEME</b> environment "
- "variable is not set correctly");
+ if(env.value("QT_QPA_PLATFORMTHEME") != "lthemeengine"){
+ errorMessages << app.translate("main", "The <b>QT_QPA_PLATFORMTHEME</b> environment variable is not set correctly");
}
-
- if(!QStyleFactory::keys().contains("lthemeengine-style"))
- {
- errorMessages << app.translate("main", "Unable to find <b>liblthemeengine-style.so</b>");
+ if(!QStyleFactory::keys().contains("lthemeengine-style")){
+ errorMessages << app.translate("main", "Unable to find <b>liblthemeengine-style.so</b>");
}
-
- if(!errorMessages.isEmpty())
- {
- QMessageBox::critical(0, app.translate("main", "Error"), errorMessages.join("<br><br>"));
- return 0;
+ if(!errorMessages.isEmpty()){
+ QMessageBox::critical(0, app.translate("main", "Error"), errorMessages.join("<br><br>"));
+ return 0;
}
-
- MainWindow w;
- w.show();
-
- return app.exec();
+ MainWindow w;
+ w.show();
+ return app.exec();
}
diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/mainwindow.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/mainwindow.cpp
index ed658e2e..c93b1052 100644
--- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/mainwindow.cpp
+++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/mainwindow.cpp
@@ -1,31 +1,3 @@
-/*
- * Copyright (c) 2014-2017, Ilya Kotov <forkotov02@hotmail.ru>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
#include <QApplication>
#include <QSettings>
#include "lthemeengine.h"
@@ -37,54 +9,41 @@
#include "qsspage.h"
#include "ui_mainwindow.h"
-MainWindow::MainWindow(QWidget *parent) :
- QWidget(parent),
- m_ui(new Ui::MainWindow)
-{
- m_ui->setupUi(this);
- m_ui->tabWidget->addTab(new AppearancePage(this), tr("Appearance"));
- m_ui->tabWidget->addTab(new FontsPage(this), tr("Fonts"));
- m_ui->tabWidget->addTab(new IconThemePage(this), tr("Icon Theme"));
- m_ui->tabWidget->addTab(new InterfacePage(this), tr("Interface"));
+MainWindow::MainWindow(QWidget *parent) : QWidget(parent), m_ui(new Ui::MainWindow){
+ m_ui->setupUi(this);
+ m_ui->tabWidget->addTab(new AppearancePage(this), tr("Appearance"));
+ m_ui->tabWidget->addTab(new FontsPage(this), tr("Fonts"));
+ m_ui->tabWidget->addTab(new IconThemePage(this), tr("Icon Theme"));
+ m_ui->tabWidget->addTab(new InterfacePage(this), tr("Interface"));
#ifdef USE_WIDGETS
- m_ui->tabWidget->addTab(new QSSPage(this), tr("Style Sheets"));
+ m_ui->tabWidget->addTab(new QSSPage(this), tr("Style Sheets"));
#endif
-
- QSettings settings(lthemeengine::configFile(), QSettings::IniFormat);
- restoreGeometry(settings.value("SettingsWindow/geometry").toByteArray());
-
- setWindowIcon(QIcon::fromTheme("preferences-desktop-theme"));
-
- m_ui->versionLabel->setText(tr("Version: %1").arg(LTHEMEENGINE_VERSION_STR));
+ QSettings settings(lthemeengine::configFile(), QSettings::IniFormat);
+ restoreGeometry(settings.value("SettingsWindow/geometry").toByteArray());
+ setWindowIcon(QIcon::fromTheme("preferences-desktop-theme"));
+ m_ui->versionLabel->setText(tr("Version: %1").arg(LTHEMEENGINE_VERSION_STR));
}
-MainWindow::~MainWindow()
-{
- delete m_ui;
+MainWindow::~MainWindow(){
+ delete m_ui;
}
-void MainWindow::closeEvent(QCloseEvent *)
-{
- QSettings settings(lthemeengine::configFile(), QSettings::IniFormat);
- settings.setValue("SettingsWindow/geometry", saveGeometry());
+void MainWindow::closeEvent(QCloseEvent *){
+ QSettings settings(lthemeengine::configFile(), QSettings::IniFormat);
+ settings.setValue("SettingsWindow/geometry", saveGeometry());
}
-void MainWindow::on_buttonBox_clicked(QAbstractButton *button)
-{
- int id = m_ui->buttonBox->standardButton(button);
- if(id == QDialogButtonBox::Ok || id == QDialogButtonBox::Apply)
- {
- for(int i = 0; i < m_ui->tabWidget->count(); ++i)
- {
- TabPage *p = qobject_cast<TabPage*>(m_ui->tabWidget->widget(i));
- if(p)
- p->writeSettings();
+void MainWindow::on_buttonBox_clicked(QAbstractButton *button){
+ int id = m_ui->buttonBox->standardButton(button);
+ if(id == QDialogButtonBox::Ok || id == QDialogButtonBox::Apply){
+ for(int i = 0; i < m_ui->tabWidget->count(); ++i){
+ TabPage *p = qobject_cast<TabPage*>(m_ui->tabWidget->widget(i));
+ if(p)
+ p->writeSettings();
}
}
-
- if(id == QDialogButtonBox::Ok || id == QDialogButtonBox::Cancel)
- {
- close();
- qApp->quit();
+ if(id == QDialogButtonBox::Ok || id == QDialogButtonBox::Cancel){
+ close();
+ qApp->quit();
}
}
diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/mainwindow.h b/src-qt5/core/lumina-theme-engine/src/lthemeengine/mainwindow.h
index f532141c..749949a6 100644
--- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/mainwindow.h
+++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/mainwindow.h
@@ -1,31 +1,3 @@
-/*
- * Copyright (c) 2014-2017, Ilya Kotov <forkotov02@hotmail.ru>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/paletteeditdialog.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/paletteeditdialog.cpp
index 0f8fcf66..8a8e86d0 100644
--- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/paletteeditdialog.cpp
+++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/paletteeditdialog.cpp
@@ -1,31 +1,3 @@
-/*
- * Copyright (c) 2014-2017, Ilya Kotov <forkotov02@hotmail.ru>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
#include <QPalette>
#include <QColorDialog>
#include <QSettings>
@@ -33,114 +5,91 @@
#include "paletteeditdialog.h"
#include "ui_paletteeditdialog.h"
-PaletteEditDialog::PaletteEditDialog(const QPalette &palette, QStyle *currentStyle, QWidget *parent) :
- QDialog(parent),
- m_ui(new Ui::PaletteEditDialog)
-{
- m_currentStyle = currentStyle;
- m_ui->setupUi(this);
- m_ui->tableWidget->setColumnCount(3);
- m_ui->tableWidget->setRowCount(QPalette::NColorRoles);
- m_ui->tableWidget->verticalHeader()->setDefaultSectionSize(fontMetrics().lineSpacing() + 10);
- m_ui->tableWidget->verticalHeader()->setSectionResizeMode(QHeaderView::Fixed);
- m_ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
-
- QStringList labels;
- labels << tr("Active") << tr("Inactive") << tr("Disabled");
- m_ui->tableWidget->setHorizontalHeaderLabels(labels);
- setPalette(palette);
-
- QSettings settings(lthemeengine::configFile(), QSettings::IniFormat);
- restoreGeometry(settings.value("PaletteEditor/geometry").toByteArray());
+PaletteEditDialog::PaletteEditDialog(const QPalette &palette, QStyle *currentStyle, QWidget *parent) : QDialog(parent), m_ui(new Ui::PaletteEditDialog){
+ m_currentStyle = currentStyle;
+ m_ui->setupUi(this);
+ m_ui->tableWidget->setColumnCount(3);
+ m_ui->tableWidget->setRowCount(QPalette::NColorRoles);
+ m_ui->tableWidget->verticalHeader()->setDefaultSectionSize(fontMetrics().lineSpacing() + 10);
+ m_ui->tableWidget->verticalHeader()->setSectionResizeMode(QHeaderView::Fixed);
+ m_ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
+ QStringList labels;
+ labels << tr("Active") << tr("Inactive") << tr("Disabled");
+ m_ui->tableWidget->setHorizontalHeaderLabels(labels);
+ setPalette(palette);
+ QSettings settings(lthemeengine::configFile(), QSettings::IniFormat);
+ restoreGeometry(settings.value("PaletteEditor/geometry").toByteArray());
}
-PaletteEditDialog::~PaletteEditDialog()
-{
- delete m_ui;
+PaletteEditDialog::~PaletteEditDialog(){
+ delete m_ui;
}
-QPalette PaletteEditDialog::selectedPalette() const
-{
- QPalette palette;
- for(int i = 0; i < QPalette::NColorRoles; i++)
- {
- palette.setBrush(QPalette::Active, QPalette::ColorRole(i), m_ui->tableWidget->item(i,0)->backgroundColor());
- palette.setBrush(QPalette::Inactive, QPalette::ColorRole(i), m_ui->tableWidget->item(i,1)->backgroundColor());
- palette.setBrush(QPalette::Disabled, QPalette::ColorRole(i), m_ui->tableWidget->item(i,2)->backgroundColor());
+QPalette PaletteEditDialog::selectedPalette() const{
+ QPalette palette;
+ for(int i = 0; i < QPalette::NColorRoles; i++){
+ palette.setBrush(QPalette::Active, QPalette::ColorRole(i), m_ui->tableWidget->item(i,0)->backgroundColor());
+ palette.setBrush(QPalette::Inactive, QPalette::ColorRole(i), m_ui->tableWidget->item(i,1)->backgroundColor());
+ palette.setBrush(QPalette::Disabled, QPalette::ColorRole(i), m_ui->tableWidget->item(i,2)->backgroundColor());
}
- return palette;
+ return palette;
}
-void PaletteEditDialog::setPalette(const QPalette &palette)
-{
- for(int i = 0; i < QPalette::NColorRoles; i++)
- {
- if(!m_ui->tableWidget->item(i,0))
- m_ui->tableWidget->setItem(i, 0, new QTableWidgetItem());
- if(!m_ui->tableWidget->item(i,1))
- m_ui->tableWidget->setItem(i, 1, new QTableWidgetItem());
+void PaletteEditDialog::setPalette(const QPalette &palette){
+ for(int i = 0; i < QPalette::NColorRoles; i++){
+ if(!m_ui->tableWidget->item(i,0))
+ m_ui->tableWidget->setItem(i, 0, new QTableWidgetItem());
+ if(!m_ui->tableWidget->item(i,1))
+ m_ui->tableWidget->setItem(i, 1, new QTableWidgetItem());
if(!m_ui->tableWidget->item(i,2))
- m_ui->tableWidget->setItem(i, 2, new QTableWidgetItem());
-
- m_ui->tableWidget->item(i,0)->setBackgroundColor(palette.color(QPalette::Active, QPalette::ColorRole(i)));
- m_ui->tableWidget->item(i,1)->setBackgroundColor(palette.color(QPalette::Inactive, QPalette::ColorRole(i)));
- m_ui->tableWidget->item(i,2)->setBackgroundColor(palette.color(QPalette::Disabled, QPalette::ColorRole(i)));
+ m_ui->tableWidget->setItem(i, 2, new QTableWidgetItem());
+ m_ui->tableWidget->item(i,0)->setBackgroundColor(palette.color(QPalette::Active, QPalette::ColorRole(i)));
+ m_ui->tableWidget->item(i,1)->setBackgroundColor(palette.color(QPalette::Inactive, QPalette::ColorRole(i)));
+ m_ui->tableWidget->item(i,2)->setBackgroundColor(palette.color(QPalette::Disabled, QPalette::ColorRole(i)));
}
-
- QStringList labels;
- labels << tr("Window text") << tr("Button background") << tr("Bright") << tr("Less bright") << tr("Dark") << tr("Less dark")
- << tr("Normal text") << tr("Bright text") << tr("Button text") << tr("Normal background") << tr("Window") << tr("Shadow")
- << tr("Highlight") << tr("Highlighted text") << tr("Link") << tr("Visited link")
- << tr("Alternate background") << tr("Default") << tr("Tooltip background") << tr("Tooltip text");
- m_ui->tableWidget->setVerticalHeaderLabels(labels);
+ QStringList labels;
+ labels << tr("Window text") << tr("Button background") << tr("Bright") << tr("Less bright") << tr("Dark") << tr("Less dark") << tr("Normal text") << tr("Bright text") << tr("Button text") << tr("Normal background") << tr("Window") << tr("Shadow") << tr("Highlight") << tr("Highlighted text") << tr("Link") << tr("Visited link") << tr("Alternate background") << tr("Default") << tr("Tooltip background") << tr("Tooltip text");
+ m_ui->tableWidget->setVerticalHeaderLabels(labels);
}
-void PaletteEditDialog::hideEvent(QHideEvent *)
-{
- QSettings settings(lthemeengine::configFile(), QSettings::IniFormat);
- settings.setValue("PaletteEditor/geometry", saveGeometry());
+void PaletteEditDialog::hideEvent(QHideEvent *){
+ QSettings settings(lthemeengine::configFile(), QSettings::IniFormat);
+ settings.setValue("PaletteEditor/geometry", saveGeometry());
}
-void PaletteEditDialog::on_tableWidget_itemClicked(QTableWidgetItem *item)
-{
- QColor color = QColorDialog::getColor(item->backgroundColor(), this, tr("Select Color"));
- if(color.isValid())
- {
- item->setBackgroundColor(color);
- emit paletteChanged(selectedPalette());
+void PaletteEditDialog::on_tableWidget_itemClicked(QTableWidgetItem *item){
+ QColor color = QColorDialog::getColor(item->backgroundColor(), this, tr("Select Color"));
+ if(color.isValid()){
+ item->setBackgroundColor(color);
+ emit paletteChanged(selectedPalette());
}
}
-void PaletteEditDialog::on_resetPaletteButton_clicked()
-{
- setPalette(m_currentStyle->standardPalette());
- emit paletteChanged(selectedPalette());
+void PaletteEditDialog::on_resetPaletteButton_clicked(){
+ setPalette(m_currentStyle->standardPalette());
+ emit paletteChanged(selectedPalette());
}
-void PaletteEditDialog::on_buildInactiveButton_clicked()
-{
- QPalette palette = selectedPalette();
- for(int i = 0; i < QPalette::NColorRoles; i++)
- {
- palette.setColor(QPalette::Inactive, QPalette::ColorRole(i),
- palette.color(QPalette::Active, QPalette::ColorRole(i)));
+void PaletteEditDialog::on_buildInactiveButton_clicked(){
+ QPalette palette = selectedPalette();
+ for(int i = 0; i < QPalette::NColorRoles; i++){
+ palette.setColor(QPalette::Inactive, QPalette::ColorRole(i),
+ palette.color(QPalette::Active, QPalette::ColorRole(i)));
}
- setPalette(palette);
- emit paletteChanged(selectedPalette());
+ setPalette(palette);
+ emit paletteChanged(selectedPalette());
}
-void PaletteEditDialog::on_buildDisabledButton_clicked()
-{
- QPalette palette = selectedPalette();
- for(int i = 0; i < QPalette::NColorRoles; i++)
- {
- palette.setColor(QPalette::Disabled, QPalette::ColorRole(i),
- palette.color(QPalette::Active, QPalette::ColorRole(i)));
+void PaletteEditDialog::on_buildDisabledButton_clicked(){
+ QPalette palette = selectedPalette();
+ for(int i = 0; i < QPalette::NColorRoles; i++){
+ palette.setColor(QPalette::Disabled, QPalette::ColorRole(i),
+ palette.color(QPalette::Active, QPalette::ColorRole(i)));
}
- palette.setColor(QPalette::Disabled, QPalette::ButtonText, Qt::darkGray);
- palette.setColor(QPalette::Disabled, QPalette::WindowText, Qt::darkGray);
- palette.setColor(QPalette::Disabled, QPalette::Text, Qt::darkGray);
- palette.setColor(QPalette::Disabled, QPalette::HighlightedText, Qt::darkGray);
- setPalette(palette);
- emit paletteChanged(selectedPalette());
+ palette.setColor(QPalette::Disabled, QPalette::ButtonText, Qt::darkGray);
+ palette.setColor(QPalette::Disabled, QPalette::WindowText, Qt::darkGray);
+ palette.setColor(QPalette::Disabled, QPalette::Text, Qt::darkGray);
+ palette.setColor(QPalette::Disabled, QPalette::HighlightedText, Qt::darkGray);
+ setPalette(palette);
+ emit paletteChanged(selectedPalette());
}
diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/paletteeditdialog.h b/src-qt5/core/lumina-theme-engine/src/lthemeengine/paletteeditdialog.h
index c8691a3c..040692f6 100644
--- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/paletteeditdialog.h
+++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/paletteeditdialog.h
@@ -1,31 +1,3 @@
-/*
- * Copyright (c) 2014-2017, Ilya Kotov <forkotov02@hotmail.ru>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
#ifndef PALETTEEDITDIALOG_H
#define PALETTEEDITDIALOG_H
diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsseditordialog.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsseditordialog.cpp
index b92b5619..aa4bb810 100644
--- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsseditordialog.cpp
+++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsseditordialog.cpp
@@ -1,85 +1,45 @@
-/*
- * Copyright (c) 2014-2017, Ilya Kotov <forkotov02@hotmail.ru>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
#include <QFile>
#include <QSettings>
#include "lthemeengine.h"
#include "qsseditordialog.h"
#include "ui_qsseditordialog.h"
-QSSEditorDialog::QSSEditorDialog(const QString &filePath, QWidget *parent) :
- QDialog(parent),
- m_ui(new Ui::QSSEditorDialog)
-{
- m_ui->setupUi(this);
- m_filePath = filePath;
-
- QFile file(filePath);
- file.open(QIODevice::ReadOnly);
- m_ui->textEdit->setPlainText(QString::fromUtf8(file.readAll()));
- setWindowTitle(tr("%1 - Style Sheet Editor").arg(file.fileName()));
-
- QSettings settings(lthemeengine::configFile(), QSettings::IniFormat);
- restoreGeometry(settings.value("QSSEditor/geometry").toByteArray());
+QSSEditorDialog::QSSEditorDialog(const QString &filePath, QWidget *parent) : QDialog(parent), m_ui(new Ui::QSSEditorDialog){
+ m_ui->setupUi(this);
+ m_filePath = filePath;
+ QFile file(filePath);
+ file.open(QIODevice::ReadOnly);
+ m_ui->textEdit->setPlainText(QString::fromUtf8(file.readAll()));
+ setWindowTitle(tr("%1 - Style Sheet Editor").arg(file.fileName()));
+ QSettings settings(lthemeengine::configFile(), QSettings::IniFormat);
+ restoreGeometry(settings.value("QSSEditor/geometry").toByteArray());
}
-QSSEditorDialog::~QSSEditorDialog()
-{
- delete m_ui;
+QSSEditorDialog::~QSSEditorDialog(){
+ delete m_ui;
}
-void QSSEditorDialog::save()
-{
- QFile file(m_filePath);
- file.open(QIODevice::WriteOnly);
- file.write(m_ui->textEdit->toPlainText().toUtf8());
+void QSSEditorDialog::save(){
+ QFile file(m_filePath);
+ file.open(QIODevice::WriteOnly);
+ file.write(m_ui->textEdit->toPlainText().toUtf8());
}
-void QSSEditorDialog::hideEvent(QHideEvent *)
-{
- QSettings settings(lthemeengine::configFile(), QSettings::IniFormat);
- settings.setValue("QSSEditor/geometry", saveGeometry());
+void QSSEditorDialog::hideEvent(QHideEvent *){
+ QSettings settings(lthemeengine::configFile(), QSettings::IniFormat);
+ settings.setValue("QSSEditor/geometry", saveGeometry());
}
-void QSSEditorDialog::on_buttonBox_clicked(QAbstractButton *button)
-{
- QDialogButtonBox::StandardButton id = m_ui->buttonBox->standardButton(button);
- if(id == QDialogButtonBox::Ok)
- {
- save();
- accept();
- }
- else if(id == QDialogButtonBox::Save)
- {
- save();
+void QSSEditorDialog::on_buttonBox_clicked(QAbstractButton *button){
+ QDialogButtonBox::StandardButton id = m_ui->buttonBox->standardButton(button);
+ if(id == QDialogButtonBox::Ok){
+ save();
+ accept();
}
- else
- {
- reject();
+ else if(id == QDialogButtonBox::Save){
+ save();
}
+ else{
+ reject();
+ }
}
diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsseditordialog.h b/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsseditordialog.h
index e2a6c773..ea615e81 100644
--- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsseditordialog.h
+++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsseditordialog.h
@@ -1,31 +1,3 @@
-/*
- * Copyright (c) 2014-2017, Ilya Kotov <forkotov02@hotmail.ru>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
#ifndef QSSEDITORDIALOG_H
#define QSSEDITORDIALOG_H
diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsspage.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsspage.cpp
index 10f21f48..c9bfc14a 100644
--- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsspage.cpp
+++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsspage.cpp
@@ -1,31 +1,3 @@
-/*
- * Copyright (c) 2014-2017, Ilya Kotov <forkotov02@hotmail.ru>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
#include <QSettings>
#include <QDir>
#include <QInputDialog>
@@ -40,193 +12,145 @@
#define QSS_FULL_PATH_ROLE (Qt::ItemDataRole(Qt::UserRole))
#define QSS_WRITABLE_ROLE (Qt::ItemDataRole(Qt::UserRole + 1))
-QSSPage::QSSPage(QWidget *parent) :
- TabPage(parent),
- m_ui(new Ui::QSSPage)
-{
- m_ui->setupUi(this);
- QDir("/").mkpath(lthemeengine::userStyleSheetPath());
-
- m_menu = new QMenu(this);
- m_menu->addAction(QIcon::fromTheme("accessories-text-editor"), tr("Edit"), this, SLOT(on_editButton_clicked()));
- m_menu->addAction(tr("Rename"), this, SLOT(on_renameButton_clicked()));
- m_menu->addSeparator();
- m_menu->addAction(QIcon::fromTheme("edit-delete"), tr("Remove"), this, SLOT(on_removeButton_clicked()));
-
- readSettings();
-
- //icons
- m_ui->createButton->setIcon(QIcon::fromTheme("document-new"));
- m_ui->editButton->setIcon(QIcon::fromTheme("accessories-text-editor"));
- m_ui->removeButton->setIcon(QIcon::fromTheme("edit-delete"));
+QSSPage::QSSPage(QWidget *parent) : TabPage(parent), m_ui(new Ui::QSSPage){
+ m_ui->setupUi(this);
+ QDir("/").mkpath(lthemeengine::userStyleSheetPath());
+ m_menu = new QMenu(this);
+ m_menu->addAction(QIcon::fromTheme("accessories-text-editor"), tr("Edit"), this, SLOT(on_editButton_clicked()));
+ m_menu->addAction(tr("Rename"), this, SLOT(on_renameButton_clicked()));
+ m_menu->addSeparator();
+ m_menu->addAction(QIcon::fromTheme("edit-delete"), tr("Remove"), this, SLOT(on_removeButton_clicked()));
+ readSettings();
+ //icons
+ m_ui->createButton->setIcon(QIcon::fromTheme("document-new"));
+ m_ui->editButton->setIcon(QIcon::fromTheme("accessories-text-editor"));
+ m_ui->removeButton->setIcon(QIcon::fromTheme("edit-delete"));
}
-QSSPage::~QSSPage()
-{
- delete m_ui;
+QSSPage::~QSSPage(){
+ delete m_ui;
}
-void QSSPage::writeSettings()
-{
- QStringList styleSheets;
- QSettings settings(lthemeengine::configFile(), QSettings::IniFormat);
-
- for(int i = 0; i < m_ui->qssListWidget->count(); ++i)
- {
- QListWidgetItem *item = m_ui->qssListWidget->item(i);
- if(item->checkState() == Qt::Checked)
- styleSheets << item->data(QSS_FULL_PATH_ROLE).toString();
+void QSSPage::writeSettings(){
+ QStringList styleSheets;
+ QSettings settings(lthemeengine::configFile(), QSettings::IniFormat);
+ for(int i = 0; i < m_ui->qssListWidget->count(); ++i){
+ QListWidgetItem *item = m_ui->qssListWidget->item(i);
+ if(item->checkState() == Qt::Checked)
+ styleSheets << item->data(QSS_FULL_PATH_ROLE).toString();
}
-
- settings.setValue("Interface/stylesheets", styleSheets);
+ settings.setValue("Interface/stylesheets", styleSheets);
}
-void QSSPage::on_qssListWidget_currentItemChanged(QListWidgetItem *current, QListWidgetItem *)
-{
- if(current)
- {
- m_ui->editButton->setEnabled(current->data(QSS_WRITABLE_ROLE).toBool());
- m_ui->removeButton->setEnabled(current->data(QSS_WRITABLE_ROLE).toBool());
- m_ui->renameButton->setEnabled(current->data(QSS_WRITABLE_ROLE).toBool());
+void QSSPage::on_qssListWidget_currentItemChanged(QListWidgetItem *current, QListWidgetItem *){
+ if(current){
+ m_ui->editButton->setEnabled(current->data(QSS_WRITABLE_ROLE).toBool());
+ m_ui->removeButton->setEnabled(current->data(QSS_WRITABLE_ROLE).toBool());
+ m_ui->renameButton->setEnabled(current->data(QSS_WRITABLE_ROLE).toBool());
}
- else
- {
- m_ui->editButton->setEnabled(false);
- m_ui->removeButton->setEnabled(false);
- m_ui->renameButton->setEnabled(false);
+ else{
+ m_ui->editButton->setEnabled(false);
+ m_ui->removeButton->setEnabled(false);
+ m_ui->renameButton->setEnabled(false);
}
}
-void QSSPage::on_createButton_clicked()
-{
- QString name = QInputDialog::getText(this, tr("Enter Style Sheet Name"), tr("File name:"));
- if(name.isEmpty())
- return;
-
+void QSSPage::on_createButton_clicked(){
+ QString name = QInputDialog::getText(this, tr("Enter Style Sheet Name"), tr("File name:"));
+ if(name.isEmpty())
+ return;
if(!name.endsWith(".qss", Qt::CaseInsensitive))
- name.append(".qss");
-
- QString filePath = lthemeengine::userStyleSheetPath() + name;
-
- if(QFile::exists(filePath))
- {
+ name.append(".qss");
+ QString filePath = lthemeengine::userStyleSheetPath() + name;
+ if(QFile::exists(filePath)){
QMessageBox::warning(this, tr("Error"), tr("The file \"%1\" already exists").arg(filePath));
return;
- }
-
- //creating empty file
- QFile file(filePath);
- file.open(QIODevice::WriteOnly);
- file.close();
-
- //creating item
- QFileInfo info(filePath);
- QListWidgetItem *item = new QListWidgetItem(info.fileName(), m_ui->qssListWidget);
- item->setToolTip(info.filePath());
- item->setData(QSS_FULL_PATH_ROLE, info.filePath());
- item->setData(QSS_WRITABLE_ROLE, info.isWritable());
- item->setCheckState(Qt::Unchecked);
+ }
+ //creating empty file
+ QFile file(filePath);
+ file.open(QIODevice::WriteOnly);
+ file.close();
+ //creating item
+ QFileInfo info(filePath);
+ QListWidgetItem *item = new QListWidgetItem(info.fileName(), m_ui->qssListWidget);
+ item->setToolTip(info.filePath());
+ item->setData(QSS_FULL_PATH_ROLE, info.filePath());
+ item->setData(QSS_WRITABLE_ROLE, info.isWritable());
+ item->setCheckState(Qt::Unchecked);
}
-void QSSPage::on_editButton_clicked()
-{
- QListWidgetItem *item = m_ui->qssListWidget->currentItem();
- if(item)
- {
- QSSEditorDialog dialog(item->data(QSS_FULL_PATH_ROLE).toString(), this);
- dialog.exec();
+void QSSPage::on_editButton_clicked(){
+ QListWidgetItem *item = m_ui->qssListWidget->currentItem();
+ if(item){
+ QSSEditorDialog dialog(item->data(QSS_FULL_PATH_ROLE).toString(), this);
+ dialog.exec();
}
}
-void QSSPage::on_removeButton_clicked()
-{
- QListWidgetItem *item = m_ui->qssListWidget->currentItem();
- if(!item)
- return;
-
- int button = QMessageBox::question(this, tr("Confirm Remove"),
- tr("Are you sure you want to remove style sheet \"%1\"?")
- .arg(item->text()),
- QMessageBox::Yes | QMessageBox::No);
- if(button == QMessageBox::Yes)
- {
- QFile::remove(item->data(QSS_FULL_PATH_ROLE).toString());
- delete item;
- }
+void QSSPage::on_removeButton_clicked(){
+ QListWidgetItem *item = m_ui->qssListWidget->currentItem();
+ if(!item)
+ return;
+ int button = QMessageBox::question(this, tr("Confirm Remove"),tr("Are you sure you want to remove style sheet \"%1\"?").arg(item->text()), QMessageBox::Yes | QMessageBox::No);
+ if(button == QMessageBox::Yes){
+ QFile::remove(item->data(QSS_FULL_PATH_ROLE).toString());
+ delete item;
+ }
}
-void QSSPage::readSettings()
-{
- //load stylesheets
- m_ui->qssListWidget->clear();
- findStyleSheets(lthemeengine::userStyleSheetPath());
- findStyleSheets(lthemeengine::sharedStyleSheetPath().join(", "));
-
- QSettings settings(lthemeengine::configFile(), QSettings::IniFormat);
- QStringList styleSheets = settings.value("Interface/stylesheets").toStringList();
- for(int i = 0; i < m_ui->qssListWidget->count(); ++i)
- {
- QListWidgetItem *item = m_ui->qssListWidget->item(i);
- if(styleSheets.contains(item->data(QSS_FULL_PATH_ROLE).toString()))
- item->setCheckState(Qt::Checked);
- else
- item->setCheckState(Qt::Unchecked);
+void QSSPage::readSettings(){
+ //load stylesheets
+ m_ui->qssListWidget->clear();
+ findStyleSheets(lthemeengine::userStyleSheetPath());
+ findStyleSheets(lthemeengine::sharedStyleSheetPath().join(", "));
+ QSettings settings(lthemeengine::configFile(), QSettings::IniFormat);
+ QStringList styleSheets = settings.value("Interface/stylesheets").toStringList();
+ for(int i = 0; i < m_ui->qssListWidget->count(); ++i){
+ QListWidgetItem *item = m_ui->qssListWidget->item(i);
+ if(styleSheets.contains(item->data(QSS_FULL_PATH_ROLE).toString()))
+ item->setCheckState(Qt::Checked);
+ else
+ item->setCheckState(Qt::Unchecked);
}
}
-void QSSPage::findStyleSheets(const QString &path)
-{
- QDir dir(path);
- dir.setFilter(QDir::Files);
- dir.setNameFilters(QStringList() << "*.qss");
-
- foreach (QFileInfo info, dir.entryInfoList())
- {
- QListWidgetItem *item = new QListWidgetItem(info.fileName(), m_ui->qssListWidget);
- item->setToolTip(info.filePath());
- item->setData(QSS_FULL_PATH_ROLE, info.filePath());
- item->setData(QSS_WRITABLE_ROLE, info.isWritable());
+void QSSPage::findStyleSheets(const QString &path){
+ QDir dir(path);
+ dir.setFilter(QDir::Files);
+ dir.setNameFilters(QStringList() << "*.qss");
+ foreach (QFileInfo info, dir.entryInfoList()){
+ QListWidgetItem *item = new QListWidgetItem(info.fileName(), m_ui->qssListWidget);
+ item->setToolTip(info.filePath());
+ item->setData(QSS_FULL_PATH_ROLE, info.filePath());
+ item->setData(QSS_WRITABLE_ROLE, info.isWritable());
}
}
-void QSSPage::on_renameButton_clicked()
-{
- QListWidgetItem *item = m_ui->qssListWidget->currentItem();
- if(!item)
- return;
-
- QString name = QInputDialog::getText(this, tr("Rename Style Sheet"), tr("Style sheet name:"),
- QLineEdit::Normal, item->text(), 0);
+void QSSPage::on_renameButton_clicked(){
+ QListWidgetItem *item = m_ui->qssListWidget->currentItem();
+ if(!item)
+ return;
+ QString name = QInputDialog::getText(this, tr("Rename Style Sheet"), tr("Style sheet name:"), QLineEdit::Normal, item->text(), 0);
if(name.isEmpty())
- return;
-
- if(!m_ui->qssListWidget->findItems(name, Qt::MatchExactly).isEmpty())
- {
- QMessageBox::warning(this, tr("Error"), tr("The style sheet \"%1\" already exists").arg(name));
- return;
- }
-
- if(!name.endsWith(".qss", Qt::CaseInsensitive))
- name.append(".qss");
-
- QString newPath = lthemeengine::userStyleSheetPath() + name;
-
- if(!QFile::rename(item->data(QSS_FULL_PATH_ROLE).toString(), newPath))
- {
+ return;
+ if(!m_ui->qssListWidget->findItems(name, Qt::MatchExactly).isEmpty()){
+ QMessageBox::warning(this, tr("Error"), tr("The style sheet \"%1\" already exists").arg(name));
+ return;
+ }
+ if(!name.endsWith(".qss", Qt::CaseInsensitive)) name.append(".qss");
+ QString newPath = lthemeengine::userStyleSheetPath() + name;
+ if(!QFile::rename(item->data(QSS_FULL_PATH_ROLE).toString(), newPath)){
QMessageBox::warning(this, tr("Error"), tr("Unable to rename file"));
- return;
- }
-
- item->setText(name);
- item->setData(QSS_FULL_PATH_ROLE, newPath);
- item->setToolTip(newPath);
+ return;
+ }
+ item->setText(name);
+ item->setData(QSS_FULL_PATH_ROLE, newPath);
+ item->setToolTip(newPath);
}
-void QSSPage::on_qssListWidget_customContextMenuRequested(const QPoint &pos)
-{
- QListWidgetItem *item = m_ui->qssListWidget->currentItem();
- if(item && item->data(QSS_WRITABLE_ROLE).toBool())
- {
- m_menu->exec(m_ui->qssListWidget->viewport()->mapToGlobal(pos));
- }
+void QSSPage::on_qssListWidget_customContextMenuRequested(const QPoint &pos){
+ QListWidgetItem *item = m_ui->qssListWidget->currentItem();
+ if(item && item->data(QSS_WRITABLE_ROLE).toBool()){
+ m_menu->exec(m_ui->qssListWidget->viewport()->mapToGlobal(pos));
+ }
}
diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsspage.h b/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsspage.h
index 665f68c0..1fe0ed73 100644
--- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsspage.h
+++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsspage.h
@@ -1,31 +1,3 @@
-/*
- * Copyright (c) 2014-2017, Ilya Kotov <forkotov02@hotmail.ru>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
#ifndef QSSPAGE_H
#define QSSPAGE_H
diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/tabpage.cpp b/src-qt5/core/lumina-theme-engine/src/lthemeengine/tabpage.cpp
index 251ce024..a8f4b959 100644
--- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/tabpage.cpp
+++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/tabpage.cpp
@@ -1,33 +1,4 @@
-/*
- * Copyright (c) 2014-2017, Ilya Kotov <forkotov02@hotmail.ru>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
#include "tabpage.h"
-TabPage::TabPage(QWidget *parent) : QWidget(parent)
-{
+TabPage::TabPage(QWidget *parent) : QWidget(parent){
}
diff --git a/src-qt5/core/lumina-theme-engine/src/lthemeengine/tabpage.h b/src-qt5/core/lumina-theme-engine/src/lthemeengine/tabpage.h
index ac285054..b4dd57d1 100644
--- a/src-qt5/core/lumina-theme-engine/src/lthemeengine/tabpage.h
+++ b/src-qt5/core/lumina-theme-engine/src/lthemeengine/tabpage.h
@@ -1,31 +1,3 @@
-/*
- * Copyright (c) 2014-2017, Ilya Kotov <forkotov02@hotmail.ru>
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
#ifndef TABPAGE_H
#define TABPAGE_H
diff --git a/src-qt5/desktop-utils/lumina-fileinfo/i18n/l-fileinfo_cs.ts b/src-qt5/desktop-utils/lumina-fileinfo/i18n/l-fileinfo_cs.ts
index d33684c3..feb96737 100644
--- a/src-qt5/desktop-utils/lumina-fileinfo/i18n/l-fileinfo_cs.ts
+++ b/src-qt5/desktop-utils/lumina-fileinfo/i18n/l-fileinfo_cs.ts
@@ -33,7 +33,7 @@
<message>
<location filename="../MainUI.ui" line="111"/>
<source>Note: The time a file was created might be more recent than the time modified if the file permissions were changed recently.</source>
- <translation>Poznámka: Doba, kdy byl soubor vytvořen, může být mladší než čas změny, pokud byla oprávnění k souboru změněna nedávno.</translation>
+ <translation>Poznámka: Doba kdy byl soubor vytvořen může být mladší než čas změny, pokud byla oprávnění k souboru změněna nedávno.</translation>
</message>
<message>
<location filename="../MainUI.ui" line="124"/>
@@ -59,7 +59,7 @@
<location filename="../MainUI.ui" line="216"/>
<location filename="../MainUI.cpp" line="139"/>
<source>Edit Shortcut</source>
- <translation>Upravit klávesovou zkratku</translation>
+ <translation>Upravit zkratku</translation>
</message>
<message>
<location filename="../MainUI.ui" line="239"/>
@@ -99,7 +99,7 @@
<message>
<location filename="../MainUI.ui" line="298"/>
<source>Options</source>
- <translation>Volby</translation>
+ <translation>Předvolby</translation>
</message>
<message>
<location filename="../MainUI.ui" line="336"/>
@@ -144,7 +144,7 @@
<message>
<location filename="../MainUI.cpp" line="76"/>
<source>XDG Shortcut</source>
- <translation>XDG klávesová zkratka</translation>
+ <translation>XDG zkratka</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="77"/>
@@ -154,7 +154,7 @@
<message>
<location filename="../MainUI.cpp" line="78"/>
<source>Binary</source>
- <translation>Soubor</translation>
+ <translation>Spustitelný soubor</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="80"/>
@@ -164,7 +164,7 @@
<message>
<location filename="../MainUI.cpp" line="125"/>
<source>URL:</source>
- <translation>URL:</translation>
+ <translation>URL adresa:</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="247"/>
@@ -174,12 +174,12 @@
<message>
<location filename="../MainUI.cpp" line="247"/>
<source>Application Registrations (*.desktop)</source>
- <translation>Zápis aplikace (*.desktop)</translation>
+ <translation>Registrace aplikací (*.desktop)</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="288"/>
<source>Select a binary</source>
- <translation>Vybrat soubor</translation>
+ <translation>Vyberte spustitelný soubor</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="291"/>
@@ -221,7 +221,7 @@
<message>
<location filename="../MainUI.cpp" line="341"/>
<source> Calculating...</source>
- <translation> Počítá se...</translation>
+ <translation> Počítá se…</translation>
</message>
</context>
</TS>
diff --git a/src-qt5/desktop-utils/lumina-fileinfo/i18n/l-fileinfo_es.ts b/src-qt5/desktop-utils/lumina-fileinfo/i18n/l-fileinfo_es.ts
index e7a0c6ad..383768e1 100644
--- a/src-qt5/desktop-utils/lumina-fileinfo/i18n/l-fileinfo_es.ts
+++ b/src-qt5/desktop-utils/lumina-fileinfo/i18n/l-fileinfo_es.ts
@@ -210,18 +210,18 @@
<location filename="../MainUI.cpp" line="339"/>
<location filename="../MainUI.cpp" line="341"/>
<source> Folders: </source>
- <translation>Directorios:</translation>
+ <translation> Directorios: </translation>
</message>
<message>
<location filename="../MainUI.cpp" line="339"/>
<location filename="../MainUI.cpp" line="341"/>
<source>Files: </source>
- <translation>Archivos:</translation>
+ <translation>Archivos: </translation>
</message>
<message>
<location filename="../MainUI.cpp" line="341"/>
<source> Calculating...</source>
- <translation>Calculando…</translation>
+ <translation> Calculando…</translation>
</message>
</context>
</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_ca.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_ca.ts
index 5e3f3b15..7053564c 100644
--- a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_ca.ts
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_ca.ts
@@ -165,7 +165,7 @@
<message>
<location filename="../widgets/DirWidget2.ui" line="233"/>
<source>Select Action</source>
- <translation>Seleccioneu l&apos;acció</translation>
+ <translation>Seleccioneu l'acció</translation>
</message>
<message>
<location filename="../widgets/DirWidget2.ui" line="241"/>
@@ -175,7 +175,7 @@
<message>
<location filename="../widgets/DirWidget2.ui" line="244"/>
<source>Single column view</source>
- <translation>Vista d&apos;una columna</translation>
+ <translation>Vista d'una columna</translation>
</message>
<message>
<location filename="../widgets/DirWidget2.ui" line="252"/>
@@ -213,7 +213,7 @@
<message>
<location filename="../widgets/DirWidget2.cpp" line="660"/>
<source>The document could not be created. Please ensure that you have the proper permissions.</source>
- <translation>No s&apos;ha pogut crear el document. Si us plau, assegureu-vos que teniu els permisos adients.</translation>
+ <translation>No s'ha pogut crear el document. Si us plau, assegureu-vos que teniu els permisos adients.</translation>
</message>
<message>
<location filename="../widgets/DirWidget2.cpp" line="668"/>
@@ -235,7 +235,7 @@
<message>
<location filename="../widgets/DirWidget2.cpp" line="573"/>
<source>Auto-Extract</source>
- <translation type="unfinished"></translation>
+ <translation>Extreu automàticament</translation>
</message>
<message>
<location filename="../widgets/DirWidget2.cpp" line="587"/>
@@ -262,7 +262,7 @@
<message>
<location filename="../widgets/DirWidget2.cpp" line="682"/>
<source>The directory could not be created. Please ensure that you have the proper permissions to modify the current directory.</source>
- <translation>No s&apos;ha pogut crear el directori. Si us plau, assegureu-vos que teniu els permisos corresponents per modificar el directori actual.</translation>
+ <translation>No s'ha pogut crear el directori. Si us plau, assegureu-vos que teniu els permisos corresponents per modificar el directori actual.</translation>
</message>
<message>
<location filename="../widgets/DirWidget2.cpp" line="391"/>
@@ -287,7 +287,7 @@
<message>
<location filename="../widgets/DirWidget2.cpp" line="275"/>
<source>Application Launcher</source>
- <translation>Llançador d&apos;aplicacions</translation>
+ <translation>Llançador d'aplicacions</translation>
</message>
<message>
<location filename="../widgets/DirWidget2.cpp" line="279"/>
@@ -336,8 +336,8 @@
</message>
<message>
<location filename="../widgets/DirWidget2.cpp" line="536"/>
- <source>The &quot;lumina-fileinfo&quot; utility could not be found on the system. Please install it first.</source>
- <translation>No s&apos;ha pogut trobar la utilitat &quot;lumina-fileinfo&quot; al sistema. Si us plau, instal·leu-la primer.</translation>
+ <source>The "lumina-fileinfo" utility could not be found on the system. Please install it first.</source>
+ <translation>No s'ha pogut trobar la utilitat "lumina-fileinfo" al sistema. Si us plau, instal·leu-la primer.</translation>
</message>
<message>
<location filename="../widgets/DirWidget2.cpp" line="562"/>
@@ -405,7 +405,7 @@
<message>
<location filename="../FODialog.cpp" line="131"/>
<source>Note: It will just add a number to the filename otherwise.</source>
- <translation>Nota: si no, només s&apos;afegirà un número al nom del fitxer.</translation>
+ <translation>Nota: si no, només s'afegirà un número al nom del fitxer.</translation>
</message>
<message>
<location filename="../FODialog.cpp" line="148"/>
@@ -430,22 +430,22 @@
<message>
<location filename="../FODialog.cpp" line="164"/>
<source>Could not remove these files:</source>
- <translation>No s&apos;han pogut suprimir aquests fitxers:</translation>
+ <translation>No s'han pogut suprimir aquests fitxers:</translation>
</message>
<message>
<location filename="../FODialog.cpp" line="165"/>
<source>Could not copy these files:</source>
- <translation>No s&apos;han pogut copiar aquests fitxers:</translation>
+ <translation>No s'han pogut copiar aquests fitxers:</translation>
</message>
<message>
<location filename="../FODialog.cpp" line="166"/>
<source>Could not restore these files:</source>
- <translation>No s&apos;han pogut restaurar aquests fitxers:</translation>
+ <translation>No s'han pogut restaurar aquests fitxers:</translation>
</message>
<message>
<location filename="../FODialog.cpp" line="167"/>
<source>Could not move these files:</source>
- <translation>No s&apos;han pogut moure aquests fitxers:</translation>
+ <translation>No s'han pogut moure aquests fitxers:</translation>
</message>
<message>
<location filename="../FODialog.cpp" line="169"/>
@@ -466,7 +466,7 @@
Old Location: %1
New Location: %2</source>
- <translation>No és possible moure un directori a dins de si mateix. Si us plau, en comptes d&apos;això, feu-ne una còpia.
+ <translation>No és possible moure un directori a dins de si mateix. Si us plau, en comptes d'això, feu-ne una còpia.
Localització antiga: %1
Localització nova: %2</translation>
@@ -487,7 +487,7 @@ Localització nova: %2</translation>
<message>
<location filename="../gitWizard.ui" line="27"/>
<source>This wizard will guide you through the process of downloading a GIT repository from the internet.</source>
- <translation>Aquest assistent us guiarà a través del procés de baixada d&apos;un repositori GIT des d&apos;Internet.</translation>
+ <translation>Aquest assistent us guiarà a través del procés de baixada d'un repositori GIT des d'Internet.</translation>
</message>
<message>
<location filename="../gitWizard.ui" line="46"/>
@@ -512,7 +512,7 @@ Localització nova: %2</translation>
<message>
<location filename="../gitWizard.ui" line="89"/>
<source>Type of Access</source>
- <translation>Tipus d&apos;accés</translation>
+ <translation>Tipus d'accés</translation>
</message>
<message>
<location filename="../gitWizard.ui" line="95"/>
@@ -527,7 +527,7 @@ Localització nova: %2</translation>
<message>
<location filename="../gitWizard.ui" line="114"/>
<source>Username</source>
- <translation>Nom d&apos;usuari</translation>
+ <translation>Nom d'usuari</translation>
</message>
<message>
<location filename="../gitWizard.ui" line="124"/>
@@ -566,8 +566,8 @@ Localització nova: %2</translation>
</message>
<message>
<location filename="../gitWizard.ui" line="232"/>
- <source>Click &quot;Next&quot; to start downloading the repository</source>
- <translation>Cliqueu a &quot;Següent&quot; per començar a baixar el repositori</translation>
+ <source>Click "Next" to start downloading the repository</source>
+ <translation>Cliqueu a "Següent" per començar a baixar el repositori</translation>
</message>
<message>
<location filename="../gitWizard.h" line="58"/>
@@ -605,7 +605,7 @@ Localització nova: %2</translation>
<message>
<location filename="../MainUI.ui" line="126"/>
<source>View</source>
- <translation>Visualització</translation>
+ <translation>Vista</translation>
</message>
<message>
<location filename="../MainUI.ui" line="130"/>
@@ -615,7 +615,7 @@ Localització nova: %2</translation>
<message>
<location filename="../MainUI.ui" line="143"/>
<source>Bookmarks</source>
- <translation>Adreces d&apos;interès</translation>
+ <translation>Adreces d'interès</translation>
</message>
<message>
<location filename="../MainUI.ui" line="151"/>
@@ -640,7 +640,7 @@ Localització nova: %2</translation>
<message>
<location filename="../MainUI.ui" line="246"/>
<source>Show Image Previews</source>
- <translation type="unfinished"></translation>
+ <translation>Mostra previsualitzacions d'imatges</translation>
</message>
<message>
<location filename="../MainUI.ui" line="251"/>
@@ -690,7 +690,7 @@ Localització nova: %2</translation>
<message>
<location filename="../MainUI.ui" line="327"/>
<source>Add Bookmark</source>
- <translation>Afegeix una adreça d&apos;interès</translation>
+ <translation>Afegeix una adreça d'interès</translation>
</message>
<message>
<location filename="../MainUI.ui" line="330"/>
@@ -730,17 +730,17 @@ Localització nova: %2</translation>
<message>
<location filename="../MainUI.ui" line="428"/>
<source>Show Directory Tree Window</source>
- <translation type="unfinished"></translation>
+ <translation>Mostra la finestra de l'arbre de directoris</translation>
</message>
<message>
<location filename="../MainUI.ui" line="431"/>
<source>Show Directory Tree Pane</source>
- <translation type="unfinished"></translation>
+ <translation>Mostra el plafó de l'arbre de directoris</translation>
</message>
<message>
<location filename="../MainUI.ui" line="434"/>
<source>Ctrl+P</source>
- <translation type="unfinished"></translation>
+ <translation>Ctrl+P</translation>
</message>
<message>
<location filename="../MainUI.ui" line="178"/>
@@ -775,12 +775,12 @@ Localització nova: %2</translation>
<message>
<location filename="../MainUI.ui" line="221"/>
<source>Manage Bookmarks</source>
- <translation>Gestiona les adreces d&apos;interès / marcadors</translation>
+ <translation>Gestiona les adreces d'interès / marcadors</translation>
</message>
<message>
<location filename="../MainUI.ui" line="235"/>
<source>Show Action Buttons</source>
- <translation>Mostra els botons d&apos;acció</translation>
+ <translation>Mostra els botons d'acció</translation>
</message>
<message>
<location filename="../MainUI.ui" line="254"/>
@@ -855,7 +855,7 @@ Localització nova: %2</translation>
<message>
<location filename="../MainUI.cpp" line="195"/>
<source>The following directories are invalid and could not be opened:</source>
- <translation>Els directoris següents no són vàlids i no s&apos;han pogut obrir:</translation>
+ <translation>Els directoris següents no són vàlids i no s'han pogut obrir:</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="229"/>
@@ -885,7 +885,7 @@ Localització nova: %2</translation>
<message>
<location filename="../MainUI.cpp" line="586"/>
<source>New Bookmark</source>
- <translation>Adreça d&apos;interès nova</translation>
+ <translation>Adreça d'interès nova</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="586"/>
@@ -900,7 +900,7 @@ Localització nova: %2</translation>
<message>
<location filename="../MainUI.cpp" line="591"/>
<source>This bookmark name already exists. Please choose another.</source>
- <translation>Aquest nom d&apos;adreça d&apos;interès ja existeix. Trieu-ne un altre.</translation>
+ <translation>Aquest nom d'adreça d'interès ja existeix. Trieu-ne un altre.</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="612"/>
@@ -1052,7 +1052,7 @@ Localització nova: %2</translation>
<message>
<location filename="../OPWidget.cpp" line="96"/>
<source>File Operation Errors</source>
- <translation>Errors d&apos;operacions de fitxers</translation>
+ <translation>Errors d'operacions de fitxers</translation>
</message>
<message>
<location filename="../OPWidget.cpp" line="108"/>
@@ -1075,17 +1075,17 @@ Localització nova: %2</translation>
<message>
<location filename="../widgets/SlideshowWidget.ui" line="36"/>
<source>Delete this image file</source>
- <translation>Suprimeix aquest fitxer d&apos;imatge</translation>
+ <translation>Suprimeix aquest fitxer d'imatge</translation>
</message>
<message>
<location filename="../widgets/SlideshowWidget.ui" line="56"/>
<source>Rotate this image file counter-clockwise</source>
- <translation>Gira aquest fitxer d&apos;imatge cap a l&apos;esquerra</translation>
+ <translation>Gira aquest fitxer d'imatge cap a l'esquerra</translation>
</message>
<message>
<location filename="../widgets/SlideshowWidget.ui" line="69"/>
<source>Rotate this image file clockwise</source>
- <translation>Gira aquest fitxer d&apos;imatge cap a la dreta</translation>
+ <translation>Gira aquest fitxer d'imatge cap a la dreta</translation>
</message>
<message>
<location filename="../widgets/SlideshowWidget.ui" line="89"/>
@@ -1178,7 +1178,7 @@ Localització nova: %2</translation>
<message>
<location filename="../TrayUI.cpp" line="76"/>
<source>Errors during operation. Click to view details</source>
- <translation>Hi ha hagut errors durant l&apos;operació. Cliqueu aquí per veure&apos;n els detalls.</translation>
+ <translation>Hi ha hagut errors durant l'operació. Cliqueu per veure'n els detalls.</translation>
</message>
<message>
<location filename="../TrayUI.cpp" line="91"/>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_cs.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_cs.ts
index 8030d685..153d4962 100644
--- a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_cs.ts
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_cs.ts
@@ -16,7 +16,7 @@
<message>
<location filename="../BMMDialog.ui" line="40"/>
<source>Path</source>
- <translation>Cesta</translation>
+ <translation>Popis umístění</translation>
</message>
<message>
<location filename="../BMMDialog.ui" line="52"/>
@@ -51,7 +51,7 @@
<message>
<location filename="../BMMDialog.cpp" line="64"/>
<source>This bookmark name already exists. Please choose another.</source>
- <translation>Záložka s tímto názvem již existuje. Zvolte jiný název.</translation>
+ <translation>Záložka s tímto názvem už existuje. Zvolte jiný.</translation>
</message>
</context>
<context>
@@ -99,12 +99,12 @@
<message>
<location filename="../BrowserWidget.cpp" line="358"/>
<source>Dirs: %1</source>
- <translation>Adresáře: %1</translation>
+ <translation>Složky: %1</translation>
</message>
<message>
<location filename="../BrowserWidget.cpp" line="372"/>
<source>No Directory Contents</source>
- <translation>Žádný obsah adresáře</translation>
+ <translation>Složka nic neobsahuje</translation>
</message>
</context>
<context>
@@ -165,7 +165,7 @@
<message>
<location filename="../widgets/DirWidget2.ui" line="233"/>
<source>Select Action</source>
- <translation>Vybrat činnost</translation>
+ <translation>Vybrat akci</translation>
</message>
<message>
<location filename="../widgets/DirWidget2.ui" line="241"/>
@@ -213,7 +213,7 @@
<message>
<location filename="../widgets/DirWidget2.cpp" line="660"/>
<source>The document could not be created. Please ensure that you have the proper permissions.</source>
- <translation>Dokument se nepodařilo vytvořit. Ujistěte se, prosím, že máte náležitá oprávnění.</translation>
+ <translation>Dokument se nepodařilo vytvořit. Ověřte že máte potřebná oprávnění.</translation>
</message>
<message>
<location filename="../widgets/DirWidget2.cpp" line="668"/>
@@ -240,19 +240,19 @@
<message>
<location filename="../widgets/DirWidget2.cpp" line="587"/>
<source>Directory Operations</source>
- <translation>Operace s adresáři</translation>
+ <translation>Operace se složkami</translation>
</message>
<message>
<location filename="../widgets/DirWidget2.cpp" line="599"/>
<source>Loading...</source>
- <translation>Nahrává se...</translation>
+ <translation>Načítání…</translation>
</message>
<message>
<location filename="../widgets/DirWidget2.cpp" line="651"/>
<location filename="../widgets/DirWidget2.cpp" line="678"/>
<location filename="../widgets/DirWidget2.cpp" line="700"/>
<source>A file or directory with that name already exists! Please pick a different name.</source>
- <translation>Soubor nebo složka se stejným jménem již existuje! Použijte prosím jiné jméno.</translation>
+ <translation>Soubor nebo složka se stejným názvem už existuje! Použijte jiný.</translation>
</message>
<message>
<location filename="../widgets/DirWidget2.cpp" line="682"/>
@@ -262,17 +262,17 @@
<message>
<location filename="../widgets/DirWidget2.cpp" line="682"/>
<source>The directory could not be created. Please ensure that you have the proper permissions to modify the current directory.</source>
- <translation>Dokument se nepodařilo vytvořit. Ujistěte se, prosím, že máte náležitá oprávnění ke změně nynějšího adresáře.</translation>
+ <translation>Složku se nepodařilo vytvořit. Ověřte že máte potřebná oprávnění k úpravám ve stávající složce.</translation>
</message>
<message>
<location filename="../widgets/DirWidget2.cpp" line="391"/>
<source>Current</source>
- <translation>Nynější</translation>
+ <translation>Stávající</translation>
</message>
<message>
<location filename="../widgets/DirWidget2.cpp" line="271"/>
<source>Create...</source>
- <translation>Vytvořit...</translation>
+ <translation>Vytvořit…</translation>
</message>
<message>
<location filename="../widgets/DirWidget2.cpp" line="273"/>
@@ -282,17 +282,17 @@
<message>
<location filename="../widgets/DirWidget2.cpp" line="274"/>
<source>Directory</source>
- <translation>Adresář</translation>
+ <translation>Složka</translation>
</message>
<message>
<location filename="../widgets/DirWidget2.cpp" line="275"/>
<source>Application Launcher</source>
- <translation>Spouštěč programů</translation>
+ <translation>Spouštěč aplikací</translation>
</message>
<message>
<location filename="../widgets/DirWidget2.cpp" line="279"/>
<source>Launch...</source>
- <translation>Spustit...</translation>
+ <translation>Spustit…</translation>
</message>
<message>
<location filename="../widgets/DirWidget2.cpp" line="281"/>
@@ -347,7 +347,7 @@
<message>
<location filename="../widgets/DirWidget2.cpp" line="570"/>
<source>Rename...</source>
- <translation>Přejmenovat...</translation>
+ <translation>Přejmenovat…</translation>
</message>
<message>
<location filename="../widgets/DirWidget2.cpp" line="571"/>
@@ -430,22 +430,22 @@
<message>
<location filename="../FODialog.cpp" line="164"/>
<source>Could not remove these files:</source>
- <translation>Nelze smazat tyto soubory:</translation>
+ <translation>Tyto soubory nelze smazat:</translation>
</message>
<message>
<location filename="../FODialog.cpp" line="165"/>
<source>Could not copy these files:</source>
- <translation>Nelze kopírovat tyto soubory:</translation>
+ <translation>Tyto soubory nelze kopírovat:</translation>
</message>
<message>
<location filename="../FODialog.cpp" line="166"/>
<source>Could not restore these files:</source>
- <translation>Nelze obnovit tyto soubory:</translation>
+ <translation>Tyto soubory nelze obnovit:</translation>
</message>
<message>
<location filename="../FODialog.cpp" line="167"/>
<source>Could not move these files:</source>
- <translation>Nelze přesunout tyto soubory:</translation>
+ <translation>Tyto soubory nelze přesunout:</translation>
</message>
<message>
<location filename="../FODialog.cpp" line="169"/>
@@ -477,7 +477,7 @@ Nové umístění: %2</translation>
<message>
<location filename="../gitWizard.ui" line="14"/>
<source>Clone a Git Repository</source>
- <translation>Klonovat úložiště Git</translation>
+ <translation>Klonovat Git repozitář</translation>
</message>
<message>
<location filename="../gitWizard.ui" line="24"/>
@@ -487,12 +487,12 @@ Nové umístění: %2</translation>
<message>
<location filename="../gitWizard.ui" line="27"/>
<source>This wizard will guide you through the process of downloading a GIT repository from the internet.</source>
- <translation>Tento průvodce vás provede postupem stažení úložiště Git z internetu.</translation>
+ <translation>Tento průvodce vás provede stažením Git repozitáře z Internetu.</translation>
</message>
<message>
<location filename="../gitWizard.ui" line="46"/>
<source>GitHub Repository Settings</source>
- <translation>Nastavení úložiště GitHub</translation>
+ <translation>Nastavení pro repozitář GitHub</translation>
</message>
<message>
<location filename="../gitWizard.ui" line="55"/>
@@ -502,12 +502,12 @@ Nové umístění: %2</translation>
<message>
<location filename="../gitWizard.ui" line="65"/>
<source>Repository Name</source>
- <translation>Název úložiště</translation>
+ <translation>Název repozitáře</translation>
</message>
<message>
<location filename="../gitWizard.ui" line="75"/>
<source>Is Private Repository</source>
- <translation>Soukromé úložiště</translation>
+ <translation>Soukromý repozitář</translation>
</message>
<message>
<location filename="../gitWizard.ui" line="89"/>
@@ -517,7 +517,7 @@ Nové umístění: %2</translation>
<message>
<location filename="../gitWizard.ui" line="95"/>
<source>Use my SSH Key</source>
- <translation>Použít můj klíč SSH</translation>
+ <translation>Použít svůj SSH klíč</translation>
</message>
<message>
<location filename="../gitWizard.ui" line="105"/>
@@ -537,17 +537,17 @@ Nové umístění: %2</translation>
<message>
<location filename="../gitWizard.ui" line="133"/>
<source>Anonymous (public repositories only)</source>
- <translation>Anonymní (pouze veřejná úložiště)</translation>
+ <translation>Anonymní (pouze veřejné repozitáře)</translation>
</message>
<message>
<location filename="../gitWizard.ui" line="143"/>
<source>Optional SSH Password</source>
- <translation>Volitelné heslo SSH</translation>
+ <translation>Volitelné SSH heslo</translation>
</message>
<message>
<location filename="../gitWizard.ui" line="153"/>
<source>Advanced Options</source>
- <translation>Pokročilé volby</translation>
+ <translation>Pokročilé předvolby</translation>
</message>
<message>
<location filename="../gitWizard.ui" line="159"/>
@@ -566,8 +566,8 @@ Nové umístění: %2</translation>
</message>
<message>
<location filename="../gitWizard.ui" line="232"/>
- <source>Click &quot;Next&quot; to start downloading the repository</source>
- <translation>Klepněte na Další pro započetí se stahováním úložiště</translation>
+ <source>Click "Next" to start downloading the repository</source>
+ <translation>Kliknutím na Další zahajte stahování repozitáře</translation>
</message>
<message>
<location filename="../gitWizard.h" line="58"/>
@@ -645,17 +645,17 @@ Nové umístění: %2</translation>
<message>
<location filename="../MainUI.ui" line="251"/>
<source>Search Directory...</source>
- <translation>Prohledat složku...</translation>
+ <translation>Prohledat složku…</translation>
</message>
<message>
<location filename="../MainUI.ui" line="284"/>
<source>Increase Icon Size</source>
- <translation>Zvětšit velikost ikony</translation>
+ <translation>Zvětšit velikost ikon</translation>
</message>
<message>
<location filename="../MainUI.ui" line="289"/>
<source>Decrease Icon Size</source>
- <translation>Zmenšit velikost ikony</translation>
+ <translation>Zmenšit velikost ikon</translation>
</message>
<message>
<location filename="../MainUI.ui" line="294"/>
@@ -710,7 +710,7 @@ Nové umístění: %2</translation>
<message>
<location filename="../MainUI.ui" line="393"/>
<source>Refresh</source>
- <translation>Obnovit</translation>
+ <translation>Načíst znovu</translation>
</message>
<message>
<location filename="../MainUI.ui" line="404"/>
@@ -720,12 +720,12 @@ Nové umístění: %2</translation>
<message>
<location filename="../MainUI.ui" line="415"/>
<source>Repo Status</source>
- <translation>Stav úložiště</translation>
+ <translation>Stav repozitáře</translation>
</message>
<message>
<location filename="../MainUI.ui" line="420"/>
<source>Clone Repository</source>
- <translation>Klonovat úložiště</translation>
+ <translation>Klonovat repozitář</translation>
</message>
<message>
<location filename="../MainUI.ui" line="428"/>
@@ -760,7 +760,7 @@ Nové umístění: %2</translation>
<message>
<location filename="../MainUI.ui" line="197"/>
<source>&amp;Preferences</source>
- <translation>&amp;Nastavení</translation>
+ <translation>&amp;Předvolby</translation>
</message>
<message>
<location filename="../MainUI.ui" line="208"/>
@@ -780,10 +780,19 @@ Nové umístění: %2</translation>
<message>
<location filename="../MainUI.ui" line="235"/>
<source>Show Action Buttons</source>
- <translation>Ukázat tlačítka činností</translation>
+ <translation>Zobrazit tlačítka akcí</translation>
+ </message>
+ <message>
+<<<<<<< HEAD
+ <location filename="../MainUI.ui" line="245"/>
+ <source>Load Thumbnails</source>
+ <translation>Načíst náhledy</translation>
</message>
<message>
+ <location filename="../MainUI.ui" line="253"/>
+=======
<location filename="../MainUI.ui" line="254"/>
+>>>>>>> 86f6fadf45c2b87749cffac82411d2371448da53
<source>Ctrl+F</source>
<translation>Ctrl+F</translation>
</message>
@@ -815,7 +824,7 @@ Nové umístění: %2</translation>
<message>
<location filename="../MainUI.ui" line="338"/>
<source>Rename...</source>
- <translation>Přejmenovat...</translation>
+ <translation>Přejmenovat…</translation>
</message>
<message>
<location filename="../MainUI.ui" line="341"/>
@@ -850,12 +859,12 @@ Nové umístění: %2</translation>
<message>
<location filename="../MainUI.cpp" line="195"/>
<source>Invalid Directories</source>
- <translation>Neplatné adresáře</translation>
+ <translation>Neplatné složky</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="195"/>
<source>The following directories are invalid and could not be opened:</source>
- <translation>Následující adresáře jsou neplatné a nepodařilo se je otevřít:</translation>
+ <translation>Následující složky nejsou platné a nepodařilo se je otevřít:</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="229"/>
@@ -895,17 +904,17 @@ Nové umístění: %2</translation>
<message>
<location filename="../MainUI.cpp" line="591"/>
<source>Invalid Name</source>
- <translation>Neplatné jméno</translation>
+ <translation>Neplatný název</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="591"/>
<source>This bookmark name already exists. Please choose another.</source>
- <translation>Záložka s tímto názvem již existuje. Zvolte jiný název.</translation>
+ <translation>Záložka s tímto názvem už existuje. Zvolte jiný.</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="612"/>
<source>Git Repository Status</source>
- <translation>Stav úložiště Git</translation>
+ <translation>Stav Git repozitáře</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="702"/>
@@ -950,7 +959,7 @@ Nové umístění: %2</translation>
<message>
<location filename="../MainUI.cpp" line="899"/>
<source>WARNING: This will permanently delete the file(s) from the system!</source>
- <translation>Varování: Tímto bude soubor(y) trvale odstraněn ze systému!</translation>
+ <translation>Varování: Tímto budou soubory trvale odstraněny ze systému!</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="899"/>
@@ -993,12 +1002,12 @@ Nové umístění: %2</translation>
<message>
<location filename="../widgets/MultimediaWidget.ui" line="107"/>
<source>(No Running Video)</source>
- <translation>(Žádný běžící obrazový záznam)</translation>
+ <translation>(Žádné přehrávané video)</translation>
</message>
<message>
<location filename="../widgets/MultimediaWidget.cpp" line="124"/>
<source>Playing:</source>
- <translation>Přehrávání:</translation>
+ <translation>Přehrávané:</translation>
</message>
<message>
<location filename="../widgets/MultimediaWidget.cpp" line="130"/>
@@ -1027,12 +1036,12 @@ Nové umístění: %2</translation>
<location filename="../OPWidget.ui" line="44"/>
<location filename="../OPWidget.ui" line="51"/>
<source>...</source>
- <translation>...</translation>
+ <translation>…</translation>
</message>
<message>
<location filename="../OPWidget.ui" line="60"/>
<source>Evaluating...</source>
- <translation>Vyhodnocuje se...</translation>
+ <translation>Vyhodnocuje se…</translation>
</message>
<message>
<location filename="../OPWidget.cpp" line="52"/>
@@ -1110,7 +1119,7 @@ Nové umístění: %2</translation>
<location filename="../widgets/SlideshowWidget.ui" line="304"/>
<location filename="../widgets/SlideshowWidget.ui" line="320"/>
<source>...</source>
- <translation>...</translation>
+ <translation>…</translation>
</message>
<message>
<location filename="../widgets/SlideshowWidget.ui" line="218"/>
@@ -1178,12 +1187,12 @@ Nové umístění: %2</translation>
<message>
<location filename="../TrayUI.cpp" line="76"/>
<source>Errors during operation. Click to view details</source>
- <translation>Chyby během operace. Klepněte pro zobrazení podrobností</translation>
+ <translation>Chyby během operace. Podrobnosti zobrazíte kliknutím</translation>
</message>
<message>
<location filename="../TrayUI.cpp" line="91"/>
<source>New Tasks Running</source>
- <translation type="unfinished"></translation>
+ <translation>Nové spuštěné úlohy</translation>
</message>
</context>
</TS>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_es.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_es.ts
index d0069fa9..f1588635 100644
--- a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_es.ts
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_es.ts
@@ -59,52 +59,52 @@
<message>
<location filename="../BrowserWidget.cpp" line="218"/>
<source>Name</source>
- <translation type="unfinished">Nombre</translation>
+ <translation>Nombre</translation>
</message>
<message>
<location filename="../BrowserWidget.cpp" line="219"/>
<source>Size</source>
- <translation type="unfinished">Tamaño</translation>
+ <translation>Tamaño</translation>
</message>
<message>
<location filename="../BrowserWidget.cpp" line="220"/>
<source>Type</source>
- <translation type="unfinished">Tipo</translation>
+ <translation>Tipo</translation>
</message>
<message>
<location filename="../BrowserWidget.cpp" line="221"/>
<source>Date Modified</source>
- <translation type="unfinished">Fecha de Modificación</translation>
+ <translation>Fecha de Modificación</translation>
</message>
<message>
<location filename="../BrowserWidget.cpp" line="222"/>
<source>Date Created</source>
- <translation type="unfinished">Fecha de Creación</translation>
+ <translation>Fecha de Creación</translation>
</message>
<message>
<location filename="../BrowserWidget.cpp" line="325"/>
<source>Capacity: %1</source>
- <translation type="unfinished">Capacidad: %1</translation>
+ <translation>Capacidad: %1</translation>
</message>
<message>
<location filename="../BrowserWidget.cpp" line="350"/>
<source>Files: %1 (%2)</source>
- <translation type="unfinished">Archivos: %1 (%2)</translation>
+ <translation>Archivos: %1 (%2)</translation>
</message>
<message>
<location filename="../BrowserWidget.cpp" line="352"/>
<source>Files: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Archivos: %1</translation>
</message>
<message>
<location filename="../BrowserWidget.cpp" line="358"/>
<source>Dirs: %1</source>
- <translation type="unfinished">Directorios: %1</translation>
+ <translation>Directorios: %1</translation>
</message>
<message>
<location filename="../BrowserWidget.cpp" line="372"/>
<source>No Directory Contents</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">No Directorio Contentos</translation>
</message>
</context>
<context>
@@ -117,12 +117,12 @@
<message>
<location filename="../widgets/DirWidget2.ui" line="157"/>
<source>Increase Icon Sizes</source>
- <translation type="unfinished"></translation>
+ <translation>Aumentar los tamaños de iconos</translation>
</message>
<message>
<location filename="../widgets/DirWidget2.ui" line="173"/>
<source>Decrease Icon Sizes</source>
- <translation type="unfinished"></translation>
+ <translation>Disminuir los tamaños de iconos</translation>
</message>
<message>
<location filename="../widgets/DirWidget2.ui" line="191"/>
@@ -160,12 +160,12 @@
<message>
<location filename="../widgets/DirWidget2.ui" line="230"/>
<source>Menu</source>
- <translation type="unfinished"></translation>
+ <translation>Menú</translation>
</message>
<message>
<location filename="../widgets/DirWidget2.ui" line="233"/>
<source>Select Action</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Elegir acción</translation>
</message>
<message>
<location filename="../widgets/DirWidget2.ui" line="241"/>
@@ -175,22 +175,22 @@
<message>
<location filename="../widgets/DirWidget2.ui" line="244"/>
<source>Single column view</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Vista de columna única</translation>
</message>
<message>
<location filename="../widgets/DirWidget2.ui" line="252"/>
<source>Dual Column</source>
- <translation type="unfinished"></translation>
+ <translation>Columna doble</translation>
</message>
<message>
<location filename="../widgets/DirWidget2.ui" line="255"/>
<source>Dual Column View</source>
- <translation type="unfinished"></translation>
+ <translation>Vista de columna doble</translation>
</message>
<message>
<location filename="../widgets/DirWidget2.cpp" line="621"/>
<source>(Limited Access) </source>
- <translation>(Acceso Limitado)</translation>
+ <translation>(Acceso Limitado) </translation>
</message>
<message>
<location filename="../widgets/DirWidget2.cpp" line="643"/>
@@ -230,7 +230,7 @@
<message>
<location filename="../widgets/DirWidget2.cpp" line="565"/>
<source>File Operations</source>
- <translation type="unfinished"></translation>
+ <translation>Operaciones de archivo</translation>
</message>
<message>
<location filename="../widgets/DirWidget2.cpp" line="573"/>
@@ -272,7 +272,7 @@
<message>
<location filename="../widgets/DirWidget2.cpp" line="271"/>
<source>Create...</source>
- <translation type="unfinished"></translation>
+ <translation>Crear...</translation>
</message>
<message>
<location filename="../widgets/DirWidget2.cpp" line="273"/>
@@ -282,27 +282,27 @@
<message>
<location filename="../widgets/DirWidget2.cpp" line="274"/>
<source>Directory</source>
- <translation type="unfinished"></translation>
+ <translation>Directorio</translation>
</message>
<message>
<location filename="../widgets/DirWidget2.cpp" line="275"/>
<source>Application Launcher</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Aplicación Iniciador</translation>
</message>
<message>
<location filename="../widgets/DirWidget2.cpp" line="279"/>
<source>Launch...</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Iniciar...</translation>
</message>
<message>
<location filename="../widgets/DirWidget2.cpp" line="281"/>
<source>Terminal</source>
- <translation type="unfinished"></translation>
+ <translation>Terminal</translation>
</message>
<message>
<location filename="../widgets/DirWidget2.cpp" line="282"/>
<source>SlideShow</source>
- <translation type="unfinished"></translation>
+ <translation>Presentación</translation>
</message>
<message>
<location filename="../widgets/DirWidget2.cpp" line="283"/>
@@ -566,7 +566,7 @@ Ubicación Nueva: %2</translation>
</message>
<message>
<location filename="../gitWizard.ui" line="232"/>
- <source>Click &quot;Next&quot; to start downloading the repository</source>
+ <source>Click "Next" to start downloading the repository</source>
<translation type="unfinished"></translation>
</message>
<message>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_fr.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_fr.ts
index 5d9e42db..b1fc80bf 100644
--- a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_fr.ts
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_fr.ts
@@ -94,7 +94,7 @@
<message>
<location filename="../BrowserWidget.cpp" line="352"/>
<source>Files: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Fichiers: %1</translation>
</message>
<message>
<location filename="../BrowserWidget.cpp" line="358"/>
@@ -104,7 +104,7 @@
<message>
<location filename="../BrowserWidget.cpp" line="372"/>
<source>No Directory Contents</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Pas de contenu de répertoire</translation>
</message>
</context>
<context>
@@ -213,7 +213,7 @@
<message>
<location filename="../widgets/DirWidget2.cpp" line="660"/>
<source>The document could not be created. Please ensure that you have the proper permissions.</source>
- <translation>Le document ne peut pas être créé. Assurez vous d&apos;avoir les permissions adéquates.</translation>
+ <translation>Le document ne peut pas être créé. Assurez vous d'avoir les permissions adéquates.</translation>
</message>
<message>
<location filename="../widgets/DirWidget2.cpp" line="668"/>
@@ -262,7 +262,7 @@
<message>
<location filename="../widgets/DirWidget2.cpp" line="682"/>
<source>The directory could not be created. Please ensure that you have the proper permissions to modify the current directory.</source>
- <translation>Le répertoire ne peut pas être créé. Veuillez vous assurer d&apos;avoir les permissions adéquates pour modifier le répertoire actuel.</translation>
+ <translation>Le répertoire ne peut pas être créé. Veuillez vous assurer d'avoir les permissions adéquates pour modifier le répertoire actuel.</translation>
</message>
<message>
<location filename="../widgets/DirWidget2.cpp" line="391"/>
@@ -405,7 +405,7 @@
<message>
<location filename="../FODialog.cpp" line="131"/>
<source>Note: It will just add a number to the filename otherwise.</source>
- <translation>Remarque: Il suffit d&apos;ajouter un nombre au nom de fichier autrement.</translation>
+ <translation>Remarque: Il suffit d'ajouter un nombre au nom de fichier autrement.</translation>
</message>
<message>
<location filename="../FODialog.cpp" line="148"/>
@@ -466,7 +466,7 @@
Old Location: %1
New Location: %2</source>
- <translation>Il n&apos;est possible de déplacer un répertoire dans lui-même. Veuille faire plutôt une copie de répertoire.Ancien emplacement: %1Nouvel emplacement: %2</translation>
+ <translation>Il n'est possible de déplacer un répertoire dans lui-même. Veuille faire plutôt une copie de répertoire.Ancien emplacement: %1Nouvel emplacement: %2</translation>
</message>
</context>
<context>
@@ -563,7 +563,7 @@ New Location: %2</source>
</message>
<message>
<location filename="../gitWizard.ui" line="232"/>
- <source>Click &quot;Next&quot; to start downloading the repository</source>
+ <source>Click "Next" to start downloading the repository</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -607,7 +607,7 @@ New Location: %2</source>
<message>
<location filename="../MainUI.ui" line="130"/>
<source>View Mode</source>
- <translation>Mode d&apos;affichage</translation>
+ <translation>Mode d'affichage</translation>
</message>
<message>
<location filename="../MainUI.ui" line="143"/>
@@ -647,12 +647,12 @@ New Location: %2</source>
<message>
<location filename="../MainUI.ui" line="284"/>
<source>Increase Icon Size</source>
- <translation>Augmenter la taille de l&apos;icône</translation>
+ <translation>Augmenter la taille de l'icône</translation>
</message>
<message>
<location filename="../MainUI.ui" line="289"/>
<source>Decrease Icon Size</source>
- <translation>Diminuer la taille de l&apos;icône</translation>
+ <translation>Diminuer la taille de l'icône</translation>
</message>
<message>
<location filename="../MainUI.ui" line="294"/>
@@ -777,7 +777,7 @@ New Location: %2</source>
<message>
<location filename="../MainUI.ui" line="235"/>
<source>Show Action Buttons</source>
- <translation>Afficher les Boutons d&apos;action</translation>
+ <translation>Afficher les Boutons d'action</translation>
</message>
<message>
<location filename="../MainUI.ui" line="254"/>
@@ -990,7 +990,7 @@ New Location: %2</source>
<message>
<location filename="../widgets/MultimediaWidget.ui" line="107"/>
<source>(No Running Video)</source>
- <translation>(Pas d&apos;exécution en cours de Vidéo)</translation>
+ <translation>(Pas d'exécution en cours de Vidéo)</translation>
</message>
<message>
<location filename="../widgets/MultimediaWidget.cpp" line="124"/>
@@ -1005,7 +1005,7 @@ New Location: %2</source>
<message>
<location filename="../widgets/MultimediaWidget.cpp" line="157"/>
<source>Error Playing File: %1</source>
- <translation>Erreur lors de l&apos;ouverture du fichier : %1</translation>
+ <translation>Erreur lors de l'ouverture du fichier : %1</translation>
</message>
<message>
<location filename="../widgets/MultimediaWidget.cpp" line="168"/>
@@ -1072,7 +1072,7 @@ New Location: %2</source>
<message>
<location filename="../widgets/SlideshowWidget.ui" line="36"/>
<source>Delete this image file</source>
- <translation>Supprimer ce fichier d&apos;image</translation>
+ <translation>Supprimer ce fichier d'image</translation>
</message>
<message>
<location filename="../widgets/SlideshowWidget.ui" line="56"/>
diff --git a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_zh_CN.ts b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_zh_CN.ts
index b3c9278d..17f62224 100644
--- a/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_zh_CN.ts
+++ b/src-qt5/desktop-utils/lumina-fm/i18n/lumina-fm_zh_CN.ts
@@ -571,7 +571,7 @@ New Location: %2</source>
</message>
<message>
<location filename="../gitWizard.ui" line="232"/>
- <source>Click &quot;Next&quot; to start downloading the repository</source>
+ <source>Click "Next" to start downloading the repository</source>
<translation>点击 “下一步” 开始下载存储库</translation>
</message>
<message>
@@ -1031,7 +1031,7 @@ New Location: %2</source>
<message>
<location filename="../OPWidget.ui" line="14"/>
<source>Form</source>
- <translation type="unfinished">表单</translation>
+ <translation>表单</translation>
</message>
<message>
<location filename="../OPWidget.ui" line="44"/>
diff --git a/src-qt5/desktop-utils/lumina-screenshot/i18n/l-screenshot_ca.ts b/src-qt5/desktop-utils/lumina-screenshot/i18n/l-screenshot_ca.ts
index d4906fb8..e5d648b3 100644
--- a/src-qt5/desktop-utils/lumina-screenshot/i18n/l-screenshot_ca.ts
+++ b/src-qt5/desktop-utils/lumina-screenshot/i18n/l-screenshot_ca.ts
@@ -34,7 +34,7 @@
<message>
<location filename="../MainUI.ui" line="138"/>
<source>Resize</source>
- <translation>Canvia&apos;n la mida</translation>
+ <translation>Canvia'n la mida</translation>
</message>
<message>
<location filename="../MainUI.ui" line="20"/>
@@ -94,7 +94,7 @@
<message>
<location filename="../MainUI.ui" line="433"/>
<source>Select Area</source>
- <translation>Selecciona l&apos;àrea</translation>
+ <translation>Selecciona l'àrea</translation>
</message>
<message>
<location filename="../MainUI.ui" line="445"/>
@@ -109,7 +109,7 @@
<message>
<location filename="../MainUI.ui" line="499"/>
<source>toolBar</source>
- <translation>Barra d&apos;eines</translation>
+ <translation>Barra d'eines</translation>
</message>
<message>
<location filename="../MainUI.ui" line="526"/>
@@ -129,7 +129,7 @@
<message>
<location filename="../MainUI.ui" line="559"/>
<source>Close Application</source>
- <translation>Tanca l&apos;aplicació</translation>
+ <translation>Tanca l'aplicació</translation>
</message>
<message>
<location filename="../MainUI.ui" line="562"/>
@@ -154,7 +154,7 @@
<message>
<location filename="../MainUI.cpp" line="39"/>
<source>View</source>
- <translation>Mostra</translation>
+ <translation>Vista</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="40"/>
@@ -164,12 +164,12 @@
<message>
<location filename="../MainUI.cpp" line="103"/>
<source>Could not save screenshot</source>
- <translation>No s&apos;ha pogut desar la captura.</translation>
+ <translation>No s'ha pogut desar la captura.</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="103"/>
<source>The screenshot could not be saved. Please check directory permissions or pick a different directory</source>
- <translation>No s&apos;ha pogut desar la captura. Si us plau, comproveu els permisos del directori o trieu-ne un altre.</translation>
+ <translation>No s'ha pogut desar la captura. Si us plau, comproveu els permisos del directori o trieu-ne un altre.</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="120"/>
@@ -184,7 +184,7 @@
<message>
<location filename="../MainUI.cpp" line="323"/>
<source>The current screenshot has not been saved yet. Do you want to save or discard your changes?</source>
- <translation>La captura actual encara no s&apos;ha desat. Voleu desar o descartar els canvis?</translation>
+ <translation>La captura actual encara no s'ha desat. Voleu desar o descartar els canvis?</translation>
</message>
<message>
<location filename="../MainUI.ui" line="543"/>
diff --git a/src-qt5/desktop-utils/lumina-screenshot/i18n/l-screenshot_cs.ts b/src-qt5/desktop-utils/lumina-screenshot/i18n/l-screenshot_cs.ts
index 291b2917..dce6b94f 100644
--- a/src-qt5/desktop-utils/lumina-screenshot/i18n/l-screenshot_cs.ts
+++ b/src-qt5/desktop-utils/lumina-screenshot/i18n/l-screenshot_cs.ts
@@ -24,7 +24,7 @@
<message>
<location filename="../MainUI.ui" line="422"/>
<source>Include Borders</source>
- <translation>Zahrnout rámečky</translation>
+ <translation>Včetně rámečků</translation>
</message>
<message>
<location filename="../MainUI.ui" line="540"/>
@@ -44,7 +44,7 @@
<message>
<location filename="../MainUI.ui" line="87"/>
<source>Open screenshot with an application</source>
- <translation>Otevřít snímek obrazovky v programu</translation>
+ <translation>Otevřít snímek obrazovky v aplikaci</translation>
</message>
<message>
<location filename="../MainUI.ui" line="90"/>
@@ -54,7 +54,7 @@
<message>
<location filename="../MainUI.ui" line="103"/>
<source>Copy screenshot to clipboard</source>
- <translation>Kopírovat snímek obrazovky do schránky</translation>
+ <translation>Zkopírovat snímek obrazovky do schránky</translation>
</message>
<message>
<location filename="../MainUI.ui" line="106"/>
@@ -74,7 +74,7 @@
<message>
<location filename="../MainUI.ui" line="157"/>
<source>Crop screenshot to selection</source>
- <translation>Oříznout snímek obrazovky na výběr</translation>
+ <translation>Oříznout snímek obrazovky podle výběru</translation>
</message>
<message>
<location filename="../MainUI.ui" line="160"/>
@@ -94,7 +94,7 @@
<message>
<location filename="../MainUI.ui" line="433"/>
<source>Select Area</source>
- <translation type="unfinished"></translation>
+ <translation>Vyberte oblast</translation>
</message>
<message>
<location filename="../MainUI.ui" line="445"/>
@@ -104,12 +104,12 @@
<message>
<location filename="../MainUI.ui" line="466"/>
<source>Show popup warnings about unsaved screenshots</source>
- <translation>Ukázat vyskakovací varování o neuložených snímcích obrazovky</translation>
+ <translation>Zobrazovat vyskakovací varování o neuložených snímcích obrazovky</translation>
</message>
<message>
<location filename="../MainUI.ui" line="499"/>
<source>toolBar</source>
- <translation>Nástrojový pruh</translation>
+ <translation>Nástrojová lišta</translation>
</message>
<message>
<location filename="../MainUI.ui" line="526"/>
@@ -129,7 +129,7 @@
<message>
<location filename="../MainUI.ui" line="559"/>
<source>Close Application</source>
- <translation>Zavřít program</translation>
+ <translation>Zavřít aplikaci</translation>
</message>
<message>
<location filename="../MainUI.ui" line="562"/>
@@ -154,7 +154,7 @@
<message>
<location filename="../MainUI.cpp" line="39"/>
<source>View</source>
- <translation>Pohled</translation>
+ <translation>Zobrazit</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="40"/>
@@ -169,7 +169,7 @@
<message>
<location filename="../MainUI.cpp" line="103"/>
<source>The screenshot could not be saved. Please check directory permissions or pick a different directory</source>
- <translation>Nepodařilo se uložit snímek obrazovky. Prověřte, prosím, oprávnění k adresáři nebo zvolte jiný adresář</translation>
+ <translation>Snímek obrazovky se nepodařilo uložit. Zkontrolujte přístupová práva ke složce nebo zvolte jinou</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="120"/>
@@ -179,12 +179,12 @@
<message>
<location filename="../MainUI.cpp" line="322"/>
<source>Unsaved Screenshot</source>
- <translation>Neuložené snímky obrazovky</translation>
+ <translation>Neuložený snímek obrazovky</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="323"/>
<source>The current screenshot has not been saved yet. Do you want to save or discard your changes?</source>
- <translation>Nynější snímek obrazovky ještě nebyl uložen. Chcete své změny uložit nebo zahodit?</translation>
+ <translation>Stávající snímek obrazovky ještě nebyl uložen. Chcete ho uložit nebo zahodit?</translation>
</message>
<message>
<location filename="../MainUI.ui" line="543"/>
@@ -194,7 +194,7 @@
<message>
<location filename="../MainUI.ui" line="551"/>
<source>Quick Save</source>
- <translation>Rychle uložit</translation>
+ <translation>Rychlé ukládání</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="120"/>
diff --git a/src-qt5/desktop-utils/lumina-screenshot/i18n/l-screenshot_da.ts b/src-qt5/desktop-utils/lumina-screenshot/i18n/l-screenshot_da.ts
index f3ce74a4..5c1902a5 100644
--- a/src-qt5/desktop-utils/lumina-screenshot/i18n/l-screenshot_da.ts
+++ b/src-qt5/desktop-utils/lumina-screenshot/i18n/l-screenshot_da.ts
@@ -109,7 +109,7 @@
<message>
<location filename="../MainUI.ui" line="499"/>
<source>toolBar</source>
- <translation>værktøjsbjælke</translation>
+ <translation>værktøjsLinje</translation>
</message>
<message>
<location filename="../MainUI.ui" line="526"/>
diff --git a/src-qt5/desktop-utils/lumina-screenshot/i18n/l-screenshot_es.ts b/src-qt5/desktop-utils/lumina-screenshot/i18n/l-screenshot_es.ts
index 30ec8219..4f1752db 100644
--- a/src-qt5/desktop-utils/lumina-screenshot/i18n/l-screenshot_es.ts
+++ b/src-qt5/desktop-utils/lumina-screenshot/i18n/l-screenshot_es.ts
@@ -39,37 +39,37 @@
<message>
<location filename="../MainUI.ui" line="20"/>
<source>Lumina Screenshot</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Lumina Captura de pantalla</translation>
</message>
<message>
<location filename="../MainUI.ui" line="87"/>
<source>Open screenshot with an application</source>
- <translation type="unfinished"></translation>
+ <translation>Abrir la captura de pantalla con una aplicación</translation>
</message>
<message>
<location filename="../MainUI.ui" line="90"/>
<source>Open</source>
- <translation type="unfinished"></translation>
+ <translation>Abrir</translation>
</message>
<message>
<location filename="../MainUI.ui" line="103"/>
<source>Copy screenshot to clipboard</source>
- <translation type="unfinished"></translation>
+ <translation>Copiar la captura de pantalla a un portapapeles</translation>
</message>
<message>
<location filename="../MainUI.ui" line="106"/>
<source>Copy</source>
- <translation type="unfinished"></translation>
+ <translation>Copiar</translation>
</message>
<message>
<location filename="../MainUI.ui" line="109"/>
<source>Ctrl+C</source>
- <translation type="unfinished"></translation>
+ <translation>Ctrl+C</translation>
</message>
<message>
<location filename="../MainUI.ui" line="135"/>
<source>Resize screenshot to selection</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Remedir la captura de pantalla a la selección</translation>
</message>
<message>
<location filename="../MainUI.ui" line="157"/>
@@ -109,7 +109,7 @@
<message>
<location filename="../MainUI.ui" line="499"/>
<source>toolBar</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">barra de herramientas</translation>
</message>
<message>
<location filename="../MainUI.ui" line="526"/>
@@ -154,7 +154,7 @@
<message>
<location filename="../MainUI.cpp" line="39"/>
<source>View</source>
- <translation type="unfinished"></translation>
+ <translation>Ver</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="40"/>
diff --git a/src-qt5/desktop-utils/lumina-screenshot/i18n/l-screenshot_ru.ts b/src-qt5/desktop-utils/lumina-screenshot/i18n/l-screenshot_ru.ts
index e2d33972..54296cfa 100644
--- a/src-qt5/desktop-utils/lumina-screenshot/i18n/l-screenshot_ru.ts
+++ b/src-qt5/desktop-utils/lumina-screenshot/i18n/l-screenshot_ru.ts
@@ -154,7 +154,7 @@
<message>
<location filename="../MainUI.cpp" line="39"/>
<source>View</source>
- <translation>Просмотр</translation>
+ <translation>Вид</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="40"/>
@@ -174,7 +174,7 @@
<message>
<location filename="../MainUI.cpp" line="120"/>
<source>Save Screenshot</source>
- <translation>Сохранить Снимок</translation>
+ <translation>Сохранить Снимок Экрана</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="322"/>
diff --git a/src-qt5/desktop-utils/lumina-screenshot/i18n/l-screenshot_zh_CN.ts b/src-qt5/desktop-utils/lumina-screenshot/i18n/l-screenshot_zh_CN.ts
index 3102aada..989ec7bf 100644
--- a/src-qt5/desktop-utils/lumina-screenshot/i18n/l-screenshot_zh_CN.ts
+++ b/src-qt5/desktop-utils/lumina-screenshot/i18n/l-screenshot_zh_CN.ts
@@ -154,7 +154,7 @@
<message>
<location filename="../MainUI.cpp" line="39"/>
<source>View</source>
- <translation>预览</translation>
+ <translation type="unfinished">查看</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="40"/>
diff --git a/src-qt5/desktop-utils/lumina-textedit/i18n/l-te_cs.ts b/src-qt5/desktop-utils/lumina-textedit/i18n/l-te_cs.ts
index b8c32155..4a3cf767 100644
--- a/src-qt5/desktop-utils/lumina-textedit/i18n/l-te_cs.ts
+++ b/src-qt5/desktop-utils/lumina-textedit/i18n/l-te_cs.ts
@@ -21,18 +21,18 @@
<message>
<location filename="../ColorDialog.ui" line="34"/>
<source>Sample</source>
- <translation>Vzorek</translation>
+ <translation>Ukázka</translation>
</message>
<message>
<location filename="../ColorDialog.ui" line="44"/>
<location filename="../ColorDialog.cpp" line="55"/>
<source>Select Color</source>
- <translation>Vyberte barvu</translation>
+ <translation>Vybrat barvu</translation>
</message>
<message>
<location filename="../ColorDialog.ui" line="64"/>
<source>Cancel</source>
- <translation>Zrušit</translation>
+ <translation>Storno</translation>
</message>
<message>
<location filename="../ColorDialog.ui" line="71"/>
@@ -45,7 +45,7 @@
<message>
<location filename="../DnDTabBar.h" line="43"/>
<source>Detach Tab</source>
- <translation type="unfinished"></translation>
+ <translation>Odpojit kartu</translation>
</message>
</context>
<context>
@@ -67,7 +67,7 @@
<location filename="../MainUI.ui" line="146"/>
<location filename="../MainUI.ui" line="158"/>
<source>...</source>
- <translation>...</translation>
+ <translation>…</translation>
</message>
<message>
<location filename="../MainUI.ui" line="168"/>
@@ -97,7 +97,7 @@
<message>
<location filename="../MainUI.ui" line="143"/>
<source>Replace all matches (to end of document)</source>
- <translation>Nahradit všechny shody (až nakonec dokumentu)</translation>
+ <translation>Nahradit všechny shody (až do konce dokumentu)</translation>
</message>
<message>
<location filename="../MainUI.ui" line="155"/>
@@ -117,12 +117,12 @@
<message>
<location filename="../MainUI.ui" line="213"/>
<source>Syntax Highlighting</source>
- <translation>Zvýraznění syntaxe</translation>
+ <translation>Zvýrazňovat syntaxi</translation>
</message>
<message>
<location filename="../MainUI.ui" line="220"/>
<source>Tabs Location</source>
- <translation type="unfinished"></translation>
+ <translation>Umístění karet</translation>
</message>
<message>
<location filename="../MainUI.ui" line="237"/>
@@ -132,17 +132,17 @@
<message>
<location filename="../MainUI.ui" line="252"/>
<source>toolBar</source>
- <translation>nástrojová lišta</translation>
+ <translation>Nástrojová lišta</translation>
</message>
<message>
<location filename="../MainUI.ui" line="278"/>
<source>Show Line Numbers</source>
- <translation>Zobrazit čísla řádků</translation>
+ <translation>Zobrazovat čísla řádků</translation>
</message>
<message>
<location filename="../MainUI.ui" line="283"/>
<source>None</source>
- <translation>Nic</translation>
+ <translation>Žádný</translation>
</message>
<message>
<location filename="../MainUI.ui" line="288"/>
@@ -233,33 +233,33 @@
<message>
<location filename="../MainUI.ui" line="392"/>
<source>Show Popup Warnings</source>
- <translation>Ukázat vyskakovací varování</translation>
+ <translation>Zobrazovat vyskakovací varování</translation>
</message>
<message>
<location filename="../MainUI.ui" line="395"/>
<location filename="../MainUI.ui" line="398"/>
<source>Show warnings about unsaved changes</source>
- <translation>Ukázat varování o neuložených změnách</translation>
+ <translation>Zobrazovat varování o neuložených změnách</translation>
</message>
<message>
<location filename="../MainUI.ui" line="409"/>
<source>Top</source>
- <translation type="unfinished"></translation>
+ <translation>Nahoře</translation>
</message>
<message>
<location filename="../MainUI.ui" line="417"/>
<source>Bottom</source>
- <translation type="unfinished"></translation>
+ <translation>Dole</translation>
</message>
<message>
<location filename="../MainUI.ui" line="425"/>
<source>Left</source>
- <translation type="unfinished"></translation>
+ <translation>Vlevo</translation>
</message>
<message>
<location filename="../MainUI.ui" line="433"/>
<source>Right</source>
- <translation type="unfinished"></translation>
+ <translation>Vpravo</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="62"/>
@@ -269,7 +269,7 @@
<message>
<location filename="../MainUI.cpp" line="195"/>
<source>Open File(s)</source>
- <translation>Otevřít soubor(y)</translation>
+ <translation>Otevřít soubory</translation>
</message>
<message>
<location filename="../MainUI.cpp" line="195"/>
@@ -327,17 +327,17 @@ Přesto chcete editor zavřít?
<message>
<location filename="../PlainTextEditor.cpp" line="327"/>
<source>The following file has been changed by some other utility. Do you want to re-load it?</source>
- <translation>Následující soubor byl změněn jiným programem. Chcete jej nahrát znovu?</translation>
+ <translation>Následující soubor byl změněn jiným programem. Chcete jej načíst znovu?</translation>
</message>
<message>
<location filename="../PlainTextEditor.cpp" line="329"/>
<source>(Note: You will lose all currently-unsaved changes)</source>
- <translation>(Poznámka: Ztratíte všechny nyní neuložené změny)</translation>
+ <translation>(Poznámka: Ztratíte všechny doposud neuložené změny)</translation>
</message>
<message>
<location filename="../PlainTextEditor.cpp" line="333"/>
<source>File Modified</source>
- <translation>Soubor změněn</translation>
+ <translation>Soubor byl změněn</translation>
</message>
</context>
</TS>
diff --git a/src-qt5/desktop-utils/lumina-textedit/i18n/l-te_da.ts b/src-qt5/desktop-utils/lumina-textedit/i18n/l-te_da.ts
index 6e91558b..d54a43e4 100644
--- a/src-qt5/desktop-utils/lumina-textedit/i18n/l-te_da.ts
+++ b/src-qt5/desktop-utils/lumina-textedit/i18n/l-te_da.ts
@@ -53,7 +53,7 @@
<message>
<location filename="../MainUI.ui" line="17"/>
<source>MainWindow</source>
- <translation>Hovedvindue</translation>
+ <translation>HovedVindue</translation>
</message>
<message>
<location filename="../MainUI.ui" line="66"/>
@@ -132,7 +132,7 @@
<message>
<location filename="../MainUI.ui" line="252"/>
<source>toolBar</source>
- <translation>værktøjsbjælke</translation>
+ <translation>værktøjsLinje</translation>
</message>
<message>
<location filename="../MainUI.ui" line="278"/>
diff --git a/src-qt5/desktop-utils/lumina-textedit/i18n/l-te_es.ts b/src-qt5/desktop-utils/lumina-textedit/i18n/l-te_es.ts
index 578f09a3..0f81757b 100644
--- a/src-qt5/desktop-utils/lumina-textedit/i18n/l-te_es.ts
+++ b/src-qt5/desktop-utils/lumina-textedit/i18n/l-te_es.ts
@@ -112,7 +112,7 @@
<message>
<location filename="../MainUI.ui" line="209"/>
<source>View</source>
- <translation>Vista</translation>
+ <translation>Ver</translation>
</message>
<message>
<location filename="../MainUI.ui" line="213"/>
diff --git a/src-qt5/desktop-utils/lumina-textedit/i18n/l-te_ru.ts b/src-qt5/desktop-utils/lumina-textedit/i18n/l-te_ru.ts
index 76310ab4..ebb521b4 100644
--- a/src-qt5/desktop-utils/lumina-textedit/i18n/l-te_ru.ts
+++ b/src-qt5/desktop-utils/lumina-textedit/i18n/l-te_ru.ts
@@ -27,7 +27,7 @@
<location filename="../ColorDialog.ui" line="44"/>
<location filename="../ColorDialog.cpp" line="55"/>
<source>Select Color</source>
- <translation>Выбор цвета</translation>
+ <translation>Выберите цвет</translation>
</message>
<message>
<location filename="../ColorDialog.ui" line="64"/>
@@ -112,7 +112,7 @@
<message>
<location filename="../MainUI.ui" line="209"/>
<source>View</source>
- <translation>Просмотр</translation>
+ <translation>Вид</translation>
</message>
<message>
<location filename="../MainUI.ui" line="213"/>
diff --git a/src-qt5/experimental/lumina-terminal/i18n/l-terminal_zh_CN.ts b/src-qt5/experimental/lumina-terminal/i18n/l-terminal_zh_CN.ts
index c899062c..98ccfe43 100644
--- a/src-qt5/experimental/lumina-terminal/i18n/l-terminal_zh_CN.ts
+++ b/src-qt5/experimental/lumina-terminal/i18n/l-terminal_zh_CN.ts
@@ -6,12 +6,12 @@
<message>
<location filename="../TerminalWidget.cpp" line="61"/>
<source>Copy Selection</source>
- <translation type="unfinished"></translation>
+ <translation>复制选中区域</translation>
</message>
<message>
<location filename="../TerminalWidget.cpp" line="62"/>
<source>Paste</source>
- <translation type="unfinished"></translation>
+ <translation>粘贴</translation>
</message>
</context>
<context>
@@ -19,27 +19,27 @@
<message>
<location filename="../TrayIcon.cpp" line="123"/>
<source>Trigger Terminal</source>
- <translation type="unfinished"></translation>
+ <translation>开启终端</translation>
</message>
<message>
<location filename="../TrayIcon.cpp" line="125"/>
<source>Top of Screen</source>
- <translation type="unfinished"></translation>
+ <translation>屏幕顶端</translation>
</message>
<message>
<location filename="../TrayIcon.cpp" line="130"/>
<source>Close Terminal</source>
- <translation type="unfinished"></translation>
+ <translation>关闭终端</translation>
</message>
<message>
<location filename="../TrayIcon.cpp" line="139"/>
<source>Move To Monitor</source>
- <translation type="unfinished"></translation>
+ <translation>移至监视器</translation>
</message>
<message>
<location filename="../TrayIcon.cpp" line="142"/>
<source>Monitor %1</source>
- <translation type="unfinished"></translation>
+ <translation>监视器 %1</translation>
</message>
</context>
</TS>
bgstack15