summaryrefslogtreecommitdiff
authordrw <drw>2004-11-18 23:38:33 (UTC)
committer drw <drw>2004-11-18 23:38:33 (UTC)
commit0619d68ccab04095418a771349875afaee40858a (patch) (unidiff)
tree885784b6baaae2c3fb177c4d7e31c94b69c8d35e
parent770e76de2e039300a1e89f3cb0c4785a8d1c16a7 (diff)
downloadopie-0619d68ccab04095418a771349875afaee40858a.zip
opie-0619d68ccab04095418a771349875afaee40858a.tar.gz
opie-0619d68ccab04095418a771349875afaee40858a.tar.bz2
1. Implemented linking of apps to root (thanks to zecke for getting this started for me) 2. Bumped version to 0.5.0 (all v1.0 functionality is there...I think) 3. Added package dependency on ipkg-link 4. Updated Opie-PM ChangeLog, TODO
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/packagemanager/ChangeLog8
-rw-r--r--noncore/settings/packagemanager/README2
-rw-r--r--noncore/settings/packagemanager/TODO14
-rw-r--r--noncore/settings/packagemanager/installdlg.cpp104
-rw-r--r--noncore/settings/packagemanager/installdlg.h7
-rw-r--r--noncore/settings/packagemanager/mainwindow.cpp29
-rw-r--r--noncore/settings/packagemanager/opie-packagemanager.control4
7 files changed, 105 insertions, 63 deletions
diff --git a/noncore/settings/packagemanager/ChangeLog b/noncore/settings/packagemanager/ChangeLog
index c9e33c4..7799136 100644
--- a/noncore/settings/packagemanager/ChangeLog
+++ b/noncore/settings/packagemanager/ChangeLog
@@ -1,16 +1,24 @@
12004-11-18 Dan Williams <drw@handhelds.org>
2
3 * Released version 0.5.0
4 * All v1.0 functionality implemented
5 * Implemented installation of local packages
6 * Implemented linking of non-root apps (using ipkg-link)
7 * Many UI tweaks for installation and filter dialogs
8
12004-04-21 Dan Williams <drw@handhelds.org> 92004-04-21 Dan Williams <drw@handhelds.org>
2 10
3 * Released version 0.4.0 11 * Released version 0.4.0
4 * Added saving of ipkg configuration information 12 * Added saving of ipkg configuration information
5 * Re-initialize ipkg when configuration information changes 13 * Re-initialize ipkg when configuration information changes
6 * Added QWhatsThis for all UI controls 14 * Added QWhatsThis for all UI controls
7 * Remove Location from OConfItem as it is not used/needed 15 * Remove Location from OConfItem as it is not used/needed
8 * Re-ordered includes to follow Opie standards 16 * Re-ordered includes to follow Opie standards
9 17
102004-02-13 Dan Williams <drw@handhelds.org> 182004-02-13 Dan Williams <drw@handhelds.org>
11 19
12 * Released version 0.3.0 20 * Released version 0.3.0
13 * Fix handling of filtering options in View menu 21 * Fix handling of filtering options in View menu
14 * Do proper version string comparison 22 * Do proper version string comparison
15 * Fix string alignment code in PromptDlg to eliminate QT warning messages 23 * Fix string alignment code in PromptDlg to eliminate QT warning messages
16 24
diff --git a/noncore/settings/packagemanager/README b/noncore/settings/packagemanager/README
index bf93c98..c34a6af 100644
--- a/noncore/settings/packagemanager/README
+++ b/noncore/settings/packagemanager/README
@@ -1,21 +1,21 @@
1/************************************************************************ 1/************************************************************************
2/* 2/*
3/* Opie - Package Manager 3/* Opie - Package Manager
4/* ======================== 4/* ========================
5/* Version 0.4.0 5/* Version 0.5.0
6/* 6/*
7/* A package management client for Opie 7/* A package management client for Opie
8/* 8/*
9/************************************************************************ 9/************************************************************************
10 10
11------------------------------------------------------- 11-------------------------------------------------------
12 Release Notes for Opie-PackageManager - January, 2004 12 Release Notes for Opie-PackageManager - January, 2004
13------------------------------------------------------- 13-------------------------------------------------------
14 14
15====================== 15======================
16= To-do = 16= To-do =
17====================== 17======================
18 18
19- See $OPIEDIR/noncore/settings/packagemanager/TODO for more info. 19- See $OPIEDIR/noncore/settings/packagemanager/TODO for more info.
20 20
21====================== 21======================
diff --git a/noncore/settings/packagemanager/TODO b/noncore/settings/packagemanager/TODO
index 633c589..265beda 100644
--- a/noncore/settings/packagemanager/TODO
+++ b/noncore/settings/packagemanager/TODO
@@ -1,27 +1,25 @@
1/************************************************************************ 1/************************************************************************
2/* 2/*
3/* Opie - Package Manager 3/* Opie - Package Manager
4/* ======================== 4/* ========================
5/* Version 0.4.0 5/* Version 0.5.0
6/* 6/*
7/* A package management client for Opie 7/* A package management client for Opie
8/* 8/*
9/************************************************************************ 9/************************************************************************
10 10
11--------------------------------------------- 11-----------------------------------------------
12 To-do for Opie-PackageManager - April, 2004 12 To-do for Opie-PackageManager - November, 2004
13--------------------------------------------- 13-----------------------------------------------
14 14
15====================== 15======================
16= Current release = 16= Current release =
17====================== 17======================
18 18
191. Link non-root destination apps 191. Re-work package download dialog
202. Implement QCOP interface for installing, removing, etc.
213. Redesign configuration dialog
22 20
23====================== 21======================
24= Future releases = 22= Future releases =
25====================== 23======================
26 24
271. ??? \ No newline at end of file 251. Re-work server and destination tabs in configuration dialog \ No newline at end of file
diff --git a/noncore/settings/packagemanager/installdlg.cpp b/noncore/settings/packagemanager/installdlg.cpp
index 781f8f5..494603b 100644
--- a/noncore/settings/packagemanager/installdlg.cpp
+++ b/noncore/settings/packagemanager/installdlg.cpp
@@ -37,69 +37,79 @@ _;:, .> :=|. This file is free software; you can
37#include <qpe/storage.h> 37#include <qpe/storage.h>
38 38
39#include <qapplication.h> 39#include <qapplication.h>
40#include <qcombobox.h> 40#include <qcombobox.h>
41#include <qfileinfo.h> 41#include <qfileinfo.h>
42#include <qgroupbox.h> 42#include <qgroupbox.h>
43#include <qlabel.h> 43#include <qlabel.h>
44#include <qlayout.h> 44#include <qlayout.h>
45#include <qmap.h> 45#include <qmap.h>
46#include <qmultilineedit.h> 46#include <qmultilineedit.h>
47#include <qpushbutton.h> 47#include <qpushbutton.h>
48 48
49#include <sys/vfs.h> 49#include <sys/vfs.h>
50 50
51#include "opackagemanager.h" 51#include "opackagemanager.h"
52 52
53InstallDlg::InstallDlg( QWidget *parent, OPackageManager *pm, const QString &caption, bool showDestInfo, 53InstallDlg::InstallDlg( QWidget *parent, OPackageManager *pm, const QString &caption,
54 OPackage::Command command1, const QStringList &packages1, 54 OPackage::Command command1, const QStringList &packages1,
55 OPackage::Command command2, const QStringList &packages2, 55 OPackage::Command command2, const QStringList &packages2,
56 OPackage::Command command3, const QStringList &packages3 ) 56 OPackage::Command command3, const QStringList &packages3 )
57 : QWidget( 0x0 ) 57 : QWidget( 0x0 )
58 , m_packman( pm ) 58 , m_packman( pm )
59 , m_installFound( false )
59 , m_numCommands( 0 ) 60 , m_numCommands( 0 )
60 , m_currCommand( 0 ) 61 , m_currCommand( 0 )
61 , m_destItem( 0x0 ) 62 , m_destItem( 0x0 )
62{ 63{
63 // Save command/package list information 64 // Save command/package list information
64 if ( command1 != OPackage::NotDefined ) 65 if ( command1 != OPackage::NotDefined )
65 { 66 {
66 m_command[ m_numCommands ] = command1; 67 m_command[ m_numCommands ] = command1;
67 m_packages[ m_numCommands ] = packages1; 68 m_packages[ m_numCommands ] = packages1;
68 ++m_numCommands; 69 ++m_numCommands;
70
71 if ( command1 == OPackage::Install )
72 m_installFound = true;
69 } 73 }
70 if ( command2 != OPackage::NotDefined ) 74 if ( command2 != OPackage::NotDefined )
71 { 75 {
72 m_command[ m_numCommands ] = command2; 76 m_command[ m_numCommands ] = command2;
73 m_packages[ m_numCommands ] = packages2; 77 m_packages[ m_numCommands ] = packages2;
74 ++m_numCommands; 78 ++m_numCommands;
79
80 if ( command2 == OPackage::Install )
81 m_installFound = true;
75 } 82 }
76 if ( command3 != OPackage::NotDefined ) 83 if ( command3 != OPackage::NotDefined )
77 { 84 {
78 m_command[ m_numCommands ] = command3; 85 m_command[ m_numCommands ] = command3;
79 m_packages[ m_numCommands ] = packages3; 86 m_packages[ m_numCommands ] = packages3;
80 ++m_numCommands; 87 ++m_numCommands;
88
89 if ( command3 == OPackage::Install )
90 m_installFound = true;
81 } 91 }
82 92
83 // Initialize UI 93 // Initialize UI
84 if ( parent ) 94 if ( parent )
85 parent->setCaption( caption ); 95 parent->setCaption( caption );
86 96
87 QGridLayout *layout = new QGridLayout( this, 4, 2, 2, 4 ); 97 QGridLayout *layout = new QGridLayout( this, 4, 2, 2, 4 );
88 98
89 if ( showDestInfo ) 99 if ( m_installFound )
90 { 100 {
91 QLabel *label = new QLabel( tr( "Destination" ), this ); 101 QLabel *label = new QLabel( tr( "Destination" ), this );
92 layout->addWidget( label, 0, 0 ); 102 layout->addWidget( label, 0, 0 );
93 m_destination = new QComboBox( this ); 103 m_destination = new QComboBox( this );
94 m_destination->insertStringList( m_packman->destinations() ); 104 m_destination->insertStringList( m_packman->destinations() );
95 layout->addWidget( m_destination, 0, 1 ); 105 layout->addWidget( m_destination, 0, 1 );
96 connect( m_destination, SIGNAL(highlighted(const QString&)), 106 connect( m_destination, SIGNAL(highlighted(const QString&)),
97 this, SLOT(slotDisplayAvailSpace(const QString&)) ); 107 this, SLOT(slotDisplayAvailSpace(const QString&)) );
98 108
99 label = new QLabel( tr( "Space Avail" ), this ); 109 label = new QLabel( tr( "Space Avail" ), this );
100 layout->addWidget( label, 1, 0 ); 110 layout->addWidget( label, 1, 0 );
101 m_availSpace = new QLabel( this ); 111 m_availSpace = new QLabel( this );
102 layout->addWidget( m_availSpace, 1, 1 ); 112 layout->addWidget( m_availSpace, 1, 1 );
103 113
104 // TODO - select correct destination 114 // TODO - select correct destination
105 slotDisplayAvailSpace( m_destination->currentText() ); 115 slotDisplayAvailSpace( m_destination->currentText() );
@@ -207,90 +217,116 @@ void InstallDlg::slotBtnStart()
207 m_currCommand = 999; 217 m_currCommand = 999;
208 218
209 // Allow user to close dialog 219 // Allow user to close dialog
210 m_btnStart->setText( tr( "Close" ) ); 220 m_btnStart->setText( tr( "Close" ) );
211 m_btnStart->setIconSet( Resource::loadPixmap( "enter" ) ); 221 m_btnStart->setIconSet( Resource::loadPixmap( "enter" ) );
212 return; 222 return;
213 } 223 }
214 else if ( btnText == tr( "Close" ) ) 224 else if ( btnText == tr( "Close" ) )
215 { 225 {
216 // TODO - force reload of package data 226 // TODO - force reload of package data
217 emit closeInstallDlg(); 227 emit closeInstallDlg();
218 return; 228 return;
219 } 229 }
220 230
221 // Start was clicked, start executing 231 // Start was clicked, start executing
222 QString dest; 232 QString dest;
223 if ( m_destination ) 233 if ( m_installFound )
224 { 234 {
225 dest = m_destination->currentText(); 235 dest = m_destination->currentText();
226 m_destination->setEnabled( false ); 236 m_destination->setEnabled( false );
227 } 237 }
228 238
229 m_btnOptions->setEnabled( false ); 239 m_btnOptions->setEnabled( false );
230 if ( m_numCommands > 1 ) 240 if ( m_numCommands > 1 )
231 { 241 {
232 m_btnStart->setText( tr( "Abort" ) ); 242 m_btnStart->setText( tr( "Abort" ) );
233 m_btnStart->setIconSet( Resource::loadPixmap( "close" ) ); 243 m_btnStart->setIconSet( Resource::loadPixmap( "close" ) );
234 } 244 }
235 else 245 else
236 { 246 {
237 m_btnStart->setEnabled( false ); 247 m_btnStart->setEnabled( false );
238 } 248 }
239 249
250 Opie::Core::OProcess process( this );
240 for ( m_currCommand = 0; m_currCommand < m_numCommands; m_currCommand++ ) 251 for ( m_currCommand = 0; m_currCommand < m_numCommands; m_currCommand++ )
241 { 252 {
242 // Execute next command 253 // Execute next command
243 m_packman->executeCommand( m_command[ m_currCommand ], m_packages[ m_currCommand ], dest, 254 m_packman->executeCommand( m_command[ m_currCommand ], m_packages[ m_currCommand ], dest,
244 this, SLOT(slotOutput(char*)), true ); 255 this, SLOT(slotOutput(char*)), true );
256
257 // Link/Unlink application if the package was removed from or installed to a destination
258 // other than root
259 if ( ( m_command[ m_currCommand ] == OPackage::Install && dest != "root" ) ||
260 ( m_command[ m_currCommand ] == OPackage::Remove ) )
261 {
262 //m_packman->findPackage( m_packages[ m_currCommand ]->destination() != "root"*/ )
263
264 // Loop through all package names in the command group
265 for ( QStringList::Iterator it = m_packages[ m_currCommand ].begin();
266 it != m_packages[ m_currCommand ].end();
267 ++it )
268 {
269 OPackage *currPackage = m_packman->findPackage( (*it) );
270
271 // Skip package if it is not found or being removed from 'root'
272 if ( !currPackage || ( m_command[ m_currCommand ] == OPackage::Remove &&
273 currPackage->destination() == "root" ) )
274 continue;
275
276 // Display feedback to user
277 if ( m_command[ m_currCommand ] == OPackage::Install )
278 m_output->append( tr( QString( "Running ipkg-link to link package '%1'." )
279 .arg( currPackage->name() ) ) );
280 else
281 m_output->append( tr( QString( "Running ipkg-link to remove links for package '%1'." )
282 .arg( currPackage->name() ) ) );
283 m_output->setCursorPosition( m_output->numLines(), 0 );
284
285 // Execute ipkg-link
286 process.clearArguments();
287 process << "ipkg-link"
288 << ( ( m_command[ m_currCommand ] == OPackage::Install ) ? "add" : "remove" )
289 << currPackage->name();
290 if ( !process.start( Opie::Core::OProcess::Block,
291 Opie::Core::OProcess::NoCommunication ) )
292 {
293 slotProcessDone( 0x0 );
294 m_output->append( tr( "Unable to run ipkg-link." ) );
295 m_output->setCursorPosition( m_output->numLines(), 0 );
296 return;
297 }
298 }
299
300 }
245 } 301 }
246 slotProcessDone(0l); 302
247 303 slotProcessDone( 0x0 );
248 // Get destination
249/*
250 if ( dest == "root" )
251 {
252 slotProcessDone(0l);
253 return;
254 }
255
256 m_destItem = m_packman->findConfItem( OConfItem::Destination, dest );
257 if ( m_destItem )
258 {
259 QString path = m_destItem->value();
260 Opie::Core::OProcess *process = new Opie::Core::OProcess( this, "ipkg-link process" );
261 connect( process, SIGNAL(processExited(Opie::Core::OProcess*)),
262 this, SLOT(slotProcessDone(Opie::Core::OProcess*)) );
263
264 *process << "ipkg-link" << "mount" << path;
265 if ( !process->start( Opie::Core::OProcess::NotifyOnExit,
266 Opie::Core::OProcess::NoCommunication ) )
267 slotProcessDone( 0l );
268 m_output->append( tr( "Starting ipkg-link to link installed applications." ) );
269 m_output->setCursorPosition( m_output->numLines(), 0 );
270 }
271*/
272} 304}
273 305
274void InstallDlg::slotProcessDone( Opie::Core::OProcess *proc ) 306void InstallDlg::slotProcessDone( Opie::Core::OProcess *proc )
275{ 307{
276 delete proc; 308 if ( proc )
277 309 {
278 m_output->append( tr( "The package linking is done." ) ); 310 // Display message pnly if linking was done
279 m_output->setCursorPosition( m_output->numLines(), 0 ); 311 m_output->append( tr( "The package linking is done." ) );
280 312 m_output->setCursorPosition( m_output->numLines(), 0 );
313
314 delete proc;
315 }
316
281 // All commands executed, allow user to close dialog 317 // All commands executed, allow user to close dialog
282 m_btnStart->setEnabled( true ); 318 m_btnStart->setEnabled( true );
283 m_btnStart->setText( tr( "Close" ) ); 319 m_btnStart->setText( tr( "Close" ) );
284 m_btnStart->setIconSet( Resource::loadPixmap( "enter" ) ); 320 m_btnStart->setIconSet( Resource::loadPixmap( "enter" ) );
285 321
286 m_btnOptions->setEnabled( true ); 322 m_btnOptions->setEnabled( true );
287 m_btnOptions->setText( tr( "Save output" ) ); 323 m_btnOptions->setText( tr( "Save output" ) );
288 m_btnOptions->setIconSet( Resource::loadPixmap( "save" ) ); 324 m_btnOptions->setIconSet( Resource::loadPixmap( "save" ) );
289} 325}
290 326
291void InstallDlg::slotBtnOptions() 327void InstallDlg::slotBtnOptions()
292{ 328{
293 QString btnText = m_btnOptions->text(); 329 QString btnText = m_btnOptions->text();
294 if ( btnText == tr( "Options" ) ) 330 if ( btnText == tr( "Options" ) )
295 { 331 {
296 // Display configuration dialog (only options tab is enabled) 332 // Display configuration dialog (only options tab is enabled)
diff --git a/noncore/settings/packagemanager/installdlg.h b/noncore/settings/packagemanager/installdlg.h
index f45c17c..eabb717 100644
--- a/noncore/settings/packagemanager/installdlg.h
+++ b/noncore/settings/packagemanager/installdlg.h
@@ -42,43 +42,46 @@ class QPushButton;
42class OConfItem; 42class OConfItem;
43class OPackageManager; 43class OPackageManager;
44 44
45namespace Opie 45namespace Opie
46{ 46{
47 namespace Core 47 namespace Core
48 { 48 {
49 class OProcess; 49 class OProcess;
50 } 50 }
51} 51}
52 52
53class InstallDlg : public QWidget 53class InstallDlg : public QWidget
54{ 54{
55 Q_OBJECT 55 Q_OBJECT
56 56
57public: 57public:
58 InstallDlg( QWidget *parent = 0x0, OPackageManager *pm = 0x0, const QString &caption = QString::null, 58 InstallDlg( QWidget *parent = 0x0, OPackageManager *pm = 0x0,
59 bool showDestInfo = true, 59 const QString &caption = QString::null,
60 OPackage::Command command1 = OPackage::NotDefined, 60 OPackage::Command command1 = OPackage::NotDefined,
61 const QStringList &packages1 = QStringList(), 61 const QStringList &packages1 = QStringList(),
62 OPackage::Command command2 = OPackage::NotDefined, 62 OPackage::Command command2 = OPackage::NotDefined,
63 const QStringList &packages2 = QStringList(), 63 const QStringList &packages2 = QStringList(),
64 OPackage::Command command3 = OPackage::NotDefined, 64 OPackage::Command command3 = OPackage::NotDefined,
65 const QStringList &packages3 = QStringList() ); 65 const QStringList &packages3 = QStringList() );
66 66
67private: 67private:
68 OPackageManager *m_packman; // Pointer to application instance of package manager 68 OPackageManager *m_packman; // Pointer to application instance of package manager
69
70 bool m_installFound; // Indicates if an install is being done, controls display of
71 // destination selection, available space
69 72
70 // UI controls 73 // UI controls
71 QComboBox *m_destination; // Destination selection list 74 QComboBox *m_destination; // Destination selection list
72 QLabel *m_availSpace; // Text label to display available space on selected destination 75 QLabel *m_availSpace; // Text label to display available space on selected destination
73 QMultiLineEdit *m_output; // Multi-line edit to display status 76 QMultiLineEdit *m_output; // Multi-line edit to display status
74 QPushButton *m_btnStart; // Start/abort/close button 77 QPushButton *m_btnStart; // Start/abort/close button
75 QPushButton *m_btnOptions; // Installation options button 78 QPushButton *m_btnOptions; // Installation options button
76 79
77 // Commands and packages to execute 80 // Commands and packages to execute
78 int m_numCommands; // Number of commands to be executed 81 int m_numCommands; // Number of commands to be executed
79 int m_currCommand; // Number of currently executing command 82 int m_currCommand; // Number of currently executing command
80 OPackage::Command m_command[3]; // List of commands to be executed 83 OPackage::Command m_command[3]; // List of commands to be executed
81 QStringList m_packages[3]; // Lists of package names associated to commands (m_command[]) 84 QStringList m_packages[3]; // Lists of package names associated to commands (m_command[])
82 OConfItem *m_destItem; // Pointer to destination for package installation 85 OConfItem *m_destItem; // Pointer to destination for package installation
83 86
84private slots: 87private slots:
diff --git a/noncore/settings/packagemanager/mainwindow.cpp b/noncore/settings/packagemanager/mainwindow.cpp
index 459a75b..8a5b90c 100644
--- a/noncore/settings/packagemanager/mainwindow.cpp
+++ b/noncore/settings/packagemanager/mainwindow.cpp
@@ -299,34 +299,34 @@ void MainWindow::searchForPackage( const QString &text )
299 for ( QCheckListItem *item = static_cast<QCheckListItem *>(start); item != 0 ; 299 for ( QCheckListItem *item = static_cast<QCheckListItem *>(start); item != 0 ;
300 item = static_cast<QCheckListItem *>(item->nextSibling()) ) 300 item = static_cast<QCheckListItem *>(item->nextSibling()) )
301 { 301 {
302 if ( item->text().lower().find( text ) != -1 ) 302 if ( item->text().lower().find( text ) != -1 )
303 { 303 {
304 m_packageList.ensureItemVisible( item ); 304 m_packageList.ensureItemVisible( item );
305 m_packageList.setCurrentItem( item ); 305 m_packageList.setCurrentItem( item );
306 break; 306 break;
307 } 307 }
308 } 308 }
309 } 309 }
310} 310}
311 311
312void MainWindow::installLocalPackage( const QString &ipkFile ) 312void MainWindow::installLocalPackage( const QString &ipkFile )
313{ 313{
314 // Install selected file 314 // Install selected file
315 InstallDlg *dlg = new InstallDlg( this, &m_packman, tr( "Install local package" ), true, 315 InstallDlg *dlg = new InstallDlg( this, &m_packman, tr( "Install local package" ),
316 OPackage::Install, ipkFile ); 316 OPackage::Install, ipkFile );
317 connect( dlg, SIGNAL(closeInstallDlg()), this, SLOT(slotCloseDlg()) ); 317 connect( dlg, SIGNAL(closeInstallDlg()), this, SLOT(slotCloseDlg()) );
318 318
319 // Display widget 319 // Display widget
320 m_widgetStack.addWidget( dlg, 3 ); 320 m_widgetStack.addWidget( dlg, 3 );
321 m_widgetStack.raiseWidget( dlg ); 321 m_widgetStack.raiseWidget( dlg );
322} 322}
323 323
324void MainWindow::setDocument( const QString &ipkFile ) 324void MainWindow::setDocument( const QString &ipkFile )
325{ 325{
326 QString file = ipkFile; 326 QString file = ipkFile;
327 DocLnk lnk( ipkFile ); 327 DocLnk lnk( ipkFile );
328 if ( lnk.isValid() ) 328 if ( lnk.isValid() )
329 file = lnk.file(); 329 file = lnk.file();
330 330
331 installLocalPackage( file ); 331 installLocalPackage( file );
332} 332}
@@ -373,45 +373,45 @@ void MainWindow::slotInitStatusBar( int numSteps )
373 m_statusBar.setTotalSteps( numSteps ); 373 m_statusBar.setTotalSteps( numSteps );
374} 374}
375 375
376void MainWindow::slotStatusText( const QString &status ) 376void MainWindow::slotStatusText( const QString &status )
377{ 377{
378 m_statusText.setText( status ); 378 m_statusText.setText( status );
379} 379}
380 380
381void MainWindow::slotStatusBar( int currStep ) 381void MainWindow::slotStatusBar( int currStep )
382{ 382{
383 m_statusBar.setProgress( currStep ); 383 m_statusBar.setProgress( currStep );
384} 384}
385 385
386void MainWindow::slotUpdate() 386void MainWindow::slotUpdate()
387{ 387{
388 // Create package manager output widget 388 // Create package manager output widget
389 InstallDlg *dlg = new InstallDlg( this, &m_packman, tr( "Update package information" ), false, 389 InstallDlg *dlg = new InstallDlg( this, &m_packman, tr( "Update package information" ),
390 OPackage::Update ); 390 OPackage::Update );
391 connect( dlg, SIGNAL(closeInstallDlg()), this, SLOT(slotCloseDlg()) ); 391 connect( dlg, SIGNAL(closeInstallDlg()), this, SLOT(slotCloseDlg()) );
392 392
393 // Display widget 393 // Display widget
394 m_widgetStack.addWidget( dlg, 3 ); 394 m_widgetStack.addWidget( dlg, 3 );
395 m_widgetStack.raiseWidget( dlg ); 395 m_widgetStack.raiseWidget( dlg );
396} 396}
397 397
398void MainWindow::slotUpgrade() 398void MainWindow::slotUpgrade()
399{ 399{
400 // Create package manager output widget 400 // Create package manager output widget
401 InstallDlg *dlg = new InstallDlg( this, &m_packman, tr( "Upgrade installed packages" ), false, 401 InstallDlg *dlg = new InstallDlg( this, &m_packman, tr( "Upgrade installed packages" ),
402 OPackage::Upgrade ); 402 OPackage::Upgrade );
403 connect( dlg, SIGNAL(closeInstallDlg()), this, SLOT(slotCloseDlg()) ); 403 connect( dlg, SIGNAL(closeInstallDlg()), this, SLOT(slotCloseDlg()) );
404 404
405 // Display widget 405 // Display widget
406 m_widgetStack.addWidget( dlg, 3 ); 406 m_widgetStack.addWidget( dlg, 3 );
407 m_widgetStack.raiseWidget( dlg ); 407 m_widgetStack.raiseWidget( dlg );
408} 408}
409 409
410void MainWindow::slotDownload() 410void MainWindow::slotDownload()
411{ 411{
412 // Retrieve list of packages selected for download (if any) 412 // Retrieve list of packages selected for download (if any)
413 QStringList workingPackages; 413 QStringList workingPackages;
414 414
415 for ( QCheckListItem *item = static_cast<QCheckListItem *>(m_packageList.firstChild()); 415 for ( QCheckListItem *item = static_cast<QCheckListItem *>(m_packageList.firstChild());
416 item != 0 ; 416 item != 0 ;
417 item = static_cast<QCheckListItem *>(item->nextSibling()) ) 417 item = static_cast<QCheckListItem *>(item->nextSibling()) )
@@ -432,34 +432,34 @@ void MainWindow::slotDownload()
432 QString workingDir = m_config.readEntry( "DownloadDir", "/tmp" ); 432 QString workingDir = m_config.readEntry( "DownloadDir", "/tmp" );
433 433
434 bool ok = false; 434 bool ok = false;
435 QString text = EntryDlg::getText( tr( "Download" ), tr( "Enter path to download package to:" ), workingDir, &ok, this ); 435 QString text = EntryDlg::getText( tr( "Download" ), tr( "Enter path to download package to:" ), workingDir, &ok, this );
436 if ( ok && !text.isEmpty() ) 436 if ( ok && !text.isEmpty() )
437 workingDir = text; // user entered something and pressed ok 437 workingDir = text; // user entered something and pressed ok
438 else 438 else
439 return; // user entered nothing or pressed cancel 439 return; // user entered nothing or pressed cancel
440 440
441 // Store download directory in config file 441 // Store download directory in config file
442 m_config.writeEntry( "DownloadDir", workingDir ); 442 m_config.writeEntry( "DownloadDir", workingDir );
443 443
444 // Get starting directory 444 // Get starting directory
445 QDir::setCurrent( workingDir ); 445 QDir::setCurrent( workingDir );
446 446
447 // Create package manager output widget 447 // Create package manager output widget
448 InstallDlg *dlg = new InstallDlg( this, &m_packman, tr( "Download packages" ), false, 448 InstallDlg *dlg = new InstallDlg( this, &m_packman, tr( "Download packages" ),
449 OPackage::Download, workingPackages ); 449 OPackage::Download, workingPackages );
450 connect( dlg, SIGNAL(closeInstallDlg()), this, SLOT(slotCloseDlg()) ); 450 connect( dlg, SIGNAL(closeInstallDlg()), this, SLOT(slotCloseDlg()) );
451 451
452 // Display widget 452 // Display widget
453 m_widgetStack.addWidget( dlg, 3 ); 453 m_widgetStack.addWidget( dlg, 3 );
454 m_widgetStack.raiseWidget( dlg ); 454 m_widgetStack.raiseWidget( dlg );
455 } 455 }
456} 456}
457 457
458void MainWindow::slotApply() 458void MainWindow::slotApply()
459{ 459{
460 QStringList removeList; 460 QStringList removeList;
461 QStringList installList; 461 QStringList installList;
462 QStringList upgradeList; 462 QStringList upgradeList;
463 463
464 for ( QCheckListItem *item = static_cast<QCheckListItem *>(m_packageList.firstChild()); 464 for ( QCheckListItem *item = static_cast<QCheckListItem *>(m_packageList.firstChild());
465 item != 0 ; 465 item != 0 ;
@@ -507,44 +507,41 @@ void MainWindow::slotApply()
507 { 507 {
508 // Install package 508 // Install package
509 installList.append( item->text() ); 509 installList.append( item->text() );
510 } 510 }
511 } 511 }
512 } 512 }
513 } 513 }
514 514
515 // If nothing is selected, display message and exit 515 // If nothing is selected, display message and exit
516 if ( removeList.isEmpty() && installList.isEmpty() && upgradeList.isEmpty() ) 516 if ( removeList.isEmpty() && installList.isEmpty() && upgradeList.isEmpty() )
517 { 517 {
518 QMessageBox::information( this, tr( "Nothing to do" ), tr( "No packages selected" ), tr( "OK" ) ); 518 QMessageBox::information( this, tr( "Nothing to do" ), tr( "No packages selected" ), tr( "OK" ) );
519 return; 519 return;
520 } 520 }
521 521
522 // Send command only if there are packages to process 522 // Send command only if there are packages to process
523 OPackage::Command removeCmd = OPackage::NotDefined; 523 OPackage::Command removeCmd = !removeList.isEmpty() ? OPackage::Remove
524 if ( !removeList.isEmpty() ) 524 : OPackage::NotDefined;
525 removeCmd = OPackage::Remove; 525 OPackage::Command installCmd = !installList.isEmpty() ? OPackage::Install
526 OPackage::Command installCmd = OPackage::NotDefined; 526 : OPackage::NotDefined;
527 if ( !installList.isEmpty() ) 527 OPackage::Command upgradeCmd = !upgradeList.isEmpty() ? OPackage::Upgrade
528 installCmd = OPackage::Install; 528 : OPackage::NotDefined;
529 OPackage::Command upgradeCmd = OPackage::NotDefined;
530 if ( !upgradeList.isEmpty() )
531 upgradeCmd = OPackage::Upgrade;
532 529
533 // Create package manager output widget 530 // Create package manager output widget
534 InstallDlg *dlg = new InstallDlg( this, &m_packman, tr( "Apply changes" ), !installList.isEmpty(), 531 InstallDlg *dlg = new InstallDlg( this, &m_packman, tr( "Apply changes" ),
535 removeCmd, removeList, 532 removeCmd, removeList,
536 installCmd, installList, 533 installCmd, installList,
537 upgradeCmd, upgradeList ); 534 upgradeCmd, upgradeList );
538 connect( dlg, SIGNAL(closeInstallDlg()), this, SLOT(slotCloseDlg()) ); 535 connect( dlg, SIGNAL(closeInstallDlg()), this, SLOT(slotCloseDlg()) );
539 536
540 // Display widget 537 // Display widget
541 m_widgetStack.addWidget( dlg, 3 ); 538 m_widgetStack.addWidget( dlg, 3 );
542 m_widgetStack.raiseWidget( dlg ); 539 m_widgetStack.raiseWidget( dlg );
543} 540}
544 541
545void MainWindow::slotInstallLocal() 542void MainWindow::slotInstallLocal()
546{ 543{
547 // Display file open dialog with only package files 544 // Display file open dialog with only package files
548 MimeTypes type; 545 MimeTypes type;
549 QStringList packages; 546 QStringList packages;
550 packages << "application/ipkg"; 547 packages << "application/ipkg";
diff --git a/noncore/settings/packagemanager/opie-packagemanager.control b/noncore/settings/packagemanager/opie-packagemanager.control
index 5385ea5..aacd0ca 100644
--- a/noncore/settings/packagemanager/opie-packagemanager.control
+++ b/noncore/settings/packagemanager/opie-packagemanager.control
@@ -1,10 +1,10 @@
1Package: opie-packagemanager 1Package: opie-packagemanager
2Files: plugins/application/libpackagemanager.so* bin/packagemanager pics/packagemanager apps/Settings/packagemanager.desktop 2Files: plugins/application/libpackagemanager.so* bin/packagemanager pics/packagemanager apps/Settings/packagemanager.desktop
3Priority: optional 3Priority: optional
4Section: opie/settings 4Section: opie/settings
5Depends: task-opie-minimal, libopiecore2, libopieui2, libipkg (>=0.99.120) 5Depends: task-opie-minimal, libopiecore2, libopieui2, libipkg (>=0.99.120), ipkg-link
6Replaces: packagemanager 6Replaces: packagemanager
7Architecture: arm 7Architecture: arm
8Maintainer: Dan Williams (drw@handhelds.org) 8Maintainer: Dan Williams (drw@handhelds.org)
9Description: Opie package management client 9Description: Opie package management client
10Version: 0.4.0$EXTRAVERSION 10Version: 0.5.0$EXTRAVERSION