summaryrefslogtreecommitdiffstats
path: root/rbutil/rbutilqt/gui/backupdialog.cpp
diff options
context:
space:
mode:
authorDominik Riebeling <Dominik.Riebeling@gmail.com>2021-12-15 21:04:28 +0100
committerDominik Riebeling <Dominik.Riebeling@gmail.com>2021-12-24 18:05:53 +0100
commitc876d3bbefe0dc00c27ca0c12d29da5874946962 (patch)
tree69f468a185a369b01998314bc3ecc19b70f4fcaa /rbutil/rbutilqt/gui/backupdialog.cpp
parent6c6f0757d7a902feb293be165d1490c42bc8e7ad (diff)
downloadrockbox-c876d3bbefe0dc00c27ca0c12d29da5874946962.tar.gz
rockbox-c876d3bbefe0dc00c27ca0c12d29da5874946962.zip
rbutil: Merge rbutil with utils folder.
rbutil uses several components from the utils folder, and can be considered part of utils too. Having it in a separate folder is an arbitrary split that doesn't help anymore these days, so merge them. This also allows other utils to easily use libtools.make without the need to navigate to a different folder. Change-Id: I3fc2f4de19e3e776553efb5dea5f779dfec0dc21
Diffstat (limited to 'rbutil/rbutilqt/gui/backupdialog.cpp')
-rw-r--r--rbutil/rbutilqt/gui/backupdialog.cpp152
1 files changed, 0 insertions, 152 deletions
diff --git a/rbutil/rbutilqt/gui/backupdialog.cpp b/rbutil/rbutilqt/gui/backupdialog.cpp
deleted file mode 100644
index f12c47b570..0000000000
--- a/rbutil/rbutilqt/gui/backupdialog.cpp
+++ /dev/null
@@ -1,152 +0,0 @@
-/***************************************************************************
- * __________ __ ___.
- * Open \______ \ ____ ____ | | _\_ |__ _______ ___
- * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
- * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
- * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
- * \/ \/ \/ \/ \/
- *
- * Copyright (C) 2012 by Dominik Riebeling
- *
- * All files in this archive are subject to the GNU General Public License.
- * See the file COPYING in the source tree root for full license agreement.
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
- * KIND, either express or implied.
- *
- ****************************************************************************/
-
-#include <QThread>
-#include <QDialog>
-#include <QMessageBox>
-#include <QFileDialog>
-#include "backupdialog.h"
-#include "ui_backupdialogfrm.h"
-#include "rbsettings.h"
-#include "progressloggergui.h"
-#include "ziputil.h"
-#include "rockboxinfo.h"
-#include "Logger.h"
-
-class BackupSizeThread : public QThread
-{
- public:
- void run(void);
- void setPath(QString p) { m_path = p; }
- qint64 currentSize(void) { return m_currentSize; }
-
- private:
- QString m_path;
- qint64 m_currentSize;
-};
-
-
-void BackupSizeThread::run(void)
-{
- LOG_INFO() << "Thread started, calculating" << m_path;
- m_currentSize = 0;
-
- QDirIterator it(m_path, QDirIterator::Subdirectories);
- while(it.hasNext()) {
- m_currentSize += QFileInfo(it.next()).size();
- }
- LOG_INFO() << "Thread done, sum:" << m_currentSize;
-}
-
-
-BackupDialog::BackupDialog(QWidget* parent) : QDialog(parent)
-{
- ui.setupUi(this);
-
- m_thread = new BackupSizeThread();
- connect(m_thread, SIGNAL(finished()), this, SLOT(updateSizeInfo()));
- connect(m_thread, SIGNAL(terminated()), this, SLOT(updateSizeInfo()));
-
- connect(ui.buttonCancel, SIGNAL(clicked()), this, SLOT(close()));
- connect(ui.buttonCancel, SIGNAL(clicked()), m_thread, SLOT(quit()));
- connect(ui.buttonChange, SIGNAL(clicked()), this, SLOT(changeBackupPath()));
- connect(ui.buttonBackup, SIGNAL(clicked()), this, SLOT(backup()));
-
- ui.backupSize->setText(tr("Installation size: calculating ..."));
- m_mountpoint = RbSettings::value(RbSettings::Mountpoint).toString();
-
- m_backupName = RbSettings::value(RbSettings::BackupPath).toString();
- if(m_backupName.isEmpty()) {
- m_backupName = m_mountpoint;
- }
- RockboxInfo info(m_mountpoint);
- m_backupName += "/.backup/rockbox-backup-" + info.version() + ".zip";
- ui.backupLocation->setText(QDir::toNativeSeparators(m_backupName));
-
- m_thread->setPath(m_mountpoint + "/.rockbox");
- m_thread->start();
-}
-
-
-void BackupDialog::changeBackupPath(void)
-{
- QString backupString = QFileDialog::getSaveFileName(this,
- tr("Select Backup Filename"), m_backupName, "*.zip");
- // only update if a filename was entered, ignore if cancelled
- if(!backupString.isEmpty()) {
- m_backupName = backupString;
- ui.backupLocation->setText(QDir::toNativeSeparators(m_backupName));
- RbSettings::setValue(RbSettings::BackupPath, QFileInfo(m_backupName).absolutePath());
- }
-}
-
-
-void BackupDialog::updateSizeInfo(void)
-{
- double size = m_thread->currentSize() / (1024 * 1024);
- QString unit = "MiB";
-
- if(size > 1024) {
- size /= 1024;
- unit = "GiB";
- }
-
- ui.backupSize->setText(tr("Installation size: %L1 %2").arg(size, 0, 'g', 4).arg(unit));
-}
-
-
-void BackupDialog::backup(void)
-{
- if(QFileInfo(m_backupName).isFile()) {
- if(QMessageBox::warning(this, tr("File exists"),
- tr("The selected backup file already exists. Overwrite?"),
- QMessageBox::Yes | QMessageBox::No) == QMessageBox::No) {
- return;
- }
- }
- m_logger = new ProgressLoggerGui(this);
- connect(m_logger, SIGNAL(closed()), this, SLOT(close()));
- m_logger->show();
- m_logger->addItem(tr("Starting backup ..."),LOGINFO);
- QCoreApplication::processEvents();
-
- // create dir, if it doesnt exist
- QFileInfo backupFile(m_backupName);
- if(!QDir(backupFile.path()).exists())
- {
- QDir a;
- a.mkpath(backupFile.path());
- }
-
- // create backup
- ZipUtil zip(this);
- connect(&zip, SIGNAL(logProgress(int, int)), m_logger, SLOT(setProgress(int, int)));
- connect(&zip, SIGNAL(logItem(QString, int)), m_logger, SLOT(addItem(QString, int)));
- zip.open(m_backupName, QuaZip::mdCreate);
-
- QString mp = m_mountpoint + "/.rockbox";
- if(zip.appendDirToArchive(mp, m_mountpoint)) {
- m_logger->addItem(tr("Backup successful."), LOGINFO);
- }
- else {
- m_logger->addItem(tr("Backup failed!"), LOGERROR);
- }
- zip.close();
- m_logger->setFinished();
-}
-