summaryrefslogtreecommitdiff
authorandyq <andyq>2002-11-17 20:03:25 (UTC)
committer andyq <andyq>2002-11-17 20:03:25 (UTC)
commitd94c9d39ab6e744f848a04c07eac03f20c91987c (patch) (side-by-side diff)
treea9f32cca7c59ae565ab9caa3caf567100ed07cb4
parenta94877f543bf0ebc2ec9c4c931cb5f21713b7872 (diff)
downloadopie-d94c9d39ab6e744f848a04c07eac03f20c91987c.zip
opie-d94c9d39ab6e744f848a04c07eac03f20c91987c.tar.gz
opie-d94c9d39ab6e744f848a04c07eac03f20c91987c.tar.bz2
Added filter by category, and added extra fields to package display (Section and size)
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/aqpkg/aqpkg.pro9
-rw-r--r--noncore/settings/aqpkg/categoryfilter.ui118
-rw-r--r--noncore/settings/aqpkg/categoryfilterimpl.cpp71
-rw-r--r--noncore/settings/aqpkg/categoryfilterimpl.h40
-rw-r--r--noncore/settings/aqpkg/datamgr.cpp12
-rw-r--r--noncore/settings/aqpkg/datamgr.h5
-rw-r--r--noncore/settings/aqpkg/global.h160
-rw-r--r--noncore/settings/aqpkg/mainwin.cpp395
-rw-r--r--noncore/settings/aqpkg/mainwin.h131
-rw-r--r--noncore/settings/aqpkg/networkpkgmgr.cpp63
-rw-r--r--noncore/settings/aqpkg/networkpkgmgr.h4
-rw-r--r--noncore/settings/aqpkg/package.h8
-rw-r--r--noncore/settings/aqpkg/server.cpp21
-rw-r--r--noncore/settings/aqpkg/server.h1
14 files changed, 696 insertions, 342 deletions
diff --git a/noncore/settings/aqpkg/aqpkg.pro b/noncore/settings/aqpkg/aqpkg.pro
index 301f4f2..6cc5a23 100644
--- a/noncore/settings/aqpkg/aqpkg.pro
+++ b/noncore/settings/aqpkg/aqpkg.pro
@@ -17,3 +17,4 @@ HEADERS = global.h \
letterpushbutton.h \
- inputdlg.h
+ inputdlg.h \
+ categoryfilterimpl.h
SOURCES = mainwin.cpp \
@@ -35,6 +36,8 @@ SOURCES = mainwin.cpp \
inputdlg.cpp \
- version.cpp
+ version.cpp \
+ categoryfilterimpl.cpp
INTERFACES = settings.ui \
install.ui \
- instoptions.ui
+ instoptions.ui \
+ categoryfilter.ui
TARGET = aqpkg
diff --git a/noncore/settings/aqpkg/categoryfilter.ui b/noncore/settings/aqpkg/categoryfilter.ui
new file mode 100644
index 0000000..3416243
--- a/dev/null
+++ b/noncore/settings/aqpkg/categoryfilter.ui
@@ -0,0 +1,118 @@
+<!DOCTYPE UI><UI>
+<class>CategoryFilterDlg</class>
+<widget>
+ <class>QDialog</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>CategoryFilterDlg</cstring>
+ </property>
+ <property stdset="1">
+ <name>geometry</name>
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>215</width>
+ <height>295</height>
+ </rect>
+ </property>
+ <property stdset="1">
+ <name>caption</name>
+ <string>Category Filter</string>
+ </property>
+ <grid>
+ <property stdset="1">
+ <name>margin</name>
+ <number>11</number>
+ </property>
+ <property stdset="1">
+ <name>spacing</name>
+ <number>6</number>
+ </property>
+ <widget row="1" column="0" >
+ <class>QLayoutWidget</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>Layout4</cstring>
+ </property>
+ <grid>
+ <property stdset="1">
+ <name>margin</name>
+ <number>0</number>
+ </property>
+ <property stdset="1">
+ <name>spacing</name>
+ <number>6</number>
+ </property>
+ <widget row="0" column="1" >
+ <class>QPushButton</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>btnOK</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>&amp;OK</string>
+ </property>
+ </widget>
+ <widget row="0" column="0" >
+ <class>QPushButton</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>btnCancel</cstring>
+ </property>
+ <property stdset="1">
+ <name>text</name>
+ <string>&amp;Cancel</string>
+ </property>
+ </widget>
+ </grid>
+ </widget>
+ <widget row="0" column="0" >
+ <class>QGroupBox</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>GroupBox1</cstring>
+ </property>
+ <property stdset="1">
+ <name>title</name>
+ <string>Select groups to show</string>
+ </property>
+ <grid>
+ <property stdset="1">
+ <name>margin</name>
+ <number>11</number>
+ </property>
+ <property stdset="1">
+ <name>spacing</name>
+ <number>6</number>
+ </property>
+ <widget row="0" column="0" >
+ <class>QListBox</class>
+ <property stdset="1">
+ <name>name</name>
+ <cstring>lstCategories</cstring>
+ </property>
+ <property stdset="1">
+ <name>selectionMode</name>
+ <enum>Multi</enum>
+ </property>
+ </widget>
+ </grid>
+ </widget>
+ </grid>
+</widget>
+<connections>
+ <connection>
+ <sender>btnCancel</sender>
+ <signal>clicked()</signal>
+ <receiver>CategoryFilterDlg</receiver>
+ <slot>reject()</slot>
+ </connection>
+ <connection>
+ <sender>btnOK</sender>
+ <signal>clicked()</signal>
+ <receiver>CategoryFilterDlg</receiver>
+ <slot>accept()</slot>
+ </connection>
+</connections>
+</UI>
diff --git a/noncore/settings/aqpkg/categoryfilterimpl.cpp b/noncore/settings/aqpkg/categoryfilterimpl.cpp
new file mode 100644
index 0000000..0746da6
--- a/dev/null
+++ b/noncore/settings/aqpkg/categoryfilterimpl.cpp
@@ -0,0 +1,71 @@
+/***************************************************************************
+ categoryfilterimpl.cpp - description
+ -------------------
+ begin : Sun Nov 17 2002
+ copyright : (C) 2002 by Andy Qua
+ email : andy.qua@blueyonder.co.uk
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+#include <iostream>
+using namespace std;
+
+#include <qlistbox.h>
+#include <qstring.h>
+
+#include "categoryfilterimpl.h"
+
+CategoryFilterImpl :: CategoryFilterImpl(const QString &categories, const QString &selectedCategories, QWidget *parent, const char *name )
+ : CategoryFilterDlg(parent,name, true)
+{
+ // Split up categories and add them to the listbox
+ int start = 1;
+
+ QString item;
+ int end;
+ do
+ {
+ end = categories.find( "#", start );
+ item = categories.mid( start, end - start );
+ if ( item != "" )
+ {
+ lstCategories->insertItem( item );
+
+ if ( selectedCategories.find( "#" + item + "#" ) != -1 )
+ lstCategories->setSelected( lstCategories->count()-1, true );
+ }
+
+ start = end + 1;
+ } while ( start < (int)categories.length() );
+
+ lstCategories->sort( true );
+
+ showMaximized();
+}
+
+CategoryFilterImpl :: ~CategoryFilterImpl()
+{
+}
+
+QString CategoryFilterImpl :: getSelectedFilter()
+{
+ // Grab cetegories from listbox
+ QString ret = "#";
+
+ for ( int i = 0 ; i < (int)lstCategories->count() ; ++i )
+ {
+ if ( lstCategories->isSelected( i ) )
+ ret += lstCategories->text( i ) + "#";
+ }
+
+ if ( ret == "#" )
+ ret = "";
+ return ret;
+}
diff --git a/noncore/settings/aqpkg/categoryfilterimpl.h b/noncore/settings/aqpkg/categoryfilterimpl.h
new file mode 100644
index 0000000..b6b4fd5
--- a/dev/null
+++ b/noncore/settings/aqpkg/categoryfilterimpl.h
@@ -0,0 +1,40 @@
+/***************************************************************************
+ categoryfilterimpl.h - description
+ -------------------
+ begin : Sun Nov 17 2002
+ copyright : (C) 2002 by Andy Qua
+ email : andy.qua@blueyonder.co.uk
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef CATEGORYFILTERIMPL_H
+#define CATEGORYFILTERIMPL_H
+
+#include <qwidget.h>
+#include <qstring.h>
+
+#include "categoryfilter.h"
+
+/**
+ *@author Andy Qua
+ */
+
+class CategoryFilterImpl : public CategoryFilterDlg
+{
+ Q_OBJECT
+public:
+ CategoryFilterImpl(const QString &categories, const QString &selectedCategories, QWidget *parent=0, const char *name=0);
+ ~CategoryFilterImpl();
+
+ QString getSelectedFilter();
+};
+
+#endif
diff --git a/noncore/settings/aqpkg/datamgr.cpp b/noncore/settings/aqpkg/datamgr.cpp
index f342aff..1420242 100644
--- a/noncore/settings/aqpkg/datamgr.cpp
+++ b/noncore/settings/aqpkg/datamgr.cpp
@@ -30,5 +30,7 @@ using namespace std;
+QString DataManager::availableCategories = "";
DataManager::DataManager()
{
- activeServer = "";
+ activeServer = "";
+ availableCategories = "#";
}
@@ -209 +211,9 @@ void DataManager :: writeOutIpkgConf()
}
+
+
+void DataManager :: setAvailableCategories( QString section )
+{
+ section = section.lower();
+ if ( availableCategories.find( "#" + section + "#" ) == -1 )
+ availableCategories += section + "#";
+}
diff --git a/noncore/settings/aqpkg/datamgr.h b/noncore/settings/aqpkg/datamgr.h
index 8c6fb0d..3a64d92 100644
--- a/noncore/settings/aqpkg/datamgr.h
+++ b/noncore/settings/aqpkg/datamgr.h
@@ -23,2 +23,4 @@ using namespace std;
+#include <qstring.h>
+
#include "server.h"
@@ -55,4 +57,7 @@ public:
+ static QString getAvailableCategories() { return availableCategories; }
+ static void setAvailableCategories( QString section );
private:
+ static QString availableCategories;
QString activeServer;
diff --git a/noncore/settings/aqpkg/global.h b/noncore/settings/aqpkg/global.h
index e65e2a0..609e1e8 100644
--- a/noncore/settings/aqpkg/global.h
+++ b/noncore/settings/aqpkg/global.h
@@ -1,80 +1,80 @@
-/***************************************************************************
- global.h - description
- -------------------
- begin : Mon Aug 26 2002
- copyright : (C) 2002 by Andy Qua
- email : andy.qua@blueyonder.co.uk
- ***************************************************************************/
-
-/***************************************************************************
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
- * *
- ***************************************************************************/
-
-#ifndef __GLOBAL_H
-#define __GLOBAL_H
-
-#define VERSION_TEXT "AQPkg Version 1.0"
-
-// Uncomment the below line to run on a Linux box rather than a Zaurus
-// box this allows you to change where root is, and where to load config files from
-// #define X86
-
-// Sets up location of ipkg.conf and root directory
-#ifdef QWS
-
-#ifndef X86
-
-// Running QT/Embedded on an arm processor
-#define IPKG_CONF "/etc/ipkg.conf"
-#define ROOT "/"
-#define IPKG_DIR "/usr/lib/ipkg/"
-
-#else
-
-// Running QT/Embedded on a X86 linux box
-#define IPKG_CONF "/home/andy/projects/aqpkg/aqpkg/data/ipkg.conf"
-#define ROOT "/home/andy/projects/aqpkg/aqpkg/data/root"
-#define IPKG_DIR "/home/andy/projects/aqpkg/aqpkg/data/"
-
-#endif
-
-#else
-
-// Running QT on a X86 linux box
-#define IPKG_CONF "/home/andy/projects/aqpkg/aqpkg/data/ipkg.conf"
-#define ROOT "/home/andy/projects/aqpkg/aqpkg/data/root"
-#define IPKG_DIR "/home/andy/projects/aqpkg/aqpkg/data/"
-
-#endif
-
-
-// Uncomment the below line to turn on memory checking
-//#define _DEBUG 1
-
-#ifndef __MEMFILE_C
-#ifdef _DEBUG
-void * operator new(unsigned int size,const char *file, int line);
-void operator delete(void *p);
-#endif
-
-#ifdef _DEBUG
-#define DEBUG_NEW new(__FILE__, __LINE__)
-//#define DEBUG_NEW new
-#else
-#define DEBUG_NEW new
-#endif
-
-#define new DEBUG_NEW
-#endif
-
-
-void AddTrack(long addr, long asize, const char *fname, long lnum);
-void RemoveTrack(long addr);
-void DumpUnfreed();
-
-#endif
+/***************************************************************************
+ global.h - description
+ -------------------
+ begin : Mon Aug 26 2002
+ copyright : (C) 2002 by Andy Qua
+ email : andy.qua@blueyonder.co.uk
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef __GLOBAL_H
+#define __GLOBAL_H
+
+#define VERSION_TEXT "AQPkg Version 1.1"
+
+// Uncomment the below line to run on a Linux box rather than a Zaurus
+// box this allows you to change where root is, and where to load config files from
+// #define X86
+
+// Sets up location of ipkg.conf and root directory
+#ifdef QWS
+
+#ifndef X86
+
+// Running QT/Embedded on an arm processor
+#define IPKG_CONF "/etc/ipkg.conf"
+#define ROOT "/"
+#define IPKG_DIR "/usr/lib/ipkg/"
+
+#else
+
+// Running QT/Embedded on a X86 linux box
+#define IPKG_CONF "/home/andy/projects/aqpkg/aqpkg/data/ipkg.conf"
+#define ROOT "/home/andy/projects/aqpkg/aqpkg/data/root"
+#define IPKG_DIR "/home/andy/projects/aqpkg/aqpkg/data/"
+
+#endif
+
+#else
+
+// Running QT on a X86 linux box
+#define IPKG_CONF "/home/andy/projects/aqpkg/aqpkg/data/ipkg.conf"
+#define ROOT "/home/andy/projects/aqpkg/aqpkg/data/root"
+#define IPKG_DIR "/home/andy/projects/aqpkg/aqpkg/data/"
+
+#endif
+
+
+// Uncomment the below line to turn on memory checking
+//#define _DEBUG 1
+
+#ifndef __MEMFILE_C
+#ifdef _DEBUG
+void * operator new(unsigned int size,const char *file, int line);
+void operator delete(void *p);
+#endif
+
+#ifdef _DEBUG
+#define DEBUG_NEW new(__FILE__, __LINE__)
+//#define DEBUG_NEW new
+#else
+#define DEBUG_NEW new
+#endif
+
+#define new DEBUG_NEW
+#endif
+
+
+void AddTrack(long addr, long asize, const char *fname, long lnum);
+void RemoveTrack(long addr);
+void DumpUnfreed();
+
+#endif
diff --git a/noncore/settings/aqpkg/mainwin.cpp b/noncore/settings/aqpkg/mainwin.cpp
index 5ccd3c3..0141359 100644
--- a/noncore/settings/aqpkg/mainwin.cpp
+++ b/noncore/settings/aqpkg/mainwin.cpp
@@ -1,186 +1,209 @@
-/***************************************************************************
- mainwin.cpp - description
- -------------------
- begin : Mon Aug 26 13:32:30 BST 2002
- copyright : (C) 2002 by Andy Qua
- email : andy.qua@blueyonder.co.uk
- ***************************************************************************/
-
-/***************************************************************************
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
- * *
- ***************************************************************************/
-
-#include <iostream>
-
-#include <qmenubar.h>
-#include <qpopupmenu.h>
-#include <qmessagebox.h>
-
-#include "mainwin.h"
-#include "datamgr.h"
-#include "networkpkgmgr.h"
-#include "settingsimpl.h"
-#include "helpwindow.h"
-#include "utils.h"
-#include "global.h"
-
-MainWindow :: MainWindow( QWidget *p, char *name )
- : QMainWindow( p, name )
-{
-#ifdef QWS
- showMaximized();
-#endif
-
- setCaption( "AQPkg - Package Manager" );
-
- // Create our menu
- help = new QPopupMenu( this );
- help->insertItem( "&General", this, SLOT(displayHelp()), Qt::CTRL+Qt::Key_G );
- help->insertItem( "&About", this, SLOT(displayAbout()), Qt::CTRL+Qt::Key_A );
-
- settings = new QPopupMenu( this );
- settings->insertItem( "&Settings", this, SLOT(displaySettings()), Qt::CTRL+Qt::Key_S );
-
- edit = new QPopupMenu( this );
- edit->insertItem( "&Find", this, SLOT(searchForPackage()), Qt::CTRL+Qt::Key_I );
- edit->insertItem( "Find &Next", this, SLOT(repeatSearchForPackage()), Qt::CTRL+Qt::Key_N );
-
- filter = new QPopupMenu( this );
- mnuShowUninstalledPkgsId = filter->insertItem( "Show &Uninstalled Packages", this, SLOT(filterUninstalledPackages()), Qt::CTRL+Qt::Key_U );
- mnuShowInstalledPkgsId = filter->insertItem( "Show In&stalled Packages", this, SLOT(filterInstalledPackages()), Qt::CTRL+Qt::Key_S );
- mnuShowUpgradedPkgsId = filter->insertItem( "Show U&pdated Packages", this, SLOT(filterUpgradedPackages()), Qt::CTRL+Qt::Key_P );
-
- // Create the main menu
- menu = menuBar(); //new QMenuBar( this );
- menu->insertItem( "&Settings", settings );
- menu->insertItem( "&Edit", edit );
- menu->insertItem( "&Filter", filter );
- menu->insertItem( "&Help", help );
-
- mgr = new DataManager();
- mgr->loadServers();
-
- stack = new QWidgetStack( this );
-
- networkPkgWindow = new NetworkPackageManager( mgr, stack );
- stack->addWidget( networkPkgWindow, 1 );
-
- setCentralWidget( stack );
- stack->raiseWidget( networkPkgWindow );
-}
-
-MainWindow :: ~MainWindow()
-{
- delete networkPkgWindow;
-}
-
-void MainWindow :: setDocument( const QString &doc )
-{
- // Remove path from package
- QString package = Utils::getPackageNameFromIpkFilename( doc );
- std::cout << "Selecting package " << package << std::endl;
- networkPkgWindow->selectLocalPackage( package );
-}
-
-void MainWindow :: displaySettings()
-{
- SettingsImpl *dlg = new SettingsImpl( mgr, this, "Settings", true );
- if ( dlg->showDlg( 0 ) )
- networkPkgWindow->updateData();
- delete dlg;
-}
-
-void MainWindow :: displayHelp()
-{
- HelpWindow *dlg = new HelpWindow( this );
- dlg->exec();
- delete dlg;
-}
-
-void MainWindow :: searchForPackage()
-{
- networkPkgWindow->searchForPackage( false );
-}
-
-void MainWindow :: repeatSearchForPackage()
-{
- networkPkgWindow->searchForPackage( true );
-}
-
-void MainWindow :: displayAbout()
-{
- QMessageBox::about( this, "About AQPkg", VERSION_TEXT );
-}
-
-
-void MainWindow :: filterUninstalledPackages()
-{
- bool val;
- if ( filter->isItemChecked( mnuShowUninstalledPkgsId ) )
- {
- val = false;
- filter->setItemChecked( mnuShowUninstalledPkgsId, false );
- }
- else
- {
- val = true;
- filter->setItemChecked( mnuShowUninstalledPkgsId, true );
- }
-
- filter->setItemChecked( mnuShowInstalledPkgsId, false );
- networkPkgWindow->showOnlyInstalledPackages( false );
- filter->setItemChecked( mnuShowUpgradedPkgsId, false );
- networkPkgWindow->showUpgradedPackages( false );
-
- networkPkgWindow->showOnlyUninstalledPackages( val );
-
-}
-
-void MainWindow :: filterInstalledPackages()
-{
- bool val;
- if ( filter->isItemChecked( mnuShowInstalledPkgsId ) )
- {
- val = false;
- filter->setItemChecked( mnuShowInstalledPkgsId, false );
- }
- else
- {
- val = true;
- filter->setItemChecked( mnuShowInstalledPkgsId, true );
- }
-
- filter->setItemChecked( mnuShowUninstalledPkgsId, false );
- networkPkgWindow->showOnlyUninstalledPackages( false );
- filter->setItemChecked( mnuShowUpgradedPkgsId, false );
- networkPkgWindow->showUpgradedPackages( false );
-
- networkPkgWindow->showOnlyInstalledPackages( val );
-}
-
-void MainWindow :: filterUpgradedPackages()
-{
- bool val;
- if ( filter->isItemChecked( mnuShowUpgradedPkgsId ) )
- {
- val = false;
- filter->setItemChecked( mnuShowUpgradedPkgsId, false );
- }
- else
- {
- val = true;
- filter->setItemChecked( mnuShowUpgradedPkgsId, true );
- }
-
- filter->setItemChecked( mnuShowUninstalledPkgsId, false );
- networkPkgWindow->showOnlyUninstalledPackages( false );
- filter->setItemChecked( mnuShowInstalledPkgsId, false );
- networkPkgWindow->showOnlyInstalledPackages( false );
-
- networkPkgWindow->showUpgradedPackages( val );
-}
+/***************************************************************************
+ mainwin.cpp - description
+ -------------------
+ begin : Mon Aug 26 13:32:30 BST 2002
+ copyright : (C) 2002 by Andy Qua
+ email : andy.qua@blueyonder.co.uk
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#include <iostream>
+
+#include <qmenubar.h>
+#include <qpopupmenu.h>
+#include <qmessagebox.h>
+
+#include "mainwin.h"
+#include "datamgr.h"
+#include "networkpkgmgr.h"
+#include "settingsimpl.h"
+#include "helpwindow.h"
+#include "utils.h"
+#include "global.h"
+
+MainWindow :: MainWindow( QWidget *p, char *name )
+ : QMainWindow( p, name )
+{
+#ifdef QWS
+ showMaximized();
+#endif
+
+ setCaption( "AQPkg - Package Manager" );
+
+ // Create our menu
+ help = new QPopupMenu( this );
+ help->insertItem( "&General", this, SLOT(displayHelp()), Qt::CTRL+Qt::Key_G );
+ help->insertItem( "&About", this, SLOT(displayAbout()), Qt::CTRL+Qt::Key_A );
+
+ settings = new QPopupMenu( this );
+ settings->insertItem( "&Settings", this, SLOT(displaySettings()), Qt::CTRL+Qt::Key_S );
+
+ edit = new QPopupMenu( this );
+ edit->insertItem( "&Find", this, SLOT(searchForPackage()), Qt::CTRL+Qt::Key_I );
+ edit->insertItem( "Find &Next", this, SLOT(repeatSearchForPackage()), Qt::CTRL+Qt::Key_N );
+
+ filter = new QPopupMenu( this );
+ mnuShowUninstalledPkgsId = filter->insertItem( "Show &Uninstalled Packages", this, SLOT(filterUninstalledPackages()), Qt::CTRL+Qt::Key_U );
+ mnuShowInstalledPkgsId = filter->insertItem( "Show In&stalled Packages", this, SLOT(filterInstalledPackages()), Qt::CTRL+Qt::Key_S );
+ mnuShowUpgradedPkgsId = filter->insertItem( "Show U&pdated Packages", this, SLOT(filterUpgradedPackages()), Qt::CTRL+Qt::Key_P );
+ filter->insertSeparator();
+ mnuFilterByCategory = filter->insertItem( "Filter By &Category", this, SLOT(filterCategory()), Qt::CTRL+Qt::Key_C );
+ mnuSetFilterCategory = filter->insertItem( "Set Filter C&ategory", this, SLOT(setFilterCategory()), Qt::CTRL+Qt::Key_A );
+
+ // Create the main menu
+ menu = menuBar(); //new QMenuBar( this );
+ menu->insertItem( "&Settings", settings );
+ menu->insertItem( "&Edit", edit );
+ menu->insertItem( "&Filter", filter );
+ menu->insertItem( "&Help", help );
+
+ mgr = new DataManager();
+ mgr->loadServers();
+
+ stack = new QWidgetStack( this );
+
+ networkPkgWindow = new NetworkPackageManager( mgr, stack );
+ stack->addWidget( networkPkgWindow, 1 );
+
+ setCentralWidget( stack );
+ stack->raiseWidget( networkPkgWindow );
+}
+
+MainWindow :: ~MainWindow()
+{
+ delete networkPkgWindow;
+}
+
+void MainWindow :: setDocument( const QString &doc )
+{
+ // Remove path from package
+ QString package = Utils::getPackageNameFromIpkFilename( doc );
+ std::cout << "Selecting package " << package << std::endl;
+ networkPkgWindow->selectLocalPackage( package );
+}
+
+void MainWindow :: displaySettings()
+{
+ SettingsImpl *dlg = new SettingsImpl( mgr, this, "Settings", true );
+ if ( dlg->showDlg( 0 ) )
+ networkPkgWindow->updateData();
+ delete dlg;
+}
+
+void MainWindow :: displayHelp()
+{
+ HelpWindow *dlg = new HelpWindow( this );
+ dlg->exec();
+ delete dlg;
+}
+
+void MainWindow :: searchForPackage()
+{
+ networkPkgWindow->searchForPackage( false );
+}
+
+void MainWindow :: repeatSearchForPackage()
+{
+ networkPkgWindow->searchForPackage( true );
+}
+
+void MainWindow :: displayAbout()
+{
+ QMessageBox::about( this, "About AQPkg", VERSION_TEXT );
+}
+
+
+void MainWindow :: filterUninstalledPackages()
+{
+ bool val;
+ if ( filter->isItemChecked( mnuShowUninstalledPkgsId ) )
+ {
+ val = false;
+ filter->setItemChecked( mnuShowUninstalledPkgsId, false );
+ }
+ else
+ {
+ val = true;
+ filter->setItemChecked( mnuShowUninstalledPkgsId, true );
+ }
+
+ filter->setItemChecked( mnuShowInstalledPkgsId, false );
+ networkPkgWindow->showOnlyInstalledPackages( false );
+ filter->setItemChecked( mnuShowUpgradedPkgsId, false );
+ networkPkgWindow->showUpgradedPackages( false );
+
+ networkPkgWindow->showOnlyUninstalledPackages( val );
+
+}
+
+void MainWindow :: filterInstalledPackages()
+{
+ bool val;
+ if ( filter->isItemChecked( mnuShowInstalledPkgsId ) )
+ {
+ val = false;
+ filter->setItemChecked( mnuShowInstalledPkgsId, false );
+ }
+ else
+ {
+ val = true;
+ filter->setItemChecked( mnuShowInstalledPkgsId, true );
+ }
+
+ filter->setItemChecked( mnuShowUninstalledPkgsId, false );
+ networkPkgWindow->showOnlyUninstalledPackages( false );
+ filter->setItemChecked( mnuShowUpgradedPkgsId, false );
+ networkPkgWindow->showUpgradedPackages( false );
+
+ networkPkgWindow->showOnlyInstalledPackages( val );
+}
+
+void MainWindow :: filterUpgradedPackages()
+{
+ bool val;
+ if ( filter->isItemChecked( mnuShowUpgradedPkgsId ) )
+ {
+ val = false;
+ filter->setItemChecked( mnuShowUpgradedPkgsId, false );
+ }
+ else
+ {
+ val = true;
+ filter->setItemChecked( mnuShowUpgradedPkgsId, true );
+ }
+
+ filter->setItemChecked( mnuShowUninstalledPkgsId, false );
+ networkPkgWindow->showOnlyUninstalledPackages( false );
+ filter->setItemChecked( mnuShowInstalledPkgsId, false );
+ networkPkgWindow->showOnlyInstalledPackages( false );
+
+ networkPkgWindow->showUpgradedPackages( val );
+}
+
+void MainWindow :: setFilterCategory()
+{
+ if ( networkPkgWindow->setFilterCategory( ) )
+ filter->setItemChecked( mnuFilterByCategory, true );
+}
+
+void MainWindow :: filterCategory()
+{
+ if ( filter->isItemChecked( mnuFilterByCategory ) )
+ {
+ networkPkgWindow->filterByCategory( false );
+ filter->setItemChecked( mnuFilterByCategory, false );
+ }
+ else
+ {
+ if ( networkPkgWindow->filterByCategory( true ) )
+ filter->setItemChecked( mnuFilterByCategory, true );
+ }
+} \ No newline at end of file
diff --git a/noncore/settings/aqpkg/mainwin.h b/noncore/settings/aqpkg/mainwin.h
index 7b6e0ba..92aba4d 100644
--- a/noncore/settings/aqpkg/mainwin.h
+++ b/noncore/settings/aqpkg/mainwin.h
@@ -1,63 +1,68 @@
-/***************************************************************************
- mainwin.h - description
- -------------------
- begin : Mon Aug 26 13:32:30 BST 2002
- copyright : (C) 2002 by Andy Qua
- email : andy.qua@blueyonder.co.uk
- ***************************************************************************/
-
-/***************************************************************************
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
- * *
- ***************************************************************************/
-
-#ifndef MAINWIN_H
-#define MAINWIN_H
-
-#include <qmainwindow.h>
-#include <qwidgetstack.h>
-
-
-class NetworkPackageManager;
-class DataManager;
-
-class MainWindow :public QMainWindow
-{
- Q_OBJECT
-public:
-
- MainWindow( QWidget *p = 0, char *name = 0 );
- ~MainWindow();
-
-private:
- DataManager *mgr;
-
- QMenuBar *menu;
- QPopupMenu *help;
- QPopupMenu *settings;
- QPopupMenu *edit;
- QPopupMenu *filter;
- QWidgetStack *stack;
-
- NetworkPackageManager *networkPkgWindow;
-
- int mnuShowUninstalledPkgsId;
- int mnuShowInstalledPkgsId;
- int mnuShowUpgradedPkgsId;
-
-public slots:
- void setDocument( const QString &doc );
- void displayHelp();
- void searchForPackage();
- void repeatSearchForPackage();
- void displayAbout();
- void displaySettings();
- void filterUninstalledPackages();
- void filterInstalledPackages();
- void filterUpgradedPackages();
-};
-#endif
+/***************************************************************************
+ mainwin.h - description
+ -------------------
+ begin : Mon Aug 26 13:32:30 BST 2002
+ copyright : (C) 2002 by Andy Qua
+ email : andy.qua@blueyonder.co.uk
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef MAINWIN_H
+#define MAINWIN_H
+
+#include <qmainwindow.h>
+#include <qwidgetstack.h>
+
+
+class NetworkPackageManager;
+class DataManager;
+
+class MainWindow :public QMainWindow
+{
+ Q_OBJECT
+public:
+
+ MainWindow( QWidget *p = 0, char *name = 0 );
+ ~MainWindow();
+
+private:
+ DataManager *mgr;
+
+ QMenuBar *menu;
+ QPopupMenu *help;
+ QPopupMenu *settings;
+ QPopupMenu *edit;
+ QPopupMenu *filter;
+ QWidgetStack *stack;
+
+ NetworkPackageManager *networkPkgWindow;
+
+ int mnuShowUninstalledPkgsId;
+ int mnuShowInstalledPkgsId;
+ int mnuShowUpgradedPkgsId;
+ int mnuFilterByCategory;
+ int mnuSetFilterCategory;
+
+public slots:
+ void setDocument( const QString &doc );
+ void displayHelp();
+ void searchForPackage();
+ void repeatSearchForPackage();
+ void displayAbout();
+ void displaySettings();
+ void filterUninstalledPackages();
+ void filterInstalledPackages();
+ void filterUpgradedPackages();
+ void filterCategory();
+ void setFilterCategory();
+
+};
+#endif
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
@@ -42,2 +42,3 @@ using namespace std;
#include "letterpushbutton.h"
+#include "categoryfilterimpl.h"
@@ -64,3 +65,3 @@ NetworkPackageManager::NetworkPackageManager( DataManager *dataManager, QWidget
showUpgradedPkgs = false;
-
+ categoryFilterEnabled = false;
@@ -241,2 +242,9 @@ void NetworkPackageManager :: serverSelected( int )
+ // Apply the section filter
+ if ( categoryFilterEnabled && categoryFilter != "" )
+ {
+ if ( it->getSection() == "" || categoryFilter.find( it->getSection().lower() ) == -1 )
+ continue;
+ }
+
// If the local server, only display installed packages
@@ -297,2 +305,5 @@ void NetworkPackageManager :: serverSelected( int )
}
+
+ new QCheckListItem( item, QString( "Size - " ) + it->getPackageSize() );
+ new QCheckListItem( item, QString( "Section - " ) + it->getSection() );
packagesList->insertItem( item );
@@ -327,6 +338,2 @@ void NetworkPackageManager :: updateServer()
// Display dialog
-// ProgressDlg *progDlg = new ProgressDlg( this );
-// QString status = "Updating package lists...";
-// progDlg->show();
-// progDlg->setText( status );
@@ -688,3 +695,3 @@ InstallData NetworkPackageManager :: dealWithItem( QCheckListItem *item )
case 0: // Try again or Enter
- // option 0 = Remove
+ // option 0 = Remove
item.option = "D";
@@ -745,3 +752,3 @@ void NetworkPackageManager :: letterPushed( QString t )
break;
- }
+ }
@@ -806 +813,43 @@ void NetworkPackageManager :: showUpgradedPackages( bool val )
}
+
+bool NetworkPackageManager :: filterByCategory( bool val )
+{
+ if ( val )
+ {
+ if ( categoryFilter == "" )
+ {
+ if ( !setFilterCategory() )
+ return false;
+ }
+
+ categoryFilterEnabled = true;
+ serverSelected( -1 );
+ return true;
+ }
+ else
+ {
+ // Turn off filter
+ categoryFilterEnabled = false;
+ serverSelected( -1 );
+ return false;
+ }
+}
+
+bool NetworkPackageManager :: setFilterCategory( )
+{
+ // Get categories;
+ CategoryFilterImpl dlg( DataManager::getAvailableCategories(), categoryFilter, this );
+ if ( dlg.exec() == QDialog::Accepted )
+ {
+ categoryFilter = dlg.getSelectedFilter();
+
+ if ( categoryFilter == "" )
+ return false;
+
+ categoryFilterEnabled = true;
+ serverSelected( -1 );
+ return true;
+ }
+
+ return false;
+}
diff --git a/noncore/settings/aqpkg/networkpkgmgr.h b/noncore/settings/aqpkg/networkpkgmgr.h
index 937c9b4..46919d7 100644
--- a/noncore/settings/aqpkg/networkpkgmgr.h
+++ b/noncore/settings/aqpkg/networkpkgmgr.h
@@ -46,2 +46,4 @@ public:
void showUpgradedPackages( bool val );
+ bool filterByCategory( bool val );
+ bool setFilterCategory();
@@ -60,3 +62,5 @@ private:
QString lastSearchText;
+ QString categoryFilter;
+ bool categoryFilterEnabled;
bool showJumpTo;
diff --git a/noncore/settings/aqpkg/package.h b/noncore/settings/aqpkg/package.h
index 56ef874..7545818 100644
--- a/noncore/settings/aqpkg/package.h
+++ b/noncore/settings/aqpkg/package.h
@@ -46,2 +46,4 @@ public:
void setDependancies( QString &deps ) { dependancies = deps; }
+ void setPackageSize( QString size ) { packageSize = size; }
+ void setSection( QString sect) { section = sect; }
@@ -52,4 +54,6 @@ public:
QString getDescription() { return description; }
- QString getFilename() { return filename; }
+ QString getFilename() { return filename; }
QString getDependancies() { return dependancies; }
+ QString getPackageSize() { return packageSize; }
+ QString getSection() { return section; }
@@ -78,2 +82,4 @@ private:
QString dependancies;
+ QString packageSize;
+ QString section;
diff --git a/noncore/settings/aqpkg/server.cpp b/noncore/settings/aqpkg/server.cpp
index 539ebf0..7c3257b 100644
--- a/noncore/settings/aqpkg/server.cpp
+++ b/noncore/settings/aqpkg/server.cpp
@@ -30,2 +30,3 @@ using namespace std;
#include "server.h"
+#include "datamgr.h"
@@ -212,3 +213,15 @@ void Server :: readPackageFile( Server *local, bool clearAll, bool installingToR
currPackage->setFilename( value );
- }
+ }
+ else if ( key == "Size" )
+ {
+ if ( currPackage )
+ currPackage->setPackageSize( value );
+ }
+ else if ( key == "Section" )
+ {
+ if ( currPackage )
+ currPackage->setSection( value );
+
+ DataManager::setAvailableCategories( value );
+ }
else if ( key == "" )
@@ -272,3 +285,9 @@ QString Server :: toString()
return ret;
+} /*
+void addAvailableSection( QString section )
+{
+ if ( DataManager::availableCategories.find( value ) == -1 )
+// DataManager::availableCategories += "#" + value;
}
+*/
diff --git a/noncore/settings/aqpkg/server.h b/noncore/settings/aqpkg/server.h
index e9f434c..f585b8f 100644
--- a/noncore/settings/aqpkg/server.h
+++ b/noncore/settings/aqpkg/server.h
@@ -61,2 +61,3 @@ private:
+
vector<Package> packageList;