summaryrefslogtreecommitdiff
path: root/noncore/unsupported/oipkg/mainwindow.cpp
Side-by-side diff
Diffstat (limited to 'noncore/unsupported/oipkg/mainwindow.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/unsupported/oipkg/mainwindow.cpp264
1 files changed, 264 insertions, 0 deletions
diff --git a/noncore/unsupported/oipkg/mainwindow.cpp b/noncore/unsupported/oipkg/mainwindow.cpp
new file mode 100644
index 0000000..b485a03
--- a/dev/null
+++ b/noncore/unsupported/oipkg/mainwindow.cpp
@@ -0,0 +1,264 @@
+// adadpted form qpe/qipkg
+
+
+#include "mainwindow.h"
+
+#include <qpe/qpemenubar.h>
+#include <qpe/qpemessagebox.h>
+#include <qpe/resource.h>
+#include <qpe/qpetoolbar.h>
+#include <qaction.h>
+#include <qmessagebox.h>
+#include <qpopupmenu.h>
+#include <qtoolbutton.h>
+#include <qstring.h>
+#include <qlistview.h>
+#include <qtextview.h>
+#include <qtabwidget.h>
+#include <qcombobox.h>
+#include <qlayout.h>
+
+#include "pksettingsbase.h"
+#include "packagelistitem.h"
+
+MainWindow::MainWindow( QWidget *parent, const char *name, WFlags f = 0 ) :
+ QMainWindow( parent, name, f )
+{
+ setCaption( tr("Package Manager") );
+ table = new PackageWindow( this,0,0 );
+ setCentralWidget( table );
+ makeMenu();
+
+ QFontMetrics fm = fontMetrics();
+ int w0 = fm.width(tr("Package"))+30;
+ int w2 = fm.width("00000")+4;
+ table->ListViewPackages->setColumnWidth(0,w0);
+ table->ListViewPackages->setColumnWidth(1,228-w2-w0); // ### screen-biased
+ table->ListViewPackages->setColumnWidth(2,w2);
+ table->ListViewPackages->setColumnWidthMode(0,QListView::Manual);
+ table->ListViewPackages->setColumnWidthMode(1,QListView::Manual);
+ table->ListViewPackages->setColumnWidthMode(2,QListView::Manual);
+ table->ListViewPackages->setSelectionMode( QListView::Multi );
+
+ connect( table->section, SIGNAL( activated(int) ),
+ this, SLOT( sectionChanged() ) );
+ connect( table->subsection, SIGNAL(activated(int) ),
+ this, SLOT( subSectionChanged() ) );
+ connect( table->ListViewPackages, SIGNAL( clicked( QListViewItem* ) ),
+ this, SLOT( setCurrent( QListViewItem* ) ) );
+
+ settings = new PackageManagerSettings(this,0,TRUE);
+
+ ipkg = new PmIpkg( settings, this );
+ packageList.setSettings( settings );
+ newList();
+ setSections();
+ setSubSections();
+ displayList();
+}
+
+void MainWindow::makeMenu()
+{
+
+ QPEToolBar *toolBar = new QPEToolBar( this );
+ QPEMenuBar *menuBar = new QPEMenuBar( toolBar );
+ QPopupMenu *srvMenu = new QPopupMenu( menuBar );
+ QPopupMenu *cfgMenu = new QPopupMenu( menuBar );
+ // QPopupMenu *sectMenu = new QPopupMenu( menuBar );
+
+ contextMenu = new QPopupMenu( this );
+
+ setToolBarsMovable( false );
+ toolBar->setHorizontalStretchable( true );
+ menuBar->insertItem( tr( "Package" ), srvMenu );
+ menuBar->insertItem( tr( "Settings" ), cfgMenu );
+ // menuBar->insertItem( tr( "Sections" ), sectMenu );
+
+ toolBar->setStretchableWidget (srvMenu);
+
+
+ runAction = new QAction( tr( "Run" ),
+ Resource::loadPixmap( "oipkg/install" ),
+ QString::null, 0, this, 0 );
+ connect( runAction, SIGNAL( activated() ),
+ this, SLOT( runIpkg() ) );
+ runAction->addTo( toolBar );
+ runAction->addTo( srvMenu );
+
+ srvMenu->insertSeparator ();
+
+ updateAction = new QAction( tr( "Update" ),
+ Resource::loadIconSet( "oipkg/repeat" ),
+ QString::null, 0, this, 0 );
+ connect( updateAction, SIGNAL( activated() ),
+ this , SLOT( updateList() ) );
+ updateAction->addTo( toolBar );
+ updateAction->addTo( srvMenu );
+
+ // detailsAction = new QAction( tr( "Details" ),
+ // Resource::loadIconSet( "oipkg/details" ),
+ // QString::null, 0, this, 0 );
+ // connect( detailsAction, SIGNAL( activated() ),
+ // this , SLOT( showDetails() ) );
+ // detailsAction->addTo( toolBar );
+ // detailsAction->addTo( srvMenu );
+
+ QAction *cfgact;
+
+ cfgact = new QAction( tr( "Setups" ),
+ Resource::loadIconSet( "" ),
+ QString::null, 0, this, 0 );
+ connect( cfgact, SIGNAL( activated() ),
+ SLOT( showSettings() ) );
+ cfgact->addTo( cfgMenu );
+
+ cfgact = new QAction( tr( "Servers" ),
+ Resource::loadIconSet( "" ),
+ QString::null, 0, this, 0 );
+ connect( cfgact, SIGNAL( activated() ),
+ SLOT( showSettingsSrv() ) );
+ cfgact->addTo( cfgMenu );
+ cfgact = new QAction( tr( "Destinations" ),
+ Resource::loadIconSet( "" ),
+ QString::null, 0, this, 0 );
+ connect( cfgact, SIGNAL( activated() ),
+ SLOT( showSettingsDst() ) );
+ cfgact->addTo( cfgMenu );
+
+}
+
+MainWindow::~MainWindow()
+{
+}
+
+void MainWindow::runIpkg()
+{
+ ipkg->commit( packageList );
+ ipkg->runIpkg("update");
+ packageList.update();
+}
+
+void MainWindow::updateList()
+{
+ ipkg->runIpkg("update");
+ packageList.update();
+}
+
+void MainWindow::newList()
+{
+ packageList.update();
+}
+
+void MainWindow::filterList()
+{
+ packageList.filterPackages();
+}
+
+void MainWindow::displayList()
+{
+ table->ListViewPackages->clear();
+ Package *pack = packageList.first();
+ while( pack )
+ {
+ if ( pack && (pack->name() != "") )
+ {
+ table->ListViewPackages->insertItem(
+ new PackageListItem( table->ListViewPackages, pack ) );
+ }
+ pack = packageList.next();
+ }
+}
+
+void MainWindow::sectionChanged()
+{
+ disconnect( table->section, SIGNAL( activated(int) ),
+ this, SLOT( sectionChanged() ) );
+ disconnect( table->subsection, SIGNAL(activated(int) ),
+ this, SLOT( subSectionChanged() ) );
+ table->subsection->clear();
+ packageList.setSection( table->section->currentText() );
+ setSubSections();
+ filterList();
+ connect( table->section, SIGNAL( activated(int) ),
+ this, SLOT( sectionChanged() ) );
+ connect( table->subsection, SIGNAL(activated(int) ),
+ this, SLOT( subSectionChanged() ) );
+ displayList();
+}
+
+void MainWindow::subSectionChanged()
+{
+ disconnect( table->section, SIGNAL( activated(int) ),
+ this, SLOT( sectionChanged() ) );
+ disconnect( table->subsection, SIGNAL(activated(int) ),
+ this, SLOT( subSectionChanged() ) );
+ packageList.setSubSection( table->subsection->currentText() );
+ filterList();
+ connect( table->section, SIGNAL( activated(int) ),
+ this, SLOT( sectionChanged() ) );
+ connect( table->subsection, SIGNAL(activated(int) ),
+ this, SLOT( subSectionChanged() ) );
+ displayList();
+}
+
+void MainWindow::setSections()
+{
+ table->section->clear();
+ table->section->insertStringList( packageList.getSections() );
+}
+
+void MainWindow::setSubSections()
+{
+ table->subsection->clear();
+ table->subsection->insertStringList( packageList.getSubSections() );
+}
+
+
+void MainWindow::showSettings()
+{
+ if ( settings->showDialog( 0 ) )
+ newList();
+}
+void MainWindow::showSettingsSrv()
+{
+ if ( settings->showDialog( 1 ) )
+ newList();
+}
+void MainWindow::showSettingsDst()
+{
+ if ( settings->showDialog( 2 ) )
+ newList();
+}
+
+
+void MainWindow::showDetails()
+{
+ if ( activePackage ) return;
+ if ( details )
+ {
+ details = new PackageDetails( this );
+ connect( details->install, SIGNAL(clicked()), SLOT( toggleActivePackage() ) );
+ connect( details->remove, SIGNAL(clicked()), SLOT( toggleActivePackage() ) );
+ connect( details->ignore, SIGNAL(clicked()), details, SLOT(close()));
+ details->description->setTextFormat(RichText);
+ }
+
+ details->setCaption("Package: " + activePackage->name());
+ details->description->setText(activePackage->details() );
+ details->install->setEnabled(!activePackage->installed());
+ details->remove->setEnabled(activePackage->installed());
+ details->showMaximized();
+}
+
+void MainWindow::toggleActivePackage()
+{
+ activePackage->toggleProcess();
+ if ( details ) details->close();
+}
+
+void MainWindow::setCurrent( QListViewItem* p )
+{
+ pvDebug(2, "MainWindow::setCurrent ");
+ //+((Package*)p)->name());
+ activePackage = (Package*)p;
+}