parent
6f89289577
commit
b9f50f4508
@ -0,0 +1 @@
|
||||
theme-list-enhancements.patch
|
@ -0,0 +1,109 @@
|
||||
From ccc2ede1557523ed396e488f705132f187ab750f Mon Sep 17 00:00:00 2001
|
||||
From: tsujan <tsujan2000@gmail.com>
|
||||
Date: Mon, 16 May 2022 19:05:49 +0430
|
||||
Subject: [PATCH] Small enhancement to theme list in appearance config dialog
|
||||
(#854)
|
||||
|
||||
* Small enhancement to theme list in appearance config dialog
|
||||
|
||||
Themes are always sorted alphabetically, user themes are distinguished, and theme folders can be opened by double clicking or by using context menus.
|
||||
|
||||
Closes https://github.com/lxqt/lxqt-config/issues/852
|
||||
|
||||
* Don't use `WhatsThisRole` for theme path
|
||||
|
||||
`WhatsThisRole` might be needed later for another purpose, and finding the theme path directly has no real cost.
|
||||
---
|
||||
lxqt-config-appearance/lxqtthemeconfig.cpp | 40 ++++++++++++++++++++++
|
||||
lxqt-config-appearance/lxqtthemeconfig.h | 4 +++
|
||||
2 files changed, 44 insertions(+)
|
||||
|
||||
diff --git a/lxqt-config-appearance/lxqtthemeconfig.cpp b/lxqt-config-appearance/lxqtthemeconfig.cpp
|
||||
index 49b65e8b..8bc903f8 100644
|
||||
--- a/lxqt-config-appearance/lxqtthemeconfig.cpp
|
||||
+++ b/lxqt-config-appearance/lxqtthemeconfig.cpp
|
||||
@@ -32,6 +32,11 @@
|
||||
#include <QProcess>
|
||||
#include <QItemDelegate>
|
||||
#include <QPainter>
|
||||
+#include <QMenu>
|
||||
+#include <QDesktopServices>
|
||||
+#include <QUrl>
|
||||
+
|
||||
+#include <XdgDirs>
|
||||
|
||||
/*!
|
||||
* \brief Simple delegate to draw system background color below decoration/icon
|
||||
@@ -84,6 +89,10 @@ LXQtThemeConfig::LXQtThemeConfig(LXQt::Settings *settings, QWidget *parent) :
|
||||
{
|
||||
QString themeName = theme.name();
|
||||
themeName[0] = themeName[0].toTitleCase();
|
||||
+ if (theme.path().contains(XdgDirs::dataHome(false) + QStringLiteral("/")))
|
||||
+ {
|
||||
+ themeName += QStringLiteral(" ") + tr("(User Theme)");
|
||||
+ }
|
||||
QTreeWidgetItem *item = new QTreeWidgetItem(QStringList(themeName));
|
||||
if (!theme.previewImage().isEmpty())
|
||||
{
|
||||
@@ -93,11 +102,16 @@ LXQtThemeConfig::LXQtThemeConfig(LXQt::Settings *settings, QWidget *parent) :
|
||||
item->setData(0, Qt::UserRole, theme.name());
|
||||
ui->lxqtThemeList->addTopLevelItem(item);
|
||||
}
|
||||
+ ui->lxqtThemeList->sortItems(0, Qt::AscendingOrder);
|
||||
+ ui->lxqtThemeList->setContextMenuPolicy(Qt::CustomContextMenu);
|
||||
|
||||
initControls();
|
||||
|
||||
connect(ui->lxqtThemeList, &QTreeWidget::currentItemChanged, this, &LXQtThemeConfig::settingsChanged);
|
||||
connect(ui->wallpaperOverride, &QAbstractButton::clicked, this, &LXQtThemeConfig::settingsChanged);
|
||||
+
|
||||
+ connect(ui->lxqtThemeList, &QTreeWidget::itemDoubleClicked, this, &LXQtThemeConfig::doubleClicked);
|
||||
+ connect(ui->lxqtThemeList, &QWidget::customContextMenuRequested, this, &LXQtThemeConfig::contextMenu);
|
||||
}
|
||||
|
||||
|
||||
@@ -145,3 +159,29 @@ void LXQtThemeConfig::applyLxqtTheme()
|
||||
}
|
||||
}
|
||||
}
|
||||
+
|
||||
+void LXQtThemeConfig::doubleClicked(QTreeWidgetItem *item, int /*column*/)
|
||||
+{
|
||||
+ if (!item)
|
||||
+ return;
|
||||
+
|
||||
+ LXQt::LXQtTheme theme{item->data(0, Qt::UserRole).toString()};
|
||||
+ if (!theme.isValid())
|
||||
+ return;
|
||||
+
|
||||
+ // first try "qtxdg-mat"; fall back to QDesktopServices if we are not inside an LXQt session
|
||||
+ if (!QProcess::startDetached(QStringLiteral("qtxdg-mat"), QStringList() << QStringLiteral("open") << theme.path()))
|
||||
+ {
|
||||
+ QDesktopServices::openUrl(QUrl(theme.path()));
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+void LXQtThemeConfig::contextMenu(const QPoint& p)
|
||||
+{
|
||||
+ QMenu menu;
|
||||
+ QAction *a = menu.addAction(tr("Open theme folder"));
|
||||
+ connect(a, &QAction::triggered, [this, p] {
|
||||
+ doubleClicked(ui->lxqtThemeList->itemAt(p), 0);
|
||||
+ });
|
||||
+ menu.exec(ui->lxqtThemeList->viewport()->mapToGlobal(p));
|
||||
+}
|
||||
diff --git a/lxqt-config-appearance/lxqtthemeconfig.h b/lxqt-config-appearance/lxqtthemeconfig.h
|
||||
index 8846dbbe..1886738c 100644
|
||||
--- a/lxqt-config-appearance/lxqtthemeconfig.h
|
||||
+++ b/lxqt-config-appearance/lxqtthemeconfig.h
|
||||
@@ -53,6 +53,10 @@ public slots:
|
||||
signals:
|
||||
void settingsChanged();
|
||||
|
||||
+private slots:
|
||||
+ void doubleClicked(QTreeWidgetItem *item, int column);
|
||||
+ void contextMenu(const QPoint& p);
|
||||
+
|
||||
private:
|
||||
Ui::LXQtThemeConfig *ui;
|
||||
LXQt::Settings *mSettings;
|
Loading…
Reference in new issue