-rw-r--r-- | noncore/settings/aqpkg/networkpkgmgr.cpp | 65 |
1 files changed, 61 insertions, 4 deletions
diff --git a/noncore/settings/aqpkg/networkpkgmgr.cpp b/noncore/settings/aqpkg/networkpkgmgr.cpp index 06e2a03..0bc01df 100644 --- a/noncore/settings/aqpkg/networkpkgmgr.cpp +++ b/noncore/settings/aqpkg/networkpkgmgr.cpp @@ -33,4 +33,5 @@ using namespace std; #include <qlabel.h> #include <qfile.h> +#include <qmessagebox.h> #include "datamgr.h" @@ -98,4 +99,5 @@ void NetworkPackageManager :: initGui() update = new QPushButton( "Refresh List", this ); download = new QPushButton( "Download", this ); + upgrade = new QPushButton( "Upgrade", this ); apply = new QPushButton( "Apply", this ); @@ -111,4 +113,5 @@ void NetworkPackageManager :: initGui() hbox2->addWidget( update ); hbox2->addWidget( download ); + hbox2->addWidget( upgrade ); hbox2->addWidget( apply ); } @@ -119,12 +122,13 @@ void NetworkPackageManager :: setupConnections() connect( apply, SIGNAL(released()), this, SLOT(applyChanges()) ); connect( download, SIGNAL(released()), this, SLOT(downloadPackage()) ); + connect( upgrade, SIGNAL( released()), this, SLOT(upgradePackages()) ); connect( update, SIGNAL(released()), this, SLOT(updateServer()) ); } -void NetworkPackageManager :: showProgressDialog() +void NetworkPackageManager :: showProgressDialog( char *initialText ) { if ( !progressDlg ) progressDlg = new ProgressDlg( this, "Progress", false ); - progressDlg->setText( "Reading installed packages" ); + progressDlg->setText( initialText ); progressDlg->show(); } @@ -176,14 +180,22 @@ void NetworkPackageManager :: serverSelected( int ) // If the local server or the local ipkgs server disable the download button - download->setText( "Download" ); if ( serverName == LOCAL_SERVER ) + { + upgrade->setEnabled( false ); + download->setText( "Download" ); download->setEnabled( false ); + } else if ( serverName == LOCAL_IPKGS ) { + upgrade->setEnabled( false ); download->setEnabled( true ); download->setText( "Remove" ); } else + { + upgrade->setEnabled( true ); download->setEnabled( true ); + download->setText( "Download" ); + } } @@ -226,4 +238,32 @@ void NetworkPackageManager :: updateServer() } +void NetworkPackageManager :: upgradePackages() +{ + // We're gonna do an upgrade of all packages + // First warn user that this isn't recommended + QString text = "WARNING: Upgrading while\nOpie/Qtopia is running\nis NOT recommended!\n\nAre you sure?\n"; + QMessageBox warn("Warning", text, QMessageBox::Warning, + QMessageBox::Yes, + QMessageBox::No | QMessageBox::Escape | QMessageBox::Default , + 0, this ); + warn.adjustSize(); + + if ( warn.exec() == QMessageBox::Yes ) + { + // First, write out ipkg_conf file so that ipkg can use it + dataMgr->writeOutIpkgConf(); + + // Now run upgrade + InstallDlgImpl dlg( this, "Upgrade", true ); + dlg.showDlg(); + + // Reload data + dataMgr->reloadServerData( LOCAL_SERVER ); + + dataMgr->reloadServerData( serversList->currentText() ); + serverSelected(-1); + } +} + void NetworkPackageManager :: downloadPackage() @@ -344,4 +384,5 @@ void NetworkPackageManager :: applyChanges() // Reload data dataMgr->reloadServerData( LOCAL_SERVER ); + dataMgr->reloadServerData( serversList->currentText() ); serverSelected(-1); @@ -385,5 +426,21 @@ QString NetworkPackageManager :: dealWithItem( QCheckListItem *item ) { if ( p->getVersion() == p->getInstalledVersion() ) - return QString( "D" ) + name; + { + QString msgtext; + msgtext.sprintf( "Do you wish to remove or reinstall\n%s?", (const char *)name ); + switch( QMessageBox::information( this, "Remove or ReInstall", + msgtext, "Remove", "ReInstall" ) ) + { + case 0: // Try again or Enter + return QString( "D" ) + name; + break; + case 1: // Quit or Escape + return QString( "U" ) + name; + break; + } + + // User hit cancel (on dlg - assume remove) + return QString( "D" ) + name; + } else return QString( "U" ) + name; |