summaryrefslogtreecommitdiff
path: root/noncore/settings/aqpkg/networkpkgmgr.cpp
Unidiff
Diffstat (limited to 'noncore/settings/aqpkg/networkpkgmgr.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/aqpkg/networkpkgmgr.cpp46
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
47extern int compareVersions( const char *v1, const char *v2 ); 47extern int compareVersions( const char *v1, const char *v2 );
48 48
49NetworkPackageManager::NetworkPackageManager( QWidget *parent, const char *name ) 49NetworkPackageManager::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
73NetworkPackageManager::~NetworkPackageManager() 70NetworkPackageManager::~NetworkPackageManager()
74{ 71{
75} 72}
76 73
77void NetworkPackageManager :: setDataManager( DataManager *dm ) 74void NetworkPackageManager :: setDataManager( DataManager *dm )
78{ 75{
79 dataMgr = dm; 76 dataMgr = dm;
80} 77}
81 78
82void NetworkPackageManager :: updateData() 79void 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
146void NetworkPackageManager :: initGui() 143void 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
191void 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
200void NetworkPackageManager :: serverSelected( int index ) 182void NetworkPackageManager :: serverSelected( int index )
201{ 183{
202 serverSelected( index, TRUE ); 184 serverSelected( index, TRUE );
203} 185}
204 186
205void NetworkPackageManager :: serverSelected( int, bool raiseProgress ) 187void 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
367void NetworkPackageManager :: updateServer() 347void 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
421void NetworkPackageManager :: downloadPackage() 401void 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 {