SVN commit 792182 by habacker: - added end user install mode page which allows to update and remove the installation M +3 -3 CMakeLists.txt M +15 -2 enduserinstallmodepage.cpp M +5 -12 enduserinstallmodepage.ui M +27 -0 installerdialogs.cpp M +2 -0 installerdialogs.h M +33 -3 installerenginegui.cpp M +7 -4 installerenginegui.h M +7 -7 installwizard.cpp --- trunk/kdesupport/kdewin-installer/gui/CMakeLists.txt #792181:792182 @@ -48,7 +48,7 @@ ${CMAKE_CURRENT_SOURCE_DIR}/installerenginegui.cpp ${CMAKE_CURRENT_SOURCE_DIR}/installpage.cpp ${CMAKE_CURRENT_SOURCE_DIR}/usercompilermodepage.cpp -# ${CMAKE_CURRENT_SOURCE_DIR}/enduserinstallmodepage.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/enduserinstallmodepage.cpp ${CMAKE_CURRENT_SOURCE_DIR}/enduserpackageselectorpage.cpp ${CMAKE_CURRENT_SOURCE_DIR}/installwizard.cpp ${CMAKE_CURRENT_SOURCE_DIR}/internetsettingspage.cpp @@ -71,7 +71,7 @@ ${CMAKE_CURRENT_SOURCE_DIR}/installerenginegui.h ${CMAKE_CURRENT_SOURCE_DIR}/installpage.h ${CMAKE_CURRENT_SOURCE_DIR}/usercompilermodepage.h -# ${CMAKE_CURRENT_SOURCE_DIR}/enduserinstallmodepage.h + ${CMAKE_CURRENT_SOURCE_DIR}/enduserinstallmodepage.h ${CMAKE_CURRENT_SOURCE_DIR}/enduserpackageselectorpage.h ${CMAKE_CURRENT_SOURCE_DIR}/installwizard.h ${CMAKE_CURRENT_SOURCE_DIR}/internetsettingspage.h @@ -89,7 +89,7 @@ ${CMAKE_CURRENT_SOURCE_DIR}/finishpage.ui ${CMAKE_CURRENT_SOURCE_DIR}/installdirectorypage.ui ${CMAKE_CURRENT_SOURCE_DIR}/usercompilermodepage.ui -# ${CMAKE_CURRENT_SOURCE_DIR}/enduserinstallmodepage.ui + ${CMAKE_CURRENT_SOURCE_DIR}/enduserinstallmodepage.ui ${CMAKE_CURRENT_SOURCE_DIR}/enduserpackageselectorpage.ui ${CMAKE_CURRENT_SOURCE_DIR}/internetsettingspage.ui ${CMAKE_CURRENT_SOURCE_DIR}/mirrorsettingspage.ui --- trunk/kdesupport/kdewin-installer/gui/enduserinstallmodepage.cpp #792181:792182 @@ -24,6 +24,7 @@ #include "config.h" #include "enduserinstallmodepage.h" +#include "installerdialogs.h" EndUserInstallModePage::EndUserInstallModePage() : InstallWizardPage(0) { @@ -35,6 +36,8 @@ groupA->addButton(ui.updateInstallButton); groupA->addButton(ui.repairInstallButton); groupA->addButton(ui.removeInstallButton); + ui.updateInstallButton->setChecked(true); + ui.repairInstallButton->setVisible(false); } void EndUserInstallModePage::initializePage() @@ -44,17 +47,27 @@ int EndUserInstallModePage::nextId() const { if (ui.updateInstallButton->isChecked()) - return InstallWizard::endUserUpdatePage; + return InstallWizard::mirrorSettingsPage; else if (ui.repairInstallButton->isChecked()) return InstallWizard::endUserRepairPage; else if (ui.removeInstallButton->isChecked()) - return InstallWizard::endUserRemovePage; + return InstallWizard::uninstallPage; else return InstallWizard::endUserInstallModePage; } bool EndUserInstallModePage::validatePage() { + if (ui.removeInstallButton->isChecked()) + { + if (InstallerDialogs::instance().confirmRemovalDialog()) + engine->selectAllPackagesForRemoval(); + } + else if (ui.repairInstallButton->isChecked()) + { + if (InstallerDialogs::instance().confirmRepairDialog()) + engine->selectPackagesForReinstall(); + } return true; } --- trunk/kdesupport/kdewin-installer/gui/enduserinstallmodepage.ui #792181:792182 @@ -19,34 +19,27 @@ - + - TextLabel + Update installed packages - + - update installed packages + Remove installed packages - repair current installation + Repair current installation - - - remove installation - - - - Qt::Vertical --- trunk/kdesupport/kdewin-installer/gui/installerdialogs.cpp #792181:792182 @@ -21,6 +21,7 @@ ****************************************************************************/ #include "installerdialogs.h" +#include "settings.h" #include bool InstallerDialogs::installerOutdated() @@ -73,6 +74,32 @@ } } +bool InstallerDialogs::confirmRemovalDialog() +{ + QString text = tr("Are you sure to remove the KDE installation from %1 ? ").arg(Settings::instance().installDir()); + QMessageBox::StandardButton result = QMessageBox::warning ( + m_parent, + m_title, + text, + QMessageBox::Cancel | QMessageBox::Ok, + QMessageBox::Cancel + ); + return result == QMessageBox::Ok; +} + +bool InstallerDialogs::confirmRepairDialog() +{ + QString text = tr("Are you sure to reinstall all packages ? "); + QMessageBox::StandardButton result = QMessageBox::warning ( + m_parent, + m_title, + text, + QMessageBox::Cancel | QMessageBox::Ok, + QMessageBox::Cancel + ); + return result == QMessageBox::Ok; +} + InstallerDialogs &InstallerDialogs::instance() { static InstallerDialogs instance; --- trunk/kdesupport/kdewin-installer/gui/installerdialogs.h #792181:792182 @@ -37,6 +37,8 @@ bool installerOutdated(); QMessageBox::StandardButton downloadFailed(const QString &url, const QString &error=QString()); void downloadProgressDialog(QWidget *parent,bool show, const QString &title=QString()); + bool confirmRemovalDialog(); + bool confirmRepairDialog(); static InstallerDialogs &instance(); --- trunk/kdesupport/kdewin-installer/gui/installerenginegui.cpp #792181:792182 @@ -484,7 +484,37 @@ InstallerEngine::reload(); } +void InstallerEngineGui::selectAllPackagesForRemoval() +{ + Package::Type type = Package::BIN; + stateType newState = _Remove; + foreach(Package *installed,m_database->packages()) + { + if (installed->hasType(type)) + packageStates.setState(installed,type,newState); + // set additional package types for download/install/remove + if (type == Package::BIN && m_installMode == Developer) + { + if (installed->hasType(Package::LIB)) + packageStates.setState(installed,Package::LIB,newState); + if (installed->hasType(Package::DOC)) + packageStates.setState(installed,Package::DOC,newState); + } + else if (type == Package::BIN && m_installMode == EndUser) + { + ;//if (installed->hasType(Package::DOC)) + // packageStates.setState(available,Package::DOC,newState); + } + m_packageResources->addPackage(*installed); + } + qDebug() << packageStates; +} +void InstallerEngineGui::selectPackagesForReinstall() +{ + qWarning() << "has to be implemented"; +} + bool InstallerEngineGui::downloadPackageItem(Package *pkg, Package::Type type ) { bool all = false; //isMarkedForInstall(pkg,Package::ALL); @@ -515,7 +545,7 @@ return false; } -bool InstallerEngineGui::downloadPackages ( QTreeWidget *tree, const QString &category ) +bool InstallerEngineGui::downloadPackages ( const QString &category ) { QList list = packageStates.packages(m_packageResources); Q_FOREACH ( Package *pkg, dependencyStates.packages(m_packageResources) ) @@ -543,7 +573,7 @@ return true; } -bool InstallerEngineGui::removePackages ( QTreeWidget *tree, const QString &category ) +bool InstallerEngineGui::removePackages ( const QString &category ) { QList list = packageStates.packages(m_packageResources); Q_FOREACH ( Package *pkg, dependencyStates.packages(m_packageResources) ) @@ -576,7 +606,7 @@ return true; } -bool InstallerEngineGui::installPackages ( QTreeWidget *tree, const QString &_category ) +bool InstallerEngineGui::installPackages ( const QString &_category ) { QList list = packageStates.packages(m_packageResources); Q_FOREACH ( Package *pkg, dependencyStates.packages(m_packageResources) ) --- trunk/kdesupport/kdewin-installer/gui/installerenginegui.h #792181:792182 @@ -37,13 +37,16 @@ /// reload all package definitions virtual void reload(); + void selectAllPackagesForRemoval(); + void selectPackagesForReinstall(); + void checkUpdateDependencies(QTreeWidget *list); bool checkRemoveDependencies(QTreeWidget *list); - bool downloadPackages(QTreeWidget *tree, const QString &category=QString()); - bool installPackages(QTreeWidget *tree, const QString &category=QString()); - bool removePackages(QTreeWidget *tree, const QString &category=QString()); - /// @TODO: cleanup + bool downloadPackages(const QString &category=QString()); + bool installPackages(const QString &category=QString()); + bool removePackages(const QString &category=QString()); + /// @TODO: cleanup void setEndUserInitialState ( QTreeWidgetItem &item, Package *available, Package *installed, int column=0 ); void setInitialState(QTreeWidgetItem &item, Package *available, Package *installed,int column=0); --- trunk/kdesupport/kdewin-installer/gui/installwizard.cpp #792181:792182 @@ -41,7 +41,7 @@ #include "installdirectorypage.h" #include "internetsettingspage.h" #include "downloadsettingspage.h" -//#include "enduserinstallmodepage.h" +#include "enduserinstallmodepage.h" #include "enduserpackageselectorpage.h" //#include "enduserupdatepage.h" //#include "enduserrepairpage.h" @@ -101,7 +101,7 @@ setPage(userCompilerModePage, new UserCompilerModePage); setPage(downloadSettingsPage, new DownloadSettingsPage); setPage(internetSettingsPage, new InternetSettingsPage); -// setPage(endUserInstallModePage,new EndUserInstallModePage); + setPage(endUserInstallModePage,new EndUserInstallModePage); setPage(endUserPackageSelectorPage, new EndUserPackageSelectorPage); // setPage(endUserUpdatePage, new EndUserUpdatePage); // setPage(endUserRepairPage, new EndUserRepairPage); @@ -175,7 +175,7 @@ if (id == downloadPage) { button(QWizard::BackButton)->setEnabled(false); button(QWizard::NextButton)->setEnabled(false); - if (!engine->downloadPackages(tree)) { + if (!engine->downloadPackages()) { reject(); return; } @@ -187,7 +187,7 @@ else if (id == uninstallPage) { button(QWizard::BackButton)->setEnabled(false); button(QWizard::NextButton)->setEnabled(false); - if (!engine->removePackages(tree)) { + if (!engine->removePackages()) { reject(); return; } @@ -199,7 +199,7 @@ else if (id == installPage) { button(QWizard::BackButton)->setEnabled(false); button(QWizard::NextButton)->setEnabled(false); - if (!engine->installPackages(tree)) { + if (!engine->installPackages()) { reject(); return; } @@ -228,7 +228,7 @@ if (Settings::instance().isSkipBasicSettings()) { if (Database::isAnyPackageInstalled(Settings::instance().installDir())) -#if 0 +#if 1 return endUserInstallModePage; #else return endUserPackageSelectorPage; @@ -248,7 +248,7 @@ else return mirrorSettingsPage; -#if 0 +#if 1 case endUserInstallModePage: { EndUserInstallModePage *_page = static_cast(page(endUserInstallModePage));