aboutsummaryrefslogtreecommitdiff
path: root/src-qt5/core/lumina-theme-engine/src/lthemeengine/qsspage.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src-qt5/core/lumina-theme-engine/src/lthemeengine/qsspage.cpp')
-rw-r--r--src-qt5/core/lumina-theme-engine/src/lthemeengine/qsspage.cpp296
1 files changed, 110 insertions, 186 deletions
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));
+ }
}
bgstack15