X-Git-Url: https://git.sven.stormbind.net/?a=blobdiff_plain;f=src%2Fzip-settings-dialog.cpp;fp=src%2Fzip-settings-dialog.cpp;h=f632e017b53f5c3488038bfd0c09fc67d91b0f83;hb=d483bd8e6523c23c6f1d8908a2e0611c2bc9ff4f;hp=0000000000000000000000000000000000000000;hpb=7dfa3fe589d1722d49681f42cdb0bf1e6efb5223;p=sven%2Fvym.git

diff --git a/src/zip-settings-dialog.cpp b/src/zip-settings-dialog.cpp
new file mode 100644
index 0000000..f632e01
--- /dev/null
+++ b/src/zip-settings-dialog.cpp
@@ -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);
+}