summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/packagemanager/mainwindow.cpp26
-rw-r--r--noncore/settings/packagemanager/mainwindow.h5
-rw-r--r--noncore/settings/packagemanager/packageinfodlg.cpp34
-rw-r--r--noncore/settings/packagemanager/packageinfodlg.h9
4 files changed, 63 insertions, 11 deletions
diff --git a/noncore/settings/packagemanager/mainwindow.cpp b/noncore/settings/packagemanager/mainwindow.cpp
index 486561d..05f21bc 100644
--- a/noncore/settings/packagemanager/mainwindow.cpp
+++ b/noncore/settings/packagemanager/mainwindow.cpp
@@ -18,64 +18,65 @@
18  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU General 18  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU General
19..}^=.=       =       ; Public License for more details. 19..}^=.=       =       ; Public License for more details.
20++=   -.     .`     .: 20++=   -.     .`     .:
21 :     =  ...= . :.=- You should have received a copy of the GNU 21 :     =  ...= . :.=- You should have received a copy of the GNU
22 -.   .:....=;==+<; General Public License along with this file; 22 -.   .:....=;==+<; General Public License along with this file;
23  -_. . .   )=.  = see the file COPYING. If not, write to the 23  -_. . .   )=.  = see the file COPYING. If not, write to the
24    --        :-=` Free Software Foundation, Inc., 24    --        :-=` Free Software Foundation, Inc.,
25 59 Temple Place - Suite 330, 25 59 Temple Place - Suite 330,
26 Boston, MA 02111-1307, USA. 26 Boston, MA 02111-1307, USA.
27 27
28*/ 28*/
29 29
30#include <qaction.h> 30#include <qaction.h>
31#include <qdir.h> 31#include <qdir.h>
32#include <qlayout.h> 32#include <qlayout.h>
33#include <qlineedit.h> 33#include <qlineedit.h>
34#include <qmenubar.h> 34#include <qmenubar.h>
35#include <qmessagebox.h> 35#include <qmessagebox.h>
36#include <qpopupmenu.h> 36#include <qpopupmenu.h>
37#include <qtimer.h> 37#include <qtimer.h>
38#include <qtoolbar.h> 38#include <qtoolbar.h>
39#include <qwhatsthis.h> 39#include <qwhatsthis.h>
40 40
41#include <qpe/qcopenvelope_qws.h> 41#include <qpe/qcopenvelope_qws.h>
42#include <qpe/qpeapplication.h> 42#include <qpe/qpeapplication.h>
43#include <qpe/resource.h> 43#include <qpe/resource.h>
44 44
45#include "mainwindow.h" 45#include "mainwindow.h"
46#include "installdlg.h" 46#include "installdlg.h"
47#include "filterdlg.h" 47#include "filterdlg.h"
48#include "promptdlg.h" 48#include "promptdlg.h"
49#include "entrydlg.h" 49#include "entrydlg.h"
50#include "packageinfodlg.h"
50 51
51MainWindow::MainWindow( QWidget *parent, const char *name, WFlags fl ) 52MainWindow::MainWindow( QWidget *parent, const char *name, WFlags fl )
52 : QMainWindow( parent, name, fl || WStyle_ContextHelp ) 53 : QMainWindow( parent, name, fl || WStyle_ContextHelp )
53 , m_config( "packman" ) 54 , m_config( "packman" )
54 , m_packman( &m_config, this ) 55 , m_packman( &m_config, this )
55 , m_menuBar( this ) 56 , m_menuBar( this )
56 , m_toolBar( this ) 57 , m_toolBar( this )
57 , m_findBar( this ) 58 , m_findBar( this )
58 , m_widgetStack( this ) 59 , m_widgetStack( this )
59 , m_packageList( this ) 60 , m_packageList( this )
60 , m_statusWidget( this ) 61 , m_statusWidget( this )
61 , m_statusText( &m_statusWidget ) 62 , m_statusText( &m_statusWidget )
62 , m_statusBar( &m_statusWidget ) 63 , m_statusBar( &m_statusWidget )
63 , m_iconUpdated( Resource::loadPixmap( "packagemanager/updated" ) ) 64 , m_iconUpdated( Resource::loadPixmap( "packagemanager/updated" ) )
64 , m_iconInstalled( Resource::loadPixmap( "installed" ) ) 65 , m_iconInstalled( Resource::loadPixmap( "installed" ) )
65 , m_iconNull( m_iconUpdated.size() ) 66 , m_iconNull( m_iconUpdated.size() )
66 , m_filterName( QString::null ) 67 , m_filterName( QString::null )
67 , m_filterServer( QString::null ) 68 , m_filterServer( QString::null )
68 , m_filterDest( QString::null ) 69 , m_filterDest( QString::null )
69 , m_filterStatus( OPackageManager::NotDefined ) 70 , m_filterStatus( OPackageManager::NotDefined )
70 , m_filterCategory( QString::null ) 71 , m_filterCategory( QString::null )
71 72
72{ 73{
73// setCaption( tr( "Package Manager" ) ); 74// setCaption( tr( "Package Manager" ) );
74 75
75 m_iconNull.fill( colorGroup().base() ); 76 m_iconNull.fill( colorGroup().base() );
76 77
77 connect( &m_widgetStack, SIGNAL(aboutToShow(QWidget*)), this, SLOT(slotWidgetStackShow(QWidget*)) ); 78 connect( &m_widgetStack, SIGNAL(aboutToShow(QWidget*)), this, SLOT(slotWidgetStackShow(QWidget*)) );
78 79
79 // Initialize widget stack, package list and status widget 80 // Initialize widget stack, package list and status widget
80 initStatusWidget(); 81 initStatusWidget();
81 initPackageList(); 82 initPackageList();
@@ -88,64 +89,66 @@ MainWindow::MainWindow( QWidget *parent, const char *name, WFlags fl )
88 initUI(); 89 initUI();
89 90
90 // Initialize package information 91 // Initialize package information
91 QTimer::singleShot( 100, this, SLOT( initPackageInfo() ) ); 92 QTimer::singleShot( 100, this, SLOT( initPackageInfo() ) );
92} 93}
93 94
94void MainWindow::closeEvent( QCloseEvent *event ) 95void MainWindow::closeEvent( QCloseEvent *event )
95{ 96{
96 // Close app only if either the package or status widgets are currently active 97 // Close app only if either the package or status widgets are currently active
97 bool close = m_widgetStack.visibleWidget() == &m_packageList || 98 bool close = m_widgetStack.visibleWidget() == &m_packageList ||
98 m_widgetStack.visibleWidget() == &m_statusWidget; 99 m_widgetStack.visibleWidget() == &m_statusWidget;
99 if ( close ) 100 if ( close )
100 { 101 {
101 // TODO - write out application configuration settings 102 // TODO - write out application configuration settings
102 103
103 // Write out package manager configuration settings 104 // Write out package manager configuration settings
104 m_packman.saveSettings(); 105 m_packman.saveSettings();
105 event->accept(); 106 event->accept();
106 } 107 }
107 else 108 else
108 { 109 {
109 delete m_widgetStack.visibleWidget(); 110 delete m_widgetStack.visibleWidget();
110 m_widgetStack.raiseWidget( &m_packageList ); 111 m_widgetStack.raiseWidget( &m_packageList );
111 event->ignore(); 112 event->ignore();
112 } 113 }
113} 114}
114 115
115void MainWindow::initPackageList() 116void MainWindow::initPackageList()
116{ 117{
117 m_packageList.addColumn( tr( "Packages" ) ); 118 m_packageList.addColumn( tr( "Packages" ) );
118 QWhatsThis::add( &m_packageList, tr( "This is a listing of all packages.\n\nA blue dot next to the package name indicates that the package is currently installed.\n\nA blue dot with a star indicates that a newer version of the package is available from the server feed.\n\nClick inside the box at the left to select a package." ) ); 119 QWhatsThis::add( &m_packageList, tr( "This is a listing of all packages.\n\nA blue dot next to the package name indicates that the package is currently installed.\n\nA blue dot with a star indicates that a newer version of the package is available from the server feed.\n\nClick inside the box at the left to select a package." ) );
119 QPEApplication::setStylusOperation( m_packageList.viewport(), QPEApplication::RightOnHold ); 120 QPEApplication::setStylusOperation( m_packageList.viewport(), QPEApplication::RightOnHold );
121 connect( &m_packageList, SIGNAL(rightButtonPressed(QListViewItem *,const QPoint &,int)),
122 this, SLOT(slotDisplayPackageInfo(QListViewItem *)) );
120} 123}
121 124
122void MainWindow::initStatusWidget() 125void MainWindow::initStatusWidget()
123{ 126{
124 QVBoxLayout *layout = new QVBoxLayout( &m_statusWidget, 4, 4 ); 127 QVBoxLayout *layout = new QVBoxLayout( &m_statusWidget, 4, 4 );
125 128
126 m_statusText.setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) ); 129 m_statusText.setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Fixed ) );
127 layout->addWidget( &m_statusText ); 130 layout->addWidget( &m_statusText );
128 131
129 connect( &m_packman, SIGNAL(initStatus(int)), this, SLOT(slotInitStatusBar(int)) ); 132 connect( &m_packman, SIGNAL(initStatus(int)), this, SLOT(slotInitStatusBar(int)) );
130 connect( &m_packman, SIGNAL(statusText(const QString &)), this, SLOT(slotStatusText(const QString &)) ); 133 connect( &m_packman, SIGNAL(statusText(const QString &)), this, SLOT(slotStatusText(const QString &)) );
131 connect( &m_packman, SIGNAL(statusBar(int)), this, SLOT(slotStatusBar(int)) ); 134 connect( &m_packman, SIGNAL(statusBar(int)), this, SLOT(slotStatusBar(int)) );
132 135
133 layout->addWidget( &m_statusBar ); 136 layout->addWidget( &m_statusBar );
134} 137}
135 138
136void MainWindow::initUI() 139void MainWindow::initUI()
137{ 140{
138 // Build menu and tool bars 141 // Build menu and tool bars
139 setToolBarsMovable( false ); 142 setToolBarsMovable( false );
140 143
141 m_menuBar.setHorizontalStretchable( true ); 144 m_menuBar.setHorizontalStretchable( true );
142 QMenuBar *mb = new QMenuBar( &m_menuBar ); 145 QMenuBar *mb = new QMenuBar( &m_menuBar );
143 mb->setMargin( 0 ); 146 mb->setMargin( 0 );
144 147
145 // Find toolbar 148 // Find toolbar
146 addToolBar( &m_findBar, QMainWindow::Top, true ); 149 addToolBar( &m_findBar, QMainWindow::Top, true );
147 m_findBar.setHorizontalStretchable( true ); 150 m_findBar.setHorizontalStretchable( true );
148 m_findEdit = new QLineEdit( &m_findBar ); 151 m_findEdit = new QLineEdit( &m_findBar );
149 QWhatsThis::add( m_findEdit, tr( "Type the text to search for here." ) ); 152 QWhatsThis::add( m_findEdit, tr( "Type the text to search for here." ) );
150 m_findBar.setStretchableWidget( m_findEdit ); 153 m_findBar.setStretchableWidget( m_findEdit );
151 connect( m_findEdit, SIGNAL(textChanged(const QString &)), this, SLOT(slotFindChanged(const QString &)) ); 154 connect( m_findEdit, SIGNAL(textChanged(const QString &)), this, SLOT(slotFindChanged(const QString &)) );
@@ -323,124 +326,124 @@ void MainWindow::slotWidgetStackShow( QWidget *widget )
323 setCaption( tr( "Package Manager" ) ); 326 setCaption( tr( "Package Manager" ) );
324 327
325 m_menuBar.show(); 328 m_menuBar.show();
326 m_toolBar.show(); 329 m_toolBar.show();
327 } 330 }
328 else 331 else
329 { 332 {
330 m_menuBar.hide(); 333 m_menuBar.hide();
331 m_toolBar.hide(); 334 m_toolBar.hide();
332 } 335 }
333} 336}
334 337
335void MainWindow::slotInitStatusBar( int numSteps ) 338void MainWindow::slotInitStatusBar( int numSteps )
336{ 339{
337 m_statusBar.setTotalSteps( numSteps ); 340 m_statusBar.setTotalSteps( numSteps );
338} 341}
339 342
340void MainWindow::slotStatusText( const QString &status ) 343void MainWindow::slotStatusText( const QString &status )
341{ 344{
342 m_statusText.setText( status ); 345 m_statusText.setText( status );
343} 346}
344 347
345void MainWindow::slotStatusBar( int currStep ) 348void MainWindow::slotStatusBar( int currStep )
346{ 349{
347 m_statusBar.setProgress( currStep ); 350 m_statusBar.setProgress( currStep );
348} 351}
349 352
350void MainWindow::slotUpdate() 353void MainWindow::slotUpdate()
351{ 354{
352 // Create package manager output widget 355 // Create package manager output widget
353 InstallDlg *dlg = new InstallDlg( this, &m_packman, tr( "Update package information" ), false, 356 InstallDlg *dlg = new InstallDlg( this, &m_packman, tr( "Update package information" ), false,
354 OPackage::Update ); 357 OPackage::Update );
355 connect( dlg, SIGNAL(closeInstallDlg()), this, SLOT(slotCloseInstallDlg()) ); 358 connect( dlg, SIGNAL(closeInstallDlg()), this, SLOT(slotCloseDlg()) );
356 359
357 // Display widget 360 // Display widget
358 m_widgetStack.addWidget( dlg, 3 ); 361 m_widgetStack.addWidget( dlg, 3 );
359 m_widgetStack.raiseWidget( dlg ); 362 m_widgetStack.raiseWidget( dlg );
360} 363}
361 364
362void MainWindow::slotUpgrade() 365void MainWindow::slotUpgrade()
363{ 366{
364 // Create package manager output widget 367 // Create package manager output widget
365 InstallDlg *dlg = new InstallDlg( this, &m_packman, tr( "Upgrade installed packages" ), false, 368 InstallDlg *dlg = new InstallDlg( this, &m_packman, tr( "Upgrade installed packages" ), false,
366 OPackage::Upgrade ); 369 OPackage::Upgrade );
367 connect( dlg, SIGNAL(closeInstallDlg()), this, SLOT(slotCloseInstallDlg()) ); 370 connect( dlg, SIGNAL(closeInstallDlg()), this, SLOT(slotCloseDlg()) );
368 371
369 // Display widget 372 // Display widget
370 m_widgetStack.addWidget( dlg, 3 ); 373 m_widgetStack.addWidget( dlg, 3 );
371 m_widgetStack.raiseWidget( dlg ); 374 m_widgetStack.raiseWidget( dlg );
372} 375}
373 376
374void MainWindow::slotDownload() 377void MainWindow::slotDownload()
375{ 378{
376 // Retrieve list of packages selected for download (if any) 379 // Retrieve list of packages selected for download (if any)
377 QStringList *workingPackages = new QStringList(); 380 QStringList *workingPackages = new QStringList();
378 381
379 for ( QCheckListItem *item = static_cast<QCheckListItem *>(m_packageList.firstChild()); 382 for ( QCheckListItem *item = static_cast<QCheckListItem *>(m_packageList.firstChild());
380 item != 0 ; 383 item != 0 ;
381 item = static_cast<QCheckListItem *>(item->nextSibling()) ) 384 item = static_cast<QCheckListItem *>(item->nextSibling()) )
382 { 385 {
383 if ( item->isOn() ) 386 if ( item->isOn() )
384 workingPackages->append( item->text() ); 387 workingPackages->append( item->text() );
385 } 388 }
386 389
387 if ( workingPackages->isEmpty() ) 390 if ( workingPackages->isEmpty() )
388 { 391 {
389 QMessageBox::information( this, tr( "Nothing to do" ), tr( "No packages selected" ), tr( "OK" ) ); 392 QMessageBox::information( this, tr( "Nothing to do" ), tr( "No packages selected" ), tr( "OK" ) );
390 return; 393 return;
391 } 394 }
392 else 395 else
393 { 396 {
394 // Download selected packages 397 // Download selected packages
395 m_config.setGroup( "settings" ); 398 m_config.setGroup( "settings" );
396 QString workingDir = m_config.readEntry( "DownloadDir", "/tmp" ); 399 QString workingDir = m_config.readEntry( "DownloadDir", "/tmp" );
397 400
398 bool ok = false; 401 bool ok = false;
399 QString text = EntryDlg::getText( tr( "Download" ), tr( "Enter path to download package to:" ), workingDir, &ok, this ); 402 QString text = EntryDlg::getText( tr( "Download" ), tr( "Enter path to download package to:" ), workingDir, &ok, this );
400 if ( ok && !text.isEmpty() ) 403 if ( ok && !text.isEmpty() )
401 workingDir = text; // user entered something and pressed ok 404 workingDir = text; // user entered something and pressed ok
402 else 405 else
403 return; // user entered nothing or pressed cancel 406 return; // user entered nothing or pressed cancel
404 407
405 // Store download directory in config file 408 // Store download directory in config file
406 m_config.writeEntry( "DownloadDir", workingDir ); 409 m_config.writeEntry( "DownloadDir", workingDir );
407 410
408 // Get starting directory 411 // Get starting directory
409 QDir::setCurrent( workingDir ); 412 QDir::setCurrent( workingDir );
410 413
411 // Create package manager output widget 414 // Create package manager output widget
412 InstallDlg *dlg = new InstallDlg( this, &m_packman, tr( "Download packages" ), false, 415 InstallDlg *dlg = new InstallDlg( this, &m_packman, tr( "Download packages" ), false,
413 OPackage::Download, workingPackages ); 416 OPackage::Download, workingPackages );
414 connect( dlg, SIGNAL(closeInstallDlg()), this, SLOT(slotCloseInstallDlg()) ); 417 connect( dlg, SIGNAL(closeInstallDlg()), this, SLOT(slotCloseDlg()) );
415 418
416 // Display widget 419 // Display widget
417 m_widgetStack.addWidget( dlg, 3 ); 420 m_widgetStack.addWidget( dlg, 3 );
418 m_widgetStack.raiseWidget( dlg ); 421 m_widgetStack.raiseWidget( dlg );
419 } 422 }
420} 423}
421 424
422void MainWindow::slotApply() 425void MainWindow::slotApply()
423{ 426{
424 QStringList *removeList = 0x0; 427 QStringList *removeList = 0x0;
425 QStringList *installList = 0x0; 428 QStringList *installList = 0x0;
426 QStringList *upgradeList = 0x0; 429 QStringList *upgradeList = 0x0;
427 430
428 for ( QCheckListItem *item = static_cast<QCheckListItem *>(m_packageList.firstChild()); 431 for ( QCheckListItem *item = static_cast<QCheckListItem *>(m_packageList.firstChild());
429 item != 0 ; 432 item != 0 ;
430 item = static_cast<QCheckListItem *>(item->nextSibling()) ) 433 item = static_cast<QCheckListItem *>(item->nextSibling()) )
431 { 434 {
432 if ( item->isOn() ) 435 if ( item->isOn() )
433 { 436 {
434 OPackage *package = m_packman.findPackage( item->text() ); 437 OPackage *package = m_packman.findPackage( item->text() );
435 if ( package ) 438 if ( package )
436 { 439 {
437 if ( !package->versionInstalled().isNull() ) 440 if ( !package->versionInstalled().isNull() )
438 { 441 {
439 if ( m_packman.compareVersions( package->version(), package->versionInstalled() ) == 1 ) 442 if ( m_packman.compareVersions( package->version(), package->versionInstalled() ) == 1 )
440 { 443 {
441 // Remove/upgrade package 444 // Remove/upgrade package
442 int answer = PromptDlg::ask( tr( "Remove or upgrade" ), 445 int answer = PromptDlg::ask( tr( "Remove or upgrade" ),
443 tr( QString( "Do you wish to remove or upgrade\n%1?" ).arg( item->text() ) ), 446 tr( QString( "Do you wish to remove or upgrade\n%1?" ).arg( item->text() ) ),
444 tr( "Remove" ), tr( "Upgrade" ), this ); 447 tr( "Remove" ), tr( "Upgrade" ), this );
445 if ( answer == 1 ) // Remove 448 if ( answer == 1 ) // Remove
446 { 449 {
@@ -480,72 +483,72 @@ void MainWindow::slotApply()
480 // Install package 483 // Install package
481 if ( !installList ) 484 if ( !installList )
482 installList = new QStringList(); 485 installList = new QStringList();
483 installList->append( item->text() ); 486 installList->append( item->text() );
484 } 487 }
485 } 488 }
486 } 489 }
487 } 490 }
488 491
489 // If nothing is selected, display message and exit 492 // If nothing is selected, display message and exit
490 if ( !removeList && !installList && !upgradeList ) 493 if ( !removeList && !installList && !upgradeList )
491 { 494 {
492 QMessageBox::information( this, tr( "Nothing to do" ), tr( "No packages selected" ), tr( "OK" ) ); 495 QMessageBox::information( this, tr( "Nothing to do" ), tr( "No packages selected" ), tr( "OK" ) );
493 return; 496 return;
494 } 497 }
495 498
496 // Send command only if there are packages to process 499 // Send command only if there are packages to process
497 OPackage::Command removeCmd = OPackage::NotDefined; 500 OPackage::Command removeCmd = OPackage::NotDefined;
498 if ( removeList && !removeList->isEmpty() ) 501 if ( removeList && !removeList->isEmpty() )
499 removeCmd = OPackage::Remove; 502 removeCmd = OPackage::Remove;
500 OPackage::Command installCmd = OPackage::NotDefined; 503 OPackage::Command installCmd = OPackage::NotDefined;
501 if ( installList && !installList->isEmpty() ) 504 if ( installList && !installList->isEmpty() )
502 installCmd = OPackage::Install; 505 installCmd = OPackage::Install;
503 OPackage::Command upgradeCmd = OPackage::NotDefined; 506 OPackage::Command upgradeCmd = OPackage::NotDefined;
504 if ( upgradeList && !upgradeList->isEmpty() ) 507 if ( upgradeList && !upgradeList->isEmpty() )
505 upgradeCmd = OPackage::Upgrade; 508 upgradeCmd = OPackage::Upgrade;
506 509
507 // Create package manager output widget 510 // Create package manager output widget
508 InstallDlg *dlg = new InstallDlg( this, &m_packman, tr( "Apply changes" ), true, 511 InstallDlg *dlg = new InstallDlg( this, &m_packman, tr( "Apply changes" ), true,
509 removeCmd, removeList, 512 removeCmd, removeList,
510 installCmd, installList, 513 installCmd, installList,
511 upgradeCmd, upgradeList ); 514 upgradeCmd, upgradeList );
512 connect( dlg, SIGNAL(closeInstallDlg()), this, SLOT(slotCloseInstallDlg()) ); 515 connect( dlg, SIGNAL(closeInstallDlg()), this, SLOT(slotCloseDlg()) );
513 516
514 // Display widget 517 // Display widget
515 m_widgetStack.addWidget( dlg, 3 ); 518 m_widgetStack.addWidget( dlg, 3 );
516 m_widgetStack.raiseWidget( dlg ); 519 m_widgetStack.raiseWidget( dlg );
517} 520}
518 521
519void MainWindow::slotCloseInstallDlg() 522void MainWindow::slotCloseDlg()
520{ 523{
521 // Close install dialog 524 // Close install dialog
522 delete m_widgetStack.visibleWidget(); 525 delete m_widgetStack.visibleWidget();
523 526
524 // Reload package list 527 // Reload package list
525 initPackageInfo(); 528 initPackageInfo();
526 529
527 // Update Opie launcher links 530 // Update Opie launcher links
528 QCopEnvelope e("QPE/System", "linkChanged(QString)"); 531 QCopEnvelope e("QPE/System", "linkChanged(QString)");
529 QString lf = QString::null; 532 QString lf = QString::null;
530 e << lf; 533 e << lf;
531} 534}
532 535
533void MainWindow::slotConfigure() 536void MainWindow::slotConfigure()
534{ 537{
535 if ( m_packman.configureDlg( false ) ) 538 if ( m_packman.configureDlg( false ) )
536 { 539 {
537 if ( PromptDlg::ask( tr( "Config updated" ), 540 if ( PromptDlg::ask( tr( "Config updated" ),
538 tr( "The configuration has been updated. Do you want to update server and package information now?" ), 541 tr( "The configuration has been updated. Do you want to update server and package information now?" ),
539 tr( "Yes" ), tr( "No" ), this ) == 1 ) 542 tr( "Yes" ), tr( "No" ), this ) == 1 )
540 { 543 {
541 // Update package list and reload package info 544 // Update package list and reload package info
542 slotUpdate(); 545 slotUpdate();
543 } 546 }
544 } 547 }
545} 548}
546 549
547void MainWindow::slotShowNotInstalled() 550void MainWindow::slotShowNotInstalled()
548{ 551{
549 OPackageList *packageList; 552 OPackageList *packageList;
550 if ( m_actionShowNotInstalled->isOn() ) 553 if ( m_actionShowNotInstalled->isOn() )
551 { 554 {
@@ -636,32 +639,45 @@ void MainWindow::slotFilter( bool isOn )
636 else 639 else
637 packageList = m_packman.packages(); 640 packageList = m_packman.packages();
638 641
639 if ( packageList ) 642 if ( packageList )
640 { 643 {
641 loadPackageList( packageList, true ); 644 loadPackageList( packageList, true );
642 delete packageList; 645 delete packageList;
643 } 646 }
644} 647}
645 648
646void MainWindow::slotFindShowToolbar() 649void MainWindow::slotFindShowToolbar()
647{ 650{
648 m_findBar.show(); 651 m_findBar.show();
649 m_findEdit->setFocus(); 652 m_findEdit->setFocus();
650} 653}
651 654
652void MainWindow::slotFindHideToolbar() 655void MainWindow::slotFindHideToolbar()
653{ 656{
654 m_findBar.hide(); 657 m_findBar.hide();
655} 658}
656 659
657void MainWindow::slotFindChanged( const QString &findText ) 660void MainWindow::slotFindChanged( const QString &findText )
658{ 661{
659 662
660 m_actionFindNext->setEnabled( !findText.isEmpty() ); 663 m_actionFindNext->setEnabled( !findText.isEmpty() );
661 searchForPackage( findText ); 664 searchForPackage( findText );
662} 665}
663 666
664void MainWindow::slotFindNext() 667void MainWindow::slotFindNext()
665{ 668{
666 searchForPackage( m_findEdit->text() ); 669 searchForPackage( m_findEdit->text() );
667} 670}
671
672void MainWindow::slotDisplayPackageInfo( QListViewItem *packageItem )
673{
674 QString packageName( ( static_cast<QCheckListItem*>( packageItem ) )->text() );
675
676 // Create package manager output widget
677 PackageInfoDlg *dlg = new PackageInfoDlg( this, &m_packman, packageName );
678 connect( dlg, SIGNAL(closeInfoDlg()), this, SLOT(slotCloseDlg()) );
679
680 // Display widget
681 m_widgetStack.addWidget( dlg, 3 );
682 m_widgetStack.raiseWidget( dlg );
683}
diff --git a/noncore/settings/packagemanager/mainwindow.h b/noncore/settings/packagemanager/mainwindow.h
index 285cddf..fb555c5 100644
--- a/noncore/settings/packagemanager/mainwindow.h
+++ b/noncore/settings/packagemanager/mainwindow.h
@@ -87,50 +87,53 @@ private:
87 QAction *m_actionShowUpdated; // Action to show pakages currently installed with update available 87 QAction *m_actionShowUpdated; // Action to show pakages currently installed with update available
88 QAction *m_actionFilter; // Action to filter packages 88 QAction *m_actionFilter; // Action to filter packages
89 QAction *m_actionFindNext; // Action to find next match 89 QAction *m_actionFindNext; // Action to find next match
90 90
91 // Cached filter settings 91 // Cached filter settings
92 QString m_filterName; // Cached name filter value 92 QString m_filterName; // Cached name filter value
93 QString m_filterServer; // Cached server name filter value 93 QString m_filterServer; // Cached server name filter value
94 QString m_filterDest; // Cached destination name filter value 94 QString m_filterDest; // Cached destination name filter value
95 OPackageManager::Status m_filterStatus; // Cached status filter value 95 OPackageManager::Status m_filterStatus; // Cached status filter value
96 QString m_filterCategory; // Cached category filter value 96 QString m_filterCategory; // Cached category filter value
97 97
98 void initPackageList(); 98 void initPackageList();
99 void initStatusWidget(); 99 void initStatusWidget();
100 void initUI(); 100 void initUI();
101 101
102 void loadPackageList( OPackageList *packages = 0x0, bool clearList = true ); 102 void loadPackageList( OPackageList *packages = 0x0, bool clearList = true );
103 void searchForPackage( const QString &text ); 103 void searchForPackage( const QString &text );
104 104
105private slots: 105private slots:
106 void initPackageInfo(); 106 void initPackageInfo();
107 void slotWidgetStackShow( QWidget *widget ); 107 void slotWidgetStackShow( QWidget *widget );
108 108
109 // Status widget slots 109 // Status widget slots
110 void slotInitStatusBar( int numSteps ); 110 void slotInitStatusBar( int numSteps );
111 void slotStatusText( const QString &status ); 111 void slotStatusText( const QString &status );
112 void slotStatusBar( int currStep ); 112 void slotStatusBar( int currStep );
113 113
114 // Actions menu action slots 114 // Actions menu action slots
115 void slotUpdate(); 115 void slotUpdate();
116 void slotUpgrade(); 116 void slotUpgrade();
117 void slotDownload(); 117 void slotDownload();
118 void slotApply(); 118 void slotApply();
119 void slotCloseInstallDlg(); 119 void slotCloseDlg();
120 void slotConfigure(); 120 void slotConfigure();
121 121
122 // View menu action slots 122 // View menu action slots
123 void slotShowNotInstalled(); 123 void slotShowNotInstalled();
124 void slotShowInstalled(); 124 void slotShowInstalled();
125 void slotShowUpdated(); 125 void slotShowUpdated();
126 void slotFilterChange(); 126 void slotFilterChange();
127 void slotFilter( bool isOn ); 127 void slotFilter( bool isOn );
128 128
129 // Find action slots 129 // Find action slots
130 void slotFindShowToolbar(); 130 void slotFindShowToolbar();
131 void slotFindHideToolbar(); 131 void slotFindHideToolbar();
132 void slotFindChanged( const QString &findText ); 132 void slotFindChanged( const QString &findText );
133 void slotFindNext(); 133 void slotFindNext();
134
135 // Other slots
136 void slotDisplayPackageInfo( QListViewItem * );
134}; 137};
135 138
136#endif 139#endif
diff --git a/noncore/settings/packagemanager/packageinfodlg.cpp b/noncore/settings/packagemanager/packageinfodlg.cpp
index 71f17eb..26356b9 100644
--- a/noncore/settings/packagemanager/packageinfodlg.cpp
+++ b/noncore/settings/packagemanager/packageinfodlg.cpp
@@ -5,52 +5,78 @@
5             .=l. 5             .=l.
6           .>+-= 6           .>+-=
7 _;:,     .>    :=|. This file is free software; you can 7 _;:,     .>    :=|. This file is free software; you can
8.> <`_,   >  .   <= redistribute it and/or modify it under 8.> <`_,   >  .   <= redistribute it and/or modify it under
9:`=1 )Y*s>-.--   : the terms of the GNU General Public 9:`=1 )Y*s>-.--   : the terms of the GNU General Public
10.="- .-=="i,     .._ License as published by the Free Software 10.="- .-=="i,     .._ License as published by the Free Software
11 - .   .-<_>     .<> Foundation; either version 2 of the License, 11 - .   .-<_>     .<> Foundation; either version 2 of the License,
12     ._= =}       : or (at your option) any later version. 12     ._= =}       : or (at your option) any later version.
13    .%`+i>       _;_. 13    .%`+i>       _;_.
14    .i_,=:_.      -<s. This file is distributed in the hope that 14    .i_,=:_.      -<s. This file is distributed in the hope that
15     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY; 15     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
16    : ..    .:,     . . . without even the implied warranty of 16    : ..    .:,     . . . without even the implied warranty of
17    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A 17    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
18  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU General 18  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU General
19..}^=.=       =       ; Public License for more details. 19..}^=.=       =       ; Public License for more details.
20++=   -.     .`     .: 20++=   -.     .`     .:
21 :     =  ...= . :.=- You should have received a copy of the GNU 21 :     =  ...= . :.=- You should have received a copy of the GNU
22 -.   .:....=;==+<; General Public License along with this file; 22 -.   .:....=;==+<; General Public License along with this file;
23  -_. . .   )=.  = see the file COPYING. If not, write to the 23  -_. . .   )=.  = see the file COPYING. If not, write to the
24    --        :-=` Free Software Foundation, Inc., 24    --        :-=` Free Software Foundation, Inc.,
25 59 Temple Place - Suite 330, 25 59 Temple Place - Suite 330,
26 Boston, MA 02111-1307, USA. 26 Boston, MA 02111-1307, USA.
27 27
28*/ 28*/
29 29
30#include "packageinfodlg.h" 30#include "packageinfodlg.h"
31 31
32#include <qlayout.h> 32#include <qlayout.h>
33#include <qpushbutton.h> 33#include <qpushbutton.h>
34 34
35#include <qpe/resource.h> 35#include <qpe/resource.h>
36 36
37#include <opie/otabwidget.h>
38
37PackageInfoDlg::PackageInfoDlg( QWidget *parent, OPackageManager *pm, const QString &package ) 39PackageInfoDlg::PackageInfoDlg( QWidget *parent, OPackageManager *pm, const QString &package )
38 : QWidget( 0x0 ) 40 : QWidget( 0x0 )
39 , m_packman( pm ) 41 , m_packman( pm )
40 , m_output( this ) 42 , m_information( this )
43 , m_files( this )
41{ 44{
42 // Initialize UI 45 // Initialize UI
43 if ( parent ) 46 if ( parent )
44 parent->setCaption( package ); 47 parent->setCaption( package );
45 48
46 QVBoxLayout *layout = new QVBoxLayout( this, 4, 0 ); 49 QVBoxLayout *layout = new QVBoxLayout( this, 4, 0 );
47 50
48 m_output.setReadOnly( true ); 51 OTabWidget *tabWidget = new OTabWidget( this );
49 layout->addWidget( &m_output ); 52 layout->addWidget( tabWidget );
50 53
51 QPushButton *btn = new QPushButton( Resource::loadPixmap( "enter" ), tr( "Close" ), this ); 54 QPushButton *btn = new QPushButton( Resource::loadPixmap( "enter" ), tr( "Close" ), this );
52 layout->addWidget( btn ); 55 layout->addWidget( btn );
53// TODO connect( btn, SIGNAL(clicked()), this, SLOT(slotBtnClose()) ); 56 connect( btn, SIGNAL(clicked()), this, SLOT(slotBtnClose()) );
57
58 // Information tab
59 m_information.reparent( tabWidget, QPoint( 0, 0 ) );
60 m_information.setReadOnly( true );
61 tabWidget->addTab( &m_information, "UtilsIcon", tr( "Information" ) );
62
63 // Files tab
64 QWidget *filesWidget = new QWidget( tabWidget );
65 QVBoxLayout *filesLayout = new QVBoxLayout( filesWidget, 4, 0 );
66 m_files.reparent( filesWidget, QPoint( 0, 0 ) );
67 m_files.setReadOnly( true );
68 filesLayout->addWidget( &m_files );
54 69
70 btn = new QPushButton( Resource::loadPixmap( "packagemanager/apply" ), tr( "Retrieve file list" ),
71 filesWidget );
72 filesLayout->addWidget( btn );
73// TODO connect( btn, SIGNAL(clicked()), this, SLOT(slotFileScan()) );
74 tabWidget->addTab( filesWidget, "binary", tr( "Files" ) );
55 75
76 tabWidget->setCurrentTab( tr( "Information" ) );
77}
78
79void PackageInfoDlg::slotBtnClose()
80{
81 emit closeInfoDlg();
56} 82}
diff --git a/noncore/settings/packagemanager/packageinfodlg.h b/noncore/settings/packagemanager/packageinfodlg.h
index 3bb9a7a..09af6f4 100644
--- a/noncore/settings/packagemanager/packageinfodlg.h
+++ b/noncore/settings/packagemanager/packageinfodlg.h
@@ -23,36 +23,43 @@
23  -_. . .   )=.  = see the file COPYING. If not, write to the 23  -_. . .   )=.  = see the file COPYING. If not, write to the
24    --        :-=` Free Software Foundation, Inc., 24    --        :-=` Free Software Foundation, Inc.,
25 59 Temple Place - Suite 330, 25 59 Temple Place - Suite 330,
26 Boston, MA 02111-1307, USA. 26 Boston, MA 02111-1307, USA.
27 27
28*/ 28*/
29 29
30#ifndef PACKAGEINFODLG_H 30#ifndef PACKAGEINFODLG_H
31#define PACKAGEINFODLG_H 31#define PACKAGEINFODLG_H
32 32
33#include <qmultilineedit.h> 33#include <qmultilineedit.h>
34#include <qwidget.h> 34#include <qwidget.h>
35 35
36#include <opie/oprocess.h> 36#include <opie/oprocess.h>
37 37
38#include "opackage.h" 38#include "opackage.h"
39 39
40class QPushButton; 40class QPushButton;
41 41
42class OPackageManager; 42class OPackageManager;
43 43
44class PackageInfoDlg : public QWidget 44class PackageInfoDlg : public QWidget
45{ 45{
46 Q_OBJECT 46 Q_OBJECT
47 47
48public: 48public:
49 PackageInfoDlg( QWidget *parent = 0x0, OPackageManager *pm = 0x0, const QString &package = QString::null ); 49 PackageInfoDlg( QWidget *parent = 0x0, OPackageManager *pm = 0x0, const QString &package = QString::null );
50 50
51private: 51private:
52 OPackageManager *m_packman; // Pointer to application instance of package manager 52 OPackageManager *m_packman; // Pointer to application instance of package manager
53 53
54 // UI controls 54 // UI controls
55 QMultiLineEdit m_output; // Multi-line edit to display package information 55 QMultiLineEdit m_information; // Multi-line edit to display package information
56 QMultiLineEdit m_files; // Multi-line edit to display package file list
57
58private slots:
59 void slotBtnClose();
60
61signals:
62 void closeInfoDlg();
56}; 63};
57 64
58#endif 65#endif