summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/aqpkg/mainwin.cpp166
-rw-r--r--noncore/settings/aqpkg/mainwin.h26
-rw-r--r--noncore/settings/aqpkg/networkpkgmgr.cpp52
-rw-r--r--noncore/settings/aqpkg/networkpkgmgr.h3
4 files changed, 125 insertions, 122 deletions
diff --git a/noncore/settings/aqpkg/mainwin.cpp b/noncore/settings/aqpkg/mainwin.cpp
index 4aa83b5..e184f6b 100644
--- a/noncore/settings/aqpkg/mainwin.cpp
+++ b/noncore/settings/aqpkg/mainwin.cpp
@@ -1,355 +1,343 @@
/***************************************************************************
mainwin.cpp - description
-------------------
begin : Mon Aug 26 13:32:30 BST 2002
copyright : (C) 2002 by Andy Qua
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>
#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()
: QMainWindow( 0x0, 0x0, WStyle_ContextHelp )
{
setCaption( tr( "AQPkg - Package Manager" ) );
// 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 );
+ // Find toolbar
+ findBar = new QPEToolBar( this );
+ addToolBar( findBar, QMainWindow::Top, true );
+ findBar->setHorizontalStretchable( true );
+ findEdit = new QLineEdit( findBar );
+ QWhatsThis::add( findEdit, tr( "Type the text to search for here." ) );
+ findBar->setStretchableWidget( findEdit );
+ connect( findEdit, SIGNAL( textChanged( const QString & ) ), this, SLOT( findPackage( const QString & ) ) );
+
// 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->setWhatsThis( tr( "Click here to search for text in package names." ) );
+ connect( a, SIGNAL( activated() ), this, SLOT( displayFindBar() ) );
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 );
+ actionFindNext = new QAction( tr( "Find next" ), Resource::loadIconSet( "next" ), QString::null, 0, this, 0 );
+ actionFindNext->setEnabled( FALSE );
+ actionFindNext->setWhatsThis( tr( "Click here to search for the package name containing the text you are searching for." ) );
+ connect( actionFindNext, SIGNAL( activated() ), this, SLOT( repeatFind() ) );
+ actionFindNext->addTo( popup );
+ actionFindNext->addTo( findBar );
// 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 );
+ actionFilter = new QAction( tr( "Filter by category" ), Resource::loadPixmap( "aqpkg/filter" ), QString::null, 0, this, 0 );
+ actionFilter->setToggleAction( TRUE );
+ actionFilter->setWhatsThis( tr( "Click here to list packages belonging to one category." ) );
+ connect( actionFilter, SIGNAL( activated() ), this, SLOT( filterCategory() ) );
+ actionFilter->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 );
+ actionUninstalled = new QAction( tr( "Show packages not installed" ), QString::null, 0, this, 0 );
+ actionUninstalled->setToggleAction( TRUE );
+ actionUninstalled->setWhatsThis( tr( "Click here to show packages available which have not been installed." ) );
+ connect( actionUninstalled, SIGNAL( activated() ), this, SLOT( filterUninstalledPackages() ) );
+ actionUninstalled->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 );
+ actionInstalled = new QAction( tr( "Show installed packages" ), QString::null, 0, this, 0 );
+ actionInstalled->setToggleAction( TRUE );
+ actionInstalled->setWhatsThis( tr( "Click here to show packages currently installed on this device." ) );
+ connect( actionInstalled, SIGNAL( activated() ), this, SLOT( filterInstalledPackages() ) );
+ actionInstalled->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 );
+ actionUpdated = new QAction( tr( "Show updated packages" ), QString::null, 0, this, 0 );
+ actionUpdated->setToggleAction( TRUE );
+ actionUpdated->setWhatsThis( tr( "Click here to show packages currently installed on this device which have a newer version available." ) );
+ connect( actionUpdated, SIGNAL( activated() ), this, SLOT( filterUpgradedPackages() ) );
+ actionUpdated->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 );
+
+ // Finish find toolbar creation
+ a = new QAction( QString::null, Resource::loadPixmap( "close" ), QString::null, 0, this, 0 );
+ a->setWhatsThis( tr( "Click here to hide the find toolbar." ) );
+ connect( a, SIGNAL( activated() ), this, SLOT( hideFindBar() ) );
+ a->addTo( findBar );
+ findBar->hide();
+
// 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()
{
SettingsImpl *dlg = new SettingsImpl( mgr, this, "Settings", true );
if ( dlg->showDlg( 0 ) )
networkPkgWindow->updateData();
delete dlg;
}
void MainWindow :: displayHelp()
{
HelpWindow *dlg = new HelpWindow( this );
dlg->exec();
delete dlg;
}
+
+void MainWindow :: displayFindBar()
+{
+ findBar->show();
+ findEdit->setFocus();
+}
-void MainWindow :: searchForPackage()
+void MainWindow :: repeatFind()
{
- networkPkgWindow->searchForPackage( false );
+ networkPkgWindow->searchForPackage( findEdit->text() );
}
-void MainWindow :: repeatSearchForPackage()
+void MainWindow :: findPackage( const QString &text )
{
- networkPkgWindow->searchForPackage( true );
+ actionFindNext->setEnabled( !text.isEmpty() );
+ networkPkgWindow->searchForPackage( text );
+}
+
+void MainWindow :: hideFindBar()
+{
+ findBar->hide();
}
void MainWindow :: displayAbout()
{
QMessageBox::about( this, tr( "About AQPkg" ), tr( VERSION_TEXT ) );
}
-
void MainWindow :: filterUninstalledPackages()
{
- bool val;
- if ( filter->isItemChecked( mnuShowUninstalledPkgsId ) )
- {
- val = false;
- filter->setItemChecked( mnuShowUninstalledPkgsId, false );
- }
- else
- {
- val = true;
- filter->setItemChecked( mnuShowUninstalledPkgsId, true );
- }
-
- filter->setItemChecked( mnuShowInstalledPkgsId, false );
- networkPkgWindow->showOnlyInstalledPackages( false );
- filter->setItemChecked( mnuShowUpgradedPkgsId, false );
- networkPkgWindow->showUpgradedPackages( false );
-
- networkPkgWindow->showOnlyUninstalledPackages( val );
-
+ networkPkgWindow->showOnlyUninstalledPackages( actionUninstalled->isOn() );
+ actionInstalled->setOn( FALSE );
+ actionUpdated->setOn( FALSE );
}
void MainWindow :: filterInstalledPackages()
{
- bool val;
- if ( filter->isItemChecked( mnuShowInstalledPkgsId ) )
- {
- val = false;
- filter->setItemChecked( mnuShowInstalledPkgsId, false );
- }
- else
- {
- val = true;
- filter->setItemChecked( mnuShowInstalledPkgsId, true );
- }
-
- filter->setItemChecked( mnuShowUninstalledPkgsId, false );
- networkPkgWindow->showOnlyUninstalledPackages( false );
- filter->setItemChecked( mnuShowUpgradedPkgsId, false );
- networkPkgWindow->showUpgradedPackages( false );
-
- networkPkgWindow->showOnlyInstalledPackages( val );
+ actionUninstalled->setOn( FALSE );
+ networkPkgWindow->showOnlyInstalledPackages( actionInstalled->isOn() );
+ actionUpdated->setOn( FALSE );
}
void MainWindow :: filterUpgradedPackages()
{
- bool val;
- if ( filter->isItemChecked( mnuShowUpgradedPkgsId ) )
- {
- val = false;
- filter->setItemChecked( mnuShowUpgradedPkgsId, false );
- }
- else
- {
- val = true;
- filter->setItemChecked( mnuShowUpgradedPkgsId, true );
- }
-
- filter->setItemChecked( mnuShowUninstalledPkgsId, false );
- networkPkgWindow->showOnlyUninstalledPackages( false );
- filter->setItemChecked( mnuShowInstalledPkgsId, false );
- networkPkgWindow->showOnlyInstalledPackages( false );
-
- networkPkgWindow->showUpgradedPackages( val );
+ actionUninstalled->setOn( FALSE );
+ actionInstalled->setOn( FALSE );
+ networkPkgWindow->showUpgradedPackages( actionUpdated->isOn() );
}
void MainWindow :: setFilterCategory()
{
- if ( networkPkgWindow->setFilterCategory( ) )
- filter->setItemChecked( mnuFilterByCategory, true );
+ if ( networkPkgWindow->setFilterCategory() )
+ actionFilter->setOn( TRUE );
}
void MainWindow :: filterCategory()
{
- if ( filter->isItemChecked( mnuFilterByCategory ) )
+ if ( !actionFilter->isOn() )
{
- networkPkgWindow->filterByCategory( false );
- filter->setItemChecked( mnuFilterByCategory, false );
+ networkPkgWindow->filterByCategory( FALSE );
}
else
{
- if ( networkPkgWindow->filterByCategory( true ) )
- filter->setItemChecked( mnuFilterByCategory, true );
+ actionFilter->setOn( networkPkgWindow->filterByCategory( TRUE ) );
}
}
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 028ef5b..ef67cc9 100644
--- a/noncore/settings/aqpkg/mainwin.h
+++ b/noncore/settings/aqpkg/mainwin.h
@@ -1,83 +1,89 @@
/***************************************************************************
mainwin.h - description
-------------------
begin : Mon Aug 26 13:32:30 BST 2002
copyright : (C) 2002 by Andy Qua
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. *
* *
***************************************************************************/
#ifndef MAINWIN_H
#define MAINWIN_H
#include <qmainwindow.h>
#include <qpixmap.h>
-//#include <qwidgetstack.h>
class QWidgetStack;
class QPEToolBar;
+class QLineEdit;
class QAction;
class ProgressWidget;
class NetworkPackageManager;
class DataManager;
class MainWindow :public QMainWindow
{
Q_OBJECT
public:
MainWindow();
~MainWindow();
private:
DataManager *mgr;
- QMenuBar *menu;
- QPopupMenu *help;
- QPopupMenu *settings;
- QPopupMenu *edit;
- QPopupMenu *filter;
QWidgetStack *stack;
- QAction *actionUpgrade;
- QAction *actionDownload;
+
+ QPEToolBar *findBar;
+ QLineEdit *findEdit;
+ QAction *actionFindNext;
+ QAction *actionFilter;
+ QAction *actionUpgrade;
+ QAction *actionDownload;
+ QAction *actionUninstalled;
+ QAction *actionInstalled;
+ QAction *actionUpdated;
+
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 displayFindBar();
+ void repeatFind();
+ void findPackage( const QString & );
+ void hideFindBar();
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 91afe02..c209589 100644
--- a/noncore/settings/aqpkg/networkpkgmgr.cpp
+++ b/noncore/settings/aqpkg/networkpkgmgr.cpp
@@ -215,208 +215,209 @@ void NetworkPackageManager :: serverSelected( int, bool raiseProgress )
cfg.setGroup( "settings" );
cfg.writeEntry( "selectedServer", currentlySelectedServer );
#endif
int i = 0;
for ( it = list.begin() ; it != list.end() ; ++it )
{
// Update progress after every 100th package (arbitrary value, seems to give good balance)
i++;
if ( ( i % 100 ) == 0 )
{
if ( doProgress )
{
emit progressUpdate( i );
}
qApp->processEvents();
}
QString text = "";
// Apply show only uninstalled packages filter
if ( showUninstalledPkgs && it->isInstalled() )
continue;
// Apply show only installed packages filter
if ( showInstalledPkgs && !it->isInstalled() )
continue;
// Apply show only new installed packages filter
if ( showUpgradedPkgs )
{
if ( !it->isInstalled() ||
compareVersions( it->getInstalledVersion(), it->getVersion() ) != 1 )
continue;
}
// 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 += it->getPackageName();
+ text.append( it->getPackageName() );
if ( it->isInstalled() )
{
- text += " (installed)";
+ text.append( " (installed)" );
// If a different version of package is available, postfix it with an *
if ( it->getVersion() != it->getInstalledVersion() )
{
if ( compareVersions( it->getInstalledVersion(), it->getVersion() ) == 1 )
- text += "*";
+ text.append( "*" );
}
}
QCheckListItem *item = new QCheckListItem( packagesList, text, QCheckListItem::CheckBox );
if ( it->isInstalled() )
{
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 - " ) ) + destName );
+ new QCheckListItem( item, QString( tr( "Installed To - %1" ).arg( destName ) ) );
}
if ( !it->isPackageStoredLocally() )
{
- new QCheckListItem( item, QString( tr( "Description - " ) ) + it->getDescription() );
- new QCheckListItem( item, QString( tr( "Size - " ) ) + it->getPackageSize() );
- new QCheckListItem( item, QString( tr( "Section - " ) ) + it->getSection() );
+ 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 - " ) ) + it->getFilename() );
+ new QCheckListItem( item, QString( tr( "Filename - %1" ).arg( it->getFilename() ) ) );
if ( serverName == LOCAL_SERVER )
{
- new QCheckListItem( item, QString( tr( "V. Installed - " ) ) + it->getVersion() );
+ new QCheckListItem( item, QString( tr( "V. Installed - %1" ).arg( it->getVersion() ) ) );
}
else
{
- new QCheckListItem( item, QString( tr( "V. Available - " ) ) + it->getVersion() );
+ new QCheckListItem( item, QString( tr( "V. Available - %1" ).arg( it->getVersion() ) ) );
if ( it->getLocalPackage() )
{
if ( it->isInstalled() )
- new QCheckListItem( item, QString( tr( "V. Installed - " ) ) + it->getInstalledVersion() );
+ new QCheckListItem( item, QString( tr( "V. Installed - %1" ).arg( it->getInstalledVersion() ) ) );
}
}
packagesList->insertItem( item );
}
// If the local server or the local ipkgs server disable the download button
if ( serverName == LOCAL_SERVER )
{
downloadEnabled = TRUE;
emit appEnableUpgrade( FALSE );
}
else if ( serverName == LOCAL_IPKGS )
{
downloadEnabled = FALSE;
emit appEnableUpgrade( FALSE );
}
else
{
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();
// Update the current server
// Display dialog
// Disable buttons to stop silly people clicking lots on them :)
// First, write out ipkg_conf file so that ipkg can use it
dataMgr->writeOutIpkgConf();
Ipkg ipkg;
ipkg.setOption( "update" );
InstallDlgImpl dlg( &ipkg, tr( "Refreshing server package lists" ), this, tr( "Upgrade" ), true );
dlg.showDlg();
// Reload data
dataMgr->reloadServerData();
serverSelected(-1);
// delete progDlg;
}
void NetworkPackageManager :: upgradePackages()
{
// We're gonna do an upgrade of all packages
// First warn user that this isn't recommended
+ // TODO - ODevice????
QString text = tr( "WARNING: Upgrading while\nOpie/Qtopia is running\nis NOT recommended!\n\nAre you sure?\n" );
QMessageBox warn( tr( "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
Ipkg ipkg;
ipkg.setOption( "upgrade" );
InstallDlgImpl dlg( &ipkg, tr( "Upgrading installed packages" ), this, tr( "Upgrade" ), true );
dlg.showDlg();
// Reload data
dataMgr->reloadServerData();
serverSelected(-1);
}
}
void NetworkPackageManager :: downloadPackage()
{
bool doUpdate = true;
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 )
@@ -728,142 +729,151 @@ InstallData NetworkPackageManager :: dealWithItem( QCheckListItem *item )
else
item.recreateLinks = false;
// User hit cancel (on dlg - assume remove)
return item;
}
}
void NetworkPackageManager :: displayText( const QString &t )
{
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 )
{
item = (QCheckListItem *)packagesList->firstChild();
start = top;
}
else
item = (QCheckListItem *)start->nextSibling();
if ( item == 0 )
item = (QCheckListItem *)packagesList->firstChild();
do
{
if ( item->text().lower().startsWith( t.lower() ) )
{
packagesList->setSelected( item, true );
packagesList->ensureItemVisible( item );
break;
}
item = (QCheckListItem *)item->nextSibling();
if ( !item )
item = (QCheckListItem *)packagesList->firstChild();
} while ( item != start);
}
-void NetworkPackageManager :: searchForPackage( bool findNext )
+void NetworkPackageManager :: searchForPackage( const QString &text )
{
- bool ok = false;
- if ( !findNext || lastSearchText.isEmpty() )
- lastSearchText = InputDialog::getText( tr( "Search for package" ), tr( "Enter package to search for" ), lastSearchText, &ok, this ).lower();
- else
- ok = true;
-
- if ( ok && !lastSearchText.isEmpty() )
+ if ( !text.isEmpty() )
{
- cout << "searching for " << lastSearchText << 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;
- if ( item->text().lower().find( lastSearchText ) != -1 )
+ if ( item->text().lower().find( text ) != -1 )
{
cout << "matched " << item->text() << endl;
packagesList->ensureItemVisible( item );
packagesList->setCurrentItem( item );
break;
}
}
}
}
void NetworkPackageManager :: showOnlyUninstalledPackages( bool val )
{
showUninstalledPkgs = val;
+ if ( val )
+ {
+ showInstalledPkgs = FALSE;
+ showUpgradedPkgs = FALSE;
+ }
serverSelected( -1 );
}
void NetworkPackageManager :: showOnlyInstalledPackages( bool val )
{
showInstalledPkgs = val;
+ if ( val )
+ {
+ showUninstalledPkgs = FALSE;
+ showUpgradedPkgs = FALSE;
+ }
serverSelected( -1 );
}
void NetworkPackageManager :: showUpgradedPackages( bool val )
{
showUpgradedPkgs = val;
+ if ( val )
+ {
+ showUninstalledPkgs = FALSE;
+ showInstalledPkgs = FALSE;
+ }
serverSelected( -1 );
}
bool NetworkPackageManager :: filterByCategory( bool val )
{
if ( val )
{
if ( categoryFilter == "" )
{
if ( !setFilterCategory() )
return false;
}
categoryFilterEnabled = true;
serverSelected( -1 );
return true;
}
else
{
// Turn off filter
categoryFilterEnabled = false;
serverSelected( -1 );
return false;
}
}
bool NetworkPackageManager :: setFilterCategory( )
{
// Get categories;
CategoryFilterImpl dlg( DataManager::getAvailableCategories(), categoryFilter, this );
if ( dlg.exec() == QDialog::Accepted )
{
categoryFilter = dlg.getSelectedFilter();
if ( categoryFilter == "" )
return false;
categoryFilterEnabled = true;
serverSelected( -1 );
return true;
}
return false;
}
diff --git a/noncore/settings/aqpkg/networkpkgmgr.h b/noncore/settings/aqpkg/networkpkgmgr.h
index efef898..bd005e2 100644
--- a/noncore/settings/aqpkg/networkpkgmgr.h
+++ b/noncore/settings/aqpkg/networkpkgmgr.h
@@ -1,97 +1,96 @@
/***************************************************************************
networkpkgmgr.h - description
-------------------
begin : Mon Aug 26 13:32:30 BST 2002
copyright : (C) 2002 by Andy Qua
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. *
* *
***************************************************************************/
#ifndef NETWORKPKGMGR_H
#define NETWORKPKGMGR_H
#include <qlayout.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
{
Q_OBJECT
public:
/** construtor */
NetworkPackageManager( QWidget* parent=0, const char *name=0 );
/** destructor */
~NetworkPackageManager();
void setDataManager( DataManager *dm );
void selectLocalPackage( const QString &pkg );
void updateData();
- void searchForPackage( bool findNext );
+ 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;
QString currentlySelectedServer;
- QString lastSearchText;
QString categoryFilter;
bool categoryFilterEnabled;
bool showJumpTo;
bool showUninstalledPkgs;
bool showInstalledPkgs;
bool showUpgradedPkgs;
bool downloadEnabled;
void initGui();
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 );
};
#endif