summaryrefslogtreecommitdiff
authortille <tille>2002-04-27 21:02:53 (UTC)
committer tille <tille>2002-04-27 21:02:53 (UTC)
commit69e271e44d23befc74a96a98708ddb6ec754a4b6 (patch) (unidiff)
tree6f8300d8858d2c7659eb90066b58b302a2863e43
parentacdc33336307e48ac7089b146006fe7b36e321a5 (diff)
downloadopie-69e271e44d23befc74a96a98708ddb6ec754a4b6.zip
opie-69e271e44d23befc74a96a98708ddb6ec754a4b6.tar.gz
opie-69e271e44d23befc74a96a98708ddb6ec754a4b6.tar.bz2
setDocument working and some changes in install gui
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/unsupported/oipkg/TODO3
-rw-r--r--noncore/unsupported/oipkg/debug.h2
-rw-r--r--noncore/unsupported/oipkg/mainwindow.cpp145
-rw-r--r--noncore/unsupported/oipkg/mainwindow.h22
-rw-r--r--noncore/unsupported/oipkg/oipkg.pro5
-rw-r--r--noncore/unsupported/oipkg/package.cpp56
-rw-r--r--noncore/unsupported/oipkg/package.h4
-rw-r--r--noncore/unsupported/oipkg/packagelistview.cpp91
-rw-r--r--noncore/unsupported/oipkg/packagelistview.h53
-rw-r--r--noncore/unsupported/oipkg/pmipkg.cpp134
-rw-r--r--noncore/unsupported/oipkg/pmipkg.h2
-rw-r--r--noncore/unsupported/oipkg/runwindow.ui32
12 files changed, 340 insertions, 209 deletions
diff --git a/noncore/unsupported/oipkg/TODO b/noncore/unsupported/oipkg/TODO
index b07542a..3fc84e5 100644
--- a/noncore/unsupported/oipkg/TODO
+++ b/noncore/unsupported/oipkg/TODO
@@ -6,5 +6,6 @@
6* install local file 6* install local file
7* qcop 7* qcop
8* error handling 8* error handling
9* manage links 9* manage links
10* dependency checking \ No newline at end of file 10* dependency checking
11* ipkg options in runwindow \ No newline at end of file
diff --git a/noncore/unsupported/oipkg/debug.h b/noncore/unsupported/oipkg/debug.h
index e73b9b2..973d96c 100644
--- a/noncore/unsupported/oipkg/debug.h
+++ b/noncore/unsupported/oipkg/debug.h
@@ -14,8 +14,8 @@ if ( debugLevel < 3 ) \
14{ \ 14{ \
15 if ( I <= debugLevel ) qDebug(S);\ 15 if ( I <= debugLevel ) qDebug(S);\
16}else{\ 16}else{\
17 if ( I <= debugLevel ) \ 17 if ( I <= debugLevel ) \
18 printf("# %s \t\t(Level: %i)\n",QString(S).latin1(),I);\ 18 qDebug("# %s \t\t(Level: %i)\n",QString(S).latin1(),I);\
19} 19}
20 20
21#endif \ No newline at end of file 21#endif \ No newline at end of file
diff --git a/noncore/unsupported/oipkg/mainwindow.cpp b/noncore/unsupported/oipkg/mainwindow.cpp
index e3abf36..6bf9a7a 100644
--- a/noncore/unsupported/oipkg/mainwindow.cpp
+++ b/noncore/unsupported/oipkg/mainwindow.cpp
@@ -13,8 +13,9 @@
13#include <qpopupmenu.h> 13#include <qpopupmenu.h>
14#include <qtoolbutton.h> 14#include <qtoolbutton.h>
15#include <qstring.h> 15#include <qstring.h>
16#include <qlabel.h> 16#include <qlabel.h>
17#include <qfile.h>
17#include <qlistview.h> 18#include <qlistview.h>
18#include <qtextview.h> 19#include <qtextview.h>
19#include <qlineedit.h> 20#include <qlineedit.h>
20#include <qtabwidget.h> 21#include <qtabwidget.h>
@@ -26,50 +27,25 @@
26 27
27MainWindow::MainWindow( QWidget *parent, const char *name, WFlags f = 0 ) : 28MainWindow::MainWindow( QWidget *parent, const char *name, WFlags f = 0 ) :
28 QMainWindow( parent, name, f ) 29 QMainWindow( parent, name, f )
29 { 30 {
30 setCaption( tr("Package Manager") ); 31 settings = new PackageManagerSettings(this,0,TRUE);
32 listViewPackages = new PackageListView( this,"listViewPackages",settings );
33 ipkg = new PmIpkg( settings, this );
31 34
32 listViewPackages = new QListView( this,0,0 );
33 listViewPackages->setSelectionMode(QListView::NoSelection);
34 setCentralWidget( listViewPackages ); 35 setCentralWidget( listViewPackages );
36 setCaption( tr("Package Manager") );
35 37
36 channel = new QCopChannel( "QPE/Application/oipkg", this ); 38 channel = new QCopChannel( "QPE/Application/oipkg", this );
37 connect( channel, SIGNAL(received(const QCString&, const QByteArray&)), 39 connect( channel, SIGNAL(received(const QCString&, const QByteArray&)),
38 this, SLOT(receive(const QCString&, const QByteArray&)) ); 40 this, SLOT(receive(const QCString&, const QByteArray&)) );
39 41
40 makeMenu(); 42 makeMenu();
41#ifdef NEWLAYOUT 43
42 listViewPackages->addColumn( tr("Package") );
43 listViewPackages->setRootIsDecorated( true );
44#endif
45#ifndef NEWLAYOUT
46 QFontMetrics fm = fontMetrics();
47 int wlw = width()*2;
48 int w0 = fm.width(tr("Package"))+30;
49 // int w0 = fm.width(tr("Package"))+30;
50 int w2 = fm.width("00000")+4;
51 int w1 = wlw-w2-w0-24;
52 listViewPackages->addColumn( tr("Package"), w0 );
53 listViewPackages->addColumn( tr("Description"), w1 );
54 listViewPackages->addColumn( tr("Size"), w2 );
55 listViewPackages->setColumnWidthMode(0,QListView::Manual);
56 listViewPackages->setColumnWidthMode(1,QListView::Manual);
57 listViewPackages->setColumnWidthMode(2,QListView::Manual);
58 listViewPackages->setSelectionMode( QListView::Multi );
59#endif
60 connect( section, SIGNAL( activated(int) ), 44 connect( section, SIGNAL( activated(int) ),
61 this, SLOT( sectionChanged() ) ); 45 this, SLOT( sectionChanged() ) );
62 connect( subsection, SIGNAL(activated(int) ), 46 connect( subsection, SIGNAL(activated(int) ),
63 this, SLOT( subSectionChanged() ) ); 47 this, SLOT( subSectionChanged() ) );
64 connect( listViewPackages, SIGNAL( pressed( QListViewItem* ) ),
65 this, SLOT( setCurrent( QListViewItem* ) ) );
66 connect( listViewPackages, SIGNAL( clicked( QListViewItem* ) ),
67 this, SLOT( stopTimer( QListViewItem* ) ) );
68
69 popupMenu = new QPopupMenu( this );
70
71 settings = new PackageManagerSettings(this,0,TRUE);
72 48
73 ipkg = new PmIpkg( settings, this ); 49 ipkg = new PmIpkg( settings, this );
74 packageList.setSettings( settings ); 50 packageList.setSettings( settings );
75 getList(); 51 getList();
@@ -87,13 +63,8 @@ void MainWindow::makeMenu()
87 QPopupMenu *viewMenu = new QPopupMenu( menuBar ); 63 QPopupMenu *viewMenu = new QPopupMenu( menuBar );
88 QPopupMenu *cfgMenu = new QPopupMenu( menuBar ); 64 QPopupMenu *cfgMenu = new QPopupMenu( menuBar );
89 // QPopupMenu *sectMenu = new QPopupMenu( menuBar ); 65 // QPopupMenu *sectMenu = new QPopupMenu( menuBar );
90 66
91 popupMenu = new QPopupMenu( this );
92 destsMenu = new QPopupMenu( popupMenu );
93 popupTimer = new QTimer( this );
94 connect( popupTimer, SIGNAL(timeout()), this, SLOT(showPopup()) );
95
96 setToolBarsMovable( false ); 67 setToolBarsMovable( false );
97 toolBar->setHorizontalStretchable( true ); 68 toolBar->setHorizontalStretchable( true );
98 menuBar->insertItem( tr( "Package" ), srvMenu ); 69 menuBar->insertItem( tr( "Package" ), srvMenu );
99 menuBar->insertItem( tr( "View" ), viewMenu ); 70 menuBar->insertItem( tr( "View" ), viewMenu );
@@ -122,15 +93,16 @@ void MainWindow::makeMenu()
122 this , SLOT( updateList() ) ); 93 this , SLOT( updateList() ) );
123 updateAction->addTo( toolBar ); 94 updateAction->addTo( toolBar );
124 updateAction->addTo( srvMenu ); 95 updateAction->addTo( srvMenu );
125 96
126 detailsAction = new QAction( tr( "Details" ), 97// would we use for find
127 Resource::loadIconSet( "find" ), 98// detailsAction = new QAction( tr( "Details" ),
128 QString::null, 0, this, 0 ); 99 // Resource::loadIconSet( "find" ),
129 connect( detailsAction, SIGNAL( activated() ), 100 // QString::null, 0, this, 0 );
130 this , SLOT( showDetails() ) ); 101// connect( detailsAction, SIGNAL( activated() ),
131 detailsAction->addTo( toolBar ); 102// this , SLOT( showDetails() ) );
132 detailsAction->addTo( srvMenu ); 103// detailsAction->addTo( toolBar );
104// detailsAction->addTo( srvMenu );
133 105
134 QAction *cfgact; 106 QAction *cfgact;
135 107
136 cfgact = new QAction( tr( "Setups" ), 108 cfgact = new QAction( tr( "Setups" ),
@@ -315,47 +287,8 @@ void MainWindow::showSettingsDst()
315 if ( settings->showDialog( 2 ) ) 287 if ( settings->showDialog( 2 ) )
316 updateList(); 288 updateList();
317} 289}
318 290
319
320void MainWindow::showDetails()
321{
322 if ( details )
323 {
324 details = new PackageDetails( this );
325 connect( details->install, SIGNAL(clicked()), SLOT( toggleActivePackage() ) );
326 connect( details->remove, SIGNAL(clicked()), SLOT( toggleActivePackage() ) );
327 connect( details->ignore, SIGNAL(clicked()), details, SLOT(close()));
328 details->description->setTextFormat(RichText);
329 }
330 if ( !activePackage )
331 {
332 details->description->setText(tr("no package selected"));
333 details->description->setText(tr("errmm...<br>...not working?"));
334 }else{
335 details->setCaption("Package: " + activePackage->name());
336 details->description->setText(activePackage->details() );
337 details->install->setEnabled(!activePackage->installed());
338 details->remove->setEnabled(activePackage->installed());
339 }
340 details->showMaximized();
341}
342
343void MainWindow::toggleActivePackage()
344{
345 activePackage->toggleProcess();
346 if ( details ) details->close();
347}
348
349void MainWindow::setCurrent( QListViewItem* p )
350{
351 if ( !p ) return;
352 activePackageListItem = (PackageListItem*)p;
353 activePackage = activePackageListItem->getPackage();
354 pvDebug(5, "start timer");
355 popupTimer->start( 750, true );
356}
357
358void MainWindow::sectionShow(bool b) 291void MainWindow::sectionShow(bool b)
359{ 292{
360 if (b) sectionBar->show(); 293 if (b) sectionBar->show();
361 else sectionBar->hide(); 294 else sectionBar->hide();
@@ -388,49 +321,37 @@ void MainWindow::rotateUpdateIcon()
388 updateAction->setIconSet( Resource::loadIconSet( "oipkg/update2" ) ); 321 updateAction->setIconSet( Resource::loadIconSet( "oipkg/update2" ) );
389 updateIcon = !updateIcon; 322 updateIcon = !updateIcon;
390} 323}
391 324
392void MainWindow::showPopup()
393{
394 popupMenu->clear();
395 destsMenu->clear();
396
397 QAction *popupAction;
398 popupMenu->insertItem( tr("Install to"), destsMenu );
399 QStringList dests = settings->getDestinationNames();
400 for (uint i = 0; i < dests.count(); i++ )
401 {
402 popupAction = new QAction( dests[i], QString::null, 0, this, 0 );
403 popupAction->addTo( destsMenu );
404 }
405 connect( destsMenu, SIGNAL( activated( int ) ),
406 this, SLOT( changePackageDest( int ) ) );
407 popupMenu->popup( QCursor::pos() );
408}
409
410void MainWindow::changePackageDest( int i )
411{
412 activePackage->setDest( destsMenu->text(i) );
413 activePackage->setOn();
414 activePackage->setLink( settings->createLinks() );
415 activePackageListItem->displayDetails();
416}
417 325
418void MainWindow::stopTimer( QListViewItem* ) 326void MainWindow::setDocument(const QString &fileName)
419{ 327{
420 pvDebug( 5, "stop timer" ); 328 installFile(fileName);
421 popupTimer->stop(); 329 // ##### If we looked in the list of files, we could send out accurate
330 // ##### messages. But we don't bother yet, and just do an "all".
331 QCopEnvelope e("QPE/System", "linkChanged(QString)");
332 QString lf = QString::null;
333 e << lf;
334 displayList();
422} 335}
423 336
424void MainWindow::setDocument(const QString &fileName) 337void MainWindow::installFile(const QString &fileName)
425{ 338{
339 pvDebug(3, "MainWindow::installFile "+fileName);
340 if ( !QFile::exists( fileName ) ) return;
426 ipkg->installFile( fileName ); 341 ipkg->installFile( fileName );
342 // ##### If we looked in the list of files, we could send out accurate
343 // ##### messages. But we don't bother yet, and just do an "all".
344 QCopEnvelope e("QPE/System", "linkChanged(QString)");
345 QString lf = QString::null;
346 e << lf;
347 displayList();
427} 348}
428 349
429void MainWindow::receive(const QCString &msg, const QByteArray &arg) 350void MainWindow::receive(const QCString &msg, const QByteArray &arg)
430{ 351{
431 pvDebug(3, "QCop "+msg); 352 pvDebug(3, "QCop "+msg);
432 if ( msg == "setDocument(QString)" ) 353 if ( msg == "installFile(QString)" )
433 { 354 {
434 setDocument( QString(arg) ); 355 installFile( QString(arg) );
435 } 356 }
436} \ No newline at end of file 357} \ No newline at end of file
diff --git a/noncore/unsupported/oipkg/mainwindow.h b/noncore/unsupported/oipkg/mainwindow.h
index 34943f2..bcb0cc9 100644
--- a/noncore/unsupported/oipkg/mainwindow.h
+++ b/noncore/unsupported/oipkg/mainwindow.h
@@ -8,14 +8,13 @@
8 8
9#include "packagelist.h" 9#include "packagelist.h"
10#include "pmipkg.h" 10#include "pmipkg.h"
11#include "pksettings.h" 11#include "pksettings.h"
12#include "pkdesc.h" 12#include "packagelistview.h"
13 13
14class QComboBox; 14class QComboBox;
15class QPEToolBar; 15class QPEToolBar;
16class QLineEdit; 16class QLineEdit;
17class QListView;
18class PackageListItem; 17class PackageListItem;
19class QCopChannel; 18class QCopChannel;
20 19
21class MainWindow : public QMainWindow 20class MainWindow : public QMainWindow
@@ -38,50 +37,39 @@ protected slots:
38 void sectionChanged(); 37 void sectionChanged();
39 void showSettings(); 38 void showSettings();
40 void showSettingsSrv(); 39 void showSettingsSrv();
41 void showSettingsDst(); 40 void showSettingsDst();
42 void setDocument (const QString &);
43 41
44public slots: 42public slots:
45 void showDetails();
46 void toggleActivePackage();
47 void setCurrent( QListViewItem* );
48 void sectionClose(); 43 void sectionClose();
49 void sectionShow(bool); 44 void sectionShow(bool);
50 void findClose(); 45 void findClose();
51 void findShow(bool); 46 void findShow(bool);
52 void filterList(); 47 void filterList();
53 void showPopup();
54 void changePackageDest( int );
55 void stopTimer( QListViewItem* );
56 void receive (const QCString &, const QByteArray &); 48 void receive (const QCString &, const QByteArray &);
49 void setDocument (const QString &);
57 50
58private: 51private:
59 void makeMenu(); 52 void makeMenu();
60 void setSections(); 53 void setSections();
61 void setSubSections(); 54 void setSubSections();
55 void installFile(const QString &);
56 bool updateIcon;
62 57
63 PmIpkg* ipkg; 58 PmIpkg* ipkg;
64 PackageManagerSettings *settings; 59 PackageManagerSettings *settings;
65 PackageDetails* details;
66 PackageList packageList; 60 PackageList packageList;
67 Package *activePackage;
68 PackageListItem *activePackageListItem;
69 QAction *runAction; 61 QAction *runAction;
70 QAction *detailsAction; 62 QAction *detailsAction;
71 QAction *updateAction; 63 QAction *updateAction;
72 QAction *findAction; 64 QAction *findAction;
73 QAction *sectionAction; 65 QAction *sectionAction;
74 QListView *listViewPackages; 66 PackageListView *listViewPackages;
75 QPEToolBar *findBar; 67 QPEToolBar *findBar;
76 QLineEdit *findEdit; 68 QLineEdit *findEdit;
77 QPEToolBar *sectionBar; 69 QPEToolBar *sectionBar;
78 QComboBox *section; 70 QComboBox *section;
79 QComboBox *subsection; 71 QComboBox *subsection;
80 QTimer *popupTimer;
81 QPopupMenu *popupMenu;
82 QPopupMenu *destsMenu;
83 bool updateIcon;
84private slots: 72private slots:
85 void rotateUpdateIcon(); 73 void rotateUpdateIcon();
86}; 74};
87 75
diff --git a/noncore/unsupported/oipkg/oipkg.pro b/noncore/unsupported/oipkg/oipkg.pro
index 955c7f3..1f7a70d 100644
--- a/noncore/unsupported/oipkg/oipkg.pro
+++ b/noncore/unsupported/oipkg/oipkg.pro
@@ -6,20 +6,21 @@ HEADERS = mainwindow.h \
6 pksettings.h \ 6 pksettings.h \
7 pmipkg.h \ 7 pmipkg.h \
8 packagelistitem.h \ 8 packagelistitem.h \
9 packagelist.h \ 9 packagelist.h \
10 packagelistview.h \
10 package.h 11 package.h
11 SOURCES = main.cpp \ 12 SOURCES = main.cpp \
12 mainwindow.cpp \ 13 mainwindow.cpp \
14 packagelistview.cpp \
13 pksettings.cpp \ 15 pksettings.cpp \
14 pmipkg.cpp \ 16 pmipkg.cpp \
15 packagelistitem.cpp \ 17 packagelistitem.cpp \
16 packagelist.cpp \ 18 packagelist.cpp \
17 package.cpp 19 package.cpp
18INCLUDEPATH += $(OPIEDIR)/include 20INCLUDEPATH += $(OPIEDIR)/include
19 DEPENDPATH+= $(OPIEDIR)/ioclude 21 DEPENDPATH+= $(OPIEDIR)/ioclude
20LIBS += -lqpe 22LIBS += -lqpe
21 INTERFACES= pkdesc.ui \ 23 INTERFACES= runwindow.ui \
22 runwindow.ui \
23 pksettingsbase.ui 24 pksettingsbase.ui
24 TARGET = oipkg 25 TARGET = oipkg
25 26
diff --git a/noncore/unsupported/oipkg/package.cpp b/noncore/unsupported/oipkg/package.cpp
index 9f602b5..5f0e5fa 100644
--- a/noncore/unsupported/oipkg/package.cpp
+++ b/noncore/unsupported/oipkg/package.cpp
@@ -1,8 +1,12 @@
1#include "package.h" 1#include "package.h"
2 2
3#include <qpe/process.h> 3#include <qpe/process.h>
4#include <qpe/stringutil.h> 4#include <qpe/stringutil.h>
5#include <qfile.h>
6#include <qtextstream.h>
7#include <stdlib.h>
8#include <unistd.h>
5 9
6#include "debug.h" 10#include "debug.h"
7 11
8Package::~Package() 12Package::~Package()
@@ -24,30 +28,35 @@ void Package::init( PackageManagerSettings *s )
24 _desc = ""; 28 _desc = "";
25 _name = ""; 29 _name = "";
26 _toProcess = false; 30 _toProcess = false;
27 _status = ""; 31 _status = "";
28 _dest = ""; 32 _dest = settings->getDestinationName();
33 _link = settings->createLinks();
29} 34}
30 35
31Package::Package( QStringList pack, PackageManagerSettings *s ) 36Package::Package( QStringList pack, PackageManagerSettings *s )
32 { 37 {
33 init(s); 38 init(s);
34 parsePackage( pack ); 39 parsePackage( pack );
35 _toProcess = false;
36} 40}
37 41
38Package::Package( QString n, PackageManagerSettings *s ) 42Package::Package( QString n, PackageManagerSettings *s )
39 { 43 {
40 init(s); 44 init(s);
41 _name = QString( n ); 45 if ( !QFile::exists( n ) )
42 _toProcess = false; 46 {
47 _name = QString( n );
48 }else{
49 parseIpkgFile( n );
50 _toProcess = true;
51 _packageName = QString( n );
52 }
43} 53}
44 54
45Package::Package( Package *pi ) 55Package::Package( Package *pi )
46{ 56{
47 init(pi->settings); 57 init(pi->settings);
48 copyValues( pi ); 58 copyValues( pi );
49 _toProcess = false;
50} 59}
51 60
52 61
53void Package::setValue( QString n, QString t ) 62void Package::setValue( QString n, QString t )
@@ -210,14 +219,14 @@ void Package::parsePackage( QStringList pack )
210 { 219 {
211 QString line = pack[i]; 220 QString line = pack[i];
212 int sep = line.find( QRegExp(":[\t ]+") ); 221 int sep = line.find( QRegExp(":[\t ]+") );
213 if ( sep >= 0 ) 222 if ( sep >= 0 )
214 { 223 {
215 QString tag = line.left(sep); 224 QString tag = line.left(sep);
216 QString value = line.mid(sep+2).simplifyWhiteSpace(); 225 QString value = line.mid(sep+2).simplifyWhiteSpace();
217 setValue( tag, value ); 226 setValue( tag, value );
218 }else{ 227 }else{
219 } 228 }
220 } 229 }
221 return; 230 return;
222} 231}
223 232
@@ -294,4 +303,29 @@ bool Package::link()
294void Package::setLink(bool b) 303void Package::setLink(bool b)
295{ 304{
296 _link = b; 305 _link = b;
297} 306}
307
308void Package::parseIpkgFile( QString file)
309{
310 system("tar xzf "+file+" -C /tmp");
311 system("tar xzf /tmp/control.tar.gz -C /tmp");
312 QFile f("/tmp/control");
313 if ( f.open(IO_ReadOnly) )
314 {
315 QTextStream t( &f );
316 QStringList pack;
317 while ( !t.eof() )
318 {
319 pack << t.readLine();
320 }
321 f.close();
322 parsePackage( pack );
323 }
324
325}
326
327QString Package::getPackageName()
328{
329 if ( _packageName.isEmpty() ) return _name;
330 else return _packageName;
331}
diff --git a/noncore/unsupported/oipkg/package.h b/noncore/unsupported/oipkg/package.h
index 6c292ed..31b0010 100644
--- a/noncore/unsupported/oipkg/package.h
+++ b/noncore/unsupported/oipkg/package.h
@@ -42,13 +42,17 @@ class Package //: public QObject
42 void setDest( QString d ); 42 void setDest( QString d );
43 void setOn(); 43 void setOn();
44 bool link(); 44 bool link();
45 void setLink(bool); 45 void setLink(bool);
46 void parseIpkgFile( QString );;
46public slots: 47public slots:
48 /** No descriptions */
49 QString getPackageName();
47 void toggleProcess(); 50 void toggleProcess();
48 51
49private: 52private:
50 PackageManagerSettings *settings; 53 PackageManagerSettings *settings;
54 QString _packageName;
51 QString _name; 55 QString _name;
52 bool _toProcess; 56 bool _toProcess;
53 bool _link; 57 bool _link;
54 QString _status; 58 QString _status;
diff --git a/noncore/unsupported/oipkg/packagelistview.cpp b/noncore/unsupported/oipkg/packagelistview.cpp
new file mode 100644
index 0000000..693ea6a
--- a/dev/null
+++ b/noncore/unsupported/oipkg/packagelistview.cpp
@@ -0,0 +1,91 @@
1/***************************************************************************
2 packagelistview.cpp - description
3 -------------------
4 begin : Sat Apr 27 2002
5 copyright : (C) 2002 by tille
6 email : tille@handhelds.org
7 ***************************************************************************/
8
9/***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17
18#include "packagelistview.h"
19
20#include <qpopupmenu.h>
21#include <qaction.h>
22
23#include "packagelistitem.h"
24#include "pksettings.h"
25
26PackageListView::PackageListView(QWidget *p, const char* n, PackageManagerSettings *s)
27 : QListView(p,n)
28{
29 settings = s;
30 popupMenu = new QPopupMenu( this );
31 destsMenu = new QPopupMenu( popupMenu );
32 popupTimer = new QTimer( this );
33 setSelectionMode(QListView::NoSelection);
34 addColumn( tr("Package") );
35 setRootIsDecorated( true );
36
37 connect( popupTimer, SIGNAL(timeout()),
38 this, SLOT(showPopup()) );
39 connect( this, SIGNAL( pressed( QListViewItem* ) ),
40 this, SLOT( setCurrent( QListViewItem* ) ) );
41 connect( this, SIGNAL( clicked( QListViewItem* ) ),
42 this, SLOT( stopTimer( QListViewItem* ) ) );
43
44}
45
46//PackageListView::~PackageListView()
47//{
48//}
49
50void PackageListView::setCurrent( QListViewItem* p )
51{
52 if ( !p ) return;
53 activePackageListItem = (PackageListItem*)p;
54 activePackage = activePackageListItem->getPackage();
55 pvDebug(5, "start timer");
56 popupTimer->start( 750, true );
57}
58
59
60void PackageListView::showPopup()
61{
62 popupMenu->clear();
63 destsMenu->clear();
64
65 QAction *popupAction;
66 popupMenu->insertItem( QObject::tr("Install to"), destsMenu );
67 QStringList dests = settings->getDestinationNames();
68 for (uint i = 0; i < dests.count(); i++ )
69 {
70 popupAction = new QAction( dests[i], QString::null, 0, this, 0 );
71 popupAction->addTo( destsMenu );
72 }
73 connect( destsMenu, SIGNAL( activated( int ) ),
74 this, SLOT( changePackageDest( int ) ) );
75 popupMenu->popup( QCursor::pos() );
76}
77
78void PackageListView::stopTimer( QListViewItem* )
79{
80 pvDebug( 5, "stop timer" );
81 popupTimer->stop();
82}
83
84
85void PackageListView::changePackageDest( int i )
86{
87 activePackage->setDest( destsMenu->text(i) );
88 activePackage->setOn();
89 activePackage->setLink( settings->createLinks() );
90 activePackageListItem->displayDetails();
91}
diff --git a/noncore/unsupported/oipkg/packagelistview.h b/noncore/unsupported/oipkg/packagelistview.h
new file mode 100644
index 0000000..15e200b
--- a/dev/null
+++ b/noncore/unsupported/oipkg/packagelistview.h
@@ -0,0 +1,53 @@
1/***************************************************************************
2 packagelistview.h - description
3 -------------------
4 begin : Sat Apr 27 2002
5 copyright : (C) 2002 by tille
6 email : tille@handhelds.org
7 ***************************************************************************/
8
9/***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17
18#ifndef PACKAGELISTVIEW_H
19#define PACKAGELISTVIEW_H
20
21#include <qlistview.h>
22#include <qaction.h>
23#include <qtimer.h>
24#include <qwidget.h>
25#include <qpopupmenu.h>
26#include "debug.h"
27
28class PackageListItem;
29class Package;
30class PackageManagerSettings;
31
32class PackageListView : public QListView
33{
34 Q_OBJECT
35
36public:
37 PackageListView(QWidget*, const char*, PackageManagerSettings*);
38 //~PackageListView();
39 QTimer *popupTimer;
40private:
41 PackageManagerSettings *settings;
42 Package *activePackage;
43 PackageListItem *activePackageListItem;
44 QPopupMenu *popupMenu;
45 QPopupMenu *destsMenu;
46public slots:
47 void showPopup();
48 void changePackageDest( int );
49 void setCurrent( QListViewItem* );
50 void stopTimer( QListViewItem* );
51};
52
53#endif
diff --git a/noncore/unsupported/oipkg/pmipkg.cpp b/noncore/unsupported/oipkg/pmipkg.cpp
index 45c89c5..f0992f5 100644
--- a/noncore/unsupported/oipkg/pmipkg.cpp
+++ b/noncore/unsupported/oipkg/pmipkg.cpp
@@ -1,6 +1,5 @@
1#include "pmipkg.h" 1#include "pmipkg.h"
2#include "pkdesc.h"
3#include "pksettings.h" 2#include "pksettings.h"
4#include "package.h" 3#include "package.h"
5#include "packagelistitem.h" 4#include "packagelistitem.h"
6 5
@@ -11,8 +10,9 @@
11#include <qdir.h> 10#include <qdir.h>
12#include <qfile.h> 11#include <qfile.h>
13#include <qmultilineedit.h> 12#include <qmultilineedit.h>
14#include <qstring.h> 13#include <qstring.h>
14#include <qcheckbox.h>
15#include <qtextstream.h> 15#include <qtextstream.h>
16#include <qtextview.h> 16#include <qtextview.h>
17 17
18#include <qprogressbar.h> 18#include <qprogressbar.h>
@@ -56,8 +56,11 @@ int PmIpkg::runIpkg(const QString& args, const QString& dest )
56 cmd += " -dest "+ dest; 56 cmd += " -dest "+ dest;
57 57
58 cmd += " -force-defaults "; 58 cmd += " -force-defaults ";
59 59
60// if (runwindow->forcedepends->isChecked())
61 // cmd += " -force-depends ";
62
60 out( "<hr><br>Starting to "+ args+"<br>\n"); 63 out( "<hr><br>Starting to "+ args+"<br>\n");
61 cmd += args; 64 cmd += args;
62 int r = 0; 65 int r = 0;
63#ifdef PROC 66#ifdef PROC
@@ -70,9 +73,9 @@ int PmIpkg::runIpkg(const QString& args, const QString& dest )
70#endif 73#endif
71#ifdef SYSTEM 74#ifdef SYSTEM
72 out( "running:<br>\n"+cmd+"<br>\n" ); 75 out( "running:<br>\n"+cmd+"<br>\n" );
73 QString redirect = "/tmp/oipkg.pipe"; 76 QString redirect = "/tmp/oipkg.pipe";
74 cmd += " | tee "+redirect+" 2>&1"; 77 cmd += " 2>&1 | tee "+redirect+" 2>&1";
75 pvDebug(2, "running >"+cmd+"<"); 78 pvDebug(2, "running >"+cmd+"<");
76 r = system(cmd.latin1()); 79 r = system(cmd.latin1());
77 QFile f( redirect ); 80 QFile f( redirect );
78 QString line; 81 QString line;
@@ -102,10 +105,8 @@ void PmIpkg::makeLinks(Package *pack)
102{ 105{
103 pvDebug( 2, "PmIpkg::makeLinks "+ pack->name()); 106 pvDebug( 2, "PmIpkg::makeLinks "+ pack->name());
104 QString dest = settings->getDestinationUrlByName( pack->dest() ); 107 QString dest = settings->getDestinationUrlByName( pack->dest() );
105 if (dest == "/" ) return; 108 if (dest == "/" ) return;
106 out( "<br>creating links<br>" );
107 out("for package "+pack->name()+" in "+dest+"<br>");
108 { 109 {
109 Config cfg( "oipkg", Config::User ); 110 Config cfg( "oipkg", Config::User );
110 cfg.setGroup( "Common" ); 111 cfg.setGroup( "Common" );
111 QString statusDir = cfg.readEntry( "statusDir", "" ); 112 QString statusDir = cfg.readEntry( "statusDir", "" );
@@ -121,8 +122,10 @@ void PmIpkg::linkPackage( QString packFileName, QString dest )
121 { 122 {
122 out( "<b>Panik!</b> Could not open:<br>"+packFileName ); 123 out( "<b>Panik!</b> Could not open:<br>"+packFileName );
123 return; 124 return;
124 }; 125 };
126 out( "<br>creating links<br>" );
127 out("for package "+packFileName+" in "+dest+"<br>");
125 QTextStream t( &f ); 128 QTextStream t( &f );
126 QString fp; 129 QString fp;
127 while ( !t.eof() ) 130 while ( !t.eof() )
128 { 131 {
@@ -133,8 +136,9 @@ void PmIpkg::linkPackage( QString packFileName, QString dest )
133} 136}
134 137
135void PmIpkg::processLinkDir( QString file, QString dest ) 138void PmIpkg::processLinkDir( QString file, QString dest )
136{ 139{
140 pvDebug( 7,"PmIpkg::processLinkDir "+file+" to "+ dest);
137 if ( dest == "???" ) return; 141 if ( dest == "???" ) return;
138 QString destFile = file; 142 QString destFile = file;
139 file = dest+"/"+file; 143 file = dest+"/"+file;
140 if (file == dest) return; 144 if (file == dest) return;
@@ -166,17 +170,13 @@ void PmIpkg::processLinkDir( QString file, QString dest )
166} 170}
167 171
168void PmIpkg::commit( PackageList pl ) 172void PmIpkg::commit( PackageList pl )
169 { 173 {
170 show( false ); 174 int sizecount = 0;
171 runwindow->outPut->setText("");
172 out( "<h1>"+tr("Todo")+"</h1>\n");
173
174 to_install.clear(); 175 to_install.clear();
175 to_remove.clear(); 176 to_remove.clear();
176 int sizecount = 0; 177 QString rem="<b>"+tr("To remove:")+"</b><br>\n";
177 QString rem="<b>To remove:</b><br>\n"; 178 QString inst="<b>"+tr("To install:")+"</b><br>\n";
178 QString inst="<b>To install:</b><br>\n";;
179 pl.allPackages(); 179 pl.allPackages();
180 for( Package *pack = pl.first();pack ; (pack = pl.next()) ) 180 for( Package *pack = pl.first();pack ; (pack = pl.next()) )
181 { 181 {
182 if ( pack && (pack->name() != "") && pack) 182 if ( pack && (pack->name() != "") && pack)
@@ -184,9 +184,9 @@ void PmIpkg::commit( PackageList pl )
184 if ( pack->toInstall() ) 184 if ( pack->toInstall() )
185 { 185 {
186 to_install.append( pack ); 186 to_install.append( pack );
187 sizecount += pack->size().toInt(); 187 sizecount += pack->size().toInt();
188 inst += pack->name()+"\t(on "+pack->dest()+")<br>"; 188 inst += pack->name()+"\t("+tr("on ")+pack->dest()+")<br>";
189 } 189 }
190 if ( pack->toRemove() ) 190 if ( pack->toRemove() )
191 { 191 {
192 to_remove.append( pack ); 192 to_remove.append( pack );
@@ -195,25 +195,79 @@ void PmIpkg::commit( PackageList pl )
195 } 195 }
196 } 196 }
197 } 197 }
198 198
199 out("<p>"+inst+"</p>"+"<p>"+rem+"</p><hl>"); 199 startDialog();
200
201 qDebug("to remove=%i; to install=%i",to_remove.count(),to_install.count());
202 200
203 runwindow->progress->setTotalSteps( sizecount ); 201}
204 202
205 connect( runwindow->doItButton, SIGNAL( clicked() ), 203void PmIpkg::startDialog()
206 SLOT( doIt() ) ); 204{
207 connect( runwindow->installButton, SIGNAL( clicked() ), 205 QDialog *d = new QDialog();
206 QGridLayout *RunWindowLayout = new QGridLayout( d );
207 RunWindowLayout->setSpacing( 2 );
208 RunWindowLayout->setMargin( 2 );
209
210 QHBoxLayout *buttons = new QHBoxLayout;
211 buttons->setSpacing( 6 );
212 buttons->setMargin( 0 );
213
214 PackageListView *plv = new PackageListView(d, "install",settings);
215 RunWindowLayout->addWidget( plv, 1, 0 );
216 for (Package *it=to_remove.first(); it != 0; it=to_remove.next() )
217 {
218 plv->insertItem( new PackageListItem(plv, it,settings) );
219 }
220 for (Package *it=to_install.first(); it != 0; it=to_install.next() )
221 {
222 plv->insertItem( new PackageListItem(plv, it,settings) );
223 }
224 QPushButton *doItButton = new QPushButton( d, "doItButton" );
225 doItButton->setSizePolicy( QSizePolicy( (QSizePolicy::SizeType)0, (QSizePolicy::SizeType)0, doItButton->sizePolicy().hasHeightForWidth() ) );
226 QFont doItButton_font( doItButton->font() );
227 doItButton_font.setPointSize( 8 );
228 doItButton->setFont( doItButton_font );
229 doItButton->setText( tr( "Do all " ) );
230 doItButton->setAutoResize( FALSE );
231 buttons->addWidget( doItButton );
232
233 QPushButton *installButton = new QPushButton( d, "installButton" );
234 QFont installButton_font( installButton->font() );
235 installButton_font.setPointSize( 8 );
236 installButton->setFont( installButton_font );
237 installButton->setText( tr( "Install" ) );
238 installButton->setAutoResize( TRUE );
239 buttons->addWidget( installButton );
240
241 QPushButton *removeButton = new QPushButton( d, "removeButton" );
242 QFont removeButton_font( removeButton->font() );
243 removeButton_font.setPointSize( 7 );
244 removeButton->setFont( removeButton_font );
245 removeButton->setText( tr( "Remove" ) );
246 removeButton->setAutoResize( TRUE );
247 buttons->addWidget( removeButton );
248
249 QPushButton *cancelButton = new QPushButton( d, "cancelButton" );
250 QFont cancelButton_font( cancelButton->font() );
251 cancelButton_font.setPointSize( 8 );
252 cancelButton->setFont( cancelButton_font );
253 cancelButton->setText( tr( "Cancel" ) );
254 cancelButton->setAutoResize( TRUE );
255 buttons->addWidget( cancelButton );
256
257 RunWindowLayout->addLayout( buttons, 3, 0 );
258
259 connect( doItButton, SIGNAL( clicked() ),
260 this, SLOT( doIt() ) );
261 connect( installButton, SIGNAL( clicked() ),
208 this, SLOT( install() ) ); 262 this, SLOT( install() ) );
209 connect( runwindow->removeButton, SIGNAL( clicked() ), 263 connect( removeButton, SIGNAL( clicked() ),
210 this, SLOT( remove() ) ); 264 this, SLOT( remove() ) );
211 connect( runwindow->cancelButton, SIGNAL( clicked() ), 265 connect( cancelButton, SIGNAL( clicked() ),
212 runwindow, SLOT( close() ) ); 266 d, SLOT( close() ) );
213 267 d->showMaximized();
214 runwindow->exec(); 268 d->exec();
215 out("<h1>"+tr("Its now save to close this window")+"<h1>"); 269 // d->close();
216} 270}
217 271
218void PmIpkg::doIt() 272void PmIpkg::doIt()
219{ 273{
@@ -250,9 +304,9 @@ void PmIpkg::install()
250 out("<hr><hr><b>"+tr("Installing")+"<br>"+tr("please wait")+"</b><br>"); 304 out("<hr><hr><b>"+tr("Installing")+"<br>"+tr("please wait")+"</b><br>");
251 for (Package *it=to_install.first(); it != 0; it=to_install.next() ) 305 for (Package *it=to_install.first(); it != 0; it=to_install.next() )
252 { 306 {
253 307
254 if ( runIpkg("install " + it->name(), it->dest() ) == 0 ) 308 if ( runIpkg("install " + it->getPackageName(), it->dest() ) == 0 )
255 { 309 {
256 runwindow->progress->setProgress( it->size().toInt() + runwindow->progress->progress()); 310 runwindow->progress->setProgress( it->size().toInt() + runwindow->progress->progress());
257 if ( it->link() ) 311 if ( it->link() )
258 makeLinks( it ); 312 makeLinks( it );
@@ -313,36 +367,20 @@ void PmIpkg::show(bool b)
313{ 367{
314 if (!runwindow->isVisible()) 368 if (!runwindow->isVisible())
315 runwindow->showMaximized(); 369 runwindow->showMaximized();
316 showButtons(b); 370 showButtons(b);
317 if ( b ) 371 if ( !b )
318 runwindow->progress->hide(); 372 runwindow->progress->hide();
319 else 373 else
320 runwindow->progress->show(); 374 runwindow->progress->show();
321} 375}
322 376
323void PmIpkg::installFile(const QString &fileName) 377void PmIpkg::installFile(const QString &fileName)
324{ 378{
379
380 to_install.clear();
381 to_remove.clear();
325 pvDebug( 2,"PmIpkg::installFile "+ fileName); 382 pvDebug( 2,"PmIpkg::installFile "+ fileName);
326 show( false ); 383 to_install.append( new Package(fileName,settings) );
327 runwindow->outPut->setText(""); 384 startDialog();
328 fileNameToInstall = fileName;
329 runwindow->doItButton->hide();
330 runwindow->removeButton->hide();
331 out("<b>"+tr("Install: ")+fileName);
332 connect( runwindow->installButton, SIGNAL( clicked() ),
333 this, SLOT( installFileName() ) );
334 connect( runwindow->cancelButton, SIGNAL( clicked() ),
335 runwindow, SLOT( close() ) );
336
337 runwindow->exec();
338} 385}
339 386
340void PmIpkg::installFileName()
341{
342 if ( !QFile::exists( fileNameToInstall ) ) return;
343 out(tr("Installing pacakge ")+fileNameToInstall+"<br>"+tr("please wait")+"</b><br>");
344 runIpkg("install " + fileNameToInstall );
345 if ( settings->createLinks() )
346 linkPackage( fileNameToInstall, settings->getDestinationUrl() );
347 out("<h1>"+tr("Its now save to close this window")+"<h1>");
348} \ No newline at end of file
diff --git a/noncore/unsupported/oipkg/pmipkg.h b/noncore/unsupported/oipkg/pmipkg.h
index 8e06f4c..f70283e 100644
--- a/noncore/unsupported/oipkg/pmipkg.h
+++ b/noncore/unsupported/oipkg/pmipkg.h
@@ -32,8 +32,9 @@ private:
32 QList<Package> to_install; 32 QList<Package> to_install;
33 bool runwindowopen; 33 bool runwindowopen;
34 QString fileNameToInstall; 34 QString fileNameToInstall;
35 35
36 void startDialog();
36 void makeLinks(Package*); 37 void makeLinks(Package*);
37 void linkPackage( QString, QString ); 38 void linkPackage( QString, QString );
38 void processLinkDir( QString, QString ); 39 void processLinkDir( QString, QString );
39 int runIpkg(const QString& args, const QString& dest="" ); 40 int runIpkg(const QString& args, const QString& dest="" );
@@ -41,9 +42,8 @@ private:
41 42
42public slots: 43public slots:
43 void doIt(); 44 void doIt();
44 void install(); 45 void install();
45 void installFileName();
46 void remove(); 46 void remove();
47 void installFile(const QString &fileName); 47 void installFile(const QString &fileName);
48 void linkDestination( const QString, const QByteArray ); 48 void linkDestination( const QString, const QByteArray );
49}; 49};
diff --git a/noncore/unsupported/oipkg/runwindow.ui b/noncore/unsupported/oipkg/runwindow.ui
index 52da408..8582ce8 100644
--- a/noncore/unsupported/oipkg/runwindow.ui
+++ b/noncore/unsupported/oipkg/runwindow.ui
@@ -11,9 +11,9 @@
11 <rect> 11 <rect>
12 <x>0</x> 12 <x>0</x>
13 <y>0</y> 13 <y>0</y>
14 <width>344</width> 14 <width>344</width>
15 <height>291</height> 15 <height>442</height>
16 </rect> 16 </rect>
17 </property> 17 </property>
18 <property stdset="1"> 18 <property stdset="1">
19 <name>caption</name> 19 <name>caption</name>
@@ -44,22 +44,9 @@
44 <name>progress</name> 44 <name>progress</name>
45 <number>0</number> 45 <number>0</number>
46 </property> 46 </property>
47 </widget> 47 </widget>
48 <widget row="1" column="0" > 48 <widget row="3" column="0" >
49 <class>QTextView</class>
50 <property stdset="1">
51 <name>name</name>
52 <cstring>outPut</cstring>
53 </property>
54 <property stdset="1">
55 <name>font</name>
56 <font>
57 <pointsize>6</pointsize>
58 </font>
59 </property>
60 </widget>
61 <widget row="2" column="0" >
62 <class>QLayoutWidget</class> 49 <class>QLayoutWidget</class>
63 <property stdset="1"> 50 <property stdset="1">
64 <name>name</name> 51 <name>name</name>
65 <cstring>buttons</cstring> 52 <cstring>buttons</cstring>
@@ -97,9 +84,9 @@
97 <string>Do all </string> 84 <string>Do all </string>
98 </property> 85 </property>
99 <property stdset="1"> 86 <property stdset="1">
100 <name>autoResize</name> 87 <name>autoResize</name>
101 <bool>true</bool> 88 <bool>false</bool>
102 </property> 89 </property>
103 </widget> 90 </widget>
104 <widget> 91 <widget>
105 <class>QPushButton</class> 92 <class>QPushButton</class>
@@ -165,7 +152,20 @@
165 </property> 152 </property>
166 </widget> 153 </widget>
167 </hbox> 154 </hbox>
168 </widget> 155 </widget>
156 <widget row="1" column="0" >
157 <class>QTextView</class>
158 <property stdset="1">
159 <name>name</name>
160 <cstring>outPut</cstring>
161 </property>
162 <property stdset="1">
163 <name>font</name>
164 <font>
165 <pointsize>6</pointsize>
166 </font>
167 </property>
168 </widget>
169 </grid> 169 </grid>
170</widget> 170</widget>
171</UI> 171</UI>