[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    kdesupport/kdewin-installer
From:       Christian Ehrlicher <Ch.Ehrlicher () gmx ! de>
Date:       2008-01-25 21:42:44
Message-ID: 1201297364.306513.24847.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 766446 by chehrlic:

move uninstall to an extra thread.
Displaying the progress bar in the uninstall menu doesn't work atm . I know why so \
don't care :)

 M  +3 -2      CMakeLists.txt  
 M  +12 -15    gui/installwizard.cpp  
 M  +5 -4      gui/installwizard.h  
 M  +2 -2      shared/database.cpp  
 M  +20 -5     shared/installer.cpp  
 M  +4 -1      shared/installer.h  
 M  +3 -4      shared/package.cpp  
 D             shared/uninstall.cpp  
 D             shared/uninstall.h  
 A             shared/uninstaller.cpp   shared/uninstall.cpp#765868 [License: LGPL \
(v2)]  A             shared/uninstaller.h   shared/uninstall.h#765868 [License: LGPL \
(v2)]


--- trunk/kdesupport/kdewin-installer/CMakeLists.txt #766445:766446
@@ -116,9 +116,9 @@
     ${CMAKE_CURRENT_SOURCE_DIR}/shared/installerengine.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/shared/misc.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/shared/database.cpp
-    ${CMAKE_CURRENT_SOURCE_DIR}/shared/uninstall.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/shared/packagecategorycache.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/shared/hintfile.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/shared/uninstaller.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/shared/unpacker.cpp
 #    ${CMAKE_CURRENT_SOURCE_DIR}/shared/installerbase.cpp
 )
@@ -138,9 +138,10 @@
     ${CMAKE_CURRENT_SOURCE_DIR}/shared/misc.h
     ${CMAKE_CURRENT_SOURCE_DIR}/shared/globalconfig.h
     ${CMAKE_CURRENT_SOURCE_DIR}/shared/database.h
-    ${CMAKE_CURRENT_SOURCE_DIR}/shared/uninstall.h
     ${CMAKE_CURRENT_SOURCE_DIR}/shared/packagecategorycache.h
     ${CMAKE_CURRENT_SOURCE_DIR}/shared/hintfile.h
+    ${CMAKE_CURRENT_SOURCE_DIR}/shared/uninstaller.h
+    ${CMAKE_CURRENT_SOURCE_DIR}/shared/uninstaller_p.h
     ${CMAKE_CURRENT_SOURCE_DIR}/shared/unpacker.h
     ${CMAKE_CURRENT_SOURCE_DIR}/shared/unpacker_p.h
 #    ${CMAKE_CURRENT_SOURCE_DIR}/shared/installerbase.h
--- trunk/kdesupport/kdewin-installer/gui/installwizard.cpp #766445:766446
@@ -79,14 +79,11 @@
 }
 */
 
-InstallerProgress *installProgressBar;
-DownloaderProgress *progressBar;
-
 InstallWizard::InstallWizard(QWidget *parent) : QWizard(parent), m_lastId(0){
-    progressBar = new DownloaderProgress(this);
-    installProgressBar = new InstallerProgress(this);
+    DownloaderProgress *downloadProgressBar = new DownloaderProgress(this);
+    InstallerProgress *installProgressBar = new InstallerProgress(this);
 
-    engine = new InstallerEngineGui(this,progressBar,installProgressBar);
+    engine = new InstallerEngineGui(this,downloadProgressBar,installProgressBar);
     connect(engine, SIGNAL(error(const QString &)), this, SLOT(slotEngineError(const \
QString &)) );  
     // must be first
@@ -129,9 +126,9 @@
     setPage(mirrorSettingsPage, new \
MirrorSettingsPage(_settingsPage->mirrorPage()));   setPage(packageSelectorPage, new \
PackageSelectorPage());   setPage(dependenciesPage, new DependenciesPage()); 
-    setPage(downloadPage, new DownloadPage()); 
-    setPage(uninstallPage, new UninstallPage()); 
-    setPage(installPage, new InstallPage()); 
+    setPage(downloadPage, new DownloadPage(downloadProgressBar)); 
+    setPage(uninstallPage, new UninstallPage(installProgressBar)); 
+    setPage(installPage, new InstallPage(installProgressBar)); 
     setPage(finishPage, new FinishPage()); 
 
     QString windowTitle = tr("KDE Installer - Version " VERSION);
@@ -706,13 +703,13 @@
     return true;
 }
 
