From 637146017289dd394a6f68327c56867fa8747dc5 Mon Sep 17 00:00:00 2001 From: Dominik Riebeling Date: Fri, 24 Oct 2008 21:23:18 +0000 Subject: Make uninstallation class use QtCore instead of QtGui -- it doesn't use any GUI elements. Move class to the QtCore-only base folder. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18872 a1c6a512-1295-4272-9138-f99709370657 --- rbutil/rbutilqt/base/uninstall.cpp | 129 +++++++++++++++++++++++++++++++++++++ rbutil/rbutilqt/base/uninstall.h | 62 ++++++++++++++++++ rbutil/rbutilqt/rbutilqt.pro | 4 +- rbutil/rbutilqt/uninstall.cpp | 127 ------------------------------------ rbutil/rbutilqt/uninstall.h | 65 ------------------- 5 files changed, 193 insertions(+), 194 deletions(-) create mode 100644 rbutil/rbutilqt/base/uninstall.cpp create mode 100644 rbutil/rbutilqt/base/uninstall.h delete mode 100644 rbutil/rbutilqt/uninstall.cpp delete mode 100644 rbutil/rbutilqt/uninstall.h diff --git a/rbutil/rbutilqt/base/uninstall.cpp b/rbutil/rbutilqt/base/uninstall.cpp new file mode 100644 index 0000000000..ae5ece7da5 --- /dev/null +++ b/rbutil/rbutilqt/base/uninstall.cpp @@ -0,0 +1,129 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * + * Copyright (C) 2007 by Dominik Wenger + * $Id$ + * + * 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 +#include "uninstall.h" +#include "utils.h" + +Uninstaller::Uninstaller(QObject* parent,QString mountpoint): QObject(parent) +{ + m_mountpoint = mountpoint; +} + +void Uninstaller::deleteAll(ProgressloggerInterface* dp) +{ + m_dp = dp; + QString rbdir(m_mountpoint + ".rockbox/"); + m_dp->addItem(tr("Starting Uninstallation"),LOGINFO); + m_dp->setProgressMax(0); + recRmdir(rbdir); + m_dp->setProgressMax(1); + m_dp->setProgressValue(1); + m_dp->addItem(tr("Finished Uninstallation"),LOGOK); + m_dp->abort(); +} + +void Uninstaller::uninstall(ProgressloggerInterface* dp) +{ + m_dp = dp; + m_dp->setProgressMax(0); + m_dp->addItem(tr("Starting Uninstallation"),LOGINFO); + + QSettings installlog(m_mountpoint + "/.rockbox/rbutil.log", QSettings::IniFormat, this); + + for(int i=0; i< uninstallSections.size() ; i++) + { + m_dp->addItem(tr("Uninstalling ") + uninstallSections.at(i) + " ...",LOGINFO); + QCoreApplication::processEvents(); + // create list of all other install sections + QStringList sections = installlog.childGroups(); + sections.removeAt(sections.indexOf(uninstallSections.at(i))); + installlog.beginGroup(uninstallSections.at(i)); + QStringList toDeleteList = installlog.allKeys(); + QStringList dirList; + installlog.endGroup(); + + // iterate over all entries + for(int j =0; j < toDeleteList.size(); j++ ) + { + // check if current file is in use by another section + bool deleteFile = true; + for(int s = 0; s < sections.size(); s++) + { + installlog.beginGroup(sections.at(s)); + if(installlog.contains(toDeleteList.at(j))) + { + deleteFile = false; + qDebug() << "file still in use:" << toDeleteList.at(j); + } + installlog.endGroup(); + } + + installlog.beginGroup(uninstallSections.at(i)); + QFileInfo toDelete(m_mountpoint + "/" + toDeleteList.at(j)); + if(toDelete.isFile()) // if it is a file remove it + { + if(deleteFile && !QFile::remove(toDelete.filePath())) + m_dp->addItem(tr("Could not delete: ")+ toDelete.filePath(),LOGWARNING); + installlog.remove(toDeleteList.at(j)); + qDebug() << "deleted: " << toDelete.filePath() ; + } + else // if it is a dir, remember it for later deletion + { + // no need to keep track on folders still in use -- only empty + // folders will be rm'ed. + dirList << toDeleteList.at(j); + } + installlog.endGroup(); + QCoreApplication::processEvents(); + } + // delete the dirs + installlog.beginGroup(uninstallSections.at(i)); + for(int j=0; j < dirList.size(); j++ ) + { + installlog.remove(dirList.at(j)); + QDir dir(m_mountpoint); + dir.rmdir(dirList.at(j)); // rm works only on empty folders + } + + installlog.endGroup(); + //installlog.removeGroup(uninstallSections.at(i)) + } + uninstallSections.clear(); + installlog.sync(); + m_dp->setProgressMax(1); + m_dp->setProgressValue(1); + m_dp->addItem(tr("Uninstallation finished"),LOGOK); + m_dp->abort(); +} + +QStringList Uninstaller::getAllSections() +{ + QSettings installlog(m_mountpoint + "/.rockbox/rbutil.log", QSettings::IniFormat, 0); + QStringList allSections = installlog.childGroups(); + allSections.removeAt(allSections.lastIndexOf("Bootloader")); + return allSections; +} + + +bool Uninstaller::uninstallPossible() +{ + return QFileInfo(m_mountpoint +"/.rockbox/rbutil.log").exists(); +} + diff --git a/rbutil/rbutilqt/base/uninstall.h b/rbutil/rbutilqt/base/uninstall.h new file mode 100644 index 0000000000..34faf9a4d7 --- /dev/null +++ b/rbutil/rbutilqt/base/uninstall.h @@ -0,0 +1,62 @@ +/*************************************************************************** + * __________ __ ___. + * Open \______ \ ____ ____ | | _\_ |__ _______ ___ + * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / + * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < + * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ + * \/ \/ \/ \/ \/ + * + * Copyright (C) 2007 by Dominik Wenger + * $Id$ + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY + * KIND, either express or implied. + * + ****************************************************************************/ + + +#ifndef UNINSTALL_H +#define UNINSTALL_H + +#include + +#include "progressloggerinterface.h" + + +class Uninstaller : public QObject +{ + Q_OBJECT +public: + Uninstaller(QObject* parent,QString mountpoint) ; + ~Uninstaller(){} + + void deleteAll(ProgressloggerInterface* dp); + void uninstall(ProgressloggerInterface* dp); + + bool uninstallPossible(); + + QStringList getAllSections(); + + void setSections(QStringList sections) {uninstallSections = sections;} + + +private slots: + + +private: + QString m_mountpoint; + + QStringList uninstallSections; + + ProgressloggerInterface* m_dp; +}; + + + +#endif + diff --git a/rbutil/rbutilqt/rbutilqt.pro b/rbutil/rbutilqt/rbutilqt.pro index 759f834ce4..9fc74da25a 100644 --- a/rbutil/rbutilqt/rbutilqt.pro +++ b/rbutil/rbutilqt/rbutilqt.pro @@ -59,7 +59,7 @@ SOURCES += rbutilqt.cpp \ ../sansapatcher/sansapatcher.c \ browsedirtree.cpp \ installthemes.cpp \ - uninstall.cpp \ + base/uninstall.cpp \ uninstallwindow.cpp \ base/utils.cpp \ preview.cpp \ @@ -111,7 +111,7 @@ HEADERS += rbutilqt.h \ irivertools/h300sums.h \ browsedirtree.h \ installthemes.h \ - uninstall.h \ + base/uninstall.h \ uninstallwindow.h \ base/utils.h \ preview.h \ diff --git a/rbutil/rbutilqt/uninstall.cpp b/rbutil/rbutilqt/uninstall.cpp deleted file mode 100644 index fda802f445..0000000000 --- a/rbutil/rbutilqt/uninstall.cpp +++ /dev/null @@ -1,127 +0,0 @@ -/*************************************************************************** - * __________ __ ___. - * Open \______ \ ____ ____ | | _\_ |__ _______ ___ - * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / - * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < - * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ - * \/ \/ \/ \/ \/ - * - * Copyright (C) 2007 by Dominik Wenger - * $Id$ - * - * 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 "uninstall.h" -#include "utils.h" - -Uninstaller::Uninstaller(QObject* parent,QString mountpoint): QObject(parent) -{ - m_mountpoint = mountpoint; -} - -void Uninstaller::deleteAll(ProgressloggerInterface* dp) -{ - m_dp = dp; - QString rbdir(m_mountpoint + ".rockbox/"); - m_dp->addItem(tr("Starting Uninstallation"),LOGINFO); - m_dp->setProgressMax(0); - recRmdir(rbdir); - m_dp->setProgressMax(1); - m_dp->setProgressValue(1); - m_dp->addItem(tr("Finished Uninstallation"),LOGOK); - m_dp->abort(); -} - -void Uninstaller::uninstall(ProgressloggerInterface* dp) -{ - m_dp = dp; - m_dp->setProgressMax(0); - m_dp->addItem(tr("Starting Uninstallation"),LOGINFO); - - QSettings installlog(m_mountpoint + "/.rockbox/rbutil.log", QSettings::IniFormat, this); - - for(int i=0; i< uninstallSections.size() ; i++) - { - m_dp->addItem(tr("Uninstalling ") + uninstallSections.at(i) + " ...",LOGINFO); - QCoreApplication::processEvents(); - // create list of all other install sections - QStringList sections = installlog.childGroups(); - sections.removeAt(sections.indexOf(uninstallSections.at(i))); - installlog.beginGroup(uninstallSections.at(i)); - QStringList toDeleteList = installlog.allKeys(); - QStringList dirList; - installlog.endGroup(); - - // iterate over all entries - for(int j =0; j < toDeleteList.size(); j++ ) - { - // check if current file is in use by another section - bool deleteFile = true; - for(int s = 0; s < sections.size(); s++) - { - installlog.beginGroup(sections.at(s)); - if(installlog.contains(toDeleteList.at(j))) - { - deleteFile = false; - qDebug() << "file still in use:" << toDeleteList.at(j); - } - installlog.endGroup(); - } - - installlog.beginGroup(uninstallSections.at(i)); - QFileInfo toDelete(m_mountpoint + "/" + toDeleteList.at(j)); - if(toDelete.isFile()) // if it is a file remove it - { - if(deleteFile && !QFile::remove(toDelete.filePath())) - m_dp->addItem(tr("Could not delete: ")+ toDelete.filePath(),LOGWARNING); - installlog.remove(toDeleteList.at(j)); - qDebug() << "deleted: " << toDelete.filePath() ; - } - else // if it is a dir, remember it for later deletion - { - // no need to keep track on folders still in use -- only empty - // folders will be rm'ed. - dirList << toDeleteList.at(j); - } - installlog.endGroup(); - QCoreApplication::processEvents(); - } - // delete the dirs - installlog.beginGroup(uninstallSections.at(i)); - for(int j=0; j < dirList.size(); j++ ) - { - installlog.remove(dirList.at(j)); - QDir dir(m_mountpoint); - dir.rmdir(dirList.at(j)); // rm works only on empty folders - } - - installlog.endGroup(); - //installlog.removeGroup(uninstallSections.at(i)) - } - uninstallSections.clear(); - installlog.sync(); - m_dp->setProgressMax(1); - m_dp->setProgressValue(1); - m_dp->addItem(tr("Uninstallation finished"),LOGOK); - m_dp->abort(); -} - -QStringList Uninstaller::getAllSections() -{ - QSettings installlog(m_mountpoint + "/.rockbox/rbutil.log", QSettings::IniFormat, 0); - QStringList allSections = installlog.childGroups(); - allSections.removeAt(allSections.lastIndexOf("Bootloader")); - return allSections; -} - - -bool Uninstaller::uninstallPossible() -{ - return QFileInfo(m_mountpoint +"/.rockbox/rbutil.log").exists(); -} diff --git a/rbutil/rbutilqt/uninstall.h b/rbutil/rbutilqt/uninstall.h deleted file mode 100644 index 047eb2a154..0000000000 --- a/rbutil/rbutilqt/uninstall.h +++ /dev/null @@ -1,65 +0,0 @@ -/*************************************************************************** - * __________ __ ___. - * Open \______ \ ____ ____ | | _\_ |__ _______ ___ - * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / - * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < - * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ - * \/ \/ \/ \/ \/ - * - * Copyright (C) 2007 by Dominik Wenger - * $Id$ - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY - * KIND, either express or implied. - * - ****************************************************************************/ - - -#ifndef UNINSTALL_H -#define UNINSTALL_H - - - -#include - - -#include "progressloggerinterface.h" - - -class Uninstaller : public QObject -{ - Q_OBJECT -public: - Uninstaller(QObject* parent,QString mountpoint) ; - ~Uninstaller(){} - - void deleteAll(ProgressloggerInterface* dp); - void uninstall(ProgressloggerInterface* dp); - - bool uninstallPossible(); - - QStringList getAllSections(); - - void setSections(QStringList sections) {uninstallSections = sections;} - - -private slots: - - -private: - QString m_mountpoint; - - QStringList uninstallSections; - - ProgressloggerInterface* m_dp; -}; - - - -#endif - -- cgit v1.2.3