Diffstat (limited to 'noncore/settings/aqpkg/networkpkgmgr.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/settings/aqpkg/networkpkgmgr.cpp | 63 |
1 files changed, 56 insertions, 7 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 | ||
46 | extern int compareVersions( const char *v1, const char *v2 ); | 47 | extern int compareVersions( const char *v1, const char *v2 ); |
47 | 48 | ||
48 | NetworkPackageManager::NetworkPackageManager( DataManager *dataManager, QWidget *parent, const char *name) | 49 | NetworkPackageManager::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 | ||
73 | NetworkPackageManager::~NetworkPackageManager() | 74 | NetworkPackageManager::~NetworkPackageManager() |
74 | { | 75 | { |
75 | } | 76 | } |
76 | 77 | ||
77 | void NetworkPackageManager :: timerEvent ( QTimerEvent * ) | 78 | void 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 | ||
322 | void NetworkPackageManager :: updateServer() | 333 | void 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 | ||
@@ -677,25 +684,25 @@ InstallData NetworkPackageManager :: dealWithItem( QCheckListItem *item ) | |||
677 | } | 684 | } |
678 | 685 | ||
679 | // Sticky option not implemented yet, but will eventually allow | 686 | // Sticky option not implemented yet, but will eventually allow |
680 | // the user to say something like 'remove all' | 687 | // the user to say something like 'remove all' |
681 | if ( stickyOption == "" ) | 688 | if ( stickyOption == "" ) |
682 | { | 689 | { |
683 | QString msgtext; | 690 | QString msgtext; |
684 | msgtext.sprintf( caption, (const char *)name ); | 691 | msgtext.sprintf( caption, (const char *)name ); |
685 | switch( QMessageBox::information( this, text, | 692 | switch( QMessageBox::information( this, text, |
686 | msgtext, "Remove", secondButton ) ) | 693 | msgtext, "Remove", secondButton ) ) |
687 | { | 694 | { |
688 | case 0: // Try again or Enter | 695 | case 0: // Try again or Enter |
689 | // option 0 = Remove | 696 | // option 0 = Remove |
690 | item.option = "D"; | 697 | item.option = "D"; |
691 | break; | 698 | break; |
692 | case 1: // Quit or Escape | 699 | case 1: // Quit or Escape |
693 | item.option = secondOption; | 700 | item.option = secondOption; |
694 | break; | 701 | break; |
695 | } | 702 | } |
696 | } | 703 | } |
697 | else | 704 | else |
698 | { | 705 | { |
699 | // item.option = stickyOption; | 706 | // item.option = stickyOption; |
700 | } | 707 | } |
701 | } | 708 | } |
@@ -734,25 +741,25 @@ void NetworkPackageManager :: letterPushed( QString t ) | |||
734 | else | 741 | else |
735 | item = (QCheckListItem *)start->nextSibling(); | 742 | item = (QCheckListItem *)start->nextSibling(); |
736 | 743 | ||
737 | if ( item == 0 ) | 744 | if ( item == 0 ) |
738 | item = (QCheckListItem *)packagesList->firstChild(); | 745 | item = (QCheckListItem *)packagesList->firstChild(); |
739 | do | 746 | do |
740 | { | 747 | { |
741 | if ( item->text().lower().startsWith( t.lower() ) ) | 748 | if ( item->text().lower().startsWith( t.lower() ) ) |
742 | { | 749 | { |
743 | packagesList->setSelected( item, true ); | 750 | packagesList->setSelected( item, true ); |
744 | packagesList->ensureItemVisible( item ); | 751 | packagesList->ensureItemVisible( item ); |
745 | break; | 752 | break; |
746 | } | 753 | } |
747 | 754 | ||
748 | item = (QCheckListItem *)item->nextSibling(); | 755 | item = (QCheckListItem *)item->nextSibling(); |
749 | if ( !item ) | 756 | if ( !item ) |
750 | item = (QCheckListItem *)packagesList->firstChild(); | 757 | item = (QCheckListItem *)packagesList->firstChild(); |
751 | } while ( item != start); | 758 | } while ( item != start); |
752 | } | 759 | } |
753 | 760 | ||
754 | 761 | ||
755 | void NetworkPackageManager :: searchForPackage( bool findNext ) | 762 | void NetworkPackageManager :: searchForPackage( bool findNext ) |
756 | { | 763 | { |
757 | bool ok = false; | 764 | bool ok = false; |
758 | if ( !findNext || lastSearchText.isEmpty() ) | 765 | if ( !findNext || lastSearchText.isEmpty() ) |
@@ -795,12 +802,54 @@ void NetworkPackageManager :: showOnlyUninstalledPackages( bool val ) | |||
795 | 802 | ||
796 | void NetworkPackageManager :: showOnlyInstalledPackages( bool val ) | 803 | void NetworkPackageManager :: showOnlyInstalledPackages( bool val ) |
797 | { | 804 | { |
798 | showInstalledPkgs = val; | 805 | showInstalledPkgs = val; |
799 | serverSelected( -1 ); | 806 | serverSelected( -1 ); |
800 | } | 807 | } |
801 | 808 | ||
802 | void NetworkPackageManager :: showUpgradedPackages( bool val ) | 809 | void NetworkPackageManager :: showUpgradedPackages( bool val ) |
803 | { | 810 | { |
804 | showUpgradedPkgs = val; | 811 | showUpgradedPkgs = val; |
805 | serverSelected( -1 ); | 812 | serverSelected( -1 ); |
806 | } | 813 | } |
814 | |||
815 | bool 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 | |||
838 | bool 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 | } | ||