author | drw <drw> | 2003-01-09 01:27:35 (UTC) |
---|---|---|
committer | drw <drw> | 2003-01-09 01:27:35 (UTC) |
commit | c3cfc32f957f8bcbfc8c5c2231b6894c3b94ec94 (patch) (unidiff) | |
tree | 4a4158f8635815f7e7401f0e24f5b63b1b51f33e | |
parent | ece2fe6c6d61df31a4a2e8799878f5a49a2c529e (diff) | |
download | opie-c3cfc32f957f8bcbfc8c5c2231b6894c3b94ec94.zip opie-c3cfc32f957f8bcbfc8c5c2231b6894c3b94ec94.tar.gz opie-c3cfc32f957f8bcbfc8c5c2231b6894c3b94ec94.tar.bz2 |
Updates to main view, menu reorganization, etc.
-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 | |||
@@ -1,65 +1,65 @@ | |||
1 | /*************************************************************************** | 1 | /*************************************************************************** |
2 | main.cpp - description | 2 | main.cpp - description |
3 | ------------------- | 3 | ------------------- |
4 | begin : Mon Aug 26 13:32:30 BST 2002 | 4 | begin : Mon Aug 26 13:32:30 BST 2002 |
5 | copyright : (C) 2002 by Andy Qua | 5 | copyright : (C) 2002 by Andy Qua |
6 | email : andy.qua@blueyonder.co.uk | 6 | email : andy.qua@blueyonder.co.uk |
7 | ***************************************************************************/ | 7 | ***************************************************************************/ |
8 | 8 | ||
9 | /*************************************************************************** | 9 | /*************************************************************************** |
10 | * * | 10 | * * |
11 | * This program is free software; you can redistribute it and/or modify * | 11 | * This program is free software; you can redistribute it and/or modify * |
12 | * it under the terms of the GNU General Public License as published by * | 12 | * it under the terms of the GNU General Public License as published by * |
13 | * the Free Software Foundation; either version 2 of the License, or * | 13 | * the Free Software Foundation; either version 2 of the License, or * |
14 | * (at your option) any later version. * | 14 | * (at your option) any later version. * |
15 | * * | 15 | * * |
16 | ***************************************************************************/ | 16 | ***************************************************************************/ |
17 | 17 | ||
18 | #include <iostream> | 18 | #include <iostream> |
19 | using namespace std; | 19 | using namespace std; |
20 | 20 | ||
21 | #ifdef QWS | 21 | #ifdef QWS |
22 | #include <qpe/qpeapplication.h> | 22 | #include <qpe/qpeapplication.h> |
23 | #include <qpe/qcopenvelope_qws.h> | 23 | #include <qpe/qcopenvelope_qws.h> |
24 | #else | 24 | #else |
25 | #include <qapplication.h> | 25 | #include <qapplication.h> |
26 | #endif | 26 | #endif |
27 | 27 | ||
28 | #include <qobjectdefs.h> | 28 | #include <qobjectdefs.h> |
29 | 29 | ||
30 | #include "mainwin.h" | 30 | #include "mainwin.h" |
31 | #include "server.h" | 31 | #include "server.h" |
32 | 32 | ||
33 | #include "global.h" | 33 | #include "global.h" |
34 | 34 | ||
35 | 35 | ||
36 | int main(int argc, char *argv[]) | 36 | int main(int argc, char *argv[]) |
37 | { | 37 | { |
38 | cout << "Root dir = " << ROOT << endl; | 38 | cout << "Root dir = " << ROOT << endl; |
39 | #ifdef QWS | 39 | #ifdef QWS |
40 | QPEApplication a( argc, argv ); | 40 | QPEApplication a( argc, argv ); |
41 | #else | 41 | #else |
42 | QApplication a( argc, argv ); | 42 | QApplication a( argc, argv ); |
43 | #endif | 43 | #endif |
44 | 44 | ||
45 | #ifdef QWS | 45 | #ifdef QWS |
46 | // Disable suspend mode | 46 | // Disable suspend mode |
47 | cout << "Disabling suspend mode" << endl; | 47 | cout << "Disabling suspend mode" << endl; |
48 | QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::DisableSuspend; | 48 | QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::DisableSuspend; |
49 | #endif | 49 | #endif |
50 | 50 | ||
51 | MainWindow *win = new MainWindow(); | 51 | MainWindow *win = new MainWindow(); |
52 | a.setMainWidget(win); | 52 | a.setMainWidget(win); |
53 | win->show(); | 53 | win->showMaximized(); |
54 | 54 | ||
55 | a.exec(); | 55 | a.exec(); |
56 | 56 | ||
57 | #ifdef QWS | 57 | #ifdef QWS |
58 | // Reenable suspend mode | 58 | // Reenable suspend mode |
59 | cout << "Enabling suspend mode" << endl; | 59 | cout << "Enabling suspend mode" << endl; |
60 | QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable; | 60 | QCopEnvelope( "QPE/System", "setScreenSaverMode(int)" ) << QPEApplication::Enable; |
61 | #endif | 61 | #endif |
62 | #ifdef _DEBUG | 62 | #ifdef _DEBUG |
63 | DumpUnfreed(); | 63 | DumpUnfreed(); |
64 | #endif | 64 | #endif |
65 | } | 65 | } |
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 | |||
@@ -1,247 +1,355 @@ | |||
1 | /*************************************************************************** | 1 | /*************************************************************************** |
2 | mainwin.cpp - description | 2 | mainwin.cpp - description |
3 | ------------------- | 3 | ------------------- |
4 | begin : Mon Aug 26 13:32:30 BST 2002 | 4 | begin : Mon Aug 26 13:32:30 BST 2002 |
5 | copyright : (C) 2002 by Andy Qua | 5 | copyright : (C) 2002 by Andy Qua |
6 | email : andy.qua@blueyonder.co.uk | 6 | email : andy.qua@blueyonder.co.uk |
7 | ***************************************************************************/ | 7 | ***************************************************************************/ |
8 | 8 | ||
9 | /*************************************************************************** | 9 | /*************************************************************************** |
10 | * * | 10 | * * |
11 | * This program is free software; you can redistribute it and/or modify * | 11 | * This program is free software; you can redistribute it and/or modify * |
12 | * it under the terms of the GNU General Public License as published by * | 12 | * it under the terms of the GNU General Public License as published by * |
13 | * the Free Software Foundation; either version 2 of the License, or * | 13 | * the Free Software Foundation; either version 2 of the License, or * |
14 | * (at your option) any later version. * | 14 | * (at your option) any later version. * |
15 | * * | 15 | * * |
16 | ***************************************************************************/ | 16 | ***************************************************************************/ |
17 | 17 | ||
18 | #include <iostream> | 18 | #include <iostream> |
19 | using namespace std; | 19 | using namespace std; |
20 | 20 | ||
21 | #include <qpe/qpemenubar.h> | ||
22 | #include <qpe/qpetoolbar.h> | ||
23 | #include <qpe/resource.h> | ||
24 | |||
25 | #include <qaction.h> | ||
21 | #include <qmenubar.h> | 26 | #include <qmenubar.h> |
22 | #include <qmessagebox.h> | 27 | #include <qmessagebox.h> |
23 | #include <qpopupmenu.h> | 28 | #include <qpopupmenu.h> |
24 | #include <qtimer.h> | 29 | #include <qtimer.h> |
30 | #include <qwidgetstack.h> | ||
25 | 31 | ||
26 | #include "mainwin.h" | 32 | #include "mainwin.h" |
27 | #include "progresswidget.h" | 33 | #include "progresswidget.h" |
28 | #include "datamgr.h" | 34 | #include "datamgr.h" |
29 | #include "networkpkgmgr.h" | 35 | #include "networkpkgmgr.h" |
30 | #include "settingsimpl.h" | 36 | #include "settingsimpl.h" |
31 | #include "helpwindow.h" | 37 | #include "helpwindow.h" |
32 | #include "utils.h" | 38 | #include "utils.h" |
33 | #include "global.h" | 39 | #include "global.h" |
34 | 40 | ||
35 | MainWindow :: MainWindow( QWidget *p, char *name ) | 41 | MainWindow :: MainWindow() |
36 | :QMainWindow( p, name ) | 42 | :QMainWindow( 0x0, 0x0, WStyle_ContextHelp ) |
37 | { | 43 | { |
38 | #ifdef QWS | ||
39 | showMaximized(); | ||
40 | #endif | ||
41 | |||
42 | setCaption( tr( "AQPkg - Package Manager" ) ); | 44 | setCaption( tr( "AQPkg - Package Manager" ) ); |
43 | 45 | ||
44 | // Create our menu | 46 | // Create UI widgets |
45 | help = new QPopupMenu( this ); | 47 | progressWindow = new ProgressWidget( this ); |
46 | help->insertItem( tr( "General" ), this, SLOT(displayHelp()) ); | 48 | networkPkgWindow = new NetworkPackageManager( this ); |
47 | help->insertItem( tr( "About" ), this, SLOT(displayAbout()) ); | 49 | |
48 | 50 | // Build menu and tool bars | |
49 | settings = new QPopupMenu( this ); | 51 | setToolBarsMovable( FALSE ); |
50 | settings->insertItem( tr( "Settings" ), this, SLOT(displaySettings()) ); | 52 | |
51 | 53 | QPEToolBar *bar = new QPEToolBar( this ); | |
52 | edit = new QPopupMenu( this ); | 54 | bar->setHorizontalStretchable( TRUE ); |
53 | edit->insertItem( tr( "Find" ), this, SLOT(searchForPackage()) ); | 55 | QPEMenuBar *mb = new QPEMenuBar( bar ); |
54 | edit->insertItem( tr( "Find Next" ), this, SLOT(repeatSearchForPackage()) ); | 56 | mb->setMargin( 0 ); |
55 | 57 | bar = new QPEToolBar( this ); | |
56 | filter = new QPopupMenu( this ); | 58 | |
57 | mnuShowUninstalledPkgsId = filter->insertItem( tr( "Show Non-Installed Packages" ), this, SLOT(filterUninstalledPackages()) ); | 59 | // Packages menu |
58 | mnuShowInstalledPkgsId = filter->insertItem( tr( "Show Installed Packages" ), this, SLOT(filterInstalledPackages()) ); | 60 | QPopupMenu *popup = new QPopupMenu( this ); |
59 | mnuShowUpgradedPkgsId = filter->insertItem( tr( "Show Updated Packages" ), this, SLOT(filterUpgradedPackages()) ); | 61 | |
60 | filter->insertSeparator(); | 62 | QAction *a = new QAction( tr( "Update lists" ), Resource::loadPixmap( "aqpkg/update" ), QString::null, 0, this, 0 ); |
61 | mnuFilterByCategory = filter->insertItem( tr( "Filter By Category" ), this, SLOT(filterCategory()) ); | 63 | a->setWhatsThis( tr( "Click here to update package lists from servers." ) ); |
62 | mnuSetFilterCategory = filter->insertItem( tr( "Set Filter Category" ), this, SLOT(setFilterCategory()) ); | 64 | connect( a, SIGNAL( activated() ), networkPkgWindow, SLOT( updateServer() ) ); |
63 | 65 | a->addTo( popup ); | |
64 | // Create the main menu | 66 | a->addTo( bar ); |
65 | menu = menuBar(); //new QMenuBar( this ); | 67 | |
66 | menu->insertItem( tr( "Settings" ), settings ); | 68 | actionUpgrade = new QAction( tr( "Upgrade" ), Resource::loadPixmap( "aqpkg/upgrade" ), QString::null, 0, this, 0 ); |
67 | menu->insertItem( tr( "Edit" ), edit ); | 69 | actionUpgrade->setWhatsThis( tr( "Click here to upgrade all installed packages if a newer version is available." ) ); |
68 | menu->insertItem( tr( "Filter" ), filter ); | 70 | connect( actionUpgrade, SIGNAL( activated() ), networkPkgWindow, SLOT( upgradePackages() ) ); |
69 | menu->insertItem( tr( "Help" ), help ); | 71 | actionUpgrade->addTo( popup ); |
70 | 72 | actionUpgrade->addTo( bar ); | |
71 | // Create UI widgets | 73 | |
72 | stack = new QWidgetStack( this ); | 74 | iconDownload = Resource::loadPixmap( "aqpkg/download" ); |
73 | 75 | iconRemove = Resource::loadPixmap( "aqpkg/remove" ); | |
74 | progressWindow = new ProgressWidget( stack ); | 76 | actionDownload = new QAction( tr( "Download" ), iconDownload, QString::null, 0, this, 0 ); |
75 | stack->addWidget( progressWindow, 2 ); | 77 | actionDownload->setWhatsThis( tr( "Click here to download the currently selected package(s)." ) ); |
76 | 78 | connect( actionDownload, SIGNAL( activated() ), networkPkgWindow, SLOT( downloadPackage() ) ); | |
77 | networkPkgWindow = new NetworkPackageManager( stack ); | 79 | actionDownload->addTo( popup ); |
78 | connect( networkPkgWindow, SIGNAL( appRaiseMainWidget() ), this, SLOT( raiseMainWidget() ) ); | 80 | actionDownload->addTo( bar ); |
79 | connect( networkPkgWindow, SIGNAL( appRaiseProgressWidget() ), this, SLOT( raiseProgressWidget() ) ); | 81 | |
80 | connect( networkPkgWindow, SIGNAL( progressSetSteps( int ) ), progressWindow, SLOT( setSteps( int ) ) ); | 82 | a = new QAction( tr( "Apply changes" ), Resource::loadPixmap( "aqpkg/apply" ), QString::null, 0, this, 0 ); |
81 | connect( networkPkgWindow, SIGNAL( progressSetMessage( const QString & ) ), | 83 | a->setWhatsThis( tr( "Click here to install, remove or upgrade currently selected package(s)." ) ); |
82 | progressWindow, SLOT( setMessage( const QString & ) ) ); | 84 | connect( a, SIGNAL( activated() ), networkPkgWindow, SLOT( applyChanges() ) ); |
83 | connect( networkPkgWindow, SIGNAL( progressUpdate( int ) ), progressWindow, SLOT( update( int ) ) ); | 85 | a->addTo( popup ); |
84 | stack->addWidget( networkPkgWindow, 1 ); | 86 | a->addTo( bar ); |
85 | 87 | ||
86 | setCentralWidget( stack ); | 88 | mb->insertItem( tr( "Packages" ), popup ); |
87 | stack->raiseWidget( progressWindow ); | 89 | |
88 | 90 | // Search menu | |
89 | // Delayed call to finish initialization | 91 | popup = new QPopupMenu( this ); |
90 | QTimer::singleShot( 100, this, SLOT( init() ) ); | 92 | |
91 | 93 | a = new QAction( tr( "Find" ), Resource::loadPixmap( "find" ), QString::null, 0, this, 0 ); | |
94 | a->setWhatsThis( tr( "Click here to search for a specific package." ) ); | ||
95 | connect( a, SIGNAL( activated() ), this, SLOT( searchForPackage() ) ); | ||
96 | a->addTo( popup ); | ||
97 | |||
98 | a = new QAction( tr( "Find next" ), Resource::loadPixmap( "next" ), QString::null, 0, this, 0 ); | ||
99 | a->setWhatsThis( tr( "Click here to search for the next package." ) ); | ||
100 | connect( a, SIGNAL( activated() ), this, SLOT( repeatSearchForPackage() ) ); | ||
101 | a->addTo( popup ); | ||
102 | |||
103 | // Show 'quick jump' keypad? | ||
104 | |||
105 | popup->insertSeparator(); | ||
106 | |||
107 | a = new QAction( tr( "Filter by category" ), Resource::loadPixmap( "aqpkg/filter" ), QString::null, 0, this, 0 ); | ||
108 | a->setWhatsThis( tr( "Click here to list packages belonging to one category." ) ); | ||
109 | connect( a, SIGNAL( activated() ), this, SLOT( filterCategory() ) ); | ||
110 | a->addTo( popup ); | ||
111 | |||
112 | a = new QAction( tr( "Set filter category" ), QString::null, 0, this, 0 ); | ||
113 | a->setWhatsThis( tr( "Click here to change package category to used filter." ) ); | ||
114 | connect( a, SIGNAL( activated() ), this, SLOT( setFilterCategory() ) ); | ||
115 | a->addTo( popup ); | ||
116 | |||
117 | mb->insertItem( tr( "Search" ), popup ); | ||
118 | |||
119 | |||
120 | // View menu | ||
121 | popup = new QPopupMenu( this ); | ||
122 | |||
123 | a = new QAction( tr( "Show packages not installed" ), QString::null, 0, this, 0 ); | ||
124 | a->setWhatsThis( tr( "Click here to show packages available which have not been installed." ) ); | ||
125 | connect( a, SIGNAL( activated() ), this, SLOT( filterUninstalledPackages() ) ); | ||
126 | a->addTo( popup ); | ||
127 | |||
128 | a = new QAction( tr( "Show installed packages" ), QString::null, 0, this, 0 ); | ||
129 | a->setWhatsThis( tr( "Click here to show packages currently installed on this device." ) ); | ||
130 | connect( a, SIGNAL( activated() ), this, SLOT( filterInstalledPackages() ) ); | ||
131 | a->addTo( popup ); | ||
132 | |||
133 | a = new QAction( tr( "Show updated packages" ), QString::null, 0, this, 0 ); | ||
134 | a->setWhatsThis( tr( "Click here to show packages currently installed on this device which have a newer version available." ) ); | ||
135 | connect( a, SIGNAL( activated() ), this, SLOT( filterUpgradedPackages() ) ); | ||
136 | a->addTo( popup ); | ||
137 | |||
138 | popup->insertSeparator(); | ||
139 | |||
140 | a = new QAction( tr( "Configure" ), Resource::loadPixmap( "aqpkg/config" ), QString::null, 0, this, 0 ); | ||
141 | a->setWhatsThis( tr( "Click here to configure this application." ) ); | ||
142 | connect( a, SIGNAL( activated() ), this, SLOT( displaySettings() ) ); | ||
143 | a->addTo( popup ); | ||
144 | |||
145 | popup->insertSeparator(); | ||
146 | |||
147 | a = new QAction( tr( "Help" ), Resource::loadPixmap( "help_icon" ), QString::null, 0, this, 0 ); | ||
148 | a->setWhatsThis( tr( "Click here for help." ) ); | ||
149 | connect( a, SIGNAL( activated() ), this, SLOT( displayHelp() ) ); | ||
150 | a->addTo( popup ); | ||
151 | |||
152 | a = new QAction( tr( "About" ), Resource::loadPixmap( "UtilsIcon" ), QString::null, 0, this, 0 ); | ||
153 | a->setWhatsThis( tr( "Click here for software version information." ) ); | ||
154 | connect( a, SIGNAL( activated() ), this, SLOT( displayAbout() ) ); | ||
155 | a->addTo( popup ); | ||
156 | |||
157 | mb->insertItem( tr( "View" ), popup ); | ||
158 | |||
159 | // Create widget stack and add UI widgets | ||
160 | stack = new QWidgetStack( this ); | ||
161 | stack->addWidget( progressWindow, 2 ); | ||
162 | stack->addWidget( networkPkgWindow, 1 ); | ||
163 | setCentralWidget( stack ); | ||
164 | stack->raiseWidget( progressWindow ); | ||
165 | |||
166 | // Delayed call to finish initialization | ||
167 | QTimer::singleShot( 100, this, SLOT( init() ) ); | ||
92 | } | 168 | } |
93 | 169 | ||
94 | MainWindow :: ~MainWindow() | 170 | MainWindow :: ~MainWindow() |
95 | { | 171 | { |
96 | delete mgr; | 172 | delete mgr; |
97 | } | 173 | } |
98 | 174 | ||
99 | void MainWindow :: init() | 175 | void MainWindow :: init() |
100 | { | 176 | { |
101 | stack->raiseWidget( progressWindow ); | 177 | stack->raiseWidget( progressWindow ); |
178 | |||
102 | mgr = new DataManager(); | 179 | mgr = new DataManager(); |
103 | connect( mgr, SIGNAL( progressSetSteps( int ) ), progressWindow, SLOT( setSteps( int ) ) ); | 180 | connect( mgr, SIGNAL( progressSetSteps( int ) ), progressWindow, SLOT( setSteps( int ) ) ); |
104 | connect( mgr, SIGNAL( progressSetMessage( const QString & ) ), | 181 | connect( mgr, SIGNAL( progressSetMessage( const QString & ) ), |
105 | progressWindow, SLOT( setMessage( const QString & ) ) ); | 182 | progressWindow, SLOT( setMessage( const QString & ) ) ); |
106 | connect( mgr, SIGNAL( progressUpdate( int ) ), progressWindow, SLOT( update( int ) ) ); | 183 | connect( mgr, SIGNAL( progressUpdate( int ) ), progressWindow, SLOT( update( int ) ) ); |
107 | mgr->loadServers(); | 184 | mgr->loadServers(); |
185 | |||
108 | networkPkgWindow->setDataManager( mgr ); | 186 | networkPkgWindow->setDataManager( mgr ); |
109 | networkPkgWindow->updateData(); | 187 | networkPkgWindow->updateData(); |
188 | connect( networkPkgWindow, SIGNAL( appRaiseMainWidget() ), this, SLOT( raiseMainWidget() ) ); | ||
189 | connect( networkPkgWindow, SIGNAL( appRaiseProgressWidget() ), this, SLOT( raiseProgressWidget() ) ); | ||
190 | connect( networkPkgWindow, SIGNAL( appEnableUpgrade( bool ) ), this, SLOT( enableUpgrade( bool ) ) ); | ||
191 | connect( networkPkgWindow, SIGNAL( appEnableDownload( bool ) ), this, SLOT( enableDownload( bool ) ) ); | ||
192 | connect( networkPkgWindow, SIGNAL( progressSetSteps( int ) ), progressWindow, SLOT( setSteps( int ) ) ); | ||
193 | connect( networkPkgWindow, SIGNAL( progressSetMessage( const QString & ) ), | ||
194 | progressWindow, SLOT( setMessage( const QString & ) ) ); | ||
195 | connect( networkPkgWindow, SIGNAL( progressUpdate( int ) ), progressWindow, SLOT( update( int ) ) ); | ||
196 | |||
110 | stack->raiseWidget( networkPkgWindow ); | 197 | stack->raiseWidget( networkPkgWindow ); |
111 | } | 198 | } |
112 | 199 | ||
113 | void MainWindow :: setDocument( const QString &doc ) | 200 | void MainWindow :: setDocument( const QString &doc ) |
114 | { | 201 | { |
115 | // Remove path from package | 202 | // Remove path from package |
116 | QString package = Utils::getPackageNameFromIpkFilename( doc ); | 203 | QString package = Utils::getPackageNameFromIpkFilename( doc ); |
117 | std::cout << "Selecting package " << package << std::endl; | 204 | std::cout << "Selecting package " << package << std::endl; |
118 | networkPkgWindow->selectLocalPackage( package ); | 205 | networkPkgWindow->selectLocalPackage( package ); |
119 | } | 206 | } |
120 | 207 | ||
121 | void MainWindow :: displaySettings() | 208 | void MainWindow :: displaySettings() |
122 | { | 209 | { |
123 | SettingsImpl *dlg = new SettingsImpl( mgr, this, "Settings", true ); | 210 | SettingsImpl *dlg = new SettingsImpl( mgr, this, "Settings", true ); |
124 | if ( dlg->showDlg( 0 ) ) | 211 | if ( dlg->showDlg( 0 ) ) |
125 | networkPkgWindow->updateData(); | 212 | networkPkgWindow->updateData(); |
126 | delete dlg; | 213 | delete dlg; |
127 | } | 214 | } |
128 | 215 | ||
129 | void MainWindow :: displayHelp() | 216 | void MainWindow :: displayHelp() |
130 | { | 217 | { |
131 | HelpWindow *dlg = new HelpWindow( this ); | 218 | HelpWindow *dlg = new HelpWindow( this ); |
132 | dlg->exec(); | 219 | dlg->exec(); |
133 | delete dlg; | 220 | delete dlg; |
134 | } | 221 | } |
135 | 222 | ||
136 | void MainWindow :: searchForPackage() | 223 | void MainWindow :: searchForPackage() |
137 | { | 224 | { |
138 | networkPkgWindow->searchForPackage( false ); | 225 | networkPkgWindow->searchForPackage( false ); |
139 | } | 226 | } |
140 | 227 | ||
141 | void MainWindow :: repeatSearchForPackage() | 228 | void MainWindow :: repeatSearchForPackage() |
142 | { | 229 | { |
143 | networkPkgWindow->searchForPackage( true ); | 230 | networkPkgWindow->searchForPackage( true ); |
144 | } | 231 | } |
145 | 232 | ||
146 | void MainWindow :: displayAbout() | 233 | void MainWindow :: displayAbout() |
147 | { | 234 | { |
148 | QMessageBox::about( this, tr( "About AQPkg" ), tr( VERSION_TEXT ) ); | 235 | QMessageBox::about( this, tr( "About AQPkg" ), tr( VERSION_TEXT ) ); |
149 | } | 236 | } |
150 | 237 | ||
151 | 238 | ||
152 | void MainWindow :: filterUninstalledPackages() | 239 | void MainWindow :: filterUninstalledPackages() |
153 | { | 240 | { |
154 | bool val; | 241 | bool val; |
155 | if ( filter->isItemChecked( mnuShowUninstalledPkgsId ) ) | 242 | if ( filter->isItemChecked( mnuShowUninstalledPkgsId ) ) |
156 | { | 243 | { |
157 | val = false; | 244 | val = false; |
158 | filter->setItemChecked( mnuShowUninstalledPkgsId, false ); | 245 | filter->setItemChecked( mnuShowUninstalledPkgsId, false ); |
159 | } | 246 | } |
160 | else | 247 | else |
161 | { | 248 | { |
162 | val = true; | 249 | val = true; |
163 | filter->setItemChecked( mnuShowUninstalledPkgsId, true ); | 250 | filter->setItemChecked( mnuShowUninstalledPkgsId, true ); |
164 | } | 251 | } |
165 | 252 | ||
166 | filter->setItemChecked( mnuShowInstalledPkgsId, false ); | 253 | filter->setItemChecked( mnuShowInstalledPkgsId, false ); |
167 | networkPkgWindow->showOnlyInstalledPackages( false ); | 254 | networkPkgWindow->showOnlyInstalledPackages( false ); |
168 | filter->setItemChecked( mnuShowUpgradedPkgsId, false ); | 255 | filter->setItemChecked( mnuShowUpgradedPkgsId, false ); |
169 | networkPkgWindow->showUpgradedPackages( false ); | 256 | networkPkgWindow->showUpgradedPackages( false ); |
170 | 257 | ||
171 | networkPkgWindow->showOnlyUninstalledPackages( val ); | 258 | networkPkgWindow->showOnlyUninstalledPackages( val ); |
172 | 259 | ||
173 | } | 260 | } |
174 | 261 | ||
175 | void MainWindow :: filterInstalledPackages() | 262 | void MainWindow :: filterInstalledPackages() |
176 | { | 263 | { |
177 | bool val; | 264 | bool val; |
178 | if ( filter->isItemChecked( mnuShowInstalledPkgsId ) ) | 265 | if ( filter->isItemChecked( mnuShowInstalledPkgsId ) ) |
179 | { | 266 | { |
180 | val = false; | 267 | val = false; |
181 | filter->setItemChecked( mnuShowInstalledPkgsId, false ); | 268 | filter->setItemChecked( mnuShowInstalledPkgsId, false ); |
182 | } | 269 | } |
183 | else | 270 | else |
184 | { | 271 | { |
185 | val = true; | 272 | val = true; |
186 | filter->setItemChecked( mnuShowInstalledPkgsId, true ); | 273 | filter->setItemChecked( mnuShowInstalledPkgsId, true ); |
187 | } | 274 | } |
188 | 275 | ||
189 | filter->setItemChecked( mnuShowUninstalledPkgsId, false ); | 276 | filter->setItemChecked( mnuShowUninstalledPkgsId, false ); |
190 | networkPkgWindow->showOnlyUninstalledPackages( false ); | 277 | networkPkgWindow->showOnlyUninstalledPackages( false ); |
191 | filter->setItemChecked( mnuShowUpgradedPkgsId, false ); | 278 | filter->setItemChecked( mnuShowUpgradedPkgsId, false ); |
192 | networkPkgWindow->showUpgradedPackages( false ); | 279 | networkPkgWindow->showUpgradedPackages( false ); |
193 | 280 | ||
194 | networkPkgWindow->showOnlyInstalledPackages( val ); | 281 | networkPkgWindow->showOnlyInstalledPackages( val ); |
195 | } | 282 | } |
196 | 283 | ||
197 | void MainWindow :: filterUpgradedPackages() | 284 | void MainWindow :: filterUpgradedPackages() |
198 | { | 285 | { |
199 | bool val; | 286 | bool val; |
200 | if ( filter->isItemChecked( mnuShowUpgradedPkgsId ) ) | 287 | if ( filter->isItemChecked( mnuShowUpgradedPkgsId ) ) |
201 | { | 288 | { |
202 | val = false; | 289 | val = false; |
203 | filter->setItemChecked( mnuShowUpgradedPkgsId, false ); | 290 | filter->setItemChecked( mnuShowUpgradedPkgsId, false ); |
204 | } | 291 | } |
205 | else | 292 | else |
206 | { | 293 | { |
207 | val = true; | 294 | val = true; |
208 | filter->setItemChecked( mnuShowUpgradedPkgsId, true ); | 295 | filter->setItemChecked( mnuShowUpgradedPkgsId, true ); |
209 | } | 296 | } |
210 | 297 | ||
211 | filter->setItemChecked( mnuShowUninstalledPkgsId, false ); | 298 | filter->setItemChecked( mnuShowUninstalledPkgsId, false ); |
212 | networkPkgWindow->showOnlyUninstalledPackages( false ); | 299 | networkPkgWindow->showOnlyUninstalledPackages( false ); |
213 | filter->setItemChecked( mnuShowInstalledPkgsId, false ); | 300 | filter->setItemChecked( mnuShowInstalledPkgsId, false ); |
214 | networkPkgWindow->showOnlyInstalledPackages( false ); | 301 | networkPkgWindow->showOnlyInstalledPackages( false ); |
215 | 302 | ||
216 | networkPkgWindow->showUpgradedPackages( val ); | 303 | networkPkgWindow->showUpgradedPackages( val ); |
217 | } | 304 | } |
218 | 305 | ||
219 | void MainWindow :: setFilterCategory() | 306 | void MainWindow :: setFilterCategory() |
220 | { | 307 | { |
221 | if ( networkPkgWindow->setFilterCategory( ) ) | 308 | if ( networkPkgWindow->setFilterCategory( ) ) |
222 | filter->setItemChecked( mnuFilterByCategory, true ); | 309 | filter->setItemChecked( mnuFilterByCategory, true ); |
223 | } | 310 | } |
224 | 311 | ||
225 | void MainWindow :: filterCategory() | 312 | void MainWindow :: filterCategory() |
226 | { | 313 | { |
227 | if ( filter->isItemChecked( mnuFilterByCategory ) ) | 314 | if ( filter->isItemChecked( mnuFilterByCategory ) ) |
228 | { | 315 | { |
229 | networkPkgWindow->filterByCategory( false ); | 316 | networkPkgWindow->filterByCategory( false ); |
230 | filter->setItemChecked( mnuFilterByCategory, false ); | 317 | filter->setItemChecked( mnuFilterByCategory, false ); |
231 | } | 318 | } |
232 | else | 319 | else |
233 | { | 320 | { |
234 | if ( networkPkgWindow->filterByCategory( true ) ) | 321 | if ( networkPkgWindow->filterByCategory( true ) ) |
235 | filter->setItemChecked( mnuFilterByCategory, true ); | 322 | filter->setItemChecked( mnuFilterByCategory, true ); |
236 | } | 323 | } |
237 | } | 324 | } |
238 | 325 | ||
239 | void MainWindow :: raiseMainWidget() | 326 | void MainWindow :: raiseMainWidget() |
240 | { | 327 | { |
241 | stack->raiseWidget( networkPkgWindow ); | 328 | stack->raiseWidget( networkPkgWindow ); |
242 | } | 329 | } |
243 | 330 | ||
244 | void MainWindow :: raiseProgressWidget() | 331 | void MainWindow :: raiseProgressWidget() |
245 | { | 332 | { |
246 | stack->raiseWidget( progressWindow ); | 333 | stack->raiseWidget( progressWindow ); |
247 | } | 334 | } |
335 | |||
336 | void MainWindow :: enableUpgrade( bool enabled ) | ||
337 | { | ||
338 | actionUpgrade->setEnabled( enabled ); | ||
339 | } | ||
340 | |||
341 | void MainWindow :: enableDownload( bool enabled ) | ||
342 | { | ||
343 | if ( enabled ) | ||
344 | { | ||
345 | actionDownload->setIconSet( iconDownload ); | ||
346 | actionDownload->setText( tr( "Download" ) ); | ||
347 | actionDownload->setWhatsThis( tr( "Click here to download the currently selected package(s)." ) ); | ||
348 | } | ||
349 | else | ||
350 | { | ||
351 | actionDownload->setIconSet( iconRemove ); | ||
352 | actionDownload->setText( tr( "Remove" ) ); | ||
353 | actionDownload->setWhatsThis( tr( "Click here to uninstall the currently selected package(s)." ) ); | ||
354 | } | ||
355 | } | ||
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 | |||
@@ -1,73 +1,83 @@ | |||
1 | /*************************************************************************** | 1 | /*************************************************************************** |
2 | mainwin.h - description | 2 | mainwin.h - description |
3 | ------------------- | 3 | ------------------- |
4 | begin : Mon Aug 26 13:32:30 BST 2002 | 4 | begin : Mon Aug 26 13:32:30 BST 2002 |
5 | copyright : (C) 2002 by Andy Qua | 5 | copyright : (C) 2002 by Andy Qua |
6 | email : andy.qua@blueyonder.co.uk | 6 | email : andy.qua@blueyonder.co.uk |
7 | ***************************************************************************/ | 7 | ***************************************************************************/ |
8 | 8 | ||
9 | /*************************************************************************** | 9 | /*************************************************************************** |
10 | * * | 10 | * * |
11 | * This program is free software; you can redistribute it and/or modify * | 11 | * This program is free software; you can redistribute it and/or modify * |
12 | * it under the terms of the GNU General Public License as published by * | 12 | * it under the terms of the GNU General Public License as published by * |
13 | * the Free Software Foundation; either version 2 of the License, or * | 13 | * the Free Software Foundation; either version 2 of the License, or * |
14 | * (at your option) any later version. * | 14 | * (at your option) any later version. * |
15 | * * | 15 | * * |
16 | ***************************************************************************/ | 16 | ***************************************************************************/ |
17 | 17 | ||
18 | #ifndef MAINWIN_H | 18 | #ifndef MAINWIN_H |
19 | #define MAINWIN_H | 19 | #define MAINWIN_H |
20 | 20 | ||
21 | #include <qmainwindow.h> | 21 | #include <qmainwindow.h> |
22 | #include <qwidgetstack.h> | 22 | #include <qpixmap.h> |
23 | //#include <qwidgetstack.h> | ||
23 | 24 | ||
25 | class QWidgetStack; | ||
26 | class QPEToolBar; | ||
27 | class QAction; | ||
24 | class ProgressWidget; | 28 | class ProgressWidget; |
25 | class NetworkPackageManager; | 29 | class NetworkPackageManager; |
26 | class DataManager; | 30 | class DataManager; |
27 | 31 | ||
28 | class MainWindow :public QMainWindow | 32 | class MainWindow :public QMainWindow |
29 | { | 33 | { |
30 | Q_OBJECT | 34 | Q_OBJECT |
31 | public: | 35 | public: |
32 | 36 | ||
33 | MainWindow( QWidget *p = 0, char *name = 0 ); | 37 | MainWindow(); |
34 | ~MainWindow(); | 38 | ~MainWindow(); |
35 | 39 | ||
36 | private: | 40 | private: |
37 | DataManager *mgr; | 41 | DataManager *mgr; |
38 | 42 | ||
39 | QMenuBar *menu; | 43 | QMenuBar *menu; |
40 | QPopupMenu *help; | 44 | QPopupMenu *help; |
41 | QPopupMenu *settings; | 45 | QPopupMenu *settings; |
42 | QPopupMenu *edit; | 46 | QPopupMenu *edit; |
43 | QPopupMenu *filter; | 47 | QPopupMenu *filter; |
44 | QWidgetStack *stack; | 48 | QWidgetStack *stack; |
45 | 49 | QAction *actionUpgrade; | |
50 | QAction *actionDownload; | ||
51 | QPixmap iconDownload; | ||
52 | QPixmap iconRemove; | ||
53 | |||
46 | NetworkPackageManager *networkPkgWindow; | 54 | NetworkPackageManager *networkPkgWindow; |
47 | ProgressWidget *progressWindow; | 55 | ProgressWidget *progressWindow; |
48 | 56 | ||
49 | int mnuShowUninstalledPkgsId; | 57 | int mnuShowUninstalledPkgsId; |
50 | int mnuShowInstalledPkgsId; | 58 | int mnuShowInstalledPkgsId; |
51 | int mnuShowUpgradedPkgsId; | 59 | int mnuShowUpgradedPkgsId; |
52 | int mnuFilterByCategory; | 60 | int mnuFilterByCategory; |
53 | int mnuSetFilterCategory; | 61 | int mnuSetFilterCategory; |
54 | 62 | ||
55 | public slots: | 63 | public slots: |
56 | void setDocument( const QString &doc ); | 64 | void setDocument( const QString &doc ); |
57 | void displayHelp(); | 65 | void displayHelp(); |
58 | void searchForPackage(); | 66 | void searchForPackage(); |
59 | void repeatSearchForPackage(); | 67 | void repeatSearchForPackage(); |
60 | void displayAbout(); | 68 | void displayAbout(); |
61 | void displaySettings(); | 69 | void displaySettings(); |
62 | void filterUninstalledPackages(); | 70 | void filterUninstalledPackages(); |
63 | void filterInstalledPackages(); | 71 | void filterInstalledPackages(); |
64 | void filterUpgradedPackages(); | 72 | void filterUpgradedPackages(); |
65 | void filterCategory(); | 73 | void filterCategory(); |
66 | void setFilterCategory(); | 74 | void setFilterCategory(); |
67 | void raiseMainWidget(); | 75 | void raiseMainWidget(); |
68 | void raiseProgressWidget(); | 76 | void raiseProgressWidget(); |
77 | void enableUpgrade( bool ); | ||
78 | void enableDownload( bool ); | ||
69 | 79 | ||
70 | private slots: | 80 | private slots: |
71 | void init(); | 81 | void init(); |
72 | }; | 82 | }; |
73 | #endif | 83 | #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 | |||
@@ -1,889 +1,869 @@ | |||
1 | /*************************************************************************** | 1 | /*************************************************************************** |
2 | networkpkgmgr.cpp - description | 2 | networkpkgmgr.cpp - description |
3 | ------------------- | 3 | ------------------- |
4 | begin : Mon Aug 26 13:32:30 BST 2002 | 4 | begin : Mon Aug 26 13:32:30 BST 2002 |
5 | copyright : (C) 2002 by Andy Qua | 5 | copyright : (C) 2002 by Andy Qua |
6 | email : andy.qua@blueyonder.co.uk | 6 | email : andy.qua@blueyonder.co.uk |
7 | ***************************************************************************/ | 7 | ***************************************************************************/ |
8 | 8 | ||
9 | /*************************************************************************** | 9 | /*************************************************************************** |
10 | * * | 10 | * * |
11 | * This program is free software; you can redistribute it and/or modify * | 11 | * This program is free software; you can redistribute it and/or modify * |
12 | * it under the terms of the GNU General Public License as published by * | 12 | * it under the terms of the GNU General Public License as published by * |
13 | * the Free Software Foundation; either version 2 of the License, or * | 13 | * the Free Software Foundation; either version 2 of the License, or * |
14 | * (at your option) any later version. * | 14 | * (at your option) any later version. * |
15 | * * | 15 | * * |
16 | ***************************************************************************/ | 16 | ***************************************************************************/ |
17 | 17 | ||
18 | #include <fstream> | 18 | #include <fstream> |
19 | #include <iostream> | 19 | #include <iostream> |
20 | using namespace std; | 20 | using namespace std; |
21 | 21 | ||
22 | #include <unistd.h> | 22 | #include <unistd.h> |
23 | #include <stdlib.h> | 23 | #include <stdlib.h> |
24 | #include <linux/limits.h> | 24 | #include <linux/limits.h> |
25 | 25 | ||
26 | #ifdef QWS | 26 | #ifdef QWS |
27 | #include <qpe/qpeapplication.h> | 27 | #include <qpe/qpeapplication.h> |
28 | #include <qpe/qcopenvelope_qws.h> | 28 | #include <qpe/qcopenvelope_qws.h> |
29 | #include <qpe/config.h> | 29 | #include <qpe/config.h> |
30 | #else | 30 | #else |
31 | #include <qapplication.h> | 31 | #include <qapplication.h> |
32 | #endif | 32 | #endif |
33 | #include <qlabel.h> | 33 | #include <qlabel.h> |
34 | #include <qfile.h> | 34 | #include <qfile.h> |
35 | #include <qmessagebox.h> | 35 | #include <qmessagebox.h> |
36 | 36 | ||
37 | #include "datamgr.h" | 37 | #include "datamgr.h" |
38 | #include "networkpkgmgr.h" | 38 | #include "networkpkgmgr.h" |
39 | #include "installdlgimpl.h" | 39 | #include "installdlgimpl.h" |
40 | #include "ipkg.h" | 40 | #include "ipkg.h" |
41 | #include "inputdlg.h" | 41 | #include "inputdlg.h" |
42 | #include "letterpushbutton.h" | 42 | #include "letterpushbutton.h" |
43 | #include "categoryfilterimpl.h" | 43 | #include "categoryfilterimpl.h" |
44 | 44 | ||
45 | #include "global.h" | 45 | #include "global.h" |
46 | 46 | ||
47 | extern int compareVersions( const char *v1, const char *v2 ); | 47 | extern int compareVersions( const char *v1, const char *v2 ); |
48 | 48 | ||
49 | NetworkPackageManager::NetworkPackageManager( QWidget *parent, const char *name ) | 49 | NetworkPackageManager::NetworkPackageManager( QWidget *parent, const char *name ) |
50 | : QWidget(parent, name) | 50 | : QWidget(parent, name) |
51 | { | 51 | { |
52 | 52 | ||
53 | #ifdef QWS | 53 | #ifdef QWS |
54 | // read download directory from config file | 54 | // read download directory from config file |
55 | Config cfg( "aqpkg" ); | 55 | Config cfg( "aqpkg" ); |
56 | cfg.setGroup( "settings" ); | 56 | cfg.setGroup( "settings" ); |
57 | currentlySelectedServer = cfg.readEntry( "selectedServer", "local" ); | 57 | currentlySelectedServer = cfg.readEntry( "selectedServer", "local" ); |
58 | showJumpTo = cfg.readBoolEntry( "showJumpTo", "true" ); | 58 | showJumpTo = cfg.readBoolEntry( "showJumpTo", "true" ); |
59 | 59 | ||
60 | #endif | 60 | #endif |
61 | 61 | ||
62 | showUninstalledPkgs = false; | 62 | showUninstalledPkgs = false; |
63 | showInstalledPkgs = false; | 63 | showInstalledPkgs = false; |
64 | showUpgradedPkgs = false; | 64 | showUpgradedPkgs = false; |
65 | categoryFilterEnabled = false; | 65 | categoryFilterEnabled = false; |
66 | 66 | ||
67 | initGui(); | 67 | initGui(); |
68 | setupConnections(); | ||
69 | |||
70 | //updateData(); | ||
71 | } | 68 | } |
72 | 69 | ||
73 | NetworkPackageManager::~NetworkPackageManager() | 70 | NetworkPackageManager::~NetworkPackageManager() |
74 | { | 71 | { |
75 | } | 72 | } |
76 | 73 | ||
77 | void NetworkPackageManager :: setDataManager( DataManager *dm ) | 74 | void NetworkPackageManager :: setDataManager( DataManager *dm ) |
78 | { | 75 | { |
79 | dataMgr = dm; | 76 | dataMgr = dm; |
80 | } | 77 | } |
81 | 78 | ||
82 | void NetworkPackageManager :: updateData() | 79 | void NetworkPackageManager :: updateData() |
83 | { | 80 | { |
84 | emit progressSetSteps( dataMgr->getServerList().size() ); | 81 | emit progressSetSteps( dataMgr->getServerList().size() ); |
85 | 82 | ||
86 | serversList->clear(); | 83 | serversList->clear(); |
87 | packagesList->clear(); | 84 | packagesList->clear(); |
88 | 85 | ||
89 | vector<Server>::iterator it; | 86 | vector<Server>::iterator it; |
90 | int activeItem = -1; | 87 | int activeItem = -1; |
91 | int i; | 88 | int i; |
92 | QString serverName; | 89 | QString serverName; |
93 | for ( i = 0, it = dataMgr->getServerList().begin() ; it != dataMgr->getServerList().end() ; ++it, ++i ) | 90 | for ( i = 0, it = dataMgr->getServerList().begin() ; it != dataMgr->getServerList().end() ; ++it, ++i ) |
94 | { | 91 | { |
95 | serverName = it->getServerName(); | 92 | serverName = it->getServerName(); |
96 | emit progressSetMessage( tr( "Building server list:\n\t%1" ).arg( serverName ) ); | 93 | emit progressSetMessage( tr( "Building server list:\n\t%1" ).arg( serverName ) ); |
97 | emit progressUpdate( i ); | 94 | emit progressUpdate( i ); |
98 | qApp->processEvents(); | 95 | qApp->processEvents(); |
99 | 96 | ||
100 | // cout << "Adding " << it->getServerName() << " to combobox" << endl; | 97 | // cout << "Adding " << it->getServerName() << " to combobox" << endl; |
101 | if ( !it->isServerActive() ) | 98 | if ( !it->isServerActive() ) |
102 | { | 99 | { |
103 | cout << serverName << " is not active" << endl; | 100 | cout << serverName << " is not active" << endl; |
104 | i--; | 101 | i--; |
105 | continue; | 102 | continue; |
106 | } | 103 | } |
107 | 104 | ||
108 | serversList->insertItem( serverName ); | 105 | serversList->insertItem( serverName ); |
109 | if ( serverName == currentlySelectedServer ) | 106 | if ( serverName == currentlySelectedServer ) |
110 | activeItem = i; | 107 | activeItem = i; |
111 | } | 108 | } |
112 | 109 | ||
113 | // set selected server to be active server | 110 | // set selected server to be active server |
114 | if ( activeItem != -1 ) | 111 | if ( activeItem != -1 ) |
115 | serversList->setCurrentItem( activeItem ); | 112 | serversList->setCurrentItem( activeItem ); |
116 | serverSelected( 0, FALSE ); | 113 | serverSelected( 0, FALSE ); |
117 | } | 114 | } |
118 | 115 | ||
119 | void NetworkPackageManager :: selectLocalPackage( const QString &pkg ) | 116 | void NetworkPackageManager :: selectLocalPackage( const QString &pkg ) |
120 | { | 117 | { |
121 | // First select local server | 118 | // First select local server |
122 | for ( int i = 0 ; i < serversList->count() ; ++i ) | 119 | for ( int i = 0 ; i < serversList->count() ; ++i ) |
123 | { | 120 | { |
124 | if ( serversList->text( i ) == LOCAL_IPKGS ) | 121 | if ( serversList->text( i ) == LOCAL_IPKGS ) |
125 | { | 122 | { |
126 | serversList->setCurrentItem( i ); | 123 | serversList->setCurrentItem( i ); |
127 | break; | 124 | break; |
128 | } | 125 | } |
129 | } | 126 | } |
130 | serverSelected( 0 ); | 127 | serverSelected( 0 ); |
131 | 128 | ||
132 | // Now set the check box of the selected package | 129 | // Now set the check box of the selected package |
133 | for ( QCheckListItem *item = (QCheckListItem *)packagesList->firstChild(); | 130 | for ( QCheckListItem *item = (QCheckListItem *)packagesList->firstChild(); |
134 | item != 0 ; | 131 | item != 0 ; |
135 | item = (QCheckListItem *)item->nextSibling() ) | 132 | item = (QCheckListItem *)item->nextSibling() ) |
136 | { | 133 | { |
137 | if ( item->text().startsWith( pkg ) ) | 134 | if ( item->text().startsWith( pkg ) ) |
138 | { | 135 | { |
139 | item->setOn( true ); | 136 | item->setOn( true ); |
140 | break; | 137 | break; |
141 | } | 138 | } |
142 | } | 139 | } |
143 | } | 140 | } |
144 | 141 | ||
145 | 142 | ||
146 | void NetworkPackageManager :: initGui() | 143 | void NetworkPackageManager :: initGui() |
147 | { | 144 | { |
148 | QLabel *l = new QLabel( tr( "Servers" ), this ); | 145 | QLabel *l = new QLabel( tr( "Servers" ), this ); |
149 | serversList = new QComboBox( this ); | 146 | serversList = new QComboBox( this ); |
147 | connect( serversList, SIGNAL(activated( int )), this, SLOT(serverSelected( int ))); | ||
148 | |||
150 | packagesList = new QListView( this ); | 149 | packagesList = new QListView( this ); |
151 | update = new QPushButton( tr( "Refresh Lists" ), this ); | ||
152 | download = new QPushButton( tr( "Download" ), this ); | ||
153 | upgrade = new QPushButton( tr( "Upgrade" ), this ); | ||
154 | apply = new QPushButton( tr( "Apply" ), this ); | ||
155 | 150 | ||
156 | QVBoxLayout *vbox = new QVBoxLayout( this, 0, -1 ); | 151 | QVBoxLayout *vbox = new QVBoxLayout( this, 0, -1 ); |
157 | QHBoxLayout *hbox1 = new QHBoxLayout( vbox, -1 ); | 152 | QHBoxLayout *hbox1 = new QHBoxLayout( vbox, -1 ); |
158 | hbox1->addWidget( l ); | 153 | hbox1->addWidget( l ); |
159 | hbox1->addWidget( serversList ); | 154 | hbox1->addWidget( serversList ); |
160 | 155 | ||
161 | QHBoxLayout *hbox3 = new QHBoxLayout( vbox, -1 ); | 156 | QHBoxLayout *hbox3 = new QHBoxLayout( vbox, -1 ); |
162 | QHBoxLayout *hbox4 = new QHBoxLayout( vbox, -1 ); | 157 | QHBoxLayout *hbox4 = new QHBoxLayout( vbox, -1 ); |
163 | 158 | ||
164 | 159 | ||
165 | if ( showJumpTo ) | 160 | if ( showJumpTo ) |
166 | { | 161 | { |
167 | char text[2]; | 162 | char text[2]; |
168 | text[1] = '\0'; | 163 | text[1] = '\0'; |
169 | for ( int i = 0 ; i < 26 ; ++i ) | 164 | for ( int i = 0 ; i < 26 ; ++i ) |
170 | { | 165 | { |
171 | text[0] = 'A' + i; | 166 | text[0] = 'A' + i; |
172 | LetterPushButton *b = new LetterPushButton( text, this ); | 167 | LetterPushButton *b = new LetterPushButton( text, this ); |
173 | connect( b, SIGNAL( released( QString ) ), this, SLOT( letterPushed( QString ) ) ); | 168 | connect( b, SIGNAL( released( QString ) ), this, SLOT( letterPushed( QString ) ) ); |
174 | if ( i < 13 ) | 169 | if ( i < 13 ) |
175 | hbox3->addWidget( b ); | 170 | hbox3->addWidget( b ); |
176 | else | 171 | else |
177 | hbox4->addWidget( b ); | 172 | hbox4->addWidget( b ); |
178 | } | 173 | } |
179 | } | 174 | } |
180 | 175 | ||
181 | vbox->addWidget( packagesList ); | 176 | vbox->addWidget( packagesList ); |
182 | packagesList->addColumn( tr( "Packages" ) ); | 177 | packagesList->addColumn( tr( "Packages" ) ); |
183 | 178 | ||
184 | QHBoxLayout *hbox2 = new QHBoxLayout( vbox, -1 ); | 179 | downloadEnabled = TRUE; |
185 | hbox2->addWidget( update ); | ||
186 | hbox2->addWidget( download ); | ||
187 | hbox2->addWidget( upgrade ); | ||
188 | hbox2->addWidget( apply ); | ||
189 | } | ||
190 | |||
191 | void NetworkPackageManager :: setupConnections() | ||
192 | { | ||
193 | connect( serversList, SIGNAL(activated( int )), this, SLOT(serverSelected( int ))); | ||
194 | connect( apply, SIGNAL(released()), this, SLOT(applyChanges()) ); | ||
195 | connect( download, SIGNAL(released()), this, SLOT(downloadPackage()) ); | ||
196 | connect( upgrade, SIGNAL( released()), this, SLOT(upgradePackages()) ); | ||
197 | connect( update, SIGNAL(released()), this, SLOT(updateServer()) ); | ||
198 | } | 180 | } |
199 | 181 | ||
200 | void NetworkPackageManager :: serverSelected( int index ) | 182 | void NetworkPackageManager :: serverSelected( int index ) |
201 | { | 183 | { |
202 | serverSelected( index, TRUE ); | 184 | serverSelected( index, TRUE ); |
203 | } | 185 | } |
204 | 186 | ||
205 | void NetworkPackageManager :: serverSelected( int, bool raiseProgress ) | 187 | void NetworkPackageManager :: serverSelected( int, bool raiseProgress ) |
206 | { | 188 | { |
207 | // display packages | 189 | // display packages |
208 | QString serverName = serversList->currentText(); | 190 | QString serverName = serversList->currentText(); |
209 | currentlySelectedServer = serverName; | 191 | currentlySelectedServer = serverName; |
210 | 192 | ||
211 | vector<Server>::iterator s = dataMgr->getServer( serverName ); | 193 | vector<Server>::iterator s = dataMgr->getServer( serverName ); |
212 | 194 | ||
213 | vector<Package> &list = s->getPackageList(); | 195 | vector<Package> &list = s->getPackageList(); |
214 | vector<Package>::iterator it; | 196 | vector<Package>::iterator it; |
215 | 197 | ||
216 | // Display progress widget while loading list | 198 | // Display progress widget while loading list |
217 | bool doProgress = ( list.size() > 200 ); | 199 | bool doProgress = ( list.size() > 200 ); |
218 | if ( doProgress ) | 200 | if ( doProgress ) |
219 | { | 201 | { |
220 | if ( raiseProgress ) | 202 | if ( raiseProgress ) |
221 | { | 203 | { |
222 | emit appRaiseProgressWidget(); | 204 | emit appRaiseProgressWidget(); |
223 | } | 205 | } |
224 | emit progressSetSteps( list.size() ); | 206 | emit progressSetSteps( list.size() ); |
225 | emit progressSetMessage( tr( "Building package list for:\n\t%1" ).arg( serverName ) ); | 207 | emit progressSetMessage( tr( "Building package list for:\n\t%1" ).arg( serverName ) ); |
226 | } | 208 | } |
227 | 209 | ||
228 | packagesList->clear(); | 210 | packagesList->clear(); |
229 | 211 | ||
230 | #ifdef QWS | 212 | #ifdef QWS |
231 | // read download directory from config file | 213 | // read download directory from config file |
232 | Config cfg( "aqpkg" ); | 214 | Config cfg( "aqpkg" ); |
233 | cfg.setGroup( "settings" ); | 215 | cfg.setGroup( "settings" ); |
234 | cfg.writeEntry( "selectedServer", currentlySelectedServer ); | 216 | cfg.writeEntry( "selectedServer", currentlySelectedServer ); |
235 | #endif | 217 | #endif |
236 | 218 | ||
237 | int i = 0; | 219 | int i = 0; |
238 | for ( it = list.begin() ; it != list.end() ; ++it ) | 220 | for ( it = list.begin() ; it != list.end() ; ++it ) |
239 | { | 221 | { |
240 | // Update progress after every 100th package (arbitrary value, seems to give good balance) | 222 | // Update progress after every 100th package (arbitrary value, seems to give good balance) |
241 | i++; | 223 | i++; |
242 | if ( ( i % 100 ) == 0 ) | 224 | if ( ( i % 100 ) == 0 ) |
243 | { | 225 | { |
244 | if ( doProgress ) | 226 | if ( doProgress ) |
245 | { | 227 | { |
246 | emit progressUpdate( i ); | 228 | emit progressUpdate( i ); |
247 | } | 229 | } |
248 | qApp->processEvents(); | 230 | qApp->processEvents(); |
249 | } | 231 | } |
250 | 232 | ||
251 | QString text = ""; | 233 | QString text = ""; |
252 | 234 | ||
253 | // Apply show only uninstalled packages filter | 235 | // Apply show only uninstalled packages filter |
254 | if ( showUninstalledPkgs && it->isInstalled() ) | 236 | if ( showUninstalledPkgs && it->isInstalled() ) |
255 | continue; | 237 | continue; |
256 | 238 | ||
257 | // Apply show only installed packages filter | 239 | // Apply show only installed packages filter |
258 | if ( showInstalledPkgs && !it->isInstalled() ) | 240 | if ( showInstalledPkgs && !it->isInstalled() ) |
259 | continue; | 241 | continue; |
260 | 242 | ||
261 | // Apply show only new installed packages filter | 243 | // Apply show only new installed packages filter |
262 | if ( showUpgradedPkgs ) | 244 | if ( showUpgradedPkgs ) |
263 | { | 245 | { |
264 | if ( !it->isInstalled() || | 246 | if ( !it->isInstalled() || |
265 | compareVersions( it->getInstalledVersion(), it->getVersion() ) != 1 ) | 247 | compareVersions( it->getInstalledVersion(), it->getVersion() ) != 1 ) |
266 | continue; | 248 | continue; |
267 | } | 249 | } |
268 | 250 | ||
269 | // Apply the section filter | 251 | // Apply the section filter |
270 | if ( categoryFilterEnabled && categoryFilter != "" ) | 252 | if ( categoryFilterEnabled && categoryFilter != "" ) |
271 | { | 253 | { |
272 | if ( it->getSection() == "" || categoryFilter.find( it->getSection().lower() ) == -1 ) | 254 | if ( it->getSection() == "" || categoryFilter.find( it->getSection().lower() ) == -1 ) |
273 | continue; | 255 | continue; |
274 | } | 256 | } |
275 | 257 | ||
276 | // If the local server, only display installed packages | 258 | // If the local server, only display installed packages |
277 | if ( serverName == LOCAL_SERVER && !it->isInstalled() ) | 259 | if ( serverName == LOCAL_SERVER && !it->isInstalled() ) |
278 | continue; | 260 | continue; |
279 | 261 | ||
280 | 262 | ||
281 | text += it->getPackageName(); | 263 | text += it->getPackageName(); |
282 | if ( it->isInstalled() ) | 264 | if ( it->isInstalled() ) |
283 | { | 265 | { |
284 | text += " (installed)"; | 266 | text += " (installed)"; |
285 | 267 | ||
286 | // If a different version of package is available, postfix it with an * | 268 | // If a different version of package is available, postfix it with an * |
287 | if ( it->getVersion() != it->getInstalledVersion() ) | 269 | if ( it->getVersion() != it->getInstalledVersion() ) |
288 | { | 270 | { |
289 | 271 | ||
290 | if ( compareVersions( it->getInstalledVersion(), it->getVersion() ) == 1 ) | 272 | if ( compareVersions( it->getInstalledVersion(), it->getVersion() ) == 1 ) |
291 | text += "*"; | 273 | text += "*"; |
292 | } | 274 | } |
293 | } | 275 | } |
294 | 276 | ||
295 | QCheckListItem *item = new QCheckListItem( packagesList, text, QCheckListItem::CheckBox ); | 277 | QCheckListItem *item = new QCheckListItem( packagesList, text, QCheckListItem::CheckBox ); |
296 | 278 | ||
297 | if ( it->isInstalled() ) | 279 | if ( it->isInstalled() ) |
298 | { | 280 | { |
299 | QString destName = ""; | 281 | QString destName = ""; |
300 | if ( it->getLocalPackage() ) | 282 | if ( it->getLocalPackage() ) |
301 | { | 283 | { |
302 | if ( it->getLocalPackage()->getInstalledTo() ) | 284 | if ( it->getLocalPackage()->getInstalledTo() ) |
303 | destName = it->getLocalPackage()->getInstalledTo()->getDestinationName(); | 285 | destName = it->getLocalPackage()->getInstalledTo()->getDestinationName(); |
304 | } | 286 | } |
305 | else | 287 | else |
306 | { | 288 | { |
307 | if ( it->getInstalledTo() ) | 289 | if ( it->getInstalledTo() ) |
308 | destName = it->getInstalledTo()->getDestinationName(); | 290 | destName = it->getInstalledTo()->getDestinationName(); |
309 | } | 291 | } |
310 | if ( destName != "" ) | 292 | if ( destName != "" ) |
311 | new QCheckListItem( item, QString( tr( "Installed To - " ) ) + destName ); | 293 | new QCheckListItem( item, QString( tr( "Installed To - " ) ) + destName ); |
312 | } | 294 | } |
313 | 295 | ||
314 | if ( !it->isPackageStoredLocally() ) | 296 | if ( !it->isPackageStoredLocally() ) |
315 | { | 297 | { |
316 | new QCheckListItem( item, QString( tr( "Description - " ) ) + it->getDescription() ); | 298 | new QCheckListItem( item, QString( tr( "Description - " ) ) + it->getDescription() ); |
317 | new QCheckListItem( item, QString( tr( "Size - " ) ) + it->getPackageSize() ); | 299 | new QCheckListItem( item, QString( tr( "Size - " ) ) + it->getPackageSize() ); |
318 | new QCheckListItem( item, QString( tr( "Section - " ) ) + it->getSection() ); | 300 | new QCheckListItem( item, QString( tr( "Section - " ) ) + it->getSection() ); |
319 | } | 301 | } |
320 | else | 302 | else |
321 | new QCheckListItem( item, QString( tr( "Filename - " ) ) + it->getFilename() ); | 303 | new QCheckListItem( item, QString( tr( "Filename - " ) ) + it->getFilename() ); |
322 | 304 | ||
323 | if ( serverName == LOCAL_SERVER ) | 305 | if ( serverName == LOCAL_SERVER ) |
324 | { | 306 | { |
325 | new QCheckListItem( item, QString( tr( "V. Installed - " ) ) + it->getVersion() ); | 307 | new QCheckListItem( item, QString( tr( "V. Installed - " ) ) + it->getVersion() ); |
326 | } | 308 | } |
327 | else | 309 | else |
328 | { | 310 | { |
329 | new QCheckListItem( item, QString( tr( "V. Available - " ) ) + it->getVersion() ); | 311 | new QCheckListItem( item, QString( tr( "V. Available - " ) ) + it->getVersion() ); |
330 | if ( it->getLocalPackage() ) | 312 | if ( it->getLocalPackage() ) |
331 | { | 313 | { |
332 | if ( it->isInstalled() ) | 314 | if ( it->isInstalled() ) |
333 | new QCheckListItem( item, QString( tr( "V. Installed - " ) ) + it->getInstalledVersion() ); | 315 | new QCheckListItem( item, QString( tr( "V. Installed - " ) ) + it->getInstalledVersion() ); |
334 | } | 316 | } |
335 | } | 317 | } |
336 | 318 | ||
337 | packagesList->insertItem( item ); | 319 | packagesList->insertItem( item ); |
338 | } | 320 | } |
339 | 321 | ||
340 | // If the local server or the local ipkgs server disable the download button | 322 | // If the local server or the local ipkgs server disable the download button |
341 | if ( serverName == LOCAL_SERVER ) | 323 | if ( serverName == LOCAL_SERVER ) |
342 | { | 324 | { |
343 | upgrade->setEnabled( false ); | 325 | downloadEnabled = TRUE; |
344 | download->setText( tr( "Download" ) ); | 326 | emit appEnableUpgrade( FALSE ); |
345 | download->setEnabled( true ); | ||
346 | } | 327 | } |
347 | else if ( serverName == LOCAL_IPKGS ) | 328 | else if ( serverName == LOCAL_IPKGS ) |
348 | { | 329 | { |
349 | upgrade->setEnabled( false ); | 330 | downloadEnabled = FALSE; |
350 | download->setEnabled( true ); | 331 | emit appEnableUpgrade( FALSE ); |
351 | download->setText( tr( "Remove" ) ); | ||
352 | } | 332 | } |
353 | else | 333 | else |
354 | { | 334 | { |
355 | upgrade->setEnabled( true ); | 335 | downloadEnabled = TRUE; |
356 | download->setEnabled( true ); | 336 | emit appEnableUpgrade( TRUE ); |
357 | download->setText( tr( "Download" ) ); | ||
358 | } | 337 | } |
338 | emit appEnableDownload( downloadEnabled ); | ||
359 | 339 | ||
360 | // Display this widget once everything is done | 340 | // Display this widget once everything is done |
361 | if ( doProgress && raiseProgress ) | 341 | if ( doProgress && raiseProgress ) |
362 | { | 342 | { |
363 | emit appRaiseMainWidget(); | 343 | emit appRaiseMainWidget(); |
364 | } | 344 | } |
365 | } | 345 | } |
366 | 346 | ||
367 | void NetworkPackageManager :: updateServer() | 347 | void NetworkPackageManager :: updateServer() |
368 | { | 348 | { |
369 | QString serverName = serversList->currentText(); | 349 | QString serverName = serversList->currentText(); |
370 | 350 | ||
371 | // Update the current server | 351 | // Update the current server |
372 | // Display dialog | 352 | // Display dialog |
373 | 353 | ||
374 | // Disable buttons to stop silly people clicking lots on them :) | 354 | // Disable buttons to stop silly people clicking lots on them :) |
375 | 355 | ||
376 | // First, write out ipkg_conf file so that ipkg can use it | 356 | // First, write out ipkg_conf file so that ipkg can use it |
377 | dataMgr->writeOutIpkgConf(); | 357 | dataMgr->writeOutIpkgConf(); |
378 | 358 | ||
379 | Ipkg ipkg; | 359 | Ipkg ipkg; |
380 | ipkg.setOption( "update" ); | 360 | ipkg.setOption( "update" ); |
381 | 361 | ||
382 | InstallDlgImpl dlg( &ipkg, tr( "Refreshing server package lists" ), this, tr( "Upgrade" ), true ); | 362 | InstallDlgImpl dlg( &ipkg, tr( "Refreshing server package lists" ), this, tr( "Upgrade" ), true ); |
383 | dlg.showDlg(); | 363 | dlg.showDlg(); |
384 | 364 | ||
385 | // Reload data | 365 | // Reload data |
386 | dataMgr->reloadServerData(); | 366 | dataMgr->reloadServerData(); |
387 | serverSelected(-1); | 367 | serverSelected(-1); |
388 | // delete progDlg; | 368 | // delete progDlg; |
389 | } | 369 | } |
390 | 370 | ||
391 | void NetworkPackageManager :: upgradePackages() | 371 | void NetworkPackageManager :: upgradePackages() |
392 | { | 372 | { |
393 | // We're gonna do an upgrade of all packages | 373 | // We're gonna do an upgrade of all packages |
394 | // First warn user that this isn't recommended | 374 | // First warn user that this isn't recommended |
395 | QString text = tr( "WARNING: Upgrading while\nOpie/Qtopia is running\nis NOT recommended!\n\nAre you sure?\n" ); | 375 | QString text = tr( "WARNING: Upgrading while\nOpie/Qtopia is running\nis NOT recommended!\n\nAre you sure?\n" ); |
396 | QMessageBox warn( tr( "Warning" ), text, QMessageBox::Warning, | 376 | QMessageBox warn( tr( "Warning" ), text, QMessageBox::Warning, |
397 | QMessageBox::Yes, | 377 | QMessageBox::Yes, |
398 | QMessageBox::No | QMessageBox::Escape | QMessageBox::Default , | 378 | QMessageBox::No | QMessageBox::Escape | QMessageBox::Default , |
399 | 0, this ); | 379 | 0, this ); |
400 | warn.adjustSize(); | 380 | warn.adjustSize(); |
401 | 381 | ||
402 | if ( warn.exec() == QMessageBox::Yes ) | 382 | if ( warn.exec() == QMessageBox::Yes ) |
403 | { | 383 | { |
404 | // First, write out ipkg_conf file so that ipkg can use it | 384 | // First, write out ipkg_conf file so that ipkg can use it |
405 | dataMgr->writeOutIpkgConf(); | 385 | dataMgr->writeOutIpkgConf(); |
406 | 386 | ||
407 | // Now run upgrade | 387 | // Now run upgrade |
408 | Ipkg ipkg; | 388 | Ipkg ipkg; |
409 | ipkg.setOption( "upgrade" ); | 389 | ipkg.setOption( "upgrade" ); |
410 | 390 | ||
411 | InstallDlgImpl dlg( &ipkg, tr( "Upgrading installed packages" ), this, tr( "Upgrade" ), true ); | 391 | InstallDlgImpl dlg( &ipkg, tr( "Upgrading installed packages" ), this, tr( "Upgrade" ), true ); |
412 | dlg.showDlg(); | 392 | dlg.showDlg(); |
413 | 393 | ||
414 | // Reload data | 394 | // Reload data |
415 | dataMgr->reloadServerData(); | 395 | dataMgr->reloadServerData(); |
416 | serverSelected(-1); | 396 | serverSelected(-1); |
417 | } | 397 | } |
418 | } | 398 | } |
419 | 399 | ||
420 | 400 | ||
421 | void NetworkPackageManager :: downloadPackage() | 401 | void NetworkPackageManager :: downloadPackage() |
422 | { | 402 | { |
423 | bool doUpdate = true; | 403 | bool doUpdate = true; |
424 | if ( download->text() == tr( "Download" ) ) | 404 | if ( downloadEnabled ) |
425 | { | 405 | { |
426 | // See if any packages are selected | 406 | // See if any packages are selected |
427 | bool found = false; | 407 | bool found = false; |
428 | if ( serversList->currentText() != LOCAL_SERVER ) | 408 | if ( serversList->currentText() != LOCAL_SERVER ) |
429 | { | 409 | { |
430 | for ( QCheckListItem *item = (QCheckListItem *)packagesList->firstChild(); | 410 | for ( QCheckListItem *item = (QCheckListItem *)packagesList->firstChild(); |
431 | item != 0 && !found; | 411 | item != 0 && !found; |
432 | item = (QCheckListItem *)item->nextSibling() ) | 412 | item = (QCheckListItem *)item->nextSibling() ) |
433 | { | 413 | { |
434 | if ( item->isOn() ) | 414 | if ( item->isOn() ) |
435 | found = true; | 415 | found = true; |
436 | } | 416 | } |
437 | } | 417 | } |
438 | 418 | ||
439 | // If user selected some packages then download the and store the locally | 419 | // If user selected some packages then download the and store the locally |
440 | // otherwise, display dialog asking user what package to download from an http server | 420 | // otherwise, display dialog asking user what package to download from an http server |
441 | // and whether to install it | 421 | // and whether to install it |
442 | if ( found ) | 422 | if ( found ) |
443 | downloadSelectedPackages(); | 423 | downloadSelectedPackages(); |
444 | else | 424 | else |
445 | downloadRemotePackage(); | 425 | downloadRemotePackage(); |
446 | 426 | ||
447 | } | 427 | } |
448 | else if ( download->text() == tr( "Remove" ) ) | 428 | else |
449 | { | 429 | { |
450 | doUpdate = false; | 430 | doUpdate = false; |
451 | for ( QCheckListItem *item = (QCheckListItem *)packagesList->firstChild(); | 431 | for ( QCheckListItem *item = (QCheckListItem *)packagesList->firstChild(); |
452 | item != 0 ; | 432 | item != 0 ; |
453 | item = (QCheckListItem *)item->nextSibling() ) | 433 | item = (QCheckListItem *)item->nextSibling() ) |
454 | { | 434 | { |
455 | if ( item->isOn() ) | 435 | if ( item->isOn() ) |
456 | { | 436 | { |
457 | QString name = item->text(); | 437 | QString name = item->text(); |
458 | int pos = name.find( "*" ); | 438 | int pos = name.find( "*" ); |
459 | name.truncate( pos ); | 439 | name.truncate( pos ); |
460 | 440 | ||
461 | // if (there is a (installed), remove it | 441 | // if (there is a (installed), remove it |
462 | pos = name.find( "(installed)" ); | 442 | pos = name.find( "(installed)" ); |
463 | if ( pos > 0 ) | 443 | if ( pos > 0 ) |
464 | name.truncate( pos - 1 ); | 444 | name.truncate( pos - 1 ); |
465 | 445 | ||
466 | Package *p = dataMgr->getServer( serversList->currentText() )->getPackage( name ); | 446 | Package *p = dataMgr->getServer( serversList->currentText() )->getPackage( name ); |
467 | 447 | ||
468 | QString msgtext; | 448 | QString msgtext; |
469 | msgtext = tr( "Are you sure you wish to delete\n%1?" ).arg( (const char *)p->getPackageName() ); | 449 | msgtext = tr( "Are you sure you wish to delete\n%1?" ).arg( (const char *)p->getPackageName() ); |
470 | if ( QMessageBox::information( this, tr( "Are you sure?" ), | 450 | if ( QMessageBox::information( this, tr( "Are you sure?" ), |
471 | msgtext, tr( "No" ), tr( "Yes" ) ) == 1 ) | 451 | msgtext, tr( "No" ), tr( "Yes" ) ) == 1 ) |
472 | { | 452 | { |
473 | doUpdate = true; | 453 | doUpdate = true; |
474 | QFile f( p->getFilename() ); | 454 | QFile f( p->getFilename() ); |
475 | f.remove(); | 455 | f.remove(); |
476 | } | 456 | } |
477 | } | 457 | } |
478 | } | 458 | } |
479 | } | 459 | } |
480 | 460 | ||
481 | if ( doUpdate ) | 461 | if ( doUpdate ) |
482 | { | 462 | { |
483 | dataMgr->reloadServerData(); | 463 | dataMgr->reloadServerData(); |
484 | serverSelected( -1 ); | 464 | serverSelected( -1 ); |
485 | } | 465 | } |
486 | } | 466 | } |
487 | 467 | ||
488 | void NetworkPackageManager :: downloadSelectedPackages() | 468 | void NetworkPackageManager :: downloadSelectedPackages() |
489 | { | 469 | { |
490 | // First, write out ipkg_conf file so that ipkg can use it | 470 | // First, write out ipkg_conf file so that ipkg can use it |
491 | dataMgr->writeOutIpkgConf(); | 471 | dataMgr->writeOutIpkgConf(); |
492 | 472 | ||
493 | // Display dialog to user asking where to download the files to | 473 | // Display dialog to user asking where to download the files to |
494 | bool ok = FALSE; | 474 | bool ok = FALSE; |
495 | QString dir = ""; | 475 | QString dir = ""; |
496 | #ifdef QWS | 476 | #ifdef QWS |
497 | // read download directory from config file | 477 | // read download directory from config file |
498 | Config cfg( "aqpkg" ); | 478 | Config cfg( "aqpkg" ); |
499 | cfg.setGroup( "settings" ); | 479 | cfg.setGroup( "settings" ); |
500 | dir = cfg.readEntry( "downloadDir", "/home/root/Documents/application/ipkg" ); | 480 | dir = cfg.readEntry( "downloadDir", "/home/root/Documents/application/ipkg" ); |
501 | #endif | 481 | #endif |
502 | 482 | ||
503 | QString text = InputDialog::getText( tr( "Download to where" ), tr( "Enter path to download to" ), dir, &ok, this ); | 483 | QString text = InputDialog::getText( tr( "Download to where" ), tr( "Enter path to download to" ), dir, &ok, this ); |
504 | if ( ok && !text.isEmpty() ) | 484 | if ( ok && !text.isEmpty() ) |
505 | dir = text; // user entered something and pressed ok | 485 | dir = text; // user entered something and pressed ok |
506 | else | 486 | else |
507 | return; // user entered nothing or pressed cancel | 487 | return; // user entered nothing or pressed cancel |
508 | 488 | ||
509 | #ifdef QWS | 489 | #ifdef QWS |
510 | // Store download directory in config file | 490 | // Store download directory in config file |
511 | cfg.writeEntry( "downloadDir", dir ); | 491 | cfg.writeEntry( "downloadDir", dir ); |
512 | #endif | 492 | #endif |
513 | 493 | ||
514 | // Get starting directory | 494 | // Get starting directory |
515 | char initDir[PATH_MAX]; | 495 | char initDir[PATH_MAX]; |
516 | getcwd( initDir, PATH_MAX ); | 496 | getcwd( initDir, PATH_MAX ); |
517 | 497 | ||
518 | // Download each package | 498 | // Download each package |
519 | Ipkg ipkg; | 499 | Ipkg ipkg; |
520 | connect( &ipkg, SIGNAL(outputText(const QString &)), this, SLOT(displayText(const QString &))); | 500 | connect( &ipkg, SIGNAL(outputText(const QString &)), this, SLOT(displayText(const QString &))); |
521 | 501 | ||
522 | ipkg.setOption( "download" ); | 502 | ipkg.setOption( "download" ); |
523 | ipkg.setRuntimeDirectory( dir ); | 503 | ipkg.setRuntimeDirectory( dir ); |
524 | for ( QCheckListItem *item = (QCheckListItem *)packagesList->firstChild(); | 504 | for ( QCheckListItem *item = (QCheckListItem *)packagesList->firstChild(); |
525 | item != 0 ; | 505 | item != 0 ; |
526 | item = (QCheckListItem *)item->nextSibling() ) | 506 | item = (QCheckListItem *)item->nextSibling() ) |
527 | { | 507 | { |
528 | if ( item->isOn() ) | 508 | if ( item->isOn() ) |
529 | { | 509 | { |
530 | QString name = item->text(); | 510 | QString name = item->text(); |
531 | int pos = name.find( "*" ); | 511 | int pos = name.find( "*" ); |
532 | name.truncate( pos ); | 512 | name.truncate( pos ); |
533 | 513 | ||
534 | // if (there is a (installed), remove it | 514 | // if (there is a (installed), remove it |
535 | pos = name.find( "(installed)" ); | 515 | pos = name.find( "(installed)" ); |
536 | if ( pos > 0 ) | 516 | if ( pos > 0 ) |
537 | name.truncate( pos - 1 ); | 517 | name.truncate( pos - 1 ); |
538 | 518 | ||
539 | ipkg.setPackage( name ); | 519 | ipkg.setPackage( name ); |
540 | ipkg.runIpkg( ); | 520 | ipkg.runIpkg( ); |
541 | } | 521 | } |
542 | } | 522 | } |
543 | } | 523 | } |
544 | 524 | ||
545 | void NetworkPackageManager :: downloadRemotePackage() | 525 | void NetworkPackageManager :: downloadRemotePackage() |
546 | { | 526 | { |
547 | // Display dialog | 527 | // Display dialog |
548 | bool ok; | 528 | bool ok; |
549 | QString package = InputDialog::getText( tr( "Install Remote Package" ), tr( "Enter package location" ), "http://", &ok, this ); | 529 | QString package = InputDialog::getText( tr( "Install Remote Package" ), tr( "Enter package location" ), "http://", &ok, this ); |
550 | if ( !ok || package.isEmpty() ) | 530 | if ( !ok || package.isEmpty() ) |
551 | return; | 531 | return; |
552 | // DownloadRemoteDlgImpl dlg( this, "Install", true ); | 532 | // DownloadRemoteDlgImpl dlg( this, "Install", true ); |
553 | // if ( dlg.exec() == QDialog::Rejected ) | 533 | // if ( dlg.exec() == QDialog::Rejected ) |
554 | // return; | 534 | // return; |
555 | 535 | ||
556 | // grab details from dialog | 536 | // grab details from dialog |
557 | // QString package = dlg.getPackageLocation(); | 537 | // QString package = dlg.getPackageLocation(); |
558 | 538 | ||
559 | InstallData item; | 539 | InstallData item; |
560 | item.option = "I"; | 540 | item.option = "I"; |
561 | item.packageName = package; | 541 | item.packageName = package; |
562 | vector<InstallData> workingPackages; | 542 | vector<InstallData> workingPackages; |
563 | workingPackages.push_back( item ); | 543 | workingPackages.push_back( item ); |
564 | 544 | ||
565 | InstallDlgImpl dlg2( workingPackages, dataMgr, this, "Install", true ); | 545 | InstallDlgImpl dlg2( workingPackages, dataMgr, this, "Install", true ); |
566 | dlg2.showDlg(); | 546 | dlg2.showDlg(); |
567 | 547 | ||
568 | // Reload data | 548 | // Reload data |
569 | dataMgr->reloadServerData(); | 549 | dataMgr->reloadServerData(); |
570 | serverSelected(-1); | 550 | serverSelected(-1); |
571 | 551 | ||
572 | #ifdef QWS | 552 | #ifdef QWS |
573 | // Finally let the main system update itself | 553 | // Finally let the main system update itself |
574 | QCopEnvelope e("QPE/System", "linkChanged(QString)"); | 554 | QCopEnvelope e("QPE/System", "linkChanged(QString)"); |
575 | QString lf = QString::null; | 555 | QString lf = QString::null; |
576 | e << lf; | 556 | e << lf; |
577 | #endif | 557 | #endif |
578 | } | 558 | } |
579 | 559 | ||
580 | 560 | ||
581 | void NetworkPackageManager :: applyChanges() | 561 | void NetworkPackageManager :: applyChanges() |
582 | { | 562 | { |
583 | stickyOption = ""; | 563 | stickyOption = ""; |
584 | 564 | ||
585 | // First, write out ipkg_conf file so that ipkg can use it | 565 | // First, write out ipkg_conf file so that ipkg can use it |
586 | dataMgr->writeOutIpkgConf(); | 566 | dataMgr->writeOutIpkgConf(); |
587 | 567 | ||
588 | // Now for each selected item | 568 | // Now for each selected item |
589 | // deal with it | 569 | // deal with it |
590 | 570 | ||
591 | vector<InstallData> workingPackages; | 571 | vector<InstallData> workingPackages; |
592 | for ( QCheckListItem *item = (QCheckListItem *)packagesList->firstChild(); | 572 | for ( QCheckListItem *item = (QCheckListItem *)packagesList->firstChild(); |
593 | item != 0 ; | 573 | item != 0 ; |
594 | item = (QCheckListItem *)item->nextSibling() ) | 574 | item = (QCheckListItem *)item->nextSibling() ) |
595 | { | 575 | { |
596 | if ( item->isOn() ) | 576 | if ( item->isOn() ) |
597 | { | 577 | { |
598 | InstallData data = dealWithItem( item ); | 578 | InstallData data = dealWithItem( item ); |
599 | workingPackages.push_back( data ); | 579 | workingPackages.push_back( data ); |
600 | } | 580 | } |
601 | } | 581 | } |
602 | 582 | ||
603 | if ( workingPackages.size() == 0 ) | 583 | if ( workingPackages.size() == 0 ) |
604 | { | 584 | { |
605 | // Nothing to do | 585 | // Nothing to do |
606 | QMessageBox::information( this, tr( "Nothing to do" ), | 586 | QMessageBox::information( this, tr( "Nothing to do" ), |
607 | tr( "No packages selected" ), tr( "OK" ) ); | 587 | tr( "No packages selected" ), tr( "OK" ) ); |
608 | 588 | ||
609 | return; | 589 | return; |
610 | } | 590 | } |
611 | 591 | ||
612 | // do the stuff | 592 | // do the stuff |
613 | InstallDlgImpl dlg( workingPackages, dataMgr, this, "Install", true ); | 593 | InstallDlgImpl dlg( workingPackages, dataMgr, this, "Install", true ); |
614 | dlg.showDlg(); | 594 | dlg.showDlg(); |
615 | 595 | ||
616 | // Reload data | 596 | // Reload data |
617 | dataMgr->reloadServerData(); | 597 | dataMgr->reloadServerData(); |
618 | serverSelected(-1); | 598 | serverSelected(-1); |
619 | 599 | ||
620 | #ifdef QWS | 600 | #ifdef QWS |
621 | // Finally let the main system update itself | 601 | // Finally let the main system update itself |
622 | QCopEnvelope e("QPE/System", "linkChanged(QString)"); | 602 | QCopEnvelope e("QPE/System", "linkChanged(QString)"); |
623 | QString lf = QString::null; | 603 | QString lf = QString::null; |
624 | e << lf; | 604 | e << lf; |
625 | #endif | 605 | #endif |
626 | } | 606 | } |
627 | 607 | ||
628 | // decide what to do - either remove, upgrade or install | 608 | // decide what to do - either remove, upgrade or install |
629 | // Current rules: | 609 | // Current rules: |
630 | // If not installed - install | 610 | // If not installed - install |
631 | // If installed and different version available - upgrade | 611 | // If installed and different version available - upgrade |
632 | // If installed and version up to date - remove | 612 | // If installed and version up to date - remove |
633 | InstallData NetworkPackageManager :: dealWithItem( QCheckListItem *item ) | 613 | InstallData NetworkPackageManager :: dealWithItem( QCheckListItem *item ) |
634 | { | 614 | { |
635 | QString name = item->text(); | 615 | QString name = item->text(); |
636 | int pos = name.find( "*" ); | 616 | int pos = name.find( "*" ); |
637 | name.truncate( pos ); | 617 | name.truncate( pos ); |
638 | 618 | ||
639 | // if (there is a (installed), remove it | 619 | // if (there is a (installed), remove it |
640 | pos = name.find( "(installed)" ); | 620 | pos = name.find( "(installed)" ); |
641 | if ( pos > 0 ) | 621 | if ( pos > 0 ) |
642 | name.truncate( pos - 1 ); | 622 | name.truncate( pos - 1 ); |
643 | 623 | ||
644 | // Get package | 624 | // Get package |
645 | vector<Server>::iterator s = dataMgr->getServer( serversList->currentText() ); | 625 | vector<Server>::iterator s = dataMgr->getServer( serversList->currentText() ); |
646 | Package *p = s->getPackage( name ); | 626 | Package *p = s->getPackage( name ); |
647 | 627 | ||
648 | // If the package has a filename then it is a local file | 628 | // If the package has a filename then it is a local file |
649 | if ( p->isPackageStoredLocally() ) | 629 | if ( p->isPackageStoredLocally() ) |
650 | name = p->getFilename(); | 630 | name = p->getFilename(); |
651 | 631 | ||
652 | QString option; | 632 | QString option; |
653 | QString dest = "root"; | 633 | QString dest = "root"; |
654 | if ( !p->isInstalled() ) | 634 | if ( !p->isInstalled() ) |
655 | { | 635 | { |
656 | InstallData item; | 636 | InstallData item; |
657 | item.option = "I"; | 637 | item.option = "I"; |
658 | item.packageName = name; | 638 | item.packageName = name; |
659 | return item; | 639 | return item; |
660 | } | 640 | } |
661 | else | 641 | else |
662 | { | 642 | { |
663 | InstallData item; | 643 | InstallData item; |
664 | item.option = "D"; | 644 | item.option = "D"; |
665 | if ( !p->isPackageStoredLocally() ) | 645 | if ( !p->isPackageStoredLocally() ) |
666 | item.packageName = p->getInstalledPackageName(); | 646 | item.packageName = p->getInstalledPackageName(); |
667 | else | 647 | else |
668 | item.packageName = name; | 648 | item.packageName = name; |
669 | 649 | ||
670 | if ( p->getInstalledTo() ) | 650 | if ( p->getInstalledTo() ) |
671 | { | 651 | { |
672 | item.destination = p->getInstalledTo(); | 652 | item.destination = p->getInstalledTo(); |
673 | cout << "dest - " << p->getInstalledTo()->getDestinationName() << endl; | 653 | cout << "dest - " << p->getInstalledTo()->getDestinationName() << endl; |
674 | cout << "dest - " << p->getInstalledTo()->getDestinationPath() << endl; | 654 | cout << "dest - " << p->getInstalledTo()->getDestinationPath() << endl; |
675 | } | 655 | } |
676 | else | 656 | else |
677 | { | 657 | { |
678 | item.destination = p->getLocalPackage()->getInstalledTo(); | 658 | item.destination = p->getLocalPackage()->getInstalledTo(); |
679 | } | 659 | } |
680 | 660 | ||
681 | // Now see if version is newer or not | 661 | // Now see if version is newer or not |
682 | int val = compareVersions( p->getInstalledVersion(), p->getVersion() ); | 662 | int val = compareVersions( p->getInstalledVersion(), p->getVersion() ); |
683 | 663 | ||
684 | // If the version requested is older and user selected a local ipk file, then reinstall the file | 664 | // If the version requested is older and user selected a local ipk file, then reinstall the file |
685 | if ( p->isPackageStoredLocally() && val == -1 ) | 665 | if ( p->isPackageStoredLocally() && val == -1 ) |
686 | val = 0; | 666 | val = 0; |
687 | 667 | ||
688 | if ( val == -2 ) | 668 | if ( val == -2 ) |
689 | { | 669 | { |
690 | // Error - should handle | 670 | // Error - should handle |
691 | } | 671 | } |
692 | else if ( val == -1 ) | 672 | else if ( val == -1 ) |
693 | { | 673 | { |
694 | // Version available is older - remove only | 674 | // Version available is older - remove only |
695 | item.option = "D"; | 675 | item.option = "D"; |
696 | } | 676 | } |
697 | else | 677 | else |
698 | { | 678 | { |
699 | QString caption; | 679 | QString caption; |
700 | QString text; | 680 | QString text; |
701 | QString secondButton; | 681 | QString secondButton; |
702 | QString secondOption; | 682 | QString secondOption; |
703 | if ( val == 0 ) | 683 | if ( val == 0 ) |
704 | { | 684 | { |
705 | // Version available is the same - option to remove or reinstall | 685 | // Version available is the same - option to remove or reinstall |
706 | caption = tr( "Do you wish to remove or reinstall\n%1?" ); | 686 | caption = tr( "Do you wish to remove or reinstall\n%1?" ); |
707 | text = tr( "Remove or ReInstall" ); | 687 | text = tr( "Remove or ReInstall" ); |
708 | secondButton = tr( "ReInstall" ); | 688 | secondButton = tr( "ReInstall" ); |
709 | secondOption = tr( "R" ); | 689 | secondOption = tr( "R" ); |
710 | } | 690 | } |
711 | else if ( val == 1 ) | 691 | else if ( val == 1 ) |
712 | { | 692 | { |
713 | // Version available is newer - option to remove or upgrade | 693 | // Version available is newer - option to remove or upgrade |
714 | caption = tr( "Do you wish to remove or upgrade\n%1?" ); | 694 | caption = tr( "Do you wish to remove or upgrade\n%1?" ); |
715 | text = tr( "Remove or Upgrade" ); | 695 | text = tr( "Remove or Upgrade" ); |
716 | secondButton = tr( "Upgrade" ); | 696 | secondButton = tr( "Upgrade" ); |
717 | secondOption = tr( "U" ); | 697 | secondOption = tr( "U" ); |
718 | } | 698 | } |
719 | 699 | ||
720 | // Sticky option not implemented yet, but will eventually allow | 700 | // Sticky option not implemented yet, but will eventually allow |
721 | // the user to say something like 'remove all' | 701 | // the user to say something like 'remove all' |
722 | if ( stickyOption == "" ) | 702 | if ( stickyOption == "" ) |
723 | { | 703 | { |
724 | QString msgtext; | 704 | QString msgtext; |
725 | msgtext = caption.arg( ( const char * )name ); | 705 | msgtext = caption.arg( ( const char * )name ); |
726 | switch( QMessageBox::information( this, text, | 706 | switch( QMessageBox::information( this, text, |
727 | msgtext, tr( "Remove" ), secondButton ) ) | 707 | msgtext, tr( "Remove" ), secondButton ) ) |
728 | { | 708 | { |
729 | case 0: // Try again or Enter | 709 | case 0: // Try again or Enter |
730 | // option 0 = Remove | 710 | // option 0 = Remove |
731 | item.option = "D"; | 711 | item.option = "D"; |
732 | break; | 712 | break; |
733 | case 1: // Quit or Escape | 713 | case 1: // Quit or Escape |
734 | item.option = secondOption; | 714 | item.option = secondOption; |
735 | break; | 715 | break; |
736 | } | 716 | } |
737 | } | 717 | } |
738 | else | 718 | else |
739 | { | 719 | { |
740 | // item.option = stickyOption; | 720 | // item.option = stickyOption; |
741 | } | 721 | } |
742 | } | 722 | } |
743 | 723 | ||
744 | 724 | ||
745 | // Check if we are reinstalling the same version | 725 | // Check if we are reinstalling the same version |
746 | if ( item.option != "R" ) | 726 | if ( item.option != "R" ) |
747 | item.recreateLinks = true; | 727 | item.recreateLinks = true; |
748 | else | 728 | else |
749 | item.recreateLinks = false; | 729 | item.recreateLinks = false; |
750 | 730 | ||
751 | // User hit cancel (on dlg - assume remove) | 731 | // User hit cancel (on dlg - assume remove) |
752 | return item; | 732 | return item; |
753 | } | 733 | } |
754 | } | 734 | } |
755 | 735 | ||
756 | void NetworkPackageManager :: displayText( const QString &t ) | 736 | void NetworkPackageManager :: displayText( const QString &t ) |
757 | { | 737 | { |
758 | cout << t << endl; | 738 | cout << t << endl; |
759 | } | 739 | } |
760 | 740 | ||
761 | 741 | ||
762 | void NetworkPackageManager :: letterPushed( QString t ) | 742 | void NetworkPackageManager :: letterPushed( QString t ) |
763 | { | 743 | { |
764 | QCheckListItem *top = (QCheckListItem *)packagesList->firstChild(); | 744 | QCheckListItem *top = (QCheckListItem *)packagesList->firstChild(); |
765 | QCheckListItem *start = (QCheckListItem *)packagesList->currentItem(); | 745 | QCheckListItem *start = (QCheckListItem *)packagesList->currentItem(); |
766 | if ( packagesList->firstChild() == 0 ) | 746 | if ( packagesList->firstChild() == 0 ) |
767 | return; | 747 | return; |
768 | 748 | ||
769 | QCheckListItem *item; | 749 | QCheckListItem *item; |
770 | if ( start == 0 ) | 750 | if ( start == 0 ) |
771 | { | 751 | { |
772 | item = (QCheckListItem *)packagesList->firstChild(); | 752 | item = (QCheckListItem *)packagesList->firstChild(); |
773 | start = top; | 753 | start = top; |
774 | } | 754 | } |
775 | else | 755 | else |
776 | item = (QCheckListItem *)start->nextSibling(); | 756 | item = (QCheckListItem *)start->nextSibling(); |
777 | 757 | ||
778 | if ( item == 0 ) | 758 | if ( item == 0 ) |
779 | item = (QCheckListItem *)packagesList->firstChild(); | 759 | item = (QCheckListItem *)packagesList->firstChild(); |
780 | do | 760 | do |
781 | { | 761 | { |
782 | if ( item->text().lower().startsWith( t.lower() ) ) | 762 | if ( item->text().lower().startsWith( t.lower() ) ) |
783 | { | 763 | { |
784 | packagesList->setSelected( item, true ); | 764 | packagesList->setSelected( item, true ); |
785 | packagesList->ensureItemVisible( item ); | 765 | packagesList->ensureItemVisible( item ); |
786 | break; | 766 | break; |
787 | } | 767 | } |
788 | 768 | ||
789 | item = (QCheckListItem *)item->nextSibling(); | 769 | item = (QCheckListItem *)item->nextSibling(); |
790 | if ( !item ) | 770 | if ( !item ) |
791 | item = (QCheckListItem *)packagesList->firstChild(); | 771 | item = (QCheckListItem *)packagesList->firstChild(); |
792 | } while ( item != start); | 772 | } while ( item != start); |
793 | } | 773 | } |
794 | 774 | ||
795 | 775 | ||
796 | void NetworkPackageManager :: searchForPackage( bool findNext ) | 776 | void NetworkPackageManager :: searchForPackage( bool findNext ) |
797 | { | 777 | { |
798 | bool ok = false; | 778 | bool ok = false; |
799 | if ( !findNext || lastSearchText.isEmpty() ) | 779 | if ( !findNext || lastSearchText.isEmpty() ) |
800 | lastSearchText = InputDialog::getText( tr( "Search for package" ), tr( "Enter package to search for" ), lastSearchText, &ok, this ).lower(); | 780 | lastSearchText = InputDialog::getText( tr( "Search for package" ), tr( "Enter package to search for" ), lastSearchText, &ok, this ).lower(); |
801 | else | 781 | else |
802 | ok = true; | 782 | ok = true; |
803 | 783 | ||
804 | if ( ok && !lastSearchText.isEmpty() ) | 784 | if ( ok && !lastSearchText.isEmpty() ) |
805 | { | 785 | { |
806 | cout << "searching for " << lastSearchText << endl; | 786 | cout << "searching for " << lastSearchText << endl; |
807 | // look through package list for text startng at current position | 787 | // look through package list for text startng at current position |
808 | vector<InstallData> workingPackages; | 788 | vector<InstallData> workingPackages; |
809 | QCheckListItem *start = (QCheckListItem *)packagesList->currentItem(); | 789 | QCheckListItem *start = (QCheckListItem *)packagesList->currentItem(); |
810 | if ( start != 0 ) | 790 | if ( start != 0 ) |
811 | start = (QCheckListItem *)start->nextSibling(); | 791 | start = (QCheckListItem *)start->nextSibling(); |
812 | 792 | ||
813 | if ( start == 0 ) | 793 | if ( start == 0 ) |
814 | start = (QCheckListItem *)packagesList->firstChild(); | 794 | start = (QCheckListItem *)packagesList->firstChild(); |
815 | 795 | ||
816 | for ( QCheckListItem *item = start; item != 0 ; | 796 | for ( QCheckListItem *item = start; item != 0 ; |
817 | item = (QCheckListItem *)item->nextSibling() ) | 797 | item = (QCheckListItem *)item->nextSibling() ) |
818 | { | 798 | { |
819 | cout << "checking " << item->text().lower() << endl; | 799 | cout << "checking " << item->text().lower() << endl; |
820 | if ( item->text().lower().find( lastSearchText ) != -1 ) | 800 | if ( item->text().lower().find( lastSearchText ) != -1 ) |
821 | { | 801 | { |
822 | cout << "matched " << item->text() << endl; | 802 | cout << "matched " << item->text() << endl; |
823 | packagesList->ensureItemVisible( item ); | 803 | packagesList->ensureItemVisible( item ); |
824 | packagesList->setCurrentItem( item ); | 804 | packagesList->setCurrentItem( item ); |
825 | break; | 805 | break; |
826 | } | 806 | } |
827 | } | 807 | } |
828 | } | 808 | } |
829 | } | 809 | } |
830 | 810 | ||
831 | void NetworkPackageManager :: showOnlyUninstalledPackages( bool val ) | 811 | void NetworkPackageManager :: showOnlyUninstalledPackages( bool val ) |
832 | { | 812 | { |
833 | showUninstalledPkgs = val; | 813 | showUninstalledPkgs = val; |
834 | serverSelected( -1 ); | 814 | serverSelected( -1 ); |
835 | } | 815 | } |
836 | 816 | ||
837 | void NetworkPackageManager :: showOnlyInstalledPackages( bool val ) | 817 | void NetworkPackageManager :: showOnlyInstalledPackages( bool val ) |
838 | { | 818 | { |
839 | showInstalledPkgs = val; | 819 | showInstalledPkgs = val; |
840 | serverSelected( -1 ); | 820 | serverSelected( -1 ); |
841 | } | 821 | } |
842 | 822 | ||
843 | void NetworkPackageManager :: showUpgradedPackages( bool val ) | 823 | void NetworkPackageManager :: showUpgradedPackages( bool val ) |
844 | { | 824 | { |
845 | showUpgradedPkgs = val; | 825 | showUpgradedPkgs = val; |
846 | serverSelected( -1 ); | 826 | serverSelected( -1 ); |
847 | } | 827 | } |
848 | 828 | ||
849 | bool NetworkPackageManager :: filterByCategory( bool val ) | 829 | bool NetworkPackageManager :: filterByCategory( bool val ) |
850 | { | 830 | { |
851 | if ( val ) | 831 | if ( val ) |
852 | { | 832 | { |
853 | if ( categoryFilter == "" ) | 833 | if ( categoryFilter == "" ) |
854 | { | 834 | { |
855 | if ( !setFilterCategory() ) | 835 | if ( !setFilterCategory() ) |
856 | return false; | 836 | return false; |
857 | } | 837 | } |
858 | 838 | ||
859 | categoryFilterEnabled = true; | 839 | categoryFilterEnabled = true; |
860 | serverSelected( -1 ); | 840 | serverSelected( -1 ); |
861 | return true; | 841 | return true; |
862 | } | 842 | } |
863 | else | 843 | else |
864 | { | 844 | { |
865 | // Turn off filter | 845 | // Turn off filter |
866 | categoryFilterEnabled = false; | 846 | categoryFilterEnabled = false; |
867 | serverSelected( -1 ); | 847 | serverSelected( -1 ); |
868 | return false; | 848 | return false; |
869 | } | 849 | } |
870 | } | 850 | } |
871 | 851 | ||
872 | bool NetworkPackageManager :: setFilterCategory( ) | 852 | bool NetworkPackageManager :: setFilterCategory( ) |
873 | { | 853 | { |
874 | // Get categories; | 854 | // Get categories; |
875 | CategoryFilterImpl dlg( DataManager::getAvailableCategories(), categoryFilter, this ); | 855 | CategoryFilterImpl dlg( DataManager::getAvailableCategories(), categoryFilter, this ); |
876 | if ( dlg.exec() == QDialog::Accepted ) | 856 | if ( dlg.exec() == QDialog::Accepted ) |
877 | { | 857 | { |
878 | categoryFilter = dlg.getSelectedFilter(); | 858 | categoryFilter = dlg.getSelectedFilter(); |
879 | 859 | ||
880 | if ( categoryFilter == "" ) | 860 | if ( categoryFilter == "" ) |
881 | return false; | 861 | return false; |
882 | 862 | ||
883 | categoryFilterEnabled = true; | 863 | categoryFilterEnabled = true; |
884 | serverSelected( -1 ); | 864 | serverSelected( -1 ); |
885 | return true; | 865 | return true; |
886 | } | 866 | } |
887 | 867 | ||
888 | return false; | 868 | return false; |
889 | } | 869 | } |
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 | |||
@@ -1,98 +1,97 @@ | |||
1 | /*************************************************************************** | 1 | /*************************************************************************** |
2 | networkpkgmgr.h - description | 2 | networkpkgmgr.h - description |
3 | ------------------- | 3 | ------------------- |
4 | begin : Mon Aug 26 13:32:30 BST 2002 | 4 | begin : Mon Aug 26 13:32:30 BST 2002 |
5 | copyright : (C) 2002 by Andy Qua | 5 | copyright : (C) 2002 by Andy Qua |
6 | email : andy.qua@blueyonder.co.uk | 6 | email : andy.qua@blueyonder.co.uk |
7 | ***************************************************************************/ | 7 | ***************************************************************************/ |
8 | 8 | ||
9 | /*************************************************************************** | 9 | /*************************************************************************** |
10 | * * | 10 | * * |
11 | * This program is free software; you can redistribute it and/or modify * | 11 | * This program is free software; you can redistribute it and/or modify * |
12 | * it under the terms of the GNU General Public License as published by * | 12 | * it under the terms of the GNU General Public License as published by * |
13 | * the Free Software Foundation; either version 2 of the License, or * | 13 | * the Free Software Foundation; either version 2 of the License, or * |
14 | * (at your option) any later version. * | 14 | * (at your option) any later version. * |
15 | * * | 15 | * * |
16 | ***************************************************************************/ | 16 | ***************************************************************************/ |
17 | 17 | ||
18 | #ifndef NETWORKPKGMGR_H | 18 | #ifndef NETWORKPKGMGR_H |
19 | #define NETWORKPKGMGR_H | 19 | #define NETWORKPKGMGR_H |
20 | 20 | ||
21 | #include <qlayout.h> | 21 | #include <qlayout.h> |
22 | #include <qpushbutton.h> | 22 | #include <qpushbutton.h> |
23 | #include <qwidget.h> | 23 | #include <qwidget.h> |
24 | #include <qcombobox.h> | 24 | #include <qcombobox.h> |
25 | #include <qlistview.h> | 25 | #include <qlistview.h> |
26 | 26 | ||
27 | #include "datamgr.h" | 27 | #include "datamgr.h" |
28 | 28 | ||
29 | class InstallData; | 29 | class InstallData; |
30 | 30 | ||
31 | /** NetworkPackageManager is the base class of the project */ | 31 | /** NetworkPackageManager is the base class of the project */ |
32 | class NetworkPackageManager : public QWidget | 32 | class NetworkPackageManager : public QWidget |
33 | { | 33 | { |
34 | Q_OBJECT | 34 | Q_OBJECT |
35 | public: | 35 | public: |
36 | /** construtor */ | 36 | /** construtor */ |
37 | NetworkPackageManager( QWidget* parent=0, const char *name=0 ); | 37 | NetworkPackageManager( QWidget* parent=0, const char *name=0 ); |
38 | /** destructor */ | 38 | /** destructor */ |
39 | ~NetworkPackageManager(); | 39 | ~NetworkPackageManager(); |
40 | 40 | ||
41 | void setDataManager( DataManager *dm ); | 41 | void setDataManager( DataManager *dm ); |
42 | void selectLocalPackage( const QString &pkg ); | 42 | void selectLocalPackage( const QString &pkg ); |
43 | void updateData(); | 43 | void updateData(); |
44 | void searchForPackage( bool findNext ); | 44 | void searchForPackage( bool findNext ); |
45 | void showOnlyUninstalledPackages( bool val ); | 45 | void showOnlyUninstalledPackages( bool val ); |
46 | void showOnlyInstalledPackages( bool val ); | 46 | void showOnlyInstalledPackages( bool val ); |
47 | void showUpgradedPackages( bool val ); | 47 | void showUpgradedPackages( bool val ); |
48 | bool filterByCategory( bool val ); | 48 | bool filterByCategory( bool val ); |
49 | bool setFilterCategory(); | 49 | bool setFilterCategory(); |
50 | 50 | ||
51 | private: | 51 | private: |
52 | DataManager *dataMgr; | 52 | DataManager *dataMgr; |
53 | 53 | ||
54 | QComboBox *serversList; | 54 | QComboBox *serversList; |
55 | QListView *packagesList; | 55 | QListView *packagesList; |
56 | QPushButton *update; | ||
57 | QPushButton *upgrade; | ||
58 | QPushButton *download; | ||
59 | QPushButton *apply; | ||
60 | 56 | ||
61 | QString currentlySelectedServer; | 57 | QString currentlySelectedServer; |
62 | QString lastSearchText; | 58 | QString lastSearchText; |
63 | QString categoryFilter; | 59 | QString categoryFilter; |
64 | 60 | ||
65 | bool categoryFilterEnabled; | 61 | bool categoryFilterEnabled; |
66 | bool showJumpTo; | 62 | bool showJumpTo; |
67 | bool showUninstalledPkgs; | 63 | bool showUninstalledPkgs; |
68 | bool showInstalledPkgs; | 64 | bool showInstalledPkgs; |
69 | bool showUpgradedPkgs; | 65 | bool showUpgradedPkgs; |
70 | 66 | ||
67 | bool downloadEnabled; | ||
68 | |||
71 | void initGui(); | 69 | void initGui(); |
72 | void setupConnections(); | ||
73 | void showProgressDialog( char *initialText ); | 70 | void showProgressDialog( char *initialText ); |
74 | void downloadSelectedPackages(); | 71 | void downloadSelectedPackages(); |
75 | void downloadRemotePackage(); | 72 | void downloadRemotePackage(); |
76 | void serverSelected( int index, bool showProgress ); | 73 | void serverSelected( int index, bool showProgress ); |
77 | 74 | ||
78 | InstallData dealWithItem( QCheckListItem *item ); | 75 | InstallData dealWithItem( QCheckListItem *item ); |
79 | QString stickyOption; | 76 | QString stickyOption; |
80 | 77 | ||
81 | signals: | 78 | signals: |
82 | void appRaiseMainWidget(); | 79 | void appRaiseMainWidget(); |
83 | void appRaiseProgressWidget(); | 80 | void appRaiseProgressWidget(); |
81 | void appEnableUpgrade( bool ); | ||
82 | void appEnableDownload( bool ); | ||
84 | void progressSetSteps( int ); | 83 | void progressSetSteps( int ); |
85 | void progressSetMessage( const QString & ); | 84 | void progressSetMessage( const QString & ); |
86 | void progressUpdate( int ); | 85 | void progressUpdate( int ); |
87 | 86 | ||
88 | public slots: | 87 | public slots: |
89 | void applyChanges(); | 88 | void applyChanges(); |
90 | void upgradePackages(); | 89 | void upgradePackages(); |
91 | void downloadPackage(); | 90 | void downloadPackage(); |
92 | void updateServer(); | 91 | void updateServer(); |
93 | void displayText( const QString &t ); | 92 | void displayText( const QString &t ); |
94 | void letterPushed( QString t ); | 93 | void letterPushed( QString t ); |
95 | void serverSelected( int index ); | 94 | void serverSelected( int index ); |
96 | }; | 95 | }; |
97 | 96 | ||
98 | #endif | 97 | #endif |