Diffstat (limited to 'noncore/settings/aqpkg/networkpkgmgr.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/settings/aqpkg/networkpkgmgr.cpp | 46 |
1 files changed, 13 insertions, 33 deletions
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 | |||
@@ -44,51 +44,48 @@ using namespace std; | |||
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 | { |
@@ -126,96 +123,81 @@ void NetworkPackageManager :: selectLocalPackage( const QString &pkg ) | |||
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 | { |
@@ -319,64 +301,62 @@ void NetworkPackageManager :: serverSelected( int, bool raiseProgress ) | |||
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 ); |
@@ -400,73 +380,73 @@ void NetworkPackageManager :: upgradePackages() | |||
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 | { |