summaryrefslogtreecommitdiff
path: root/noncore/settings/packagemanager
Unidiff
Diffstat (limited to 'noncore/settings/packagemanager') (more/less context) (show whitespace changes)
-rw-r--r--noncore/settings/packagemanager/ChangeLog6
-rw-r--r--noncore/settings/packagemanager/entrydlg.cpp82
-rw-r--r--noncore/settings/packagemanager/entrydlg.h57
-rw-r--r--noncore/settings/packagemanager/installdlg.cpp2
-rw-r--r--noncore/settings/packagemanager/mainwindow.cpp38
-rw-r--r--noncore/settings/packagemanager/mainwindow.h2
-rw-r--r--noncore/settings/packagemanager/oipkg.cpp9
-rw-r--r--noncore/settings/packagemanager/packagemanager.pro4
-rw-r--r--noncore/settings/packagemanager/promptdlg.cpp2
9 files changed, 179 insertions, 23 deletions
diff --git a/noncore/settings/packagemanager/ChangeLog b/noncore/settings/packagemanager/ChangeLog
index 1ba12af..efa75b1 100644
--- a/noncore/settings/packagemanager/ChangeLog
+++ b/noncore/settings/packagemanager/ChangeLog
@@ -1,6 +1,12 @@
12004-01-23 Dan Williams <drw@handhelds.org>
2
3 * Added package download functionality
4 * Have Opie update links after install/removal so that apps
5 will display properly in Launcher
6
12004-01-20 Dan Williams <drw@handhelds.org> 72004-01-20 Dan Williams <drw@handhelds.org>
2 8
3 * Released version 0.2.0 9 * Released version 0.2.0
4 * Converted to use libipkg in place of spawning ipkg process 10 * Converted to use libipkg in place of spawning ipkg process
5 11
62004-01-13 Dan Williams <drw@handhelds.org> 122004-01-13 Dan Williams <drw@handhelds.org>
diff --git a/noncore/settings/packagemanager/entrydlg.cpp b/noncore/settings/packagemanager/entrydlg.cpp
new file mode 100644
index 0000000..8deaa37
--- a/dev/null
+++ b/noncore/settings/packagemanager/entrydlg.cpp
@@ -0,0 +1,82 @@
1/*
2                This file is part of the OPIE Project
3
4 =. Copyright (c) 2004 Dan Williams <drw@handhelds.org>
5             .=l.
6           .>+-=
7 _;:,     .>    :=|. This file is free software; you can
8.> <`_,   >  .   <= redistribute it and/or modify it under
9:`=1 )Y*s>-.--   : the terms of the GNU General Public
10.="- .-=="i,     .._ License as published by the Free Software
11 - .   .-<_>     .<> Foundation; either version 2 of the License,
12     ._= =}       : or (at your option) any later version.
13    .%`+i>       _;_.
14    .i_,=:_.      -<s. This file is distributed in the hope that
15     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
16    : ..    .:,     . . . without even the implied warranty of
17    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
18  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU General
19..}^=.=       =       ; Public License for more details.
20++=   -.     .`     .:
21 :     =  ...= . :.=- You should have received a copy of the GNU
22 -.   .:....=;==+<; General Public License along with this file;
23  -_. . .   )=.  = see the file COPYING. If not, write to the
24    --        :-=` Free Software Foundation, Inc.,
25 59 Temple Place - Suite 330,
26 Boston, MA 02111-1307, USA.
27
28*/
29
30#include "entrydlg.h"
31
32#include <qlabel.h>
33#include <qlayout.h>
34#include <qlineedit.h>
35#include <qpushbutton.h>
36
37EntryDlg::EntryDlg( const QString &label, QWidget* parent, const char* name, bool modal )
38 : QDialog( parent, name, modal )
39{
40 QVBoxLayout *vbox = new QVBoxLayout( this, 6, 6 );
41
42 QLabel *l = new QLabel( label, this );
43 l->setAlignment( AlignLeft | AlignTop | WordBreak );
44 vbox->addWidget( l );
45
46 m_entry = new QLineEdit( this );
47 vbox->addWidget( m_entry );
48
49 connect( m_entry, SIGNAL(returnPressed()), this, SLOT(tryAccept()) );
50}
51
52void EntryDlg::setText( const QString &text )
53{
54 m_entry->setText( text );
55 m_entry->selectAll();
56}
57
58QString EntryDlg::getText()
59{
60 return m_entry->text();
61}
62
63QString EntryDlg::getText( const QString &caption, const QString &label, const QString &text, bool *ok,
64 QWidget *parent, const char *name )
65{
66 EntryDlg *dlg = new EntryDlg( label, parent, name, true );
67 dlg->setCaption( caption );
68 dlg->setText( text );
69
70 QString result;
71 *ok = ( dlg->exec() == QDialog::Accepted );
72 if ( *ok )
73 result = dlg->getText();
74
75 delete dlg;
76 return result;
77}
78void EntryDlg::tryAccept()
79{
80 if ( !m_entry->text().isEmpty() )
81 accept();
82}
diff --git a/noncore/settings/packagemanager/entrydlg.h b/noncore/settings/packagemanager/entrydlg.h
new file mode 100644
index 0000000..33a7920
--- a/dev/null
+++ b/noncore/settings/packagemanager/entrydlg.h
@@ -0,0 +1,57 @@
1/*
2                This file is part of the OPIE Project
3
4 =. Copyright (c) 2004 Dan Williams <drw@handhelds.org>
5             .=l.
6           .>+-=
7 _;:,     .>    :=|. This file is free software; you can
8.> <`_,   >  .   <= redistribute it and/or modify it under
9:`=1 )Y*s>-.--   : the terms of the GNU General Public
10.="- .-=="i,     .._ License as published by the Free Software
11 - .   .-<_>     .<> Foundation; either version 2 of the License,
12     ._= =}       : or (at your option) any later version.
13    .%`+i>       _;_.
14    .i_,=:_.      -<s. This file is distributed in the hope that
15     +  .  -:.       = it will be useful, but WITHOUT ANY WARRANTY;
16    : ..    .:,     . . . without even the implied warranty of
17    =_        +     =;=|` MERCHANTABILITY or FITNESS FOR A
18  _.=:.       :    :=>`: PARTICULAR PURPOSE. See the GNU General
19..}^=.=       =       ; Public License for more details.
20++=   -.     .`     .:
21 :     =  ...= . :.=- You should have received a copy of the GNU
22 -.   .:....=;==+<; General Public License along with this file;
23  -_. . .   )=.  = see the file COPYING. If not, write to the
24    --        :-=` Free Software Foundation, Inc.,
25 59 Temple Place - Suite 330,
26 Boston, MA 02111-1307, USA.
27
28*/
29
30#ifndef ENTRYDLG_H
31#define ENTRYDLG_H
32
33#include <qdialog.h>
34
35class QLineEdit;
36
37class EntryDlg : public QDialog
38{
39 Q_OBJECT
40
41public:
42 static QString getText( const QString &caption, const QString &label, const QString &text = QString::null,
43 bool *ok = 0, QWidget *parent = 0, const char *name = 0 );
44
45 EntryDlg( const QString &label, QWidget* parent = 0, const char* name = 0, bool modal = true );
46
47 void setText( const QString &text );
48 QString getText();
49
50private slots:
51 void tryAccept();
52
53private:
54 QLineEdit *m_entry;
55};
56
57#endif // EntryDlg_H
diff --git a/noncore/settings/packagemanager/installdlg.cpp b/noncore/settings/packagemanager/installdlg.cpp
index 6a9ccbd..0c2ea78 100644
--- a/noncore/settings/packagemanager/installdlg.cpp
+++ b/noncore/settings/packagemanager/installdlg.cpp
@@ -138,12 +138,14 @@ InstallDlg::InstallDlg( QWidget *parent, OPackageManager *pm, const QString &cap
138 case OPackage::Install : lineStr.append( tr( "install" ) ); 138 case OPackage::Install : lineStr.append( tr( "install" ) );
139 break; 139 break;
140 case OPackage::Remove : lineStr.append( tr( "remove" ) ); 140 case OPackage::Remove : lineStr.append( tr( "remove" ) );
141 break; 141 break;
142 case OPackage::Upgrade : lineStr.append( tr( "upgrade" ) ); 142 case OPackage::Upgrade : lineStr.append( tr( "upgrade" ) );
143 break; 143 break;
144 case OPackage::Download : lineStr.append( tr( "download" ) );
145 break;
144 default : 146 default :
145 break; 147 break;
146 }; 148 };
147 lineStr.append( ":\n" ); 149 lineStr.append( ":\n" );
148 150
149 for ( QStringList::Iterator it = m_packages[ i ]->begin(); it != m_packages[ i ]->end(); ++it ) 151 for ( QStringList::Iterator it = m_packages[ i ]->begin(); it != m_packages[ i ]->end(); ++it )
diff --git a/noncore/settings/packagemanager/mainwindow.cpp b/noncore/settings/packagemanager/mainwindow.cpp
index 4611404..486561d 100644
--- a/noncore/settings/packagemanager/mainwindow.cpp
+++ b/noncore/settings/packagemanager/mainwindow.cpp
@@ -25,28 +25,31 @@
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 <qlayout.h> 32#include <qlayout.h>
32#include <qlineedit.h> 33#include <qlineedit.h>
33#include <qmenubar.h> 34#include <qmenubar.h>
34#include <qmessagebox.h> 35#include <qmessagebox.h>
35#include <qpopupmenu.h> 36#include <qpopupmenu.h>
36#include <qtimer.h> 37#include <qtimer.h>
37#include <qtoolbar.h> 38#include <qtoolbar.h>
38#include <qwhatsthis.h> 39#include <qwhatsthis.h>
39 40
41#include <qpe/qcopenvelope_qws.h>
40#include <qpe/qpeapplication.h> 42#include <qpe/qpeapplication.h>
41#include <qpe/resource.h> 43#include <qpe/resource.h>
42 44
43#include "mainwindow.h" 45#include "mainwindow.h"
44#include "installdlg.h" 46#include "installdlg.h"
45#include "filterdlg.h" 47#include "filterdlg.h"
46#include "promptdlg.h" 48#include "promptdlg.h"
49#include "entrydlg.h"
47 50
48MainWindow::MainWindow( QWidget *parent, const char *name, WFlags fl ) 51MainWindow::MainWindow( QWidget *parent, const char *name, WFlags fl )
49 : QMainWindow( parent, name, fl || WStyle_ContextHelp ) 52 : QMainWindow( parent, name, fl || WStyle_ContextHelp )
50 , m_config( "packman" ) 53 , m_config( "packman" )
51 , m_packman( &m_config, this ) 54 , m_packman( &m_config, this )
52 , m_menuBar( this ) 55 , m_menuBar( this )
@@ -159,21 +162,19 @@ void MainWindow::initUI()
159 QAction *actionUpgrade = new QAction( tr( "Upgrade" ), Resource::loadPixmap( "packagemanager/upgrade" ), QString::null, 0, this, 0 ); 162 QAction *actionUpgrade = new QAction( tr( "Upgrade" ), Resource::loadPixmap( "packagemanager/upgrade" ), QString::null, 0, this, 0 );
160 actionUpgrade->setWhatsThis( tr( "Click here to upgrade all installed packages if a newer version is available." ) ); 163 actionUpgrade->setWhatsThis( tr( "Click here to upgrade all installed packages if a newer version is available." ) );
161 connect( actionUpgrade, SIGNAL(activated()), this, SLOT(slotUpgrade()) ); 164 connect( actionUpgrade, SIGNAL(activated()), this, SLOT(slotUpgrade()) );
162 actionUpgrade->addTo( popup ); 165 actionUpgrade->addTo( popup );
163 actionUpgrade->addTo( &m_toolBar ); 166 actionUpgrade->addTo( &m_toolBar );
164 167
165/*
166 QPixmap iconDownload = Resource::loadPixmap( "packagemanager/download" ); 168 QPixmap iconDownload = Resource::loadPixmap( "packagemanager/download" );
167 QPixmap iconRemove = Resource::loadPixmap( "packagemanager/remove" ); 169 QPixmap iconRemove = Resource::loadPixmap( "packagemanager/remove" );
168 QAction *actionDownload = new QAction( tr( "Download" ), iconDownload, QString::null, 0, this, 0 ); 170 QAction *actionDownload = new QAction( tr( "Download" ), iconDownload, QString::null, 0, this, 0 );
169 actionDownload->setWhatsThis( tr( "Click here to download the currently selected package(s)." ) ); 171 actionDownload->setWhatsThis( tr( "Click here to download the currently selected package(s)." ) );
170 connect( actionDownload, SIGNAL(activated()), this, SLOT(slotDownload()) ); 172 connect( actionDownload, SIGNAL(activated()), this, SLOT(slotDownload()) );
171 actionDownload->addTo( popup ); 173 actionDownload->addTo( popup );
172 actionDownload->addTo( &m_toolBar ); 174 actionDownload->addTo( &m_toolBar );
173*/
174 175
175 a = new QAction( tr( "Apply changes" ), Resource::loadPixmap( "packagemanager/apply" ), QString::null, 0, this, 0 ); 176 a = new QAction( tr( "Apply changes" ), Resource::loadPixmap( "packagemanager/apply" ), QString::null, 0, this, 0 );
176 a->setWhatsThis( tr( "Click here to install, remove or upgrade currently selected package(s)." ) ); 177 a->setWhatsThis( tr( "Click here to install, remove or upgrade currently selected package(s)." ) );
177 connect( a, SIGNAL(activated()), this, SLOT(slotApply()) ); 178 connect( a, SIGNAL(activated()), this, SLOT(slotApply()) );
178 a->addTo( popup ); 179 a->addTo( popup );
179 a->addTo( &m_toolBar ); 180 a->addTo( &m_toolBar );
@@ -367,13 +368,12 @@ void MainWindow::slotUpgrade()
367 368
368 // Display widget 369 // Display widget
369 m_widgetStack.addWidget( dlg, 3 ); 370 m_widgetStack.addWidget( dlg, 3 );
370 m_widgetStack.raiseWidget( dlg ); 371 m_widgetStack.raiseWidget( dlg );
371} 372}
372 373
373/*
374void MainWindow::slotDownload() 374void MainWindow::slotDownload()
375{ 375{
376 // Retrieve list of packages selected for download (if any) 376 // Retrieve list of packages selected for download (if any)
377 QStringList *workingPackages = new QStringList(); 377 QStringList *workingPackages = new QStringList();
378 378
379 for ( QCheckListItem *item = static_cast<QCheckListItem *>(m_packageList.firstChild()); 379 for ( QCheckListItem *item = static_cast<QCheckListItem *>(m_packageList.firstChild());
@@ -383,47 +383,44 @@ void MainWindow::slotDownload()
383 if ( item->isOn() ) 383 if ( item->isOn() )
384 workingPackages->append( item->text() ); 384 workingPackages->append( item->text() );
385 } 385 }
386 386
387 if ( workingPackages->isEmpty() ) 387 if ( workingPackages->isEmpty() )
388 { 388 {
389 // No packages were selected, prompt for URL of package to download 389 QMessageBox::information( this, tr( "Nothing to do" ), tr( "No packages selected" ), tr( "OK" ) );
390 return;
390 } 391 }
391 else 392 else
392 { 393 {
393 // Download selected packages 394 // Download selected packages
394 m_config.setGroup( "settings" ); 395 m_config.setGroup( "settings" );
395 QString workingDir = m_config.readEntry( "DownloadDir", "/tmp" ); 396 QString workingDir = m_config.readEntry( "DownloadDir", "/tmp" );
396 397
397// QString text = InputDialog::getText( tr( "Download to where" ), tr( "Enter path to download to" ), workingDir, &ok, this ); 398 bool ok = false;
398// if ( ok && !text.isEmpty() ) 399 QString text = EntryDlg::getText( tr( "Download" ), tr( "Enter path to download package to:" ), workingDir, &ok, this );
399// workingDir = text; // user entered something and pressed ok 400 if ( ok && !text.isEmpty() )
400// else 401 workingDir = text; // user entered something and pressed ok
401// return; // user entered nothing or pressed cancel 402 else
403 return; // user entered nothing or pressed cancel
402 404
403// // Store download directory in config file 405 // Store download directory in config file
404// m_config.writeEntry( "DownloadDir", workingDir ); 406 m_config.writeEntry( "DownloadDir", workingDir );
405 407
406 // Get starting directory 408 // Get starting directory
407// char initDir[PATH_MAX]; 409 QDir::setCurrent( workingDir );
408// getcwd( initDir, PATH_MAX );
409
410 // Download packages
411
412 }
413 410
414 // Create package manager output widget 411 // Create package manager output widget
415 InstallDlg *dlg = new InstallDlg( this, &m_packman, tr( "Download packages" ), false, 412 InstallDlg *dlg = new InstallDlg( this, &m_packman, tr( "Download packages" ), false,
416 OPackage::Download, workingPackages ); 413 OPackage::Download, workingPackages );
417 connect( dlg, SIGNAL(closeInstallDlg()), this, SLOT(slotCloseInstallDlg()) ); 414 connect( dlg, SIGNAL(closeInstallDlg()), this, SLOT(slotCloseInstallDlg()) );
418 415
419 // Display widget 416 // Display widget
420 m_widgetStack.addWidget( dlg, 3 ); 417 m_widgetStack.addWidget( dlg, 3 );
421 m_widgetStack.raiseWidget( dlg ); 418 m_widgetStack.raiseWidget( dlg );
422} 419}
423*/ 420}
424 421
425void MainWindow::slotApply() 422void MainWindow::slotApply()
426{ 423{
427 QStringList *removeList = 0x0; 424 QStringList *removeList = 0x0;
428 QStringList *installList = 0x0; 425 QStringList *installList = 0x0;
429 QStringList *upgradeList = 0x0; 426 QStringList *upgradeList = 0x0;
@@ -523,12 +520,17 @@ void MainWindow::slotCloseInstallDlg()
523{ 520{
524 // Close install dialog 521 // Close install dialog
525 delete m_widgetStack.visibleWidget(); 522 delete m_widgetStack.visibleWidget();
526 523
527 // Reload package list 524 // Reload package list
528 initPackageInfo(); 525 initPackageInfo();
526
527 // Update Opie launcher links
528 QCopEnvelope e("QPE/System", "linkChanged(QString)");
529 QString lf = QString::null;
530 e << lf;
529} 531}
530 532
531void MainWindow::slotConfigure() 533void MainWindow::slotConfigure()
532{ 534{
533 if ( m_packman.configureDlg( false ) ) 535 if ( m_packman.configureDlg( false ) )
534 { 536 {
diff --git a/noncore/settings/packagemanager/mainwindow.h b/noncore/settings/packagemanager/mainwindow.h
index 49bb66c..285cddf 100644
--- a/noncore/settings/packagemanager/mainwindow.h
+++ b/noncore/settings/packagemanager/mainwindow.h
@@ -111,13 +111,13 @@ private slots:
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 slotCloseInstallDlg();
120 void slotConfigure(); 120 void slotConfigure();
121 121
122 // View menu action slots 122 // View menu action slots
123 void slotShowNotInstalled(); 123 void slotShowNotInstalled();
diff --git a/noncore/settings/packagemanager/oipkg.cpp b/noncore/settings/packagemanager/oipkg.cpp
index eeb0131..ed9ea10 100644
--- a/noncore/settings/packagemanager/oipkg.cpp
+++ b/noncore/settings/packagemanager/oipkg.cpp
@@ -324,14 +324,19 @@ bool OIpkg::executeCommand( OPackage::Command command, QStringList *parameters,
324 for ( QStringList::Iterator it = parameters->begin(); it != parameters->end(); ++it ) 324 for ( QStringList::Iterator it = parameters->begin(); it != parameters->end(); ++it )
325 { 325 {
326 ipkg_packages_remove( &m_ipkgArgs, (*it), true ); 326 ipkg_packages_remove( &m_ipkgArgs, (*it), true );
327 } 327 }
328 }; 328 };
329 break; 329 break;
330 //case OPackage::Download : ; 330 case OPackage::Download : {
331 // break; 331 for ( QStringList::Iterator it = parameters->begin(); it != parameters->end(); ++it )
332 {
333 ipkg_packages_download( &m_ipkgArgs, (*it) );
334 }
335 };
336 break;
332 default : break; 337 default : break;
333 }; 338 };
334 339
335 return true; 340 return true;
336} 341}
337 342
diff --git a/noncore/settings/packagemanager/packagemanager.pro b/noncore/settings/packagemanager/packagemanager.pro
index 55af13e..9a64322 100644
--- a/noncore/settings/packagemanager/packagemanager.pro
+++ b/noncore/settings/packagemanager/packagemanager.pro
@@ -10,23 +10,25 @@ SOURCES = opackage.cpp \
10 opackagemanager.cpp \ 10 opackagemanager.cpp \
11 mainwindow.cpp \ 11 mainwindow.cpp \
12 installdlg.cpp \ 12 installdlg.cpp \
13 packageinfodlg.cpp \ 13 packageinfodlg.cpp \
14 filterdlg.cpp \ 14 filterdlg.cpp \
15 promptdlg.cpp \ 15 promptdlg.cpp \
16 entrydlg.cpp \
16 main.cpp 17 main.cpp
17HEADERS = opackage.h \ 18HEADERS = opackage.h \
18 oconfitem.h \ 19 oconfitem.h \
19 oipkg.h \ 20 oipkg.h \
20 oipkgconfigdlg.h \ 21 oipkgconfigdlg.h \
21 opackagemanager.h \ 22 opackagemanager.h \
22 mainwindow.h \ 23 mainwindow.h \
23 installdlg.h \ 24 installdlg.h \
24 packageinfodlg.h \ 25 packageinfodlg.h \
25 filterdlg.h \ 26 filterdlg.h \
26 promptdlg.h 27 promptdlg.h \
28 entrydlg.h
27 29
28DEFINES += IPKG_LIB 30DEFINES += IPKG_LIB
29DEFINES += HAVE_MKDTEMP 31DEFINES += HAVE_MKDTEMP
30TARGET = packagemanager 32TARGET = packagemanager
31INCLUDEPATH += $(OPIEDIR)/include $(IPKGDIR) 33INCLUDEPATH += $(OPIEDIR)/include $(IPKGDIR)
32DEPENDPATH += $(OPIEDIR)/include 34DEPENDPATH += $(OPIEDIR)/include
diff --git a/noncore/settings/packagemanager/promptdlg.cpp b/noncore/settings/packagemanager/promptdlg.cpp
index 3122699..bb27190 100644
--- a/noncore/settings/packagemanager/promptdlg.cpp
+++ b/noncore/settings/packagemanager/promptdlg.cpp
@@ -42,13 +42,13 @@ PromptDlg::PromptDlg( const QString &caption, const QString &text, const QString
42 , m_btnClicked( -1 ) 42 , m_btnClicked( -1 )
43{ 43{
44 setCaption( caption ); 44 setCaption( caption );
45 45
46 QGridLayout *layout = new QGridLayout( this, 2, 2, 4, 2 ); 46 QGridLayout *layout = new QGridLayout( this, 2, 2, 4, 2 );
47 QLabel *label = new QLabel( text, this ); 47 QLabel *label = new QLabel( text, this );
48 label->setAlignment( AlignCenter | WordBreak ); 48 label->setAlignment( AlignCenter | AlignTop | WordBreak );
49 layout->addMultiCellWidget( label, 0, 0, 0, 1 ); 49 layout->addMultiCellWidget( label, 0, 0, 0, 1 );
50 50
51 QPushButton *btn = new QPushButton( btn1, this ); 51 QPushButton *btn = new QPushButton( btn1, this );
52 layout->addWidget( btn, 1, 0 ); 52 layout->addWidget( btn, 1, 0 );
53 connect( btn, SIGNAL(clicked()), this, SLOT(slotBtn1Clicked()) ); 53 connect( btn, SIGNAL(clicked()), this, SLOT(slotBtn1Clicked()) );
54 54