From 1f7795112ba500e94d4ff4e7f5fc2385f5655e80 Mon Sep 17 00:00:00 2001 From: sgourdas Date: Mon, 1 Jul 2024 12:14:50 +0300 Subject: [PATCH] Monitor path setting QOL improvements --- resources/css/_settingsManager.css | 4 +-- src/settingsview.cpp | 39 +++++++++++++++--------------- src/settingsview.h | 3 ++- ui/settings.ui | 7 ++++++ 4 files changed, 31 insertions(+), 22 deletions(-) diff --git a/resources/css/_settingsManager.css b/resources/css/_settingsManager.css index 1844549..95e55bb 100644 --- a/resources/css/_settingsManager.css +++ b/resources/css/_settingsManager.css @@ -43,12 +43,12 @@ QPushButton:hover { color: white; } -#downloadDirPathCopy { +#downloadDirPathCopy, #monitorDirPathCopy { background-color: none; border: 1px solid transparent; } -#downloadDirPathCopy:hover { +#downloadDirPathCopy:hover, #monitorDirPathCopy:hover { background-color: #D9E9FF; border: 1px solid #3366CC; border-radius: 3px; diff --git a/src/settingsview.cpp b/src/settingsview.cpp index 9f40a17..186573d 100644 --- a/src/settingsview.cpp +++ b/src/settingsview.cpp @@ -9,7 +9,7 @@ namespace { - QString formatDownloadDir(const QString& input) { + QString formatSettingsDir(const QString& input) { const int maxLength = 40; if (input.length() > maxLength) { QString suffix = input.right(maxLength); @@ -24,13 +24,19 @@ SettingsView::SettingsView(QWidget *parent) : QWidget(parent) , ui(new Ui::Settings) { + SettingsManager *settingsMgr = KiwixApp::instance()->getSettingsManager(); ui->setupUi(this); ui->widget->setStyleSheet(KiwixApp::instance()->parseStyleFromFile(":/css/_settingsManager.css")); connect(ui->zoomPercentSpinBox, QOverload::of(&QSpinBox::valueChanged), this, &SettingsView::setZoom); connect(ui->moveToTrashToggle, &QCheckBox::clicked, this, &SettingsView::setMoveToTrash); connect(ui->reopenTabToggle, &QCheckBox::clicked, this, &SettingsView::setReopenTab); connect(ui->browseButton, &QPushButton::clicked, this, &SettingsView::browseDownloadDir); - connect(ui->downloadDirPathCopy, &QPushButton::clicked, this, &SettingsView::copyDownloadPathToClipboard); + connect(ui->downloadDirPathCopy, &QPushButton::clicked, [this, settingsMgr]() { + copySettingsPathToClipboard(settingsMgr->getDownloadDir(), ui->downloadDirPathCopy); + }); + connect(ui->monitorDirPathCopy, &QPushButton::clicked, [this, settingsMgr]() { + copySettingsPathToClipboard(settingsMgr->getMonitorDir(), ui->monitorDirPathCopy); + }); connect(ui->resetButton, &QPushButton::clicked, this, &SettingsView::resetDownloadDir); connect(ui->monitorBrowse, &QPushButton::clicked, this, &SettingsView::browseMonitorDir); connect(ui->monitorClear, &QPushButton::clicked, this, &SettingsView::clearMonitorDir); @@ -50,6 +56,8 @@ SettingsView::SettingsView(QWidget *parent) QIcon copyIcon(":/icons/copy.svg"); ui->downloadDirPathCopy->setIcon(copyIcon); ui->downloadDirPathCopy->setIconSize(QSize(24, 24)); + ui->monitorDirPathCopy->setIcon(copyIcon); + ui->monitorDirPathCopy->setIconSize(QSize(24, 24)); ui->monitorHelp->setText("?"); ui->monitorHelp->setToolTip(gt("monitor-directory-tooltip")); ui->moveToTrashLabel->setText(gt("move-files-to-trash")); @@ -68,10 +76,7 @@ void SettingsView::init(int zoomPercent, const QString &downloadDir, { ui->zoomPercentSpinBox->setValue(zoomPercent); SettingsView::onDownloadDirChanged(downloadDir); - if (monitorDir == QString()) { - ui->monitorClear->hide(); - } - ui->monitorDirPath->setText(monitorDir); + SettingsView::onMonitorDirChanged(monitorDir); ui->moveToTrashToggle->setChecked(moveToTrash); ui->reopenTabToggle->setChecked(reopentab); } @@ -176,27 +181,23 @@ void SettingsView::setReopenTab(bool reopen) void SettingsView::onDownloadDirChanged(const QString &dir) { - ui->downloadDirPath->setText(formatDownloadDir(dir)); + ui->downloadDirPath->setText(formatSettingsDir(dir)); ui->downloadDirPath->setToolTip(dir); } -void SettingsView::copyDownloadPathToClipboard() +void SettingsView::copySettingsPathToClipboard(QString pathToCopy, QPushButton* button) { - QString downloadPath = KiwixApp::instance()->getSettingsManager()->getDownloadDir(); - QApplication::clipboard()->setText(downloadPath); - - QPoint globalPos = ui->downloadDirPathCopy->mapToGlobal(QPoint(0, -ui->downloadDirPathCopy->height())); - QToolTip::showText(globalPos, gt("path-was-copied"), ui->downloadDirPathCopy); + QApplication::clipboard()->setText(pathToCopy); + QPoint globalPos = button->mapToGlobal(QPoint(0, -button->height())); + QToolTip::showText(globalPos, gt("path-was-copied"), button); } void SettingsView::onMonitorDirChanged(const QString &dir) { - if (dir == "") { - ui->monitorClear->hide(); - } else { - ui->monitorClear->show(); - } - ui->monitorDirPath->setText(dir); + ui->monitorClear->setVisible(!dir.isEmpty()); + ui->monitorDirPathCopy->setVisible(!dir.isEmpty()); + ui->monitorDirPath->setText(formatSettingsDir(dir)); + ui->monitorDirPath->setToolTip(dir); } void SettingsView::onZoomChanged(qreal zoomFactor) diff --git a/src/settingsview.h b/src/settingsview.h index 41cf6d1..ba9a5da 100644 --- a/src/settingsview.h +++ b/src/settingsview.h @@ -2,6 +2,7 @@ #define SETTINGSVIEW_H #include +#include namespace Ui { class Settings; } @@ -23,7 +24,7 @@ public: void setMoveToTrash(bool moveToTrash); void setReopenTab(bool reopen); void onDownloadDirChanged(const QString &dir); - void copyDownloadPathToClipboard(); + void copySettingsPathToClipboard(QString pathToCopy, QPushButton* button); void onMonitorDirChanged(const QString &dir); void onZoomChanged(qreal zoomFactor); void onMoveToTrashChanged(bool moveToTrash); diff --git a/ui/settings.ui b/ui/settings.ui index c12ba03..2326f0b 100644 --- a/ui/settings.ui +++ b/ui/settings.ui @@ -258,6 +258,13 @@ + + + + + + +