-rw-r--r-- | noncore/settings/aqpkg/main.cpp | 2 | ||||
-rw-r--r-- | noncore/settings/aqpkg/mainwin.cpp | 216 | ||||
-rw-r--r-- | noncore/settings/aqpkg/mainwin.h | 18 | ||||
-rw-r--r-- | noncore/settings/aqpkg/networkpkgmgr.cpp | 46 | ||||
-rw-r--r-- | noncore/settings/aqpkg/networkpkgmgr.h | 9 |
5 files changed, 194 insertions, 97 deletions
diff --git a/noncore/settings/aqpkg/main.cpp b/noncore/settings/aqpkg/main.cpp index 1f8cf42..53c392e 100644 --- a/noncore/settings/aqpkg/main.cpp +++ b/noncore/settings/aqpkg/main.cpp @@ -41,25 +41,25 @@ int main(int argc, char *argv[]) #else QApplication a( argc, argv ); #endif #ifdef QWS // Disable suspend mode cout << "Disabling suspend mode" << endl; QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::DisableSuspend; #endif MainWindow *win = new MainWindow(); a.setMainWidget(win); - win->show(); + win->showMaximized(); a.exec(); #ifdef QWS // Reenable suspend mode cout << "Enabling suspend mode" << endl; QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable; #endif #ifdef _DEBUG DumpUnfreed(); #endif } diff --git a/noncore/settings/aqpkg/mainwin.cpp b/noncore/settings/aqpkg/mainwin.cpp index e577285..4aa83b5 100644 --- a/noncore/settings/aqpkg/mainwin.cpp +++ b/noncore/settings/aqpkg/mainwin.cpp @@ -9,113 +9,200 @@ /*************************************************************************** * * * 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. * * * ***************************************************************************/ #include <iostream> using namespace std; +#include <qpe/qpemenubar.h> +#include <qpe/qpetoolbar.h> +#include <qpe/resource.h> + +#include <qaction.h> #include <qmenubar.h> #include <qmessagebox.h> #include <qpopupmenu.h> #include <qtimer.h> +#include <qwidgetstack.h> #include "mainwin.h" #include "progresswidget.h" #include "datamgr.h" #include "networkpkgmgr.h" #include "settingsimpl.h" #include "helpwindow.h" #include "utils.h" #include "global.h" -MainWindow :: MainWindow( QWidget *p, char *name ) - : QMainWindow( p, name ) +MainWindow :: MainWindow() + : QMainWindow( 0x0, 0x0, WStyle_ContextHelp ) { -#ifdef QWS - showMaximized(); -#endif - setCaption( tr( "AQPkg - Package Manager" ) ); - // Create our menu - help = new QPopupMenu( this ); - help->insertItem( tr( "General" ), this, SLOT(displayHelp()) ); - help->insertItem( tr( "About" ), this, SLOT(displayAbout()) ); - - settings = new QPopupMenu( this ); - settings->insertItem( tr( "Settings" ), this, SLOT(displaySettings()) ); - - edit = new QPopupMenu( this ); - edit->insertItem( tr( "Find" ), this, SLOT(searchForPackage()) ); - edit->insertItem( tr( "Find Next" ), this, SLOT(repeatSearchForPackage()) ); - - filter = new QPopupMenu( this ); - mnuShowUninstalledPkgsId = filter->insertItem( tr( "Show Non-Installed Packages" ), this, SLOT(filterUninstalledPackages()) ); - mnuShowInstalledPkgsId = filter->insertItem( tr( "Show Installed Packages" ), this, SLOT(filterInstalledPackages()) ); - mnuShowUpgradedPkgsId = filter->insertItem( tr( "Show Updated Packages" ), this, SLOT(filterUpgradedPackages()) ); - filter->insertSeparator(); - mnuFilterByCategory = filter->insertItem( tr( "Filter By Category" ), this, SLOT(filterCategory()) ); - mnuSetFilterCategory = filter->insertItem( tr( "Set Filter Category" ), this, SLOT(setFilterCategory()) ); - - // Create the main menu - menu = menuBar(); //new QMenuBar( this ); - menu->insertItem( tr( "Settings" ), settings ); - menu->insertItem( tr( "Edit" ), edit ); - menu->insertItem( tr( "Filter" ), filter ); - menu->insertItem( tr( "Help" ), help ); - - // Create UI widgets - stack = new QWidgetStack( this ); - - progressWindow = new ProgressWidget( stack ); - stack->addWidget( progressWindow, 2 ); - - networkPkgWindow = new NetworkPackageManager( stack ); - connect( networkPkgWindow, SIGNAL( appRaiseMainWidget() ), this, SLOT( raiseMainWidget() ) ); - connect( networkPkgWindow, SIGNAL( appRaiseProgressWidget() ), this, SLOT( raiseProgressWidget() ) ); - connect( networkPkgWindow, SIGNAL( progressSetSteps( int ) ), progressWindow, SLOT( setSteps( int ) ) ); - connect( networkPkgWindow, SIGNAL( progressSetMessage( const QString & ) ), - progressWindow, SLOT( setMessage( const QString & ) ) ); - connect( networkPkgWindow, SIGNAL( progressUpdate( int ) ), progressWindow, SLOT( update( int ) ) ); - stack->addWidget( networkPkgWindow, 1 ); - - setCentralWidget( stack ); - stack->raiseWidget( progressWindow ); - - // Delayed call to finish initialization - QTimer::singleShot( 100, this, SLOT( init() ) ); - + // Create UI widgets + progressWindow = new ProgressWidget( this ); + networkPkgWindow = new NetworkPackageManager( this ); + + // Build menu and tool bars + setToolBarsMovable( FALSE ); + + QPEToolBar *bar = new QPEToolBar( this ); + bar->setHorizontalStretchable( TRUE ); + QPEMenuBar *mb = new QPEMenuBar( bar ); + mb->setMargin( 0 ); + bar = new QPEToolBar( this ); + + // Packages menu + QPopupMenu *popup = new QPopupMenu( this ); + + QAction *a = new QAction( tr( "Update lists" ), Resource::loadPixmap( "aqpkg/update" ), QString::null, 0, this, 0 ); + a->setWhatsThis( tr( "Click here to update package lists from servers." ) ); + connect( a, SIGNAL( activated() ), networkPkgWindow, SLOT( updateServer() ) ); + a->addTo( popup ); + a->addTo( bar ); + + actionUpgrade = new QAction( tr( "Upgrade" ), Resource::loadPixmap( "aqpkg/upgrade" ), QString::null, 0, this, 0 ); + actionUpgrade->setWhatsThis( tr( "Click here to upgrade all installed packages if a newer version is available." ) ); + connect( actionUpgrade, SIGNAL( activated() ), networkPkgWindow, SLOT( upgradePackages() ) ); + actionUpgrade->addTo( popup ); + actionUpgrade->addTo( bar ); + + iconDownload = Resource::loadPixmap( "aqpkg/download" ); + iconRemove = Resource::loadPixmap( "aqpkg/remove" ); + actionDownload = new QAction( tr( "Download" ), iconDownload, QString::null, 0, this, 0 ); + actionDownload->setWhatsThis( tr( "Click here to download the currently selected package(s)." ) ); + connect( actionDownload, SIGNAL( activated() ), networkPkgWindow, SLOT( downloadPackage() ) ); + actionDownload->addTo( popup ); + actionDownload->addTo( bar ); + + a = new QAction( tr( "Apply changes" ), Resource::loadPixmap( "aqpkg/apply" ), QString::null, 0, this, 0 ); + a->setWhatsThis( tr( "Click here to install, remove or upgrade currently selected package(s)." ) ); + connect( a, SIGNAL( activated() ), networkPkgWindow, SLOT( applyChanges() ) ); + a->addTo( popup ); + a->addTo( bar ); + + mb->insertItem( tr( "Packages" ), popup ); + + // Search menu + popup = new QPopupMenu( this ); + + a = new QAction( tr( "Find" ), Resource::loadPixmap( "find" ), QString::null, 0, this, 0 ); + a->setWhatsThis( tr( "Click here to search for a specific package." ) ); + connect( a, SIGNAL( activated() ), this, SLOT( searchForPackage() ) ); + a->addTo( popup ); + + a = new QAction( tr( "Find next" ), Resource::loadPixmap( "next" ), QString::null, 0, this, 0 ); + a->setWhatsThis( tr( "Click here to search for the next package." ) ); + connect( a, SIGNAL( activated() ), this, SLOT( repeatSearchForPackage() ) ); + a->addTo( popup ); + + // Show 'quick jump' keypad? + + popup->insertSeparator(); + + a = new QAction( tr( "Filter by category" ), Resource::loadPixmap( "aqpkg/filter" ), QString::null, 0, this, 0 ); + a->setWhatsThis( tr( "Click here to list packages belonging to one category." ) ); + connect( a, SIGNAL( activated() ), this, SLOT( filterCategory() ) ); + a->addTo( popup ); + + a = new QAction( tr( "Set filter category" ), QString::null, 0, this, 0 ); + a->setWhatsThis( tr( "Click here to change package category to used filter." ) ); + connect( a, SIGNAL( activated() ), this, SLOT( setFilterCategory() ) ); + a->addTo( popup ); + + mb->insertItem( tr( "Search" ), popup ); + + + // View menu + popup = new QPopupMenu( this ); + + a = new QAction( tr( "Show packages not installed" ), QString::null, 0, this, 0 ); + a->setWhatsThis( tr( "Click here to show packages available which have not been installed." ) ); + connect( a, SIGNAL( activated() ), this, SLOT( filterUninstalledPackages() ) ); + a->addTo( popup ); + + a = new QAction( tr( "Show installed packages" ), QString::null, 0, this, 0 ); + a->setWhatsThis( tr( "Click here to show packages currently installed on this device." ) ); + connect( a, SIGNAL( activated() ), this, SLOT( filterInstalledPackages() ) ); + a->addTo( popup ); + + a = new QAction( tr( "Show updated packages" ), QString::null, 0, this, 0 ); + a->setWhatsThis( tr( "Click here to show packages currently installed on this device which have a newer version available." ) ); + connect( a, SIGNAL( activated() ), this, SLOT( filterUpgradedPackages() ) ); + a->addTo( popup ); + + popup->insertSeparator(); + + a = new QAction( tr( "Configure" ), Resource::loadPixmap( "aqpkg/config" ), QString::null, 0, this, 0 ); + a->setWhatsThis( tr( "Click here to configure this application." ) ); + connect( a, SIGNAL( activated() ), this, SLOT( displaySettings() ) ); + a->addTo( popup ); + + popup->insertSeparator(); + + a = new QAction( tr( "Help" ), Resource::loadPixmap( "help_icon" ), QString::null, 0, this, 0 ); + a->setWhatsThis( tr( "Click here for help." ) ); + connect( a, SIGNAL( activated() ), this, SLOT( displayHelp() ) ); + a->addTo( popup ); + + a = new QAction( tr( "About" ), Resource::loadPixmap( "UtilsIcon" ), QString::null, 0, this, 0 ); + a->setWhatsThis( tr( "Click here for software version information." ) ); + connect( a, SIGNAL( activated() ), this, SLOT( displayAbout() ) ); + a->addTo( popup ); + + mb->insertItem( tr( "View" ), popup ); + + // Create widget stack and add UI widgets + stack = new QWidgetStack( this ); + stack->addWidget( progressWindow, 2 ); + stack->addWidget( networkPkgWindow, 1 ); + setCentralWidget( stack ); + stack->raiseWidget( progressWindow ); + + // Delayed call to finish initialization + QTimer::singleShot( 100, this, SLOT( init() ) ); } MainWindow :: ~MainWindow() { delete mgr; } void MainWindow :: init() { stack->raiseWidget( progressWindow ); + mgr = new DataManager(); connect( mgr, SIGNAL( progressSetSteps( int ) ), progressWindow, SLOT( setSteps( int ) ) ); connect( mgr, SIGNAL( progressSetMessage( const QString & ) ), progressWindow, SLOT( setMessage( const QString & ) ) ); connect( mgr, SIGNAL( progressUpdate( int ) ), progressWindow, SLOT( update( int ) ) ); mgr->loadServers(); + networkPkgWindow->setDataManager( mgr ); networkPkgWindow->updateData(); + connect( networkPkgWindow, SIGNAL( appRaiseMainWidget() ), this, SLOT( raiseMainWidget() ) ); + connect( networkPkgWindow, SIGNAL( appRaiseProgressWidget() ), this, SLOT( raiseProgressWidget() ) ); + connect( networkPkgWindow, SIGNAL( appEnableUpgrade( bool ) ), this, SLOT( enableUpgrade( bool ) ) ); + connect( networkPkgWindow, SIGNAL( appEnableDownload( bool ) ), this, SLOT( enableDownload( bool ) ) ); + connect( networkPkgWindow, SIGNAL( progressSetSteps( int ) ), progressWindow, SLOT( setSteps( int ) ) ); + connect( networkPkgWindow, SIGNAL( progressSetMessage( const QString & ) ), + progressWindow, SLOT( setMessage( const QString & ) ) ); + connect( networkPkgWindow, SIGNAL( progressUpdate( int ) ), progressWindow, SLOT( update( int ) ) ); + stack->raiseWidget( networkPkgWindow ); } void MainWindow :: setDocument( const QString &doc ) { // Remove path from package QString package = Utils::getPackageNameFromIpkFilename( doc ); std::cout << "Selecting package " << package << std::endl; networkPkgWindow->selectLocalPackage( package ); } void MainWindow :: displaySettings() @@ -236,12 +323,33 @@ void MainWindow :: filterCategory() } } void MainWindow :: raiseMainWidget() { stack->raiseWidget( networkPkgWindow ); } void MainWindow :: raiseProgressWidget() { stack->raiseWidget( progressWindow ); } + +void MainWindow :: enableUpgrade( bool enabled ) +{ + actionUpgrade->setEnabled( enabled ); +} + +void MainWindow :: enableDownload( bool enabled ) +{ + if ( enabled ) + { + actionDownload->setIconSet( iconDownload ); + actionDownload->setText( tr( "Download" ) ); + actionDownload->setWhatsThis( tr( "Click here to download the currently selected package(s)." ) ); + } + else + { + actionDownload->setIconSet( iconRemove ); + actionDownload->setText( tr( "Remove" ) ); + actionDownload->setWhatsThis( tr( "Click here to uninstall the currently selected package(s)." ) ); + } +} diff --git a/noncore/settings/aqpkg/mainwin.h b/noncore/settings/aqpkg/mainwin.h index 39799f9..028ef5b 100644 --- a/noncore/settings/aqpkg/mainwin.h +++ b/noncore/settings/aqpkg/mainwin.h @@ -10,64 +10,74 @@ * * * 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. * * * ***************************************************************************/ #ifndef MAINWIN_H #define MAINWIN_H #include <qmainwindow.h> -#include <qwidgetstack.h> +#include <qpixmap.h> +//#include <qwidgetstack.h> +class QWidgetStack; +class QPEToolBar; +class QAction; class ProgressWidget; class NetworkPackageManager; class DataManager; class MainWindow :public QMainWindow { Q_OBJECT public: - MainWindow( QWidget *p = 0, char *name = 0 ); + MainWindow(); ~MainWindow(); private: DataManager *mgr; QMenuBar *menu; QPopupMenu *help; QPopupMenu *settings; QPopupMenu *edit; QPopupMenu *filter; - QWidgetStack *stack; - + QWidgetStack *stack; + QAction *actionUpgrade; + QAction *actionDownload; + QPixmap iconDownload; + QPixmap iconRemove; + NetworkPackageManager *networkPkgWindow; ProgressWidget *progressWindow; int mnuShowUninstalledPkgsId; int mnuShowInstalledPkgsId; int mnuShowUpgradedPkgsId; int mnuFilterByCategory; int mnuSetFilterCategory; public slots: void setDocument( const QString &doc ); void displayHelp(); void searchForPackage(); void repeatSearchForPackage(); void displayAbout(); void displaySettings(); void filterUninstalledPackages(); void filterInstalledPackages(); void filterUpgradedPackages(); void filterCategory(); void setFilterCategory(); void raiseMainWidget(); void raiseProgressWidget(); + void enableUpgrade( bool ); + void enableDownload( bool ); private slots: void init(); }; #endif diff --git a/noncore/settings/aqpkg/networkpkgmgr.cpp b/noncore/settings/aqpkg/networkpkgmgr.cpp index ee37157..91afe02 100644 --- a/noncore/settings/aqpkg/networkpkgmgr.cpp +++ b/noncore/settings/aqpkg/networkpkgmgr.cpp @@ -56,27 +56,24 @@ NetworkPackageManager::NetworkPackageManager( QWidget *parent, const char *name cfg.setGroup( "settings" ); currentlySelectedServer = cfg.readEntry( "selectedServer", "local" ); showJumpTo = cfg.readBoolEntry( "showJumpTo", "true" ); #endif showUninstalledPkgs = false; showInstalledPkgs = false; showUpgradedPkgs = false; categoryFilterEnabled = false; initGui(); - setupConnections(); - - //updateData(); } NetworkPackageManager::~NetworkPackageManager() { } void NetworkPackageManager :: setDataManager( DataManager *dm ) { dataMgr = dm; } void NetworkPackageManager :: updateData() @@ -138,29 +135,27 @@ void NetworkPackageManager :: selectLocalPackage( const QString &pkg ) { item->setOn( true ); break; } } } void NetworkPackageManager :: initGui() { QLabel *l = new QLabel( tr( "Servers" ), this ); serversList = new QComboBox( this ); + connect( serversList, SIGNAL(activated( int )), this, SLOT(serverSelected( int ))); + packagesList = new QListView( this ); - update = new QPushButton( tr( "Refresh Lists" ), this ); - download = new QPushButton( tr( "Download" ), this ); - upgrade = new QPushButton( tr( "Upgrade" ), this ); - apply = new QPushButton( tr( "Apply" ), this ); QVBoxLayout *vbox = new QVBoxLayout( this, 0, -1 ); QHBoxLayout *hbox1 = new QHBoxLayout( vbox, -1 ); hbox1->addWidget( l ); hbox1->addWidget( serversList ); QHBoxLayout *hbox3 = new QHBoxLayout( vbox, -1 ); QHBoxLayout *hbox4 = new QHBoxLayout( vbox, -1 ); if ( showJumpTo ) { @@ -171,39 +166,26 @@ void NetworkPackageManager :: initGui() text[0] = 'A' + i; LetterPushButton *b = new LetterPushButton( text, this ); connect( b, SIGNAL( released( QString ) ), this, SLOT( letterPushed( QString ) ) ); if ( i < 13 ) hbox3->addWidget( b ); else hbox4->addWidget( b ); } } vbox->addWidget( packagesList ); packagesList->addColumn( tr( "Packages" ) ); - - QHBoxLayout *hbox2 = new QHBoxLayout( vbox, -1 ); - hbox2->addWidget( update ); - hbox2->addWidget( download ); - hbox2->addWidget( upgrade ); - hbox2->addWidget( apply ); -} - -void NetworkPackageManager :: setupConnections() -{ - connect( serversList, SIGNAL(activated( int )), this, SLOT(serverSelected( int ))); - 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()) ); + + downloadEnabled = TRUE; } void NetworkPackageManager :: serverSelected( int index ) { serverSelected( index, TRUE ); } void NetworkPackageManager :: serverSelected( int, bool raiseProgress ) { // display packages QString serverName = serversList->currentText(); currentlySelectedServer = serverName; @@ -331,40 +313,38 @@ void NetworkPackageManager :: serverSelected( int, bool raiseProgress ) { if ( it->isInstalled() ) new QCheckListItem( item, QString( tr( "V. Installed - " ) ) + it->getInstalledVersion() ); } } packagesList->insertItem( item ); } // If the local server or the local ipkgs server disable the download button if ( serverName == LOCAL_SERVER ) { - upgrade->setEnabled( false ); - download->setText( tr( "Download" ) ); - download->setEnabled( true ); + downloadEnabled = TRUE; + emit appEnableUpgrade( FALSE ); } else if ( serverName == LOCAL_IPKGS ) { - upgrade->setEnabled( false ); - download->setEnabled( true ); - download->setText( tr( "Remove" ) ); + downloadEnabled = FALSE; + emit appEnableUpgrade( FALSE ); } else { - upgrade->setEnabled( true ); - download->setEnabled( true ); - download->setText( tr( "Download" ) ); + downloadEnabled = TRUE; + emit appEnableUpgrade( TRUE ); } + emit appEnableDownload( downloadEnabled ); // Display this widget once everything is done if ( doProgress && raiseProgress ) { emit appRaiseMainWidget(); } } void NetworkPackageManager :: updateServer() { QString serverName = serversList->currentText(); @@ -412,49 +392,49 @@ void NetworkPackageManager :: upgradePackages() dlg.showDlg(); // Reload data dataMgr->reloadServerData(); serverSelected(-1); } } void NetworkPackageManager :: downloadPackage() { bool doUpdate = true; - if ( download->text() == tr( "Download" ) ) + if ( downloadEnabled ) { // See if any packages are selected bool found = false; if ( serversList->currentText() != LOCAL_SERVER ) { for ( QCheckListItem *item = (QCheckListItem *)packagesList->firstChild(); item != 0 && !found; item = (QCheckListItem *)item->nextSibling() ) { if ( item->isOn() ) found = true; } } // If user selected some packages then download the and store the locally // otherwise, display dialog asking user what package to download from an http server // and whether to install it if ( found ) downloadSelectedPackages(); else downloadRemotePackage(); } - else if ( download->text() == tr( "Remove" ) ) + else { doUpdate = false; for ( QCheckListItem *item = (QCheckListItem *)packagesList->firstChild(); item != 0 ; item = (QCheckListItem *)item->nextSibling() ) { if ( item->isOn() ) { QString name = item->text(); int pos = name.find( "*" ); name.truncate( pos ); diff --git a/noncore/settings/aqpkg/networkpkgmgr.h b/noncore/settings/aqpkg/networkpkgmgr.h index 6b552ee..efef898 100644 --- a/noncore/settings/aqpkg/networkpkgmgr.h +++ b/noncore/settings/aqpkg/networkpkgmgr.h @@ -44,52 +44,51 @@ public: void searchForPackage( bool findNext ); void showOnlyUninstalledPackages( bool val ); void showOnlyInstalledPackages( bool val ); void showUpgradedPackages( bool val ); bool filterByCategory( bool val ); bool setFilterCategory(); private: DataManager *dataMgr; QComboBox *serversList; QListView *packagesList; - QPushButton *update; - QPushButton *upgrade; - QPushButton *download; - QPushButton *apply; QString currentlySelectedServer; QString lastSearchText; QString categoryFilter; bool categoryFilterEnabled; bool showJumpTo; bool showUninstalledPkgs; bool showInstalledPkgs; bool showUpgradedPkgs; + bool downloadEnabled; + void initGui(); - void setupConnections(); void showProgressDialog( char *initialText ); void downloadSelectedPackages(); void downloadRemotePackage(); void serverSelected( int index, bool showProgress ); InstallData dealWithItem( QCheckListItem *item ); QString stickyOption; signals: void appRaiseMainWidget(); void appRaiseProgressWidget(); + void appEnableUpgrade( bool ); + void appEnableDownload( bool ); void progressSetSteps( int ); void progressSetMessage( const QString & ); void progressUpdate( int ); public slots: void applyChanges(); void upgradePackages(); void downloadPackage(); void updateServer(); void displayText( const QString &t ); void letterPushed( QString t ); void serverSelected( int index ); |