-DownloadPage::DownloadPage() : InstallWizardPage(0)
+DownloadPage::DownloadPage(DownloaderProgress *progress) : InstallWizardPage(0)
 {
     setTitle(tr("Downloading packages"));
     setSubTitle(tr(" "));
 
     QVBoxLayout *layout = new QVBoxLayout;
-    layout->addWidget(progressBar);
+    layout->addWidget(progress);
     layout->addStretch(1);
     setLayout(layout);
 }
@@ -743,13 +740,13 @@
     return true;
 }
 
-UninstallPage::UninstallPage() : InstallWizardPage(0)
+UninstallPage::UninstallPage(InstallerProgress *progress) : InstallWizardPage(0)
 {
     setTitle(tr("Uninstalling packages"));
     setSubTitle(tr(" "));
 
     QVBoxLayout *layout = new QVBoxLayout;
-    layout->addWidget(installProgressBar);
+    layout->addWidget(progress);
     layout->addStretch(1);
     setLayout(layout);
 }
@@ -778,13 +775,13 @@
     return true;
 }
 
-InstallPage::InstallPage() : InstallWizardPage(0)
+InstallPage::InstallPage(InstallerProgress *progress) : InstallWizardPage(0)
 {
     setTitle(tr("Installing packages"));
     setSubTitle(tr(" "));
 
     QVBoxLayout *layout = new QVBoxLayout;
-    layout->addWidget(installProgressBar);
+    layout->addWidget(progress);
     layout->addStretch(1);
     setLayout(layout);
 }
--- trunk/kdesupport/kdewin-installer/gui/installwizard.h #766445:766446
@@ -31,7 +31,6 @@
 
 #include <QWizard>
 #include "settingspage.h"
-#include "installerprogress.h"
 
 class QCheckBox;
 class QLabel;
@@ -52,6 +51,8 @@
 class UninstallPage;
 class DownloadPage;
 class FinishPage;
+class InstallerProgress;
+class DownloaderProgress;
 
 extern QListWidget *g_dependenciesList;
 
@@ -216,7 +217,7 @@
     Q_OBJECT
 
 public:
-    DownloadPage();
+    DownloadPage(DownloaderProgress *progress);
 
     void cancel();
     void initializePage();
@@ -230,7 +231,7 @@
     Q_OBJECT
 
 public:
-    UninstallPage();
+    UninstallPage(InstallerProgress *progress);
 
     void cancel();
     void initializePage();
@@ -244,7 +245,7 @@
     Q_OBJECT
 
 public:
-    InstallPage();
+    InstallPage(InstallerProgress *progress);
 
     void cancel();
     void initializePage();
--- trunk/kdesupport/kdewin-installer/shared/database.cpp #766445:766446
@@ -110,7 +110,7 @@
     qDebug() << files;
 }
 
