author | drw <drw> | 2003-01-19 21:10:00 (UTC) |
---|---|---|
committer | drw <drw> | 2003-01-19 21:10:00 (UTC) |
commit | 49786b34a40d0e2ba6dd5c77acddf1c38758b89c (patch) (side-by-side diff) | |
tree | 3cb1c1c1593d17256910fb57111b19a87898ae74 /noncore | |
parent | ae272396cec6ca6bcfbee0d59b7948b7fe908238 (diff) | |
download | opie-49786b34a40d0e2ba6dd5c77acddf1c38758b89c.zip opie-49786b34a40d0e2ba6dd5c77acddf1c38758b89c.tar.gz opie-49786b34a40d0e2ba6dd5c77acddf1c38758b89c.tar.bz2 |
Updates to main package list, icons for installed/updated packages, QWhatsThis and a couple other tweaks
-rw-r--r-- | noncore/settings/aqpkg/aqpkg.pro | 2 | ||||
-rw-r--r-- | noncore/settings/aqpkg/main.cpp | 9 | ||||
-rw-r--r-- | noncore/settings/aqpkg/mainwin.cpp | 5 | ||||
-rw-r--r-- | noncore/settings/aqpkg/networkpkgmgr.cpp | 85 | ||||
-rw-r--r-- | noncore/settings/aqpkg/networkpkgmgr.h | 4 |
5 files changed, 47 insertions, 58 deletions
diff --git a/noncore/settings/aqpkg/aqpkg.pro b/noncore/settings/aqpkg/aqpkg.pro index 5fc323a..b69bae4 100644 --- a/noncore/settings/aqpkg/aqpkg.pro +++ b/noncore/settings/aqpkg/aqpkg.pro @@ -1,14 +1,14 @@ TEMPLATE = app -CONFIG = qt warn_on debug +CONFIG = qt warn_on release HEADERS = global.h \ mainwin.h \ datamgr.h \ settingsimpl.h \ ipkg.h \ networkpkgmgr.h \ package.h \ progresswidget.h \ installdlgimpl.h \ instoptionsimpl.h \ destination.h \ utils.h \ diff --git a/noncore/settings/aqpkg/main.cpp b/noncore/settings/aqpkg/main.cpp index 53c392e..15ef9d6 100644 --- a/noncore/settings/aqpkg/main.cpp +++ b/noncore/settings/aqpkg/main.cpp @@ -6,60 +6,57 @@ email : andy.qua@blueyonder.co.uk ***************************************************************************/ /*************************************************************************** * * * 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; - #ifdef QWS #include <qpe/qpeapplication.h> #include <qpe/qcopenvelope_qws.h> #else #include <qapplication.h> #endif #include <qobjectdefs.h> #include "mainwin.h" #include "server.h" #include "global.h" int main(int argc, char *argv[]) { - cout << "Root dir = " << ROOT << endl; +// cout << "Root dir = " << ROOT << endl; #ifdef QWS QPEApplication a( argc, argv ); #else QApplication a( argc, argv ); #endif #ifdef QWS // Disable suspend mode - cout << "Disabling suspend mode" << endl; +// cout << "Disabling suspend mode" << endl; QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::DisableSuspend; #endif MainWindow *win = new MainWindow(); a.setMainWidget(win); win->showMaximized(); a.exec(); #ifdef QWS // Reenable suspend mode - cout << "Enabling suspend mode" << endl; +// 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 1a2ac37..d79673f 100644 --- a/noncore/settings/aqpkg/mainwin.cpp +++ b/noncore/settings/aqpkg/mainwin.cpp @@ -6,27 +6,24 @@ email : andy.qua@blueyonder.co.uk ***************************************************************************/ /*************************************************************************** * * * 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 <qlineedit.h> #include <qmenubar.h> #include <qmessagebox.h> #include <qpopupmenu.h> #include <qtimer.h> #include <qwhatsthis.h> #include <qwidgetstack.h> @@ -215,25 +212,25 @@ void MainWindow :: init() 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; +// std::cout << "Selecting package " << package << std::endl; networkPkgWindow->selectLocalPackage( package ); } void MainWindow :: displaySettings() { SettingsImpl *dlg = new SettingsImpl( mgr, this, "Settings", true ); if ( dlg->showDlg( 0 ) ) networkPkgWindow->updateData(); delete dlg; } void MainWindow :: displayHelp() diff --git a/noncore/settings/aqpkg/networkpkgmgr.cpp b/noncore/settings/aqpkg/networkpkgmgr.cpp index c209589..b4b6475 100644 --- a/noncore/settings/aqpkg/networkpkgmgr.cpp +++ b/noncore/settings/aqpkg/networkpkgmgr.cpp @@ -6,42 +6,38 @@ email : andy.qua@blueyonder.co.uk ***************************************************************************/ /*************************************************************************** * * * 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 <fstream> -#include <iostream> -using namespace std; - #include <unistd.h> -#include <stdlib.h> -#include <linux/limits.h> #ifdef QWS #include <qpe/qpeapplication.h> #include <qpe/qcopenvelope_qws.h> #include <qpe/config.h> +#include <qpe/resource.h> #else #include <qapplication.h> #endif #include <qlabel.h> #include <qfile.h> #include <qmessagebox.h> +#include <qwhatsthis.h> #include "datamgr.h" #include "networkpkgmgr.h" #include "installdlgimpl.h" #include "ipkg.h" #include "inputdlg.h" #include "letterpushbutton.h" #include "categoryfilterimpl.h" #include "global.h" extern int compareVersions( const char *v1, const char *v2 ); @@ -88,25 +84,25 @@ void NetworkPackageManager :: updateData() int i; QString serverName; for ( i = 0, it = dataMgr->getServerList().begin() ; it != dataMgr->getServerList().end() ; ++it, ++i ) { serverName = it->getServerName(); emit progressSetMessage( tr( "Building server list:\n\t%1" ).arg( serverName ) ); emit progressUpdate( i ); qApp->processEvents(); // cout << "Adding " << it->getServerName() << " to combobox" << endl; if ( !it->isServerActive() ) { - cout << serverName << " is not active" << endl; +// cout << serverName << " is not active" << endl; i--; continue; } serversList->insertItem( serverName ); if ( serverName == currentlySelectedServer ) activeItem = i; } // set selected server to be active server if ( activeItem != -1 ) serversList->setCurrentItem( activeItem ); @@ -136,26 +132,32 @@ 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 ))); + QWhatsThis::add( serversList, tr( "Click here to select a package feed." ) ); + + installedIcon = Resource::loadPixmap( "aqpkg/installed" ); + updatedIcon = Resource::loadPixmap( "aqpkg/updated" ); packagesList = new QListView( this ); + packagesList->addColumn( tr( "Packages" ), 225 ); + QWhatsThis::add( packagesList, tr( "This is a listing of all packages for the server feed selected above.\n\nA blue dot next to the package name indicates that the package is currently installed.\n\nA blue dot with a star indicates that a newer version of the package is available from the server feed.\n\nClick inside the box at the left to select a package." ) ); 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 ) { @@ -165,36 +167,38 @@ 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" ) ); - + downloadEnabled = TRUE; } void NetworkPackageManager :: serverSelected( int index ) { serverSelected( index, TRUE ); } void NetworkPackageManager :: serverSelected( int, bool raiseProgress ) { + QPixmap nullIcon( installedIcon.size() ); + nullIcon.fill( colorGroup().base() ); + // display packages QString serverName = serversList->currentText(); currentlySelectedServer = serverName; vector<Server>::iterator s = dataMgr->getServer( serverName ); vector<Package> &list = s->getPackageList(); vector<Package>::iterator it; // Display progress widget while loading list bool doProgress = ( list.size() > 200 ); if ( doProgress ) @@ -251,63 +255,66 @@ void NetworkPackageManager :: serverSelected( int, bool raiseProgress ) // Apply the section filter if ( categoryFilterEnabled && categoryFilter != "" ) { if ( it->getSection() == "" || categoryFilter.find( it->getSection().lower() ) == -1 ) continue; } // If the local server, only display installed packages if ( serverName == LOCAL_SERVER && !it->isInstalled() ) continue; - text.append( it->getPackageName() ); + QCheckListItem *item = new QCheckListItem( packagesList, it->getPackageName(), QCheckListItem::CheckBox ); + if ( it->isInstalled() ) { - text.append( " (installed)" ); - - // If a different version of package is available, postfix it with an * - if ( it->getVersion() != it->getInstalledVersion() ) + // If a different version of package is available, show update available icon + // Otherwise, show installed icon + if ( it->getVersion() != it->getInstalledVersion() && + compareVersions( it->getInstalledVersion(), it->getVersion() ) == 1) { - if ( compareVersions( it->getInstalledVersion(), it->getVersion() ) == 1 ) - text.append( "*" ); + item->setPixmap( 0, updatedIcon ); } - } - - QCheckListItem *item = new QCheckListItem( packagesList, text, QCheckListItem::CheckBox ); - - if ( it->isInstalled() ) - { + else + { + item->setPixmap( 0, installedIcon ); + } + QString destName = ""; if ( it->getLocalPackage() ) { if ( it->getLocalPackage()->getInstalledTo() ) destName = it->getLocalPackage()->getInstalledTo()->getDestinationName(); } else { if ( it->getInstalledTo() ) destName = it->getInstalledTo()->getDestinationName(); } if ( destName != "" ) new QCheckListItem( item, QString( tr( "Installed To - %1" ).arg( destName ) ) ); } + else + { + item->setPixmap( 0, nullIcon ); + } if ( !it->isPackageStoredLocally() ) { new QCheckListItem( item, QString( tr( "Description - %1" ).arg( it->getDescription() ) ) ); new QCheckListItem( item, QString( tr( "Size - %1" ).arg( it->getPackageSize() ) ) ); new QCheckListItem( item, QString( tr( "Section - %1" ).arg( it->getSection() ) ) ); - } + } else new QCheckListItem( item, QString( tr( "Filename - %1" ).arg( it->getFilename() ) ) ); if ( serverName == LOCAL_SERVER ) { new QCheckListItem( item, QString( tr( "V. Installed - %1" ).arg( it->getVersion() ) ) ); } else { new QCheckListItem( item, QString( tr( "V. Available - %1" ).arg( it->getVersion() ) ) ); if ( it->getLocalPackage() ) { @@ -499,34 +506,25 @@ void NetworkPackageManager :: downloadSelectedPackages() // Download each package Ipkg ipkg; connect( &ipkg, SIGNAL(outputText(const QString &)), this, SLOT(displayText(const QString &))); ipkg.setOption( "download" ); ipkg.setRuntimeDirectory( dir ); 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 ); - - // if (there is a (installed), remove it - pos = name.find( "(installed)" ); - if ( pos > 0 ) - name.truncate( pos - 1 ); - - ipkg.setPackage( name ); + ipkg.setPackage( item->text() ); ipkg.runIpkg( ); } } } void NetworkPackageManager :: downloadRemotePackage() { // Display dialog bool ok; QString package = InputDialog::getText( tr( "Install Remote Package" ), tr( "Enter package location" ), "http://", &ok, this ); if ( !ok || package.isEmpty() ) return; @@ -605,31 +603,24 @@ void NetworkPackageManager :: applyChanges() e << lf; #endif } // decide what to do - either remove, upgrade or install // Current rules: // If not installed - install // If installed and different version available - upgrade // If installed and version up to date - remove InstallData NetworkPackageManager :: dealWithItem( QCheckListItem *item ) { QString name = item->text(); - int pos = name.find( "*" ); - name.truncate( pos ); - - // if (there is a (installed), remove it - pos = name.find( "(installed)" ); - if ( pos > 0 ) - name.truncate( pos - 1 ); // Get package vector<Server>::iterator s = dataMgr->getServer( serversList->currentText() ); Package *p = s->getPackage( name ); // If the package has a filename then it is a local file if ( p->isPackageStoredLocally() ) name = p->getFilename(); QString option; QString dest = "root"; if ( !p->isInstalled() ) @@ -642,26 +633,26 @@ InstallData NetworkPackageManager :: dealWithItem( QCheckListItem *item ) else { InstallData item; item.option = "D"; if ( !p->isPackageStoredLocally() ) item.packageName = p->getInstalledPackageName(); else item.packageName = name; if ( p->getInstalledTo() ) { item.destination = p->getInstalledTo(); - cout << "dest - " << p->getInstalledTo()->getDestinationName() << endl; - cout << "dest - " << p->getInstalledTo()->getDestinationPath() << endl; +// cout << "dest - " << p->getInstalledTo()->getDestinationName() << endl; +// cout << "dest - " << p->getInstalledTo()->getDestinationPath() << endl; } else { item.destination = p->getLocalPackage()->getInstalledTo(); } // Now see if version is newer or not int val = compareVersions( p->getInstalledVersion(), p->getVersion() ); // If the version requested is older and user selected a local ipk file, then reinstall the file if ( p->isPackageStoredLocally() && val == -1 ) val = 0; @@ -725,27 +716,27 @@ InstallData NetworkPackageManager :: dealWithItem( QCheckListItem *item ) // Check if we are reinstalling the same version if ( item.option != "R" ) item.recreateLinks = true; else item.recreateLinks = false; // User hit cancel (on dlg - assume remove) return item; } } -void NetworkPackageManager :: displayText( const QString &t ) +void NetworkPackageManager :: displayText( const QString &/*t*/ ) { - cout << t << endl; +// cout << t << endl; } void NetworkPackageManager :: letterPushed( QString t ) { QCheckListItem *top = (QCheckListItem *)packagesList->firstChild(); QCheckListItem *start = (QCheckListItem *)packagesList->currentItem(); if ( packagesList->firstChild() == 0 ) return; QCheckListItem *item; if ( start == 0 ) @@ -769,41 +760,41 @@ void NetworkPackageManager :: letterPushed( QString t ) item = (QCheckListItem *)item->nextSibling(); if ( !item ) item = (QCheckListItem *)packagesList->firstChild(); } while ( item != start); } void NetworkPackageManager :: searchForPackage( const QString &text ) { if ( !text.isEmpty() ) { - cout << "searching for " << text << endl; +// cout << "searching for " << text << endl; // look through package list for text startng at current position vector<InstallData> workingPackages; QCheckListItem *start = (QCheckListItem *)packagesList->currentItem(); if ( start != 0 ) start = (QCheckListItem *)start->nextSibling(); if ( start == 0 ) start = (QCheckListItem *)packagesList->firstChild(); for ( QCheckListItem *item = start; item != 0 ; item = (QCheckListItem *)item->nextSibling() ) { - cout << "checking " << item->text().lower() << endl; +// cout << "checking " << item->text().lower() << endl; if ( item->text().lower().find( text ) != -1 ) { - cout << "matched " << item->text() << endl; +// cout << "matched " << item->text() << endl; packagesList->ensureItemVisible( item ); packagesList->setCurrentItem( item ); break; } } } } void NetworkPackageManager :: showOnlyUninstalledPackages( bool val ) { showUninstalledPkgs = val; if ( val ) diff --git a/noncore/settings/aqpkg/networkpkgmgr.h b/noncore/settings/aqpkg/networkpkgmgr.h index bd005e2..99eff2e 100644 --- a/noncore/settings/aqpkg/networkpkgmgr.h +++ b/noncore/settings/aqpkg/networkpkgmgr.h @@ -10,24 +10,25 @@ * * * 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 NETWORKPKGMGR_H #define NETWORKPKGMGR_H #include <qlayout.h> +#include <qpixmap.h> #include <qpushbutton.h> #include <qwidget.h> #include <qcombobox.h> #include <qlistview.h> #include "datamgr.h" class InstallData; /** NetworkPackageManager is the base class of the project */ class NetworkPackageManager : public QWidget { @@ -44,24 +45,27 @@ public: void searchForPackage( const QString & ); 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; + + QPixmap installedIcon; + QPixmap updatedIcon; QString currentlySelectedServer; QString categoryFilter; bool categoryFilterEnabled; bool showJumpTo; bool showUninstalledPkgs; bool showInstalledPkgs; bool showUpgradedPkgs; bool downloadEnabled; |