Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Show Open/Save dialog on downloading files #1123

Open
wants to merge 5 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions kiwix-desktop.pro
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ SOURCES += \
src/findinpagebar.cpp \
src/flowlayout.cpp \
src/kiwixchoicebox.cpp \
src/kiwixconfirmbox.cpp \
src/kiwixmessagebox.cpp \
src/kiwixlineedit.cpp \
src/kiwixlistwidget.cpp \
src/kiwixloader.cpp \
Expand Down Expand Up @@ -96,7 +96,7 @@ HEADERS += \
src/findinpagebar.h \
src/flowlayout.h \
src/kiwixchoicebox.h \
src/kiwixconfirmbox.h \
src/kiwixmessagebox.h \
src/kiwixlineedit.h \
src/kiwixlistwidget.h \
src/kiwixloader.h \
Expand Down Expand Up @@ -138,7 +138,7 @@ FORMS += \
src/contentmanagerview.ui \
src/findinpagebar.ui \
ui/kiwixchoicebox.ui \
ui/kiwixconfirmbox.ui \
ui/kiwixmessagebox.ui \
ui/mainwindow.ui \
ui/about.ui \
src/contentmanagerside.ui \
Expand Down
7 changes: 7 additions & 0 deletions resources/css/confirmBox.css → resources/css/messageBox.css
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,11 @@ QPushButton:hover {
color: white;
}

#closeButton {
border: 0;
}

#closeButton:hover {
background-color: transparent;
}

7 changes: 6 additions & 1 deletion resources/i18n/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
"error-downloader-launch-message":"Impossible to launch downloader, Kiwix-desktop will start but all download functions will not working!",
"error-launch-server-message":"An error has occured!",
"error-archive":"Cannot get the archive",
"error-opening-file": "There was an error opening the file.",
"open-zim":"Open ZIM File",
"local-kiwix-server":"Local Kiwix Server",
"random-article":"Random Article",
Expand All @@ -23,6 +24,7 @@
"reopen-closed-tab":"Reopen closed tab",
"browse-library":"Browse library",
"open-file":"Open file",
"save-file": "Save file",
"open-recent":"Open recent",
"search-article":"Search article",
"search-in-library":"Search in library",
Expand All @@ -45,6 +47,7 @@
"donate-to-support-kiwix":"Donate to support Kiwix",
"exit":"Exit",
"save-file-as-window-title":"Save File as",
"download-finished": "Download Finished",
"download-finished-message":"The document has been downloaded.",
"file":"File",
"edit":"Edit",
Expand Down Expand Up @@ -168,5 +171,7 @@
"no-pictures": "No Pictures",
"no-videos": "No Videos",
"open-previous-tabs-at-startup": "Open previous tabs at startup",
"preview-book-in-web-browser": "Preview book in web browser"
"preview-book-in-web-browser": "Preview book in web browser",
"save-or-open": "Save or Open file",
"save-or-open-text": "What should Kiwix do with this file?"
}
2 changes: 1 addition & 1 deletion resources/style.qrc
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<file>css/style.css</file>
<file>css/popup.css</file>
<file>css/localServer.css</file>
<file>css/confirmBox.css</file>
<file>css/messageBox.css</file>
<file>css/contentmanagerside.css</file>
<file>css/choiceBox.css</file>
</qresource>
Expand Down
2 changes: 1 addition & 1 deletion src/contentmanager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
#include "node.h"
#include "rownode.h"
#include "descriptionnode.h"
#include "kiwixconfirmbox.h"
#include "kiwixmessagebox.h"
#include <QtConcurrent/QtConcurrentRun>
#include "contentmanagerheader.h"
#include <QDesktopServices>
Expand Down
23 changes: 17 additions & 6 deletions src/kiwixapp.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -229,21 +229,32 @@ QString gt(const QString &key) {
return KiwixApp::instance()->getText(key);
}

QString KiwixApp::getZimImportDir() const
{
QString importDir = mp_session->value("zim-import-dir").toString();
if (importDir.isEmpty()) {
importDir = QStandardPaths::writableLocation(QStandardPaths::DownloadLocation);
if (importDir.isEmpty()) { importDir = QDir::currentPath(); }
}
return importDir;
}

void KiwixApp::setZimImportDir(QString importDir)
{
mp_session->setValue("zim-import-dir", importDir);
}

