summaryrefslogtreecommitdiff
path: root/noncore/settings/aqpkg/networkpkgmgr.cpp
Unidiff
Diffstat (limited to 'noncore/settings/aqpkg/networkpkgmgr.cpp') (more/less context) (show whitespace changes)
-rw-r--r--noncore/settings/aqpkg/networkpkgmgr.cpp82
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
47extern int compareVersions( const char *v1, const char *v2 ); 47extern int compareVersions( const char *v1, const char *v2 );
48 48
49NetworkPackageManager::NetworkPackageManager( DataManager *dataManager, QWidget *parent, const char *name) 49NetworkPackageManager::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
74NetworkPackageManager::~NetworkPackageManager() 73NetworkPackageManager::~NetworkPackageManager()
75{ 74{
76} 75}
77 76
78void NetworkPackageManager :: timerEvent ( QTimerEvent * ) 77void 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
86void NetworkPackageManager :: updateData() 82void 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
115void NetworkPackageManager :: selectLocalPackage( const QString &pkg ) 119void 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
196void NetworkPackageManager :: showProgressDialog( char *initialText ) 200void 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 205void NetworkPackageManager :: serverSelected( int, bool raiseProgress )
205void 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
337void NetworkPackageManager :: updateServer() 367void NetworkPackageManager :: updateServer()
338{ 368{
339 QString serverName = serversList->currentText(); 369 QString serverName = serversList->currentText();
340 370