-extern bool isHash(const QString &str);
+extern bool isHash(const QByteArray &str);
 QStringList Database::getPackageFiles(const QString &pkgName, Package::Type pkgType)
 {
     QStringList files;
@@ -133,7 +133,7 @@
           continue;
         }
         for(int i = 0; i < parts.count(); i++) {
-          if(!isHash(parts[i])) {
+          if(!isHash(parts[i].toUtf8())) {
             iPosFilename = i;
             files << parts[iPosFilename];
             break;
--- trunk/kdesupport/kdewin-installer/shared/installer.cpp #766445:766446
@@ -36,6 +36,7 @@
 #include "installerprogress.h"
 #include "packagelist.h"
 #include "unpacker.h"
+#include "uninstaller.h"
 
 //#define DEBUG
 #ifdef Q_CC_MSVC
@@ -43,7 +44,8 @@
 #endif
 
 Installer::Installer(InstallerProgress *_progress)
-        : QObject(), m_progress(_progress), m_type(Installer::Standard)
+        : m_progress(_progress), m_type(Installer::Standard),
+          m_unpacker(0),  m_uninstaller(0)
 {
     m_root = ".";
 }
@@ -170,15 +172,16 @@
     return true;
 }
 
-bool Installer::install(Package *pkg, const Package::Type type, const QString \
&fileName, const StringHash &pathRelocations) +bool Installer::install(Package *pkg, \
const Package::Type type, const QString &fileName)  {
     m_packageToInstall = pkg;
     m_installType = type;
 
     m_unpacker = new Unpacker(m_progress, this);
 
-    if(!m_unpacker->unpackFile(fileName, m_root, pathRelocations)) {
-        delete m_unpacker;
+    if(!m_unpacker->unpackFile(fileName, m_root, pkg->pathRelocations())) {
+        m_unpacker->deleteLater();
+        m_unpacker = 0;
         return false;
     }
     
@@ -189,14 +192,26 @@
     if(fi.fileName().startsWith("qt"))
         createQtConfigFile();
 
-    delete m_unpacker;
+    m_unpacker->deleteLater();
+    m_unpacker = 0;
     return true;
 }
 
+bool Installer::uninstall(const QString &pathToManifest)
+{
+    m_uninstaller = new Uninstaller(m_progress, this);
+    bool bRet = m_uninstaller->uninstallPackage(pathToManifest, m_root);
+    m_uninstaller->deleteLater();
+    m_uninstaller = 0;
+    return bRet;
+}
+
 void Installer::cancel()
 {
     if (m_unpacker)
         m_unpacker->cancel();
+    if (m_uninstaller)
+        m_uninstaller->cancel();
 }
 
 #include "installer.moc"
--- trunk/kdesupport/kdewin-installer/shared/installer.h #766445:766446
@@ -29,6 +29,7 @@
 class Database;
 class InstallerProgress;
 class PackageList;
+class Uninstaller;
 class Unpacker;
 
 class Installer : public QObject
@@ -51,7 +52,8 @@
     Database *database() { return m_database; }
     void setDatabase(Database *database) { m_database = database; }
     /// @TODO pathRelocations are obsolated, they can be retrieved from the pkg \
                parameter
-    QT_DEPRECATED bool install(Package *pkg, const Package::Type type, const QString \
&fileName, const StringHash &pathRelocations=StringHash()); +    bool install(Package \
*pkg, const Package::Type type, const QString &fileName); +    bool uninstall(const \
QString &pathToManifest);  // installPackage(Package *pkg)
     //  bool readFromFile(QString const &fileName);
     //  bool writeToFile(QString const &fileName);
@@ -77,6 +79,7 @@
     QStringList m_files;
     Database *m_database;
     Unpacker *m_unpacker;
+    Uninstaller *m_uninstaller;
 
     Package* m_packageToInstall;
     Package::Type m_installType;
--- trunk/kdesupport/kdewin-installer/shared/package.cpp #766445:766446
@@ -31,7 +31,7 @@
 #include "downloader.h"
 #include "installer.h"
 #include "database.h"
-#include "uninstall.h"
+#include "uninstaller.h"
 
 #ifndef PACKAGE_SMALL_VERSION
 /**
@@ -431,7 +431,7 @@
         return false;
     }
     fileName = makeFileName(type);
-    if (!installer->install(this, type, fileName, pathRelocations()))
+    if (!installer->install(this, type, fileName))
     {
         qDebug() << __FUNCTION__ << " install failure for file " << fileName << " \
type " << type;  return false;
@@ -445,8 +445,7 @@
 bool Package::removeItem(Installer *installer, Package::Type type)
 {
     QString manifestFile = \
installer->root()+"/manifest/"+Package::manifestFileName(name(),installedVersion(),type);
                
-    Uninstall ui(installer->root(),manifestFile);
-    ui.uninstallPackage(false);
+    installer->uninstall(manifestFile);
     return true;
 }
 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic