]> git.sur5r.net Git - minitube/blobdiff - src/downloadsettings.cpp
Imported Upstream version 1.2
[minitube] / src / downloadsettings.cpp
diff --git a/src/downloadsettings.cpp b/src/downloadsettings.cpp
new file mode 100644 (file)
index 0000000..557a4e1
--- /dev/null
@@ -0,0 +1,66 @@
+#include "downloadsettings.h"
+#include "downloadmanager.h"
+
+DownloadSettings::DownloadSettings(QWidget *parent) : QWidget(parent) {
+
+    QBoxLayout *layout = new QHBoxLayout(this);
+    layout->setMargin(10);
+
+    message = new QLabel(this);
+    message->setOpenExternalLinks(true);
+    layout->addWidget(message);
+
+    changeFolderButton = new QPushButton(this);
+    changeFolderButton->setText(tr("Change location..."));
+    changeFolderButton->setSizePolicy(QSizePolicy::Maximum, QSizePolicy::Preferred);
+    connect(changeFolderButton, SIGNAL(clicked()), SLOT(changeFolder()));
+    layout->addWidget(changeFolderButton);
+
+    updateMessage();
+}
+
+void DownloadSettings::paintEvent(QPaintEvent * /*event*/) {
+    QPainter painter(this);
+#ifdef APP_MAC
+    QBrush brush;
+    if (window()->isActiveWindow()) {
+        brush = QBrush(QColor(0xdd, 0xe4, 0xeb));
+    } else {
+        brush = palette().window();
+    }
+    painter.fillRect(0, 0, width(), height(), brush);
+#endif
+    painter.setPen(palette().color(QPalette::Mid));
+    painter.drawLine(0, 0, width(), 0);
+}
+
+void DownloadSettings::changeFolder() {
+    QString dir = QFileDialog::getExistingDirectory(this, tr("Choose the download location"),
+                                                    QDesktopServices::storageLocation(QDesktopServices::HomeLocation),
+                                                    QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);
+
+    if (!dir.isEmpty()) {
+        QSettings settings;
+        settings.setValue("downloadFolder", dir);
+        updateMessage();
+        QMainWindow* mainWindow = dynamic_cast<QMainWindow*>(window());
+        if (mainWindow) {
+            QString status;
+            status = tr("Download location changed.");
+            if (DownloadManager::instance()->activeItems() > 0)
+                status += " " + tr("Current downloads will still go in the previous location.");
+            mainWindow->statusBar()->showMessage(status);
+        }
+    }
+}
+
+void DownloadSettings::updateMessage() {
+    QString path = DownloadManager::instance()->currentDownloadFolder();
+    QString home = QDesktopServices::storageLocation(QDesktopServices::HomeLocation) + "/";
+    QString displayPath = path;
+    displayPath = displayPath.remove(home);
+    message->setText(
+            tr("Downloading to: %1")
+            .arg("<a href='file://%1' style='text-decoration:none; color:palette(text); font-weight:bold'>%2</a>")
+            .arg(path, displayPath));
+}