void KiwixApp::openZimFile(const QString &zimfile)
{
QString _zimfile;
if (zimfile.isEmpty()) {
QString importDir = mp_session->value("zim-import-dir").toString();
if (importDir.isEmpty()) {
importDir = QStandardPaths::writableLocation(QStandardPaths::DownloadLocation);
if (importDir.isEmpty()) { importDir = QDir::currentPath(); }
}
QString importDir = getZimImportDir();
_zimfile = QFileDialog::getOpenFileName(getMainWindow(), gt("open-zim"), importDir, "ZIM Files (*.zim);;Split ZIM Files (*.zimaa)");

if (_zimfile.isEmpty()) { return; }
_zimfile = QDir::toNativeSeparators(_zimfile);
QFileInfo fileInfo(_zimfile);
mp_session->setValue("zim-import-dir", fileInfo.absolutePath());
setZimImportDir(fileInfo.absolutePath());
}
QString zimId;
const auto &validZimFile = zimfile.isEmpty() ? _zimfile : zimfile;
Expand Down
2 changes: 2 additions & 0 deletions src/kiwixapp.h
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,8 @@ class KiwixApp : public QtSingleApplication
kiwix::Server* getLocalServer() { return &m_server; }
SettingsManager* getSettingsManager() { return &m_settingsManager; };
QString getText(const QString &key) { return m_translation.getText(key); };
QString getZimImportDir() const;
void setZimImportDir(QString);
void setMonitorDir(const QString &dir);
bool isCurrentArticleBookmarked();
QString parseStyleFromFile(QString filePath);
Expand Down
47 changes: 0 additions & 47 deletions src/kiwixconfirmbox.cpp

This file was deleted.

47 changes: 0 additions & 47 deletions src/kiwixconfirmbox.h

This file was deleted.

66 changes: 66 additions & 0 deletions src/kiwixmessagebox.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
#include "kiwixmessagebox.h"
#include "ui_kiwixmessagebox.h"
#include <QFile>
#include "kiwixapp.h"

KiwixMessageBox::KiwixMessageBox(QString confirmTitle, QString confirmText, bool okDialog, QWidget *parent,
QString leftAction, QString rightAction) :
QDialog(parent), m_confirmTitle(confirmTitle), m_confirmText(confirmText),
ui(new Ui::kiwixmessagebox)
{
ui->setupUi(this);
setWindowFlag(Qt::FramelessWindowHint, true);
setStyleSheet(KiwixApp::instance()->parseStyleFromFile(":/css/messageBox.css"));
connect(ui->yesButton, &QPushButton::clicked, [=]() {
emit yesClicked();
m_result = YesClicked;
accept();
});
connect(ui->noButton, &QPushButton::clicked, [=]() {
emit noClicked();
m_result = NoClicked;
reject();
});
connect(ui->okButton, &QPushButton::clicked, [=]() {
emit okClicked();
m_result = OkClicked;
});
connect(ui->closeButton, &QPushButton::clicked, [=]() {
this->close();
m_result = CloseClicked;
});
ui->confirmText->setText(confirmText);
ui->confirmTitle->setText(confirmTitle);
ui->yesButton->setText(leftAction);
ui->noButton->setText(rightAction);
ui->okButton->setText(gt("ok"));
ui->okButton->hide();
if (okDialog) {
ui->yesButton->hide();
ui->noButton->hide();
ui->okButton->show();
}
}

KiwixMessageBox::~KiwixMessageBox()
{
delete ui;
}

void showInfoBox(QString title, QString text, QWidget *parent)
{
KiwixMessageBox *dialog = new KiwixMessageBox(title, text, true, parent);
dialog->show();
QObject::connect(dialog, &KiwixMessageBox::okClicked, [=]() {
dialog->deleteLater();
});
}

KiwixMessageBox::Result showKiwixMessageBox(QString title, QString text, QWidget *parent, QString leftTitle, QString rightTitle)
{
KiwixMessageBox *dialog = new KiwixMessageBox(title, text, false, parent, leftTitle, rightTitle);
QObject::connect(dialog, &KiwixMessageBox::finished, [=]() {
dialog->deleteLater();
});
return dialog->execDialog();
}
juuz0 marked this conversation as resolved.
Show resolved Hide resolved
58 changes: 58 additions & 0 deletions src/kiwixmessagebox.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
#ifndef KIWIXMESSAGEBOX_H
#define KIWIXMESSAGEBOX_H

#include <QDialog>
#include "kiwixapp.h"

namespace Ui {
class kiwixmessagebox;
}

class KiwixMessageBox : public QDialog
{
Q_OBJECT

public:
KiwixMessageBox(QString confirmTitle, QString confirmText, bool okDialog, QWidget *parent = nullptr,
QString leftAction = gt("yes"), QString rightAction = gt("no"));
~KiwixMessageBox();
enum Result {
YesClicked,
NoClicked,
OkClicked,
CloseClicked
};
Result execDialog() { QDialog::exec(); return m_result; }

signals:
void yesClicked();
void noClicked();
void okClicked();

private:
QString m_confirmTitle;
QString m_confirmText;
Ui::kiwixmessagebox *ui;
Result m_result;
};


void showInfoBox(QString title, QString text, QWidget *parent = nullptr);
KiwixMessageBox::Result showKiwixMessageBox(QString title, QString text, QWidget *parent, QString leftTitle, QString rightTitle);

template<class YesAction>
void showConfirmBox(QString title, QString text, QWidget *parent,
YesAction yesAction)
{
KiwixMessageBox *dialog = new KiwixMessageBox(title, text, false, parent);
dialog->show();
QObject::connect(dialog, &KiwixMessageBox::yesClicked, [=]() {
yesAction();
dialog->deleteLater();
});
QObject::connect(dialog, &KiwixMessageBox::noClicked, [=]() {
dialog->deleteLater();
});
}

#endif // KIWIXMESSAGEBOX_H
Loading
Loading