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.cpp59
1 files changed, 54 insertions, 5 deletions
diff --git a/noncore/settings/aqpkg/networkpkgmgr.cpp b/noncore/settings/aqpkg/networkpkgmgr.cpp
index 188f90d..0814121 100644
--- a/noncore/settings/aqpkg/networkpkgmgr.cpp
+++ b/noncore/settings/aqpkg/networkpkgmgr.cpp
@@ -31,47 +31,48 @@ using namespace std;
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 44
44#include "global.h" 45#include "global.h"
45 46
46extern int compareVersions( const char *v1, const char *v2 ); 47extern int compareVersions( const char *v1, const char *v2 );
47 48
48NetworkPackageManager::NetworkPackageManager( DataManager *dataManager, QWidget *parent, const char *name) 49NetworkPackageManager::NetworkPackageManager( DataManager *dataManager, QWidget *parent, const char *name)
49 : QWidget(parent, name) 50 : QWidget(parent, name)
50{ 51{
51 dataMgr = dataManager; 52 dataMgr = dataManager;
52 53
53#ifdef QWS 54#ifdef QWS
54 // read download directory from config file 55 // read download directory from config file
55 Config cfg( "aqpkg" ); 56 Config cfg( "aqpkg" );
56 cfg.setGroup( "settings" ); 57 cfg.setGroup( "settings" );
57 currentlySelectedServer = cfg.readEntry( "selectedServer", "local" ); 58 currentlySelectedServer = cfg.readEntry( "selectedServer", "local" );
58 showJumpTo = cfg.readBoolEntry( "showJumpTo", "true" ); 59 showJumpTo = cfg.readBoolEntry( "showJumpTo", "true" );
59 60
60#endif 61#endif
61 62
62 showUninstalledPkgs = false; 63 showUninstalledPkgs = false;
63 showInstalledPkgs = false; 64 showInstalledPkgs = false;
64 showUpgradedPkgs = false; 65 showUpgradedPkgs = false;
65 66 categoryFilterEnabled = false;
66 67
67 initGui(); 68 initGui();
68 setupConnections(); 69 setupConnections();
69 70
70 updateData(); 71 updateData();
71} 72}
72 73
73NetworkPackageManager::~NetworkPackageManager() 74NetworkPackageManager::~NetworkPackageManager()
74{ 75{
75} 76}
76 77
77void NetworkPackageManager :: timerEvent ( QTimerEvent * ) 78void NetworkPackageManager :: timerEvent ( QTimerEvent * )
@@ -230,24 +231,31 @@ void NetworkPackageManager :: serverSelected( int )
230 // Apply show only installed packages filter 231 // Apply show only installed packages filter
231 if ( showInstalledPkgs && !it->isInstalled() ) 232 if ( showInstalledPkgs && !it->isInstalled() )
232 continue; 233 continue;
233 234
234 // Apply show only new installed packages filter 235 // Apply show only new installed packages filter
235 if ( showUpgradedPkgs ) 236 if ( showUpgradedPkgs )
236 { 237 {
237 if ( !it->isInstalled() || 238 if ( !it->isInstalled() ||
238 compareVersions( it->getInstalledVersion(), it->getVersion() ) != 1 ) 239 compareVersions( it->getInstalledVersion(), it->getVersion() ) != 1 )
239 continue; 240 continue;
240 } 241 }
241 242
243 // Apply the section filter
244 if ( categoryFilterEnabled && categoryFilter != "" )
245 {
246 if ( it->getSection() == "" || categoryFilter.find( it->getSection().lower() ) == -1 )
247 continue;
248 }
249
242 // If the local server, only display installed packages 250 // If the local server, only display installed packages
243 if ( serverName == LOCAL_SERVER && !it->isInstalled() ) 251 if ( serverName == LOCAL_SERVER && !it->isInstalled() )
244 continue; 252 continue;
245 253
246 254
247 text += it->getPackageName(); 255 text += it->getPackageName();
248 if ( it->isInstalled() ) 256 if ( it->isInstalled() )
249 { 257 {
250 text += " (installed)"; 258 text += " (installed)";
251 259
252 // If a different version of package is available, postfix it with an * 260 // If a different version of package is available, postfix it with an *
253 if ( it->getVersion() != it->getInstalledVersion() ) 261 if ( it->getVersion() != it->getInstalledVersion() )
@@ -286,24 +294,27 @@ void NetworkPackageManager :: serverSelected( int )
286 { 294 {
287 new QCheckListItem( item, QString( "V. Installed - " ) + it->getVersion() ); 295 new QCheckListItem( item, QString( "V. Installed - " ) + it->getVersion() );
288 } 296 }
289 else 297 else
290 { 298 {
291 new QCheckListItem( item, QString( "V. Available - " ) + it->getVersion() ); 299 new QCheckListItem( item, QString( "V. Available - " ) + it->getVersion() );
292 if ( it->getLocalPackage() ) 300 if ( it->getLocalPackage() )
293 { 301 {
294 if ( it->isInstalled() ) 302 if ( it->isInstalled() )
295 new QCheckListItem( item, QString( "V. Installed - " ) + it->getInstalledVersion() ); 303 new QCheckListItem( item, QString( "V. Installed - " ) + it->getInstalledVersion() );
296 } 304 }
297 } 305 }
306
307 new QCheckListItem( item, QString( "Size - " ) + it->getPackageSize() );
308 new QCheckListItem( item, QString( "Section - " ) + it->getSection() );
298 packagesList->insertItem( item ); 309 packagesList->insertItem( item );
299 } 310 }
300 311
301 // If the local server or the local ipkgs server disable the download button 312 // If the local server or the local ipkgs server disable the download button
302 if ( serverName == LOCAL_SERVER ) 313 if ( serverName == LOCAL_SERVER )
303 { 314 {
304 upgrade->setEnabled( false ); 315 upgrade->setEnabled( false );
305 download->setText( "Download" ); 316 download->setText( "Download" );
306 download->setEnabled( true ); 317 download->setEnabled( true );
307 } 318 }
308 else if ( serverName == LOCAL_IPKGS ) 319 else if ( serverName == LOCAL_IPKGS )
309 { 320 {
@@ -316,28 +327,24 @@ void NetworkPackageManager :: serverSelected( int )
316 upgrade->setEnabled( true ); 327 upgrade->setEnabled( true );
317 download->setEnabled( true ); 328 download->setEnabled( true );
318 download->setText( "Download" ); 329 download->setText( "Download" );
319 } 330 }
320} 331}
321 332
322void NetworkPackageManager :: updateServer() 333void NetworkPackageManager :: updateServer()
323{ 334{
324 QString serverName = serversList->currentText(); 335 QString serverName = serversList->currentText();
325 336
326 // Update the current server 337 // Update the current server
327 // Display dialog 338 // Display dialog
328// ProgressDlg *progDlg = new ProgressDlg( this );
329// QString status = "Updating package lists...";
330// progDlg->show();
331// progDlg->setText( status );
332 339
333 // Disable buttons to stop silly people clicking lots on them :) 340 // Disable buttons to stop silly people clicking lots on them :)
334 341
335 // First, write out ipkg_conf file so that ipkg can use it 342 // First, write out ipkg_conf file so that ipkg can use it
336 dataMgr->writeOutIpkgConf(); 343 dataMgr->writeOutIpkgConf();
337 344
338 Ipkg ipkg; 345 Ipkg ipkg;
339 ipkg.setOption( "update" ); 346 ipkg.setOption( "update" );
340 347
341 InstallDlgImpl dlg( &ipkg, "Refreshing server package lists", this, "Upgrade", true ); 348 InstallDlgImpl dlg( &ipkg, "Refreshing server package lists", this, "Upgrade", true );
342 dlg.showDlg(); 349 dlg.showDlg();
343 350
@@ -795,12 +802,54 @@ void NetworkPackageManager :: showOnlyUninstalledPackages( bool val )
795 802
796void NetworkPackageManager :: showOnlyInstalledPackages( bool val ) 803void NetworkPackageManager :: showOnlyInstalledPackages( bool val )
797{ 804{
798 showInstalledPkgs = val; 805 showInstalledPkgs = val;
799 serverSelected( -1 ); 806 serverSelected( -1 );
800} 807}
801 808
802void NetworkPackageManager :: showUpgradedPackages( bool val ) 809void NetworkPackageManager :: showUpgradedPackages( bool val )
803{ 810{
804 showUpgradedPkgs = val; 811 showUpgradedPkgs = val;
805 serverSelected( -1 ); 812 serverSelected( -1 );
806} 813}
814
815bool NetworkPackageManager :: filterByCategory( bool val )
816{
817 if ( val )
818 {
819 if ( categoryFilter == "" )
820 {
821 if ( !setFilterCategory() )
822 return false;
823 }
824
825 categoryFilterEnabled = true;
826 serverSelected( -1 );
827 return true;
828 }
829 else
830 {
831 // Turn off filter
832 categoryFilterEnabled = false;
833 serverSelected( -1 );
834 return false;
835 }
836}
837
838bool NetworkPackageManager :: setFilterCategory( )
839{
840 // Get categories;
841 CategoryFilterImpl dlg( DataManager::getAvailableCategories(), categoryFilter, this );
842 if ( dlg.exec() == QDialog::Accepted )
843 {
844 categoryFilter = dlg.getSelectedFilter();
845
846 if ( categoryFilter == "" )
847 return false;
848
849 categoryFilterEnabled = true;
850 serverSelected( -1 );
851 return true;
852 }
853
854 return false;
855}