summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--noncore/settings/aqpkg/mainwin.cpp9
-rw-r--r--noncore/settings/aqpkg/mainwin.h1
-rw-r--r--noncore/settings/aqpkg/networkpkgmgr.cpp32
-rw-r--r--noncore/settings/aqpkg/networkpkgmgr.h2
4 files changed, 43 insertions, 1 deletions
diff --git a/noncore/settings/aqpkg/mainwin.cpp b/noncore/settings/aqpkg/mainwin.cpp
index 9f19dfa..0b5a5eb 100644
--- a/noncore/settings/aqpkg/mainwin.cpp
+++ b/noncore/settings/aqpkg/mainwin.cpp
@@ -41,15 +41,19 @@ MainWindow :: MainWindow( QWidget *p, char *name )
help->insertItem( "&General", this, SLOT(displayHelp()), Qt::CTRL+Qt::Key_H );
help->insertItem( "&About", this, SLOT(displayAbout()), Qt::CTRL+Qt::Key_A );
QPopupMenu *settings = new QPopupMenu( this );
settings->insertItem( "&Settings", this, SLOT(displaySettings()), Qt::CTRL+Qt::Key_S );
+ QPopupMenu *edit = new QPopupMenu( this );
+ edit->insertItem( "&Search", this, SLOT(searchForPackage()), Qt::CTRL+Qt::Key_F );
+
// Create the main menu
QMenuBar *menu = menuBar(); //new QMenuBar( this );
menu->insertItem( "&Settings", settings );
+ menu->insertItem( "&Edit", edit );
menu->insertItem( "&Help", help );
mgr = new DataManager();
mgr->loadServers();
stack = new QWidgetStack( this );
@@ -86,10 +90,15 @@ void MainWindow :: displayHelp()
{
HelpWindow *dlg = new HelpWindow( this );
dlg->exec();
delete dlg;
}
+void MainWindow :: searchForPackage()
+{
+ networkPkgWindow->searchForPackage();
+}
+
void MainWindow :: displayAbout()
{
QMessageBox::about( this, "About AQPkg", VERSION_TEXT );
}
diff --git a/noncore/settings/aqpkg/mainwin.h b/noncore/settings/aqpkg/mainwin.h
index a9e290c..9fa0eca 100644
--- a/noncore/settings/aqpkg/mainwin.h
+++ b/noncore/settings/aqpkg/mainwin.h
@@ -39,10 +39,11 @@ private:
QWidgetStack *stack;
NetworkPackageManager *networkPkgWindow;
public slots:
void setDocument( const QString &doc );
void displayHelp();
+ void searchForPackage();
void displayAbout();
void displaySettings();
};
#endif
diff --git a/noncore/settings/aqpkg/networkpkgmgr.cpp b/noncore/settings/aqpkg/networkpkgmgr.cpp
index ccce401..78d3df5 100644
--- a/noncore/settings/aqpkg/networkpkgmgr.cpp
+++ b/noncore/settings/aqpkg/networkpkgmgr.cpp
@@ -670,6 +670,38 @@ void NetworkPackageManager :: letterPushed( QString t )
item = (QCheckListItem *)item->nextSibling();
if ( !item )
item = (QCheckListItem *)packagesList->firstChild();
} while ( item != start);
}
+
+
+void NetworkPackageManager :: searchForPackage()
+{
+ bool ok = FALSE;
+ QString searchText = InputDialog::getText( "Search for package", "Enter package to search for", QString::null, &ok, this ).lower();
+ if ( ok && !searchText.isEmpty() )
+ {
+ cout << "searching for " << searchText << endl;
+ // look through package list for text startng at current position
+ vector<InstallData> workingPackages;
+ QCheckListItem *start = (QCheckListItem *)packagesList->currentItem();
+ if ( start != 0 )
+ start = (QCheckListItem *)start->nextSibling();
+
+ if ( start == 0 )
+ start = (QCheckListItem *)packagesList->firstChild();
+
+ for ( QCheckListItem *item = start; item != 0 ;
+ item = (QCheckListItem *)item->nextSibling() )
+ {
+ cout << "checking " << item->text().lower() << endl;
+ if ( item->text().lower().find( searchText ) != -1 )
+ {
+ cout << "matched " << item->text() << endl;
+ packagesList->ensureItemVisible( item );
+ packagesList->setCurrentItem( item );
+ break;
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/noncore/settings/aqpkg/networkpkgmgr.h b/noncore/settings/aqpkg/networkpkgmgr.h
index 3c437b4..3a111ff 100644
--- a/noncore/settings/aqpkg/networkpkgmgr.h
+++ b/noncore/settings/aqpkg/networkpkgmgr.h
@@ -37,13 +37,13 @@ public:
NetworkPackageManager( DataManager *dataManager, QWidget* parent=0, const char *name=0);
/** destructor */
~NetworkPackageManager();
void selectLocalPackage( const QString &pkg );
void updateData();
-
+ void searchForPackage();
private:
DataManager *dataMgr;
QComboBox *serversList;
QListView *packagesList;
QPushButton *update;