Diffstat (limited to 'noncore/settings/aqpkg/networkpkgmgr.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | noncore/settings/aqpkg/networkpkgmgr.cpp | 82 |
1 files changed, 56 insertions, 26 deletions
diff --git a/noncore/settings/aqpkg/networkpkgmgr.cpp b/noncore/settings/aqpkg/networkpkgmgr.cpp index 79a380e..cae0d8f 100644 --- a/noncore/settings/aqpkg/networkpkgmgr.cpp +++ b/noncore/settings/aqpkg/networkpkgmgr.cpp | |||
@@ -43,16 +43,15 @@ using namespace std; | |||
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( DataManager *dataManager, QWidget *parent, const char *name) | 49 | NetworkPackageManager::NetworkPackageManager( QWidget *parent, const char *name ) |
50 | : QWidget(parent, name) | 50 | : QWidget(parent, name) |
51 | { | 51 | { |
52 | dataMgr = dataManager; | ||
53 | 52 | ||
54 | #ifdef QWS | 53 | #ifdef QWS |
55 | // read download directory from config file | 54 | // read download directory from config file |
56 | Config cfg( "aqpkg" ); | 55 | Config cfg( "aqpkg" ); |
57 | cfg.setGroup( "settings" ); | 56 | cfg.setGroup( "settings" ); |
58 | currentlySelectedServer = cfg.readEntry( "selectedServer", "local" ); | 57 | currentlySelectedServer = cfg.readEntry( "selectedServer", "local" ); |
@@ -65,54 +64,59 @@ NetworkPackageManager::NetworkPackageManager( DataManager *dataManager, QWidget | |||
65 | showUpgradedPkgs = false; | 64 | showUpgradedPkgs = false; |
66 | categoryFilterEnabled = false; | 65 | categoryFilterEnabled = false; |
67 | 66 | ||
68 | initGui(); | 67 | initGui(); |
69 | setupConnections(); | 68 | setupConnections(); |
70 | 69 | ||
71 | updateData(); | 70 | //updateData(); |
72 | } | 71 | } |
73 | 72 | ||
74 | NetworkPackageManager::~NetworkPackageManager() | 73 | NetworkPackageManager::~NetworkPackageManager() |
75 | { | 74 | { |
76 | } | 75 | } |
77 | 76 | ||
78 | void NetworkPackageManager :: timerEvent ( QTimerEvent * ) | 77 | void NetworkPackageManager :: setDataManager( DataManager *dm ) |
79 | { | 78 | { |
80 | killTimer( timerId ); | 79 | dataMgr = dm; |
81 | |||
82 | // Add server names to listbox | ||
83 | updateData(); | ||
84 | } | 80 | } |
85 | 81 | ||
86 | void NetworkPackageManager :: updateData() | 82 | void NetworkPackageManager :: updateData() |
87 | { | 83 | { |
84 | emit progressSetSteps( dataMgr->getServerList().size() ); | ||
85 | |||
88 | serversList->clear(); | 86 | serversList->clear(); |
89 | packagesList->clear(); | 87 | packagesList->clear(); |
90 | 88 | ||
91 | |||
92 | vector<Server>::iterator it; | 89 | vector<Server>::iterator it; |
93 | int activeItem = -1; | 90 | int activeItem = -1; |
94 | int i; | 91 | int i; |
92 | QString serverName; | ||
95 | for ( i = 0, it = dataMgr->getServerList().begin() ; it != dataMgr->getServerList().end() ; ++it, ++i ) | 93 | for ( i = 0, it = dataMgr->getServerList().begin() ; it != dataMgr->getServerList().end() ; ++it, ++i ) |
96 | { | 94 | { |
95 | serverName = it->getServerName(); | ||
96 | emit progressSetMessage( tr( "Building server list:\n\t%1" ).arg( serverName ) ); | ||
97 | emit progressUpdate( i ); | ||
98 | qApp->processEvents(); | ||
99 | |||
97 | // cout << "Adding " << it->getServerName() << " to combobox" << endl; | 100 | // cout << "Adding " << it->getServerName() << " to combobox" << endl; |
98 | if ( !it->isServerActive() ) | 101 | if ( !it->isServerActive() ) |
99 | { | 102 | { |
100 | cout << it->getServerName() << " is not active" << endl; | 103 | cout << serverName << " is not active" << endl; |
101 | i--; | 104 | i--; |
102 | continue; | 105 | continue; |
103 | } | 106 | } |
104 | serversList->insertItem( it->getServerName() ); | 107 | |
105 | if ( it->getServerName() == currentlySelectedServer ) | 108 | serversList->insertItem( serverName ); |
109 | if ( serverName == currentlySelectedServer ) | ||
106 | activeItem = i; | 110 | activeItem = i; |
107 | } | 111 | } |
108 | 112 | ||
109 | // set selected server to be active server | 113 | // set selected server to be active server |
110 | if ( activeItem != -1 ) | 114 | if ( activeItem != -1 ) |
111 | serversList->setCurrentItem( activeItem ); | 115 | serversList->setCurrentItem( activeItem ); |
112 | serverSelected( 0 ); | 116 | serverSelected( 0, FALSE ); |
113 | } | 117 | } |
114 | 118 | ||
115 | void NetworkPackageManager :: selectLocalPackage( const QString &pkg ) | 119 | void NetworkPackageManager :: selectLocalPackage( const QString &pkg ) |
116 | { | 120 | { |
117 | // First select local server | 121 | // First select local server |
118 | for ( int i = 0 ; i < serversList->count() ; ++i ) | 122 | for ( int i = 0 ; i < serversList->count() ; ++i ) |
@@ -190,42 +194,62 @@ void NetworkPackageManager :: setupConnections() | |||
190 | connect( apply, SIGNAL(released()), this, SLOT(applyChanges()) ); | 194 | connect( apply, SIGNAL(released()), this, SLOT(applyChanges()) ); |
191 | connect( download, SIGNAL(released()), this, SLOT(downloadPackage()) ); | 195 | connect( download, SIGNAL(released()), this, SLOT(downloadPackage()) ); |
192 | connect( upgrade, SIGNAL( released()), this, SLOT(upgradePackages()) ); | 196 | connect( upgrade, SIGNAL( released()), this, SLOT(upgradePackages()) ); |
193 | connect( update, SIGNAL(released()), this, SLOT(updateServer()) ); | 197 | connect( update, SIGNAL(released()), this, SLOT(updateServer()) ); |
194 | } | 198 | } |
195 | 199 | ||
196 | void NetworkPackageManager :: showProgressDialog( char *initialText ) | 200 | void NetworkPackageManager :: serverSelected( int index ) |
197 | { | 201 | { |
198 | if ( !progressDlg ) | 202 | serverSelected( index, TRUE ); |
199 | progressDlg = new ProgressDlg( this, "Progress", false ); | ||
200 | progressDlg->setText( initialText ); | ||
201 | progressDlg->show(); | ||
202 | } | 203 | } |
203 | 204 | ||
204 | 205 | void NetworkPackageManager :: serverSelected( int, bool raiseProgress ) | |
205 | void NetworkPackageManager :: serverSelected( int ) | ||
206 | { | 206 | { |
207 | packagesList->clear(); | ||
208 | |||
209 | // display packages | 207 | // display packages |
210 | QString serverName = serversList->currentText(); | 208 | QString serverName = serversList->currentText(); |
211 | currentlySelectedServer = serverName; | 209 | currentlySelectedServer = serverName; |
212 | 210 | ||
211 | vector<Server>::iterator s = dataMgr->getServer( serverName ); | ||
212 | |||
213 | vector<Package> &list = s->getPackageList(); | ||
214 | vector<Package>::iterator it; | ||
215 | |||
216 | // Display progress widget while loading list | ||
217 | bool doProgress = ( list.size() > 200 ); | ||
218 | if ( doProgress ) | ||
219 | { | ||
220 | if ( raiseProgress ) | ||
221 | { | ||
222 | emit appRaiseProgressWidget(); | ||
223 | } | ||
224 | emit progressSetSteps( list.size() ); | ||
225 | emit progressSetMessage( tr( "Building package list for:\n\t%1" ).arg( serverName ) ); | ||
226 | } | ||
227 | |||
228 | packagesList->clear(); | ||
229 | |||
213 | #ifdef QWS | 230 | #ifdef QWS |
214 | // read download directory from config file | 231 | // read download directory from config file |
215 | Config cfg( "aqpkg" ); | 232 | Config cfg( "aqpkg" ); |
216 | cfg.setGroup( "settings" ); | 233 | cfg.setGroup( "settings" ); |
217 | cfg.writeEntry( "selectedServer", currentlySelectedServer ); | 234 | cfg.writeEntry( "selectedServer", currentlySelectedServer ); |
218 | #endif | 235 | #endif |
219 | 236 | ||
220 | vector<Server>::iterator s = dataMgr->getServer( serverName ); | 237 | int i = 0; |
221 | |||
222 | vector<Package> &list = s->getPackageList(); | ||
223 | vector<Package>::iterator it; | ||
224 | for ( it = list.begin() ; it != list.end() ; ++it ) | 238 | for ( it = list.begin() ; it != list.end() ; ++it ) |
225 | { | 239 | { |
240 | // Update progress after every 100th package (arbitrary value, seems to give good balance) | ||
241 | i++; | ||
242 | if ( ( i % 100 ) == 0 ) | ||
243 | { | ||
244 | if ( doProgress ) | ||
245 | { | ||
246 | emit progressUpdate( i ); | ||
247 | } | ||
248 | qApp->processEvents(); | ||
249 | } | ||
226 | 250 | ||
227 | QString text = ""; | 251 | QString text = ""; |
228 | 252 | ||
229 | // Apply show only uninstalled packages filter | 253 | // Apply show only uninstalled packages filter |
230 | if ( showUninstalledPkgs && it->isInstalled() ) | 254 | if ( showUninstalledPkgs && it->isInstalled() ) |
231 | continue; | 255 | continue; |
@@ -329,12 +353,18 @@ void NetworkPackageManager :: serverSelected( int ) | |||
329 | else | 353 | else |
330 | { | 354 | { |
331 | upgrade->setEnabled( true ); | 355 | upgrade->setEnabled( true ); |
332 | download->setEnabled( true ); | 356 | download->setEnabled( true ); |
333 | download->setText( "Download" ); | 357 | download->setText( "Download" ); |
334 | } | 358 | } |
359 | |||
360 | // Display this widget once everything is done | ||
361 | if ( doProgress && raiseProgress ) | ||
362 | { | ||
363 | emit appRaiseMainWidget(); | ||
364 | } | ||
335 | } | 365 | } |
336 | 366 | ||
337 | void NetworkPackageManager :: updateServer() | 367 | void NetworkPackageManager :: updateServer() |
338 | { | 368 | { |
339 | QString serverName = serversList->currentText(); | 369 | QString serverName = serversList->currentText(); |
340 | 370 | ||