mirror of
https://github.com/kiwix/kiwix-desktop.git
synced 2025-08-03 12:46:29 -04:00
Add monitor directory entry in settings panel
This adds an option to check/update monitor directory from the settings panel.
This commit is contained in:
parent
8d6d6833e7
commit
a69e6a1f02
@ -1,5 +1,5 @@
|
||||
QWidget#widget {
|
||||
max-width: 500;
|
||||
max-width: 600;
|
||||
}
|
||||
|
||||
QLabel,
|
||||
@ -23,8 +23,8 @@ QLabel#settingsLabel {
|
||||
font-weight: bold;
|
||||
}
|
||||
QSpinBox,
|
||||
QLabel#downloadDirPath {
|
||||
font: bold 12pt "Cantarell";
|
||||
QLabel#downloadDirPath, #monitorDirPath {
|
||||
font: bold 12pt;
|
||||
}
|
||||
QPushButton {
|
||||
background-color: white;
|
||||
@ -38,3 +38,18 @@ QPushButton:hover {
|
||||
background-color: #3366cc;
|
||||
color: white;
|
||||
}
|
||||
|
||||
#monitorDirLabel {
|
||||
padding-right: 0;
|
||||
}
|
||||
|
||||
#monitorHelp {
|
||||
padding: 1;
|
||||
margin: 0;
|
||||
background: #666666;
|
||||
color: white;
|
||||
border-radius: 2px;
|
||||
max-height: 18px;
|
||||
min-width: 14px;
|
||||
font: bold;
|
||||
}
|
||||
|
@ -69,7 +69,10 @@
|
||||
"port-for-local-kiwix-server-setting":"Port for local Kiwix server",
|
||||
"zoom-level-setting":"Default zoom level",
|
||||
"download-directory-setting":"Download directory",
|
||||
"monitor-directory-setting":"Monitor directory",
|
||||
"monitor-directory-default":"Not set",
|
||||
"reset":"Reset",
|
||||
"clear":"Clear",
|
||||
"browse":"Browse",
|
||||
"about-kiwix-desktop-title":"Kiwix Desktop",
|
||||
"about-kiwix-desktop-description":"Kiwix enables you to have the whole Wikipedia at hand wherever you go! On a boat, in the middle of nowhere or in jail, Kiwix gives you access to the whole human knowledge. You don't need Internet, everything is stored on your computer.",
|
||||
@ -124,5 +127,10 @@
|
||||
"download-dir-dialog-msg":"The new download directory path will be:\n{{DIRECTORY}}",
|
||||
"invalid-port":"Invalid port",
|
||||
"zim-open-fail-title":"Invalid file",
|
||||
"zim-open-fail-text":"The ZIM file <b>{{ZIM}}</b> cannot be opened properly. It will be removed from your library."
|
||||
"zim-open-fail-text":"The ZIM file <b>{{ZIM}}</b> cannot be opened properly. It will be removed from your library.",
|
||||
"monitor-dir-dialog-title":"Are you sure you want to change the monitor directory?",
|
||||
"monitor-dir-dialog-msg":"The new monitor directory path will be:\n{{DIRECTORY}}",
|
||||
"monitor-clear-dir-dialog-title":"Are you sure you want to clear the monitor directory?",
|
||||
"monitor-clear-dir-dialog-msg":"This will stop checking the monitor directory for new ZIM files.",
|
||||
"monitor-directory-tooltip":"All ZIM files in this directory will be automatically added to the library."
|
||||
}
|
||||
|
@ -273,6 +273,10 @@ bool KiwixApp::isCurrentArticleBookmarked()
|
||||
return false;
|
||||
}
|
||||
|
||||
void KiwixApp::setMonitorDir(const QString &dir) {
|
||||
m_settingsManager.setMonitorDir(dir);
|
||||
}
|
||||
|
||||
#define CREATE_ACTION(ID, TEXT) \
|
||||
mpa_actions[ID] = new QAction(TEXT)
|
||||
#define SET_SHORTCUT(ID, TEXT, SHORTCUT) \
|
||||
|
@ -79,7 +79,7 @@ public:
|
||||
kiwix::Server* getLocalServer() { return &m_server; }
|
||||
SettingsManager* getSettingsManager() { return &m_settingsManager; };
|
||||
QString getText(const QString &key) { return m_translation.getText(key); };
|
||||
|
||||
void setMonitorDir(const QString &dir);
|
||||
bool isCurrentArticleBookmarked();
|
||||
|
||||
public slots:
|
||||
|
@ -16,7 +16,7 @@ SettingsView* SettingsManager::getView()
|
||||
{
|
||||
if (m_view == nullptr) {
|
||||
auto view = new SettingsView();
|
||||
view->init(m_zoomFactor * 100, m_downloadDir);
|
||||
view->init(m_zoomFactor * 100, m_downloadDir, m_monitorDir);
|
||||
connect(view, &QObject::destroyed, this, [=]() { m_view = nullptr; });
|
||||
m_view = view;
|
||||
}
|
||||
@ -80,10 +80,18 @@ void SettingsManager::setDownloadDir(QString downloadDir)
|
||||
emit(downloadDirChanged(downloadDir));
|
||||
}
|
||||
|
||||
void SettingsManager::setMonitorDir(QString monitorDir)
|
||||
{
|
||||
m_monitorDir = monitorDir;
|
||||
m_settings.setValue("monitor/dir", monitorDir);
|
||||
emit(monitorDirChanged(monitorDir));
|
||||
}
|
||||
|
||||
void SettingsManager::initSettings()
|
||||
{
|
||||
m_kiwixServerPort = m_settings.value("localKiwixServer/port", 8080).toInt();
|
||||
m_zoomFactor = m_settings.value("view/zoomFactor", 1).toDouble();
|
||||
m_downloadDir = m_settings.value("download/dir", QString::fromStdString(kiwix::getDataDirectory())).toString();
|
||||
m_kiwixServerIpAddress = m_settings.value("localKiwixServer/ipAddress", QString("0.0.0.0")).toString();
|
||||
m_monitorDir = m_settings.value("monitor/dir", QString("")).toString();
|
||||
}
|
||||
|
@ -26,12 +26,14 @@ public:
|
||||
QString getKiwixServerIpAddress() const { return m_kiwixServerIpAddress; }
|
||||
qreal getZoomFactor() const { return m_zoomFactor; }
|
||||
QString getDownloadDir() const { return m_downloadDir; }
|
||||
QString getMonitorDir() const { return m_monitorDir; }
|
||||
|
||||
public slots:
|
||||
void setKiwixServerPort(int port);
|
||||
void setKiwixServerIpAddress(QString ipAddress);
|
||||
void setZoomFactor(qreal zoomFactor);
|
||||
void setDownloadDir(QString downloadDir);
|
||||
void setMonitorDir(QString monitorDir);
|
||||
private:
|
||||
void initSettings();
|
||||
|
||||
@ -39,6 +41,7 @@ signals:
|
||||
void portChanged(int port);
|
||||
void zoomChanged(qreal zoomFactor);
|
||||
void downloadDirChanged(QString downloadDir);
|
||||
void monitorDirChanged(QString monitorDir);
|
||||
|
||||
private:
|
||||
QSettings m_settings;
|
||||
@ -47,6 +50,7 @@ private:
|
||||
QString m_kiwixServerIpAddress;
|
||||
qreal m_zoomFactor;
|
||||
QString m_downloadDir;
|
||||
QString m_monitorDir;
|
||||
};
|
||||
|
||||
#endif // SETTINGSMANAGER_H
|
||||
|
@ -16,21 +16,32 @@ SettingsView::SettingsView(QWidget *parent)
|
||||
connect(ui->zoomPercentSpinBox, QOverload<int>::of(&QSpinBox::valueChanged), this, &SettingsView::setZoom);
|
||||
connect(ui->browseButton, &QPushButton::clicked, this, &SettingsView::browseDownloadDir);
|
||||
connect(ui->resetButton, &QPushButton::clicked, this, &SettingsView::resetDownloadDir);
|
||||
connect(ui->monitorBrowse, &QPushButton::clicked, this, &SettingsView::browseMonitorDir);
|
||||
connect(ui->monitorClear, &QPushButton::clicked, this, &SettingsView::clearMonitorDir);
|
||||
connect(KiwixApp::instance()->getSettingsManager(), &SettingsManager::downloadDirChanged, this, &SettingsView::onDownloadDirChanged);
|
||||
connect(KiwixApp::instance()->getSettingsManager(), &SettingsManager::monitorDirChanged, this, &SettingsView::onMonitorDirChanged);
|
||||
connect(KiwixApp::instance()->getSettingsManager(), &SettingsManager::zoomChanged, this, &SettingsView::onZoomChanged);
|
||||
ui->settingsLabel->setText(gt("settings"));
|
||||
ui->zoomPercentLabel->setText(gt("zoom-level-setting"));
|
||||
ui->downloadDirLabel->setText(gt("download-directory-setting"));
|
||||
ui->monitorDirLabel->setText(gt("monitor-directory-setting"));
|
||||
ui->resetButton->setText(gt("reset"));
|
||||
ui->browseButton->setText(gt("browse"));
|
||||
ui->monitorClear->setText(gt("clear"));
|
||||
ui->monitorBrowse->setText(gt("browse"));
|
||||
ui->monitorHelp->setText("<b>?</b>");
|
||||
ui->monitorHelp->setToolTip(gt("monitor-directory-tooltip"));
|
||||
}
|
||||
|
||||
void SettingsView::init(int zoomPercent, const QString &dir)
|
||||
void SettingsView::init(int zoomPercent, const QString &downloadDir, const QString &monitorDir)
|
||||
{
|
||||
ui->zoomPercentSpinBox->setValue(zoomPercent);
|
||||
ui->downloadDirPath->setText(dir);
|
||||
ui->downloadDirPath->setText(downloadDir);
|
||||
if (monitorDir == QString()) {
|
||||
ui->monitorClear->hide();
|
||||
}
|
||||
ui->monitorDirPath->setText(monitorDir);
|
||||
}
|
||||
|
||||
bool SettingsView::confirmDialog( QString messageText, QString messageTitle)
|
||||
{
|
||||
QMessageBox msgBox(
|
||||
@ -51,6 +62,13 @@ bool SettingsView::confirmDialogDownloadDir(const QString &dir) {
|
||||
return confirmDialog(messageText, gt("download-dir-dialog-title"));
|
||||
}
|
||||
|
||||
bool SettingsView::confirmDialogMonitorDir(const QString &dir) {
|
||||
auto messageText = gt("monitor-dir-dialog-msg");
|
||||
messageText = messageText.replace("{{DIRECTORY}}", dir);
|
||||
auto messageTitle = gt("monitor-dir-dialog-title");
|
||||
return confirmDialog(messageText, messageTitle);
|
||||
}
|
||||
|
||||
void SettingsView::resetDownloadDir()
|
||||
{
|
||||
auto dir = QString::fromStdString(kiwix::getDataDirectory());
|
||||
@ -79,6 +97,34 @@ void SettingsView::browseDownloadDir()
|
||||
}
|
||||
}
|
||||
|
||||
void SettingsView::browseMonitorDir()
|
||||
{
|
||||
const auto &monitorDir = KiwixApp::instance()->getSettingsManager()->getMonitorDir();
|
||||
QString previousDir;
|
||||
if (monitorDir == "") {
|
||||
previousDir = KiwixApp::instance()->getSettingsManager()->getDownloadDir();
|
||||
} else {
|
||||
previousDir = monitorDir;
|
||||
}
|
||||
QString dir = QFileDialog::getExistingDirectory(KiwixApp::instance()->getMainWindow(),
|
||||
gt("browse-directory"),
|
||||
previousDir,
|
||||
QFileDialog::ShowDirsOnly);
|
||||
if (dir == monitorDir || dir.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
if (confirmDialogMonitorDir(dir)) {
|
||||
KiwixApp::instance()->setMonitorDir(dir);
|
||||
}
|
||||
}
|
||||
|
||||
void SettingsView::clearMonitorDir()
|
||||
{
|
||||
if (confirmDialog(gt("monitor-clear-dir-dialog-msg"), gt("monitor-clear-dir-dialog-title"))) {
|
||||
KiwixApp::instance()->setMonitorDir("");
|
||||
}
|
||||
}
|
||||
|
||||
void SettingsView::setZoom(int zoomPercent)
|
||||
{
|
||||
qreal zoomFactor = (qreal) zoomPercent/100;
|
||||
@ -90,6 +136,16 @@ void SettingsView::onDownloadDirChanged(const QString &dir)
|
||||
ui->downloadDirPath->setText(dir);
|
||||
}
|
||||
|
||||
void SettingsView::onMonitorDirChanged(const QString &dir)
|
||||
{
|
||||
if (dir == "") {
|
||||
ui->monitorClear->hide();
|
||||
} else {
|
||||
ui->monitorClear->show();
|
||||
}
|
||||
ui->monitorDirPath->setText(dir);
|
||||
}
|
||||
|
||||
void SettingsView::onZoomChanged(qreal zoomFactor)
|
||||
{
|
||||
qreal zoomPercent = zoomFactor * 100;
|
||||
|
@ -11,16 +11,20 @@ class SettingsView : public QWidget
|
||||
public:
|
||||
SettingsView(QWidget *parent = nullptr);
|
||||
~SettingsView(){};
|
||||
void init(int zoomPercent, const QString &dir);
|
||||
void init(int zoomPercent, const QString &downloadDir, const QString &monitorDir);
|
||||
public Q_SLOTS:
|
||||
void resetDownloadDir();
|
||||
void browseDownloadDir();
|
||||
void browseMonitorDir();
|
||||
void clearMonitorDir();
|
||||
void setZoom(int zoomPercent);
|
||||
void onDownloadDirChanged(const QString &dir);
|
||||
void onMonitorDirChanged(const QString &dir);
|
||||
void onZoomChanged(qreal zoomFactor);
|
||||
private:
|
||||
bool confirmDialogDownloadDir(const QString& dir);
|
||||
bool confirmDialog(QString messageText, QString messageTitle);
|
||||
bool confirmDialogMonitorDir(const QString& dir);
|
||||
Ui::Settings *ui;
|
||||
};
|
||||
|
||||
|
@ -199,6 +199,91 @@
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="Line" name="line_4">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_6">
|
||||
<item>
|
||||
<widget class="QLabel" name="monitorDirLabel">
|
||||
<property name="text">
|
||||
<string>TextLabel</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="monitorHelp">
|
||||
<property name="text">
|
||||
<string>?</string>
|
||||
</property>
|
||||
<property name="textFormat">
|
||||
<enum>Qt::AutoText</enum>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
<property name="indent">
|
||||
<number>-5</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_6">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QLabel" name="monitorDirPath">
|
||||
<property name="text">
|
||||
<string>TextLabel</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_8">
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_7">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="monitorClear">
|
||||
<property name="text">
|
||||
<string>Reset</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="monitorBrowse">
|
||||
<property name="text">
|
||||
<string>Browse</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
|
Loading…
x
Reference in New Issue
Block a user