]> git.sven.stormbind.net Git - sven/vym.git/blobdiff - src/zip-settings-dialog.cpp
New upstream version 2.9.22
[sven/vym.git] / src / zip-settings-dialog.cpp
diff --git a/src/zip-settings-dialog.cpp b/src/zip-settings-dialog.cpp
new file mode 100644 (file)
index 0000000..f632e01
--- /dev/null
@@ -0,0 +1,127 @@
+#include "zip-settings-dialog.h"
+
+#include <QDebug>
+#include <QFileDialog>
+#include <QString>
+
+#include "file.h"
+
+extern QString vymName;
+extern QString zipToolPath;
+extern QString unzipToolPath;
+extern bool zipToolAvailable;
+extern bool unzipToolAvailable;
+
+ZipSettingsDialog::ZipSettingsDialog(QWidget *parent) : QDialog(parent)
+{
+
+    ui.setupUi(this);
+    init();
+
+    QDialog::setWindowTitle("VYM - " +
+                            tr("zip settings", "dialog window title"));
+
+    connect(ui.zipToolPathLE, SIGNAL(textChanged(const QString &)), this,
+            SLOT(zipToolPathChanged()));
+    connect(ui.zipToolButton, SIGNAL(clicked()), this,
+            SLOT(zipToolButtonPressed()));
+    connect(ui.closeButton, SIGNAL(clicked()), this, SLOT(accept()));
+
+#if defined(Q_OS_WIN32)
+    ui.zipToolLabel->setText(tr("Path to 7z.exe", "zip tool settings dialog"));
+
+    ui.unzipToolPathLE->hide();
+    ui.unzipToolButton->hide();
+    ui.unzipToolStatusLabel->hide();
+    ui.unzipToolLabel->hide();
+#else
+    connect(ui.unzipToolPathLE, SIGNAL(textChanged(const QString &)), this,
+            SLOT(unzipToolPathChanged()));
+    connect(ui.unzipToolButton, SIGNAL(clicked()), this,
+            SLOT(unzipToolButtonPressed()));
+#endif
+}
+
+void ZipSettingsDialog::zipToolPathChanged()
+{
+    zipToolPath = ui.zipToolPathLE->text();
+    updateCheckResults();
+}
+
+void ZipSettingsDialog::unzipToolPathChanged()
+{
+    unzipToolPath = ui.unzipToolPathLE->text();
+    updateCheckResults();
+}
+
+void ZipSettingsDialog::zipToolButtonPressed()
+{
+    QString filter;
+    QString text;
+
+#if defined(Q_OS_WIN32)
+    filter = "Windows executable (*.exe);;";
+    text = QString(tr("Set path to 7z to zip/unzip files"));
+#else
+    filter = "All (*);;";
+    text = QString(tr("Set path to zip files"));
+#endif
+
+    QString fn = QFileDialog::getOpenFileName(
+        this, vymName + " - " + text + ":", zipToolPath, filter);
+
+    if (!fn.isEmpty()) {
+        zipToolPath = fn;
+        ui.zipToolPathLE->setText(fn);
+        updateCheckResults();
+    }
+}
+
+void ZipSettingsDialog::unzipToolButtonPressed()
+{
+    QString filter;
+    QString text;
+
+#if defined(Q_OS_WIN32)
+    // On windows we just use 7z for both zip/unzip
+    return;
+#else
+    filter = "All (*);;";
+    text = QString(tr("Set path to unzip files"));
+#endif
+
+    QString fn = QFileDialog::getOpenFileName(
+        this, vymName + " - " + text + ":", zipToolPath, filter);
+
+    if (!fn.isEmpty()) {
+        unzipToolPath = fn;
+        ui.unzipToolPathLE->setText(fn);
+        updateCheckResults();
+    }
+}
+
+void ZipSettingsDialog::init()
+{
+    ui.zipToolPathLE->setText(zipToolPath);
+    ui.unzipToolPathLE->setText(unzipToolPath);
+    updateCheckResults();
+}
+
+void ZipSettingsDialog::updateCheckResults()
+{
+    checkZipTool();
+    checkUnzipTool();
+    QString zipStatus;
+    if (zipToolAvailable)
+        zipStatus = QString(tr("Status: %1").arg("ok"));
+    else
+        zipStatus = QString(tr("Status: %1").arg("not ok"));
+    ui.zipToolStatusLabel->setText(zipStatus);
+
+    QString unzipStatus;
+    if (unzipToolAvailable)
+        unzipStatus = QString(tr("Status: %1").arg("ok"));
+    else
+        unzipStatus = QString(tr("Status: %1").arg("not ok"));
+    ui.unzipToolStatusLabel->setText(unzipStatus);
+}