aboutsummaryrefslogtreecommitdiff
path: root/src-qt5/core-utils/lumina-config/ThemeDialog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src-qt5/core-utils/lumina-config/ThemeDialog.cpp')
-rw-r--r--src-qt5/core-utils/lumina-config/ThemeDialog.cpp101
1 files changed, 101 insertions, 0 deletions
diff --git a/src-qt5/core-utils/lumina-config/ThemeDialog.cpp b/src-qt5/core-utils/lumina-config/ThemeDialog.cpp
new file mode 100644
index 00000000..de17a3d8
--- /dev/null
+++ b/src-qt5/core-utils/lumina-config/ThemeDialog.cpp
@@ -0,0 +1,101 @@
+#include "ThemeDialog.h"
+#include "ui_ThemeDialog.h"
+
+#include <LuminaUtils.h>
+
+ThemeDialog::ThemeDialog(QWidget *parent, LPlugins *plugs, QString themeFilePath) : QDialog(parent), ui(new Ui::ThemeDialog){
+ ui->setupUi(this); //load the designer file
+ filepath = themeFilePath;
+ this->setWindowIcon( LXDG::findIcon("preferences-desktop-theme","") );
+ ui->line_name->setText( themeFilePath.section("/",-1).section(".qss",0,0) );
+ //Load the icons for the window
+ ui->push_cancel->setIcon( LXDG::findIcon("dialog-cancel","") );
+ ui->push_save->setIcon( LXDG::findIcon("document-save","") );
+ ui->push_apply->setIcon( LXDG::findIcon("dialog-ok","") );
+ ui->tool_color->setIcon( LXDG::findIcon("color-picker","") );
+ //Now create entries for the available colors in the database
+ QStringList colors = plugs->colorItems();
+ colors.sort();
+ colormenu = new QMenu(this);
+ for(int i=0; i<colors.length(); i++){
+ LPI info = plugs->colorInfo(colors[i]);
+ QAction *act = new QAction(info.name, this);
+ act->setWhatsThis("%%"+info.ID+"%%");
+ act->setToolTip(info.description);
+ colormenu->addAction(act);
+ }
+ ui->tool_color->setMenu(colormenu);
+ //Now load the given file
+ loadTheme();
+ connect(colormenu, SIGNAL(triggered(QAction*)),this, SLOT(menuTriggered(QAction*)) );
+ connect(ui->text_file, SIGNAL(textChanged()), this, SLOT(themeChanged()) );
+
+ //Now center the window on the parent
+ QPoint cen = parent->geometry().center();
+ this->move( cen.x() - (this->width()/2) , cen.y() - (this->height()/2) );
+}
+
+void ThemeDialog::loadTheme(){
+ QStringList contents = LUtils::readFile(filepath);
+ ui->text_file->setPlainText( contents.join("\n") );
+ ui->push_save->setEnabled(false);
+ ui->push_apply->setEnabled(false);
+}
+
+void ThemeDialog::saveTheme(){
+ QString name = ui->line_name->text();
+ QStringList contents = ui->text_file->toPlainText().split("\n");
+ LTHEME::saveLocalTheme(name, contents);
+ ui->push_save->setEnabled(false);
+ ui->push_apply->setEnabled(false);
+}
+
+void ThemeDialog::themeChanged(){
+ ui->push_save->setEnabled(true);
+ ui->push_apply->setEnabled(true);
+}
+
+// BUTTONS
+void ThemeDialog::on_push_save_clicked(){
+ //Now set the output values
+ themename = ui->line_name->text();
+ themepath = QDir::homePath()+"/.lumina/themes/"+themename+".qss.template";
+ //Check if that theme already exists
+ if(QFile::exists(themepath)){
+ if( QMessageBox::Yes != QMessageBox::question(this, tr("Theme Exists"), tr("This theme already exists.\n Overwrite it?"), QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes) ){
+ themename.clear();
+ themepath.clear();
+ return; //cancelled
+ }
+ }
+ //save the colors and close
+ saveTheme();
+ //this->close();
+}
+
+void ThemeDialog::on_push_apply_clicked(){
+ //Now set the output values
+ themename = ui->line_name->text();
+ themepath = QDir::homePath()+"/.lumina/themes/"+themename+".qss.template";
+ //Check if that theme already exists
+ if(QFile::exists(themepath)){
+ if( QMessageBox::Yes != QMessageBox::question(this, tr("Theme Exists"), tr("This theme already exists.\n Overwrite it?"), QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes) ){
+ themename.clear();
+ themepath.clear();
+ return; //cancelled
+ }
+ }
+ saveTheme();
+ this->close();
+}
+
+void ThemeDialog::on_push_cancel_clicked(){
+ //Now clear the output values (just in case)
+ themename.clear();
+ themepath.clear();
+ this->close();
+}
+
+void ThemeDialog::menuTriggered(QAction *act){
+ ui->text_file->insertPlainText( act->whatsThis() );
+}
bgstack15