summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/unsupported/oipkg/main.cpp2
-rw-r--r--noncore/unsupported/oipkg/mainwindow.cpp7
-rw-r--r--noncore/unsupported/oipkg/package.cpp58
-rw-r--r--noncore/unsupported/oipkg/package.h14
-rw-r--r--noncore/unsupported/oipkg/packagelist.cpp21
-rw-r--r--noncore/unsupported/oipkg/packagelist.h2
-rw-r--r--noncore/unsupported/oipkg/packagelistitem.cpp27
-rw-r--r--noncore/unsupported/oipkg/pmipkg.cpp9
-rw-r--r--pics/oipkg/installedOld.pngbin0 -> 197 bytes
-rw-r--r--pics/oipkg/uninstalledInstalledOld.pngbin0 -> 257 bytes
-rw-r--r--pics/oipkg/uninstalledOld.pngbin0 -> 225 bytes
-rw-r--r--pics/oipkg/uninstalledOldinstalledNew.pngbin0 -> 261 bytes
12 files changed, 124 insertions, 16 deletions
diff --git a/noncore/unsupported/oipkg/main.cpp b/noncore/unsupported/oipkg/main.cpp
index 4af11df..d98bcaa 100644
--- a/noncore/unsupported/oipkg/main.cpp
+++ b/noncore/unsupported/oipkg/main.cpp
@@ -1,24 +1,24 @@
1 1
2#include "mainwindow.h" 2#include "mainwindow.h"
3 3
4#include <qpe/qpeapplication.h> 4#include <qpe/qpeapplication.h>
5#include <qstring.h> 5#include <qstring.h>
6#include <qmessagebox.h> 6#include <qmessagebox.h>
7int debugLevel; 7int debugLevel;
8 8
9int main( int argc, char ** argv ) 9int main( int argc, char ** argv )
10{ 10{
11 11
12 debugLevel = 2; 12 debugLevel = 2;
13 if (argc > 0) 13 if (argc > 1)
14 { 14 {
15 debugLevel = QString ( argv[1] ).toInt(); 15 debugLevel = QString ( argv[1] ).toInt();
16 qDebug("setting debug level to %i",debugLevel); 16 qDebug("setting debug level to %i",debugLevel);
17 } 17 }
18 QPEApplication a( argc, argv ); 18 QPEApplication a( argc, argv );
19 MainWindow mw; 19 MainWindow mw;
20 if (argc > 2) 20 if (argc > 2)
21 QMessageBox::information( &mw, "oipkg","While ipkg is working\noipkg is hanging.\nPlease be patient!"); 21 QMessageBox::information( &mw, "oipkg","While ipkg is working\noipkg is hanging.\nPlease be patient!");
22 a.showMainDocumentWidget( &mw ); 22 a.showMainDocumentWidget( &mw );
23 return a.exec(); 23 return a.exec();
24} 24}
diff --git a/noncore/unsupported/oipkg/mainwindow.cpp b/noncore/unsupported/oipkg/mainwindow.cpp
index 4f6e4cc..55f915d 100644
--- a/noncore/unsupported/oipkg/mainwindow.cpp
+++ b/noncore/unsupported/oipkg/mainwindow.cpp
@@ -4,114 +4,119 @@
4#include "mainwindow.h" 4#include "mainwindow.h"
5 5
6#include <qpe/qpemenubar.h> 6#include <qpe/qpemenubar.h>
7#include <qpe/qpemessagebox.h> 7#include <qpe/qpemessagebox.h>
8#include <qpe/resource.h> 8#include <qpe/resource.h>
9#include <qpe/config.h> 9#include <qpe/config.h>
10#include <qpe/qpetoolbar.h> 10#include <qpe/qpetoolbar.h>
11#include <qpe/qcopenvelope_qws.h> 11#include <qpe/qcopenvelope_qws.h>
12#include <qaction.h> 12#include <qaction.h>
13#include <qmessagebox.h> 13#include <qmessagebox.h>
14#include <qpopupmenu.h> 14#include <qpopupmenu.h>
15#include <qtoolbutton.h> 15#include <qtoolbutton.h>
16#include <qstring.h> 16#include <qstring.h>
17#include <qlabel.h> 17#include <qlabel.h>
18#include <qfile.h> 18#include <qfile.h>
19#include <qlistview.h> 19#include <qlistview.h>
20#include <qtextview.h> 20#include <qtextview.h>
21#include <qcheckbox.h> 21#include <qcheckbox.h>
22#include <qlineedit.h> 22#include <qlineedit.h>
23#include <qtabwidget.h> 23#include <qtabwidget.h>
24#include <qcombobox.h> 24#include <qcombobox.h>
25#include <qmessagebox.h> 25#include <qmessagebox.h>
26#include <qpushbutton.h> 26#include <qpushbutton.h>
27#include <qlayout.h> 27#include <qlayout.h>
28 28
29#include "pksettingsbase.h" 29#include "pksettingsbase.h"
30#include "utils.h" 30#include "utils.h"
31#include "packagelistitem.h" 31#include "packagelistitem.h"
32 32
33 33
34MainWindow::MainWindow( QWidget *parent, const char *name, WFlags f = 0 ) : 34MainWindow::MainWindow( QWidget *parent, const char *name, WFlags f = 0 ) :
35 QMainWindow( parent, name, f ) 35 QMainWindow( parent, name, f )
36 { 36 {
37 setCaption( tr("Package Manager") ); 37 setCaption( tr("Package Manager") );
38 settings = new PackageManagerSettings(this,0,TRUE); 38 settings = new PackageManagerSettings(this,0,TRUE);
39 listViewPackages = new PackageListView( this,"listViewPackages",settings ); 39 listViewPackages = new PackageListView( this,"listViewPackages",settings );
40 setCentralWidget( listViewPackages ); 40 setCentralWidget( listViewPackages );
41 listViewPackages->addList( tr("feeds"), &packageListServers ); 41 listViewPackages->addList( tr("feeds"), &packageListServers );
42 listViewPackages->addList( tr("ipkgfind"), &packageListSearch ); 42 listViewPackages->addList( tr("ipkgfind"), &packageListSearch );
43 listViewPackages->addList( tr("documents"), &packageListDocLnk ); 43 listViewPackages->addList( tr("documents"), &packageListDocLnk );
44 //wait = new QMessageBox(tr("oipkg"),tr("Please wait")//,QMessageBox::Information,QMessageBox::NoButton,QMessageBox::NoButton,QMessageBox::NoButton); 44 //wait = new QMessageBox(tr("oipkg"),tr("Please wait")//,QMessageBox::Information,QMessageBox::NoButton,QMessageBox::NoButton,QMessageBox::NoButton);
45 //wait = new QMessageBox(this); 45 //wait = new QMessageBox(this);
46 // wait->setText(tr("Please wait")); 46 // wait->setText(tr("Please wait"));
47 ipkg = new PmIpkg( settings, this ); 47 ipkg = new PmIpkg( settings, this );
48// settings->setIpkg( ipkg ); 48// settings->setIpkg( ipkg );
49 packageListServers.setSettings( settings ); 49 packageListServers.setSettings( settings );
50 packageListSearch.setSettings( settings ); 50 packageListSearch.setSettings( settings );
51 packageListDocLnk.setSettings( settings ); 51 packageListDocLnk.setSettings( settings );
52 pvDebug(9,"packageListServers.update");
52 packageListServers.update(); 53 packageListServers.update();
54 pvDebug(9,"packageListDocLnk.update");
53 packageListDocLnk.update(); 55 packageListDocLnk.update();
56 pvDebug(9,"makeMenu");
54 makeMenu(); 57 makeMenu();
55 makeChannel(); 58 makeChannel();
56 //opie is hardcoded default ;) 59 //opie is hardcoded default ;)
60 pvDebug(9,"section->setCurrentItem");
57 for (int i=0;i<section->count();i++) 61 for (int i=0;i<section->count();i++)
58 if (section->text(i)=="opie") 62 if (section->text(i)=="opie")
59 section->setCurrentItem(i); 63 section->setCurrentItem(i);
60 sectionChanged(); 64 sectionChanged();
61 65
62 connect( section, SIGNAL(activated(int)), SLOT(sectionChanged()) ); 66 connect( section, SIGNAL(activated(int)), SLOT(sectionChanged()) );
63 connect( subsection, SIGNAL(activated(int)), SLOT(subSectionChanged()) ); 67 connect( subsection, SIGNAL(activated(int)), SLOT(subSectionChanged()) );
64 68
65 connect( settings->removeLinksButton, SIGNAL( clicked()), 69 connect( settings->removeLinksButton, SIGNAL( clicked()),
66 SLOT(removeLinks()) ); 70 SLOT(removeLinks()) );
67 connect( settings->createLinksButton, SIGNAL( clicked()), 71 connect( settings->createLinksButton, SIGNAL( clicked()),
68 SLOT(createLinks()) ); 72 SLOT(createLinks()) );
69 73
74 pvDebug(9,"displayList");
70 displayList(); 75 displayList();
71} 76}
72 77
73void MainWindow::makeMenu() 78void MainWindow::makeMenu()
74{ 79{
75 80
76 QPEToolBar *toolBar = new QPEToolBar( this ); 81 QPEToolBar *toolBar = new QPEToolBar( this );
77 QPEMenuBar *menuBar = new QPEMenuBar( toolBar ); 82 QPEMenuBar *menuBar = new QPEMenuBar( toolBar );
78 QPopupMenu *srvMenu = new QPopupMenu( menuBar ); 83 QPopupMenu *srvMenu = new QPopupMenu( menuBar );
79 QPopupMenu *viewMenu = new QPopupMenu( menuBar ); 84 QPopupMenu *viewMenu = new QPopupMenu( menuBar );
80 QPopupMenu *cfgMenu = new QPopupMenu( menuBar ); 85 QPopupMenu *cfgMenu = new QPopupMenu( menuBar );
81 // QPopupMenu *sectMenu = new QPopupMenu( menuBar ); 86 // QPopupMenu *sectMenu = new QPopupMenu( menuBar );
82 87
83 setToolBarsMovable( false ); 88 setToolBarsMovable( false );
84 toolBar->setHorizontalStretchable( true ); 89 toolBar->setHorizontalStretchable( true );
85 menuBar->insertItem( tr( "Package" ), srvMenu ); 90 menuBar->insertItem( tr( "Package" ), srvMenu );
86 menuBar->insertItem( tr( "View" ), viewMenu ); 91 menuBar->insertItem( tr( "View" ), viewMenu );
87 menuBar->insertItem( tr( "Settings" ), cfgMenu ); 92 menuBar->insertItem( tr( "Settings" ), cfgMenu );
88 // menuBar->insertItem( tr( "Sections" ), sectMenu ); 93 // menuBar->insertItem( tr( "Sections" ), sectMenu );
89 94
90 QLabel *spacer = new QLabel( "", toolBar ); 95 QLabel *spacer = new QLabel( "", toolBar );
91 spacer->setBackgroundColor( toolBar->backgroundColor() ); 96 spacer->setBackgroundColor( toolBar->backgroundColor() );
92 toolBar->setStretchableWidget( spacer ); 97 toolBar->setStretchableWidget( spacer );
93 98
94 99
95 runAction = new QAction( tr( "Apply" ), 100 runAction = new QAction( tr( "Apply" ),
96 Resource::loadPixmap( "oipkg/install" ), 101 Resource::loadPixmap( "oipkg/install" ),
97 QString::null, 0, this, 0 ); 102 QString::null, 0, this, 0 );
98 connect( runAction, SIGNAL( activated() ), 103 connect( runAction, SIGNAL( activated() ),
99 this, SLOT( runIpkg() ) ); 104 this, SLOT( runIpkg() ) );
100 runAction->addTo( toolBar ); 105 runAction->addTo( toolBar );
101 runAction->addTo( srvMenu ); 106 runAction->addTo( srvMenu );
102 107
103 srvMenu->insertSeparator (); 108 srvMenu->insertSeparator ();
104 109
105 updateAction = new QAction( tr( "Update" ), 110 updateAction = new QAction( tr( "Update" ),
106 Resource::loadIconSet( "oipkg/update" ), 111 Resource::loadIconSet( "oipkg/update" ),
107 QString::null, 0, this, 0 ); 112 QString::null, 0, this, 0 );
108 connect( updateAction, SIGNAL( activated() ), 113 connect( updateAction, SIGNAL( activated() ),
109 this , SLOT( updateList() ) ); 114 this , SLOT( updateList() ) );
110 updateAction->addTo( toolBar ); 115 updateAction->addTo( toolBar );
111 updateAction->addTo( srvMenu ); 116 updateAction->addTo( srvMenu );
112 117
113 QAction *cfgact; 118 QAction *cfgact;
114 119
115 cfgact = new QAction( tr( "Setups" ), 120 cfgact = new QAction( tr( "Setups" ),
116 QString::null, 0, this, 0 ); 121 QString::null, 0, this, 0 );
117 connect( cfgact, SIGNAL( activated() ), 122 connect( cfgact, SIGNAL( activated() ),
@@ -191,104 +196,102 @@ void MainWindow::makeMenu()
191 searchCommit->addTo( searchBar ); 196 searchCommit->addTo( searchBar );
192 a = new QAction( tr( "Close Find" ), Resource::loadPixmap( "close" ), QString::null, 0, this, 0 ); 197 a = new QAction( tr( "Close Find" ), Resource::loadPixmap( "close" ), QString::null, 0, this, 0 );
193 connect( a, SIGNAL( activated() ), this, SLOT( searchClose() ) ); 198 connect( a, SIGNAL( activated() ), this, SLOT( searchClose() ) );
194 a->addTo( searchBar ); 199 a->addTo( searchBar );
195 searchAction = new QAction( tr( "Search" ), QString::null, 0, this, 0 ); 200 searchAction = new QAction( tr( "Search" ), QString::null, 0, this, 0 );
196 connect( searchAction, SIGNAL( toggled(bool) ), this, SLOT( searchShow(bool) ) ); 201 connect( searchAction, SIGNAL( toggled(bool) ), this, SLOT( searchShow(bool) ) );
197 searchAction->setToggleAction( true ); 202 searchAction->setToggleAction( true );
198 searchAction->addTo( viewMenu ); 203 searchAction->addTo( viewMenu );
199 204
200 //DEST 205 //DEST
201 destBar = new QPEToolBar(this); 206 destBar = new QPEToolBar(this);
202 addToolBar( destBar, "Destination", QMainWindow::Top, TRUE ); 207 addToolBar( destBar, "Destination", QMainWindow::Top, TRUE );
203 label = new QLabel( tr("Destination: "), destBar ); 208 label = new QLabel( tr("Destination: "), destBar );
204 label->setBackgroundColor( destBar->backgroundColor() ); 209 label->setBackgroundColor( destBar->backgroundColor() );
205 destBar->setHorizontalStretchable( TRUE ); 210 destBar->setHorizontalStretchable( TRUE );
206 destination = new QComboBox( false, destBar ); 211 destination = new QComboBox( false, destBar );
207 destination->insertStringList( settings->getDestinationNames() ); 212 destination->insertStringList( settings->getDestinationNames() );
208 setComboName(destination,settings->getDestinationName()); 213 setComboName(destination,settings->getDestinationName());
209 connect( destination, SIGNAL(activated(int)), 214 connect( destination, SIGNAL(activated(int)),
210 settings, SLOT(activeDestinationChange(int)) ); 215 settings, SLOT(activeDestinationChange(int)) );
211 spacer = new QLabel( " ", destBar ); 216 spacer = new QLabel( " ", destBar );
212 spacer->setBackgroundColor( destBar->backgroundColor() ); 217 spacer->setBackgroundColor( destBar->backgroundColor() );
213 CheckBoxLink = new QCheckBox( tr("Link"), destBar); 218 CheckBoxLink = new QCheckBox( tr("Link"), destBar);
214 CheckBoxLink->setBackgroundColor( destBar->backgroundColor() ); 219 CheckBoxLink->setBackgroundColor( destBar->backgroundColor() );
215 CheckBoxLink->setChecked( settings->createLinks() ); 220 CheckBoxLink->setChecked( settings->createLinks() );
216 connect( CheckBoxLink, SIGNAL(toggled(bool)), 221 connect( CheckBoxLink, SIGNAL(toggled(bool)),
217 settings, SLOT(linkEnabled(bool)) ); 222 settings, SLOT(linkEnabled(bool)) );
218 destAction = new QAction( tr( "Destinations" ), QString::null, 0, this, 0 ); 223 destAction = new QAction( tr( "Destinations" ), QString::null, 0, this, 0 );
219 connect( destAction, SIGNAL( toggled(bool) ), SLOT( destShow(bool) ) ); 224 connect( destAction, SIGNAL( toggled(bool) ), SLOT( destShow(bool) ) );
220 a = new QAction( tr( "Close Destinations" ), Resource::loadPixmap( "close" ), QString::null, 0, this, 0 ); 225 a = new QAction( tr( "Close Destinations" ), Resource::loadPixmap( "close" ), QString::null, 0, this, 0 );
221 connect( a, SIGNAL( activated() ), SLOT( destClose() ) ); 226 connect( a, SIGNAL( activated() ), SLOT( destClose() ) );
222 a->addTo( destBar ); 227 a->addTo( destBar );
223 destBar->setStretchableWidget( CheckBoxLink ); 228 destBar->setStretchableWidget( CheckBoxLink );
224 destAction->setToggleAction( true ); 229 destAction->setToggleAction( true );
225 // destAction->addTo( viewMenu ); 230 // destAction->addTo( viewMenu );
226 231
227 // configure the menus 232 // configure the menus
228 Config cfg( "oipkg", Config::User ); 233 Config cfg( "oipkg", Config::User );
229 cfg.setGroup( "gui" ); 234 cfg.setGroup( "gui" );
230 235
231 findShow( cfg.readBoolEntry( "findBar", true ) ); 236 findShow( cfg.readBoolEntry( "findBar", true ) );
232 searchShow( cfg.readBoolEntry( "searchBar", true ) ); 237 searchShow( cfg.readBoolEntry( "searchBar", true ) );
233 sectionShow( cfg.readBoolEntry( "sectionBar", true ) ); 238 sectionShow( cfg.readBoolEntry( "sectionBar", true ) );
234 destShow( cfg.readBoolEntry( "destBar", false ) ); 239 destShow( cfg.readBoolEntry( "destBar", false ) );
235} 240}
236 241
237MainWindow::~MainWindow() 242MainWindow::~MainWindow()
238{ 243{
239 pvDebug(7,"MainWindow::~MainWindow ");
240 Config cfg( "oipkg", Config::User ); 244 Config cfg( "oipkg", Config::User );
241 cfg.setGroup( "gui" ); 245 cfg.setGroup( "gui" );
242 cfg.writeEntry( "findBar", !findBar->isHidden() ); 246 cfg.writeEntry( "findBar", !findBar->isHidden() );
243 cfg.writeEntry( "searchBar", !searchBar->isHidden() ); 247 cfg.writeEntry( "searchBar", !searchBar->isHidden() );
244 cfg.writeEntry( "sectionBar", !sectionBar->isHidden() ); 248 cfg.writeEntry( "sectionBar", !sectionBar->isHidden() );
245 cfg.writeEntry( "destBar", !destBar->isHidden() ); 249 cfg.writeEntry( "destBar", !destBar->isHidden() );
246 pvDebug(7,"MainWindow::~MainWindow ");
247 250
248} 251}
249 252
250void MainWindow::runIpkg() 253void MainWindow::runIpkg()
251{ 254{
252 packageListServers.allPackages(); 255 packageListServers.allPackages();
253 ipkg->loadList( &packageListSearch ); 256 ipkg->loadList( &packageListSearch );
254 ipkg->loadList( &packageListDocLnk ); 257 ipkg->loadList( &packageListDocLnk );
255 ipkg->loadList( &packageListServers ); 258 ipkg->loadList( &packageListServers );
256 ipkg->commit(); 259 ipkg->commit();
257 // ##### If we looked in the list of files, we could send out accurate 260 // ##### If we looked in the list of files, we could send out accurate
258 // ##### messages. But we don't bother yet, and just do an "all". 261 // ##### messages. But we don't bother yet, and just do an "all".
259 QCopEnvelope e("QPE/System", "linkChanged(QString)"); 262 QCopEnvelope e("QPE/System", "linkChanged(QString)");
260 QString lf = QString::null; 263 QString lf = QString::null;
261 e << lf; 264 e << lf;
262 displayList(); 265 displayList();
263} 266}
264 267
265void MainWindow::updateList() 268void MainWindow::updateList()
266{ 269{
267 //wait->show(); 270 //wait->show();
268 QTimer *t = new QTimer( this ); 271 QTimer *t = new QTimer( this );
269 connect( t, SIGNAL(timeout()), SLOT( rotateUpdateIcon() ) ); 272 connect( t, SIGNAL(timeout()), SLOT( rotateUpdateIcon() ) );
270 t->start( 0, false ); 273 t->start( 0, false );
271 packageListServers.clear(); 274 packageListServers.clear();
272 packageListSearch.clear(); 275 packageListSearch.clear();
273 packageListDocLnk.clear(); 276 packageListDocLnk.clear();
274 ipkg->update(); 277 ipkg->update();
275 packageListServers.update(); 278 packageListServers.update();
276 packageListSearch.update(); 279 packageListSearch.update();
277 packageListDocLnk.update(); 280 packageListDocLnk.update();
278 t->stop(); 281 t->stop();
279 // wait->hide(); 282 // wait->hide();
280} 283}
281 284
282void MainWindow::filterList() 285void MainWindow::filterList()
283{ 286{
284 //wait->show(); 287 //wait->show();
285 QString f = ""; 288 QString f = "";
286 if ( findAction->isOn() ) f = findEdit->text(); 289 if ( findAction->isOn() ) f = findEdit->text();
287 packageListServers.filterPackages( f ); 290 packageListServers.filterPackages( f );
288 //wait->hide(); 291 //wait->hide();
289} 292}
290 293
291void MainWindow::displayList() 294void MainWindow::displayList()
292{ 295{
293 //wait->hide(); 296 //wait->hide();
294 filterList(); 297 filterList();
diff --git a/noncore/unsupported/oipkg/package.cpp b/noncore/unsupported/oipkg/package.cpp
index 9280d89..c947c64 100644
--- a/noncore/unsupported/oipkg/package.cpp
+++ b/noncore/unsupported/oipkg/package.cpp
@@ -1,179 +1,208 @@
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> 5#include <qfile.h>
6#include <qtextstream.h> 6#include <qtextstream.h>
7#include <stdlib.h> 7#include <stdlib.h>
8#include <unistd.h> 8#include <unistd.h>
9 9
10#include "debug.h" 10#include "debug.h"
11 11
12//Package::~Package() 12//Package::~Package()
13//{ 13//{
14//} 14//}
15 15
16Package::Package( PackageManagerSettings *s ) 16Package::Package( PackageManagerSettings *s )
17{ 17{
18 init(s); 18 init(s);
19} 19}
20 20
21void Package::init( PackageManagerSettings *s ) 21void Package::init( PackageManagerSettings *s )
22{ 22{
23 settings = s; 23 settings = s;
24 _size = ""; 24 _size = "";
25 _section = ""; 25 _section = "";
26 _subsection = ""; 26 _subsection = "";
27 _shortDesc = ""; 27 _shortDesc = "";
28 _desc = ""; 28 _desc = "";
29 _name = ""; 29 _name = "";
30 _toProcess = false; 30 _toProcess = false;
31 _useFileName = false; 31 _useFileName = false;
32 _old = false;
32 _status = ""; 33 _status = "";
33 _dest = settings->getDestinationName(); 34 _dest = settings->getDestinationName();
34 _link = settings->createLinks(); 35 _link = settings->createLinks();
36 _versions=0;
35} 37}
36 38
37Package::Package( QStringList pack, PackageManagerSettings *s ) 39Package::Package( QStringList pack, PackageManagerSettings *s )
38 { 40 {
39 init(s); 41 init(s);
40 parsePackage( pack ); 42 parsePackage( pack );
41} 43}
42 44
43Package::Package( QString n, PackageManagerSettings *s ) 45Package::Package( QString n, PackageManagerSettings *s )
44 { 46 {
45 init(s); 47 init(s);
46 if ( !QFile::exists( n ) ) 48 if ( !QFile::exists( n ) )
47 { 49 {
48 _name = QString( n ); 50 _name = QString( n );
49 }else{ 51 }else{
50 parseIpkgFile( n ); 52 parseIpkgFile( n );
51 _useFileName = true; 53 _useFileName = true;
52 _fileName = QString( n ); 54 _fileName = QString( n );
53 } 55 }
54} 56}
55 57
56Package::Package( Package *pi ) 58Package::Package( Package *pi )
57{ 59{
58 init(pi->settings); 60 init(pi->settings);
59 copyValues( pi ); 61 copyValues( pi );
60} 62}
61 63
62 64
63void Package::setValue( QString n, QString t ) 65void Package::setValue( QString n, QString t )
64{ 66{
65 if ( n == "Package" ) 67 if ( n == "Package" )
66 { 68 {
67 _name = QString( t ); 69 _name = QString( t );
68 }else if ( n == "Installed-Size" ) 70 }else if ( n == "Installed-Size" )
69 { 71 {
70 _size = t; 72 _size = t;
71// }else if ( n == "Priority") 73// }else if ( n == "Priority")
72// { 74// {
73 75
74 }else if ( n == "Section") 76 }else if ( n == "Section")
75 { 77 {
76 setSection( t ); 78 setSection( t );
77// }else if ( n == "Maintainer") 79// }else if ( n == "Maintainer")
78// { 80// {
79// 81//
80// }else if ( n == "Architecture") 82// }else if ( n == "Architecture")
81// { 83// {
82 84
83 }else if ( n == "Version") 85 }else if ( n == "Version")
84 { 86 {
85 _version = t; 87 _version = t;
86// }else if ( n == "Pre-Depends") 88// }else if ( n == "Pre-Depends")
87// { 89// {
88// 90//
89// }else if ( n == "Depends") 91// }else if ( n == "Depends")
90// { 92// {
91 93
92 }else if ( n == "Filename") 94 }else if ( n == "Filename")
93 { 95 {
94 _fileName = t; 96 _fileName = t;
95// }else if ( n == "Size") 97// }else if ( n == "Size")
96 // { 98 // {
97 // 99 //
98 //}else if ( n == "MD5Sum") 100 //}else if ( n == "MD5Sum")
99 //{ 101 //{
100 102
101 }else if ( n == "Description") 103 }else if ( n == "Description")
102 { 104 {
103 setDesc( t ); 105 setDesc( t );
104 }else if ( n == "Status") 106 }else if ( n == "Status")
105 { 107 {
106 if ( installed() ) return; 108 if ( installed() ) return;
107 _status = t; 109 _status = t;
108// }else if ( n == "Essential") 110// }else if ( n == "Essential")
109// { 111// {
110 112
111 }else{ 113 }else{
112 _values.insert(n,new QString(t)); 114 _values.insert(n,new QString(t));
113 } 115 }
114} 116}
115 117
116QString Package::name() 118QString Package::name()
117{ 119{
118 if (_displayName.isEmpty() ) return _name; 120 if (_displayName.isEmpty() ) return _name;
119 else return _displayName; 121 else return _displayName;
120} 122}
121 123
122 124
123QString Package::installName() 125QString Package::installName()
124{ 126{
125 if (_useFileName) return _fileName; 127 if (_useFileName) return _fileName;
126 else return _name; 128 else return _name;
127} 129}
128 130
129bool Package::installed() 131bool Package::installed()
130{ 132{
131 return _status.contains("installed"); 133 if (_status.contains("installed")) return true;
134 else
135 if (_versions)
136 {
137 QDictIterator<Package> other( *_versions );
138 while ( other.current() )
139 {
140 if (other.current()->status().contains("installed")
141 && other.current()->version() == version())
142 return true;
143 ++other;
144 }
145 }
146 return false;
147}
148
149bool Package::otherInstalled()
150{
151 if (_versions)
152 {
153 QDictIterator<Package> other( *_versions );
154 while ( other.current() )
155 {
156 if (other.current()->installed()) return true;
157 ++other;
158 }
159 }
160 return false;
132} 161}
133 162
134void Package::setDesc( QString s ) 163void Package::setDesc( QString s )
135{ 164{
136 _desc = s; 165 _desc = s;
137 _shortDesc = s.left( s.find("\n") ); 166 _shortDesc = s.left( s.find("\n") );
138} 167}
139 168
140QString Package::desc() 169QString Package::desc()
141{ 170{
142 return _desc; 171 return _desc;
143} 172}
144 173
145QString Package::shortDesc() 174QString Package::shortDesc()
146{ 175{
147 return _shortDesc; 176 return _shortDesc;
148} 177}
149 178
150QString Package::size() 179QString Package::size()
151{ 180{
152 return _size; 181 return _size;
153} 182}
154 183
155 184
156QString Package::version() 185QString Package::version()
157{ 186{
158 return _version; 187 return _version;
159} 188}
160 189
161QString Package::sizeUnits() 190QString Package::sizeUnits()
162{ 191{
163 int i = _size.toInt(); 192 int i = _size.toInt();
164 int c = 0; 193 int c = 0;
165 QString ret; 194 QString ret;
166 QStringList unit; 195 QStringList unit;
167 unit << "B" << "KB" << "MB" << "GB" << "TB"; //prepair for the future ;) 196 unit << "B" << "KB" << "MB" << "GB" << "TB"; //prepair for the future ;)
168 while (i > 1) 197 while (i > 1)
169 { 198 {
170 ret=QString::number(i)+" "+unit[c]; 199 ret=QString::number(i)+" "+unit[c];
171 c++; 200 c++;
172 i /= 1024; 201 i /= 1024;
173 } 202 }
174 return ret; 203 return ret;
175} 204}
176 205
177bool Package::toProcess() 206bool Package::toProcess()
178{ 207{
179 return _toProcess; 208 return _toProcess;
@@ -325,48 +354,75 @@ void Package::setLink(bool b)
325{ 354{
326 _link = b; 355 _link = b;
327} 356}
328 357
329void Package::parseIpkgFile( QString file) 358void Package::parseIpkgFile( QString file)
330{ 359{
331 system("tar xzf "+file+" -C /tmp"); 360 system("tar xzf "+file+" -C /tmp");
332 system("tar xzf /tmp/control.tar.gz -C /tmp"); 361 system("tar xzf /tmp/control.tar.gz -C /tmp");
333 QFile f("/tmp/control"); 362 QFile f("/tmp/control");
334 if ( f.open(IO_ReadOnly) ) 363 if ( f.open(IO_ReadOnly) )
335 { 364 {
336 QTextStream t( &f ); 365 QTextStream t( &f );
337 QStringList pack; 366 QStringList pack;
338 while ( !t.eof() ) 367 while ( !t.eof() )
339 { 368 {
340 pack << t.readLine(); 369 pack << t.readLine();
341 } 370 }
342 f.close(); 371 f.close();
343 parsePackage( pack ); 372 parsePackage( pack );
344 } 373 }
345 374
346} 375}
347 376
348//QString Package::getPackageName() 377//QString Package::getPackageName()
349//{ 378//{
350 //if ( _packageName.isEmpty() ) return _name; 379 //if ( _packageName.isEmpty() ) return _name;
351 //else return _packageName; 380 //else return _packageName;
352//} 381//}
353 382
354void Package::instalFromFile(bool iff) 383void Package::instalFromFile(bool iff)
355{ 384{
356 _useFileName = iff; 385 _useFileName = iff;
357} 386}
358 387
359void Package::setName(QString n) 388void Package::setName(QString n)
360{ 389{
361 _displayName = n; 390 _displayName = n;
362} 391}
363 392
364QDict<QString>* Package::getFields() 393QDict<QString>* Package::getFields()
365{ 394{
366 return &_values; 395 return &_values;
367} 396}
368 397
369QString Package::status() 398QString Package::status()
370{ 399{
371 return _status; 400 return _status;
372} 401}
402
403bool Package::isOld()
404{
405 if (!_versions) return false;
406 QDictIterator<Package> other( *_versions );
407 while ( other.current() ) {
408 if (other.current()->version() > version() ) return true;
409 ++other;
410 }
411 return false;
412}
413
414bool Package::hasVersions()
415{
416 if (!_versions) return false;
417 else return true;
418}
419
420QDict<Package>* Package::getOtherVersions()
421{
422 return _versions;
423}
424
425void Package::setOtherVersions(QDict<Package> *v)
426{
427 _versions=v;
428}
diff --git a/noncore/unsupported/oipkg/package.h b/noncore/unsupported/oipkg/package.h
index 257d9c7..68090dc 100644
--- a/noncore/unsupported/oipkg/package.h
+++ b/noncore/unsupported/oipkg/package.h
@@ -1,79 +1,89 @@
1#ifndef PK_ITEM_H 1#ifndef PK_ITEM_H
2#define PK_ITEM_H 2#define PK_ITEM_H
3 3
4#include <qstring.h> 4#include <qstring.h>
5#include <qlistview.h> 5#include <qlistview.h>
6#include <qpainter.h> 6#include <qpainter.h>
7#include <qpixmap.h> 7#include <qpixmap.h>
8#include <qdict.h> 8#include <qdict.h>
9#include <qobject.h> 9#include <qobject.h>
10 10
11#include "pksettings.h" 11#include "pksettings.h"
12 12
13class Package //: public QObject 13class Package //: public QObject
14{ 14{
15 // Q_OBJECT 15 // Q_OBJECT
16 public: 16 public:
17 Package(PackageManagerSettings *); 17 Package(PackageManagerSettings *);
18 // ~Package(); 18 // ~Package();
19 Package( QStringList, PackageManagerSettings * ); 19 Package( QStringList, PackageManagerSettings * );
20 Package( QString, PackageManagerSettings * ); 20 Package( QString, PackageManagerSettings * );
21 Package( Package* ); 21 Package( Package* );
22 22
23 void setValue( QString, QString ); 23 void setValue( QString, QString );
24 void copyValues( Package* ); 24 void copyValues( Package* );
25 25
26 QString name() ; 26 QString name();
27 QString installName() ; 27 QString installName();
28 bool installed(); 28 bool installed();
29 bool otherInstalled();
29 30
30 void setDesc( QString ); 31 void setDesc( QString );
31 QString shortDesc(); 32 QString shortDesc();
32 QString desc(); 33 QString desc();
33 QString size(); 34 QString size();
34 QString sizeUnits(); 35 QString sizeUnits();
35 QString version(); 36 QString version();
36 void setSection( QString ); 37 void setSection( QString );
37 QString section(); 38 QString section();
38 QString subSection(); 39 QString subSection();
39 QString details(); 40 QString details();
40 bool toProcess(); 41 bool toProcess();
41 bool toInstall(); 42 bool toInstall();
42 bool toRemove(); 43 bool toRemove();
43 void processed(); 44 void processed();
44 QString dest(); 45 QString dest();
45 void setDest( QString d ); 46 void setDest( QString d );
46 void setOn(); 47 void setOn();
47 bool link(); 48 bool link();
48 void setLink(bool); 49 void setLink(bool);
50 bool isOld();
51 bool hasVersions();
49 void parseIpkgFile( QString ); 52 void parseIpkgFile( QString );
50 void instalFromFile(bool iff=true); 53 void instalFromFile(bool iff=true);
51 void setName(QString); 54 void setName(QString);
52 QDict<QString>* getFields(); 55 QDict<QString>* getFields();
53 QString status(); 56 QString status();
57
58 QDict<Package>* getOtherVersions();
59 void setOtherVersions(QDict<Package>*);
60
54public slots: 61public slots:
55 void toggleProcess(); 62 void toggleProcess();
56 63
57private: 64private:
58 PackageManagerSettings *settings; 65 PackageManagerSettings *settings;
59 QString _displayName; 66 QString _displayName;
60 QString _name; 67 QString _name;
61 QString _fileName; 68 QString _fileName;
69 bool _old;
70 bool _hasVersions;
62 bool _toProcess; 71 bool _toProcess;
63 bool _link; 72 bool _link;
64 QString _status; 73 QString _status;
65 QString _size; 74 QString _size;
66 QString _section; 75 QString _section;
67 QString _subsection; 76 QString _subsection;
68 QString _shortDesc; 77 QString _shortDesc;
69 QString _desc; 78 QString _desc;
70 QString _version; 79 QString _version;
71 QString _dest; 80 QString _dest;
72 QDict<QString> _values; 81 QDict<QString> _values;
82 QDict<Package> *_versions;
73 bool _useFileName; 83 bool _useFileName;
74 void parsePackage( QStringList ); 84 void parsePackage( QStringList );
75 void init(PackageManagerSettings *); 85 void init(PackageManagerSettings *);
76}; 86};
77 87
78 88
79#endif 89#endif
diff --git a/noncore/unsupported/oipkg/packagelist.cpp b/noncore/unsupported/oipkg/packagelist.cpp
index be20c71..2fc4c41 100644
--- a/noncore/unsupported/oipkg/packagelist.cpp
+++ b/noncore/unsupported/oipkg/packagelist.cpp
@@ -1,99 +1,114 @@
1#include "packagelist.h" 1#include "packagelist.h"
2 2
3#include <assert.h> 3#include <assert.h>
4#include <qfile.h> 4#include <qfile.h>
5#include <qfileinfo.h> 5#include <qfileinfo.h>
6#include <qtextstream.h> 6#include <qtextstream.h>
7 7
8#include "debug.h" 8#include "debug.h"
9 9
10static QDict<Package> *packageListAll;
11
10PackageList::PackageList() 12PackageList::PackageList()
11 : packageIter( packageList ) 13 : packageIter( packageList )
12{ 14{
13 empty=true; 15 empty=true;
16 if (!packageListAll) packageListAll = new QDict<Package>();
14 sections << "All"; 17 sections << "All";
15 subSections.insert("All", new QStringList() ); 18 subSections.insert("All", new QStringList() );
16 QStringList *ss = subSections["All"]; 19 QStringList *ss = subSections["All"];
17 *ss << "All"; 20 *ss << "All";
18 aktSection = "All"; 21 aktSection = "All";
19 aktSubSection = "All"; 22 aktSubSection = "All";
20} 23}
21 24
22PackageList::PackageList( PackageManagerSettings* s) 25PackageList::PackageList( PackageManagerSettings* s)
23 : packageIter( packageList ) 26 : packageIter( packageList )
24{ 27{
25 settings = s; 28 settings = s;
26 PackageList(); 29 PackageList();
27} 30}
28 31
29PackageList::~PackageList() 32PackageList::~PackageList()
30{ 33{
31} 34}
32 35
33/** Inserts a package into the list */ 36/** Inserts a package into the list */
34void PackageList::insertPackage( Package* pack ) 37void PackageList::insertPackage( Package* pack )
35{ 38{
36 if (!pack) return; 39 if (!pack) return;
37 Package* p = packageList.find( pack->name() ); 40 Package* p = packageListAll->find( pack->name() );
38 if ( p ) 41 if ( p )
39 { 42 {
40 if ( p->version() == pack->version() ) 43 if ( (p->version() == pack->version())
44 && (p->dest() == pack->dest()) )
41 { 45 {
42 p->copyValues( pack ); 46 p->copyValues( pack );
43 delete pack; 47 delete pack;
44 pack = p; 48 pack = p;
45 } else { 49 } else {
46 p->setName( pack->name()+"["+p->version()+"]" ); 50 QDict<Package> *packver = p->getOtherVersions();
51 // p->setName( pack->name()+"["+p->version()+"]" );
52 if (!packver)
53 {
54 packver = new QDict<Package>;
55 packver->insert( pack->name(), p );
56 p->setOtherVersions( packver );
57 }
47 pack->setName( pack->name()+"["+pack->version()+"]" ); 58 pack->setName( pack->name()+"["+pack->version()+"]" );
59 pack->setOtherVersions( packver );
60 packver->insert( pack->name(), pack );
61 packageListAll->insert( pack->name(), pack );
48 packageList.insert( pack->name(), pack ); 62 packageList.insert( pack->name(), pack );
49 origPackageList.insert( pack->name(), pack ); 63 origPackageList.insert( pack->name(), pack );
50 } 64 }
51 }else{ 65 }else{
66 packageListAll->insert( pack->name(), pack );
52 packageList.insert( pack->name(), pack ); 67 packageList.insert( pack->name(), pack );
53 origPackageList.insert( pack->name(), pack ); 68 origPackageList.insert( pack->name(), pack );
54 }; 69 };
55 empty=false; 70 empty=false;
56 updateSections( pack ); 71 updateSections( pack );
57} 72}
58 73
59void PackageList::filterPackages( QString f ) 74void PackageList::filterPackages( QString f )
60 { 75 {
61 packageList.clear(); 76 packageList.clear();
62 QDictIterator<Package> filterIter( origPackageList ); 77 QDictIterator<Package> filterIter( origPackageList );
63 filterIter.toFirst(); 78 filterIter.toFirst();
64 Package *pack= filterIter.current() ; 79 Package *pack= filterIter.current() ;
65 while ( pack ) 80 while ( pack )
66 { 81 {
67 if ( 82 if (
68 ((aktSection=="All")||(pack->section()==aktSection)) && 83 ((aktSection=="All")||(pack->section()==aktSection)) &&
69 ((aktSubSection=="All")||(pack->subSection()==aktSubSection)) && 84 ((aktSubSection=="All")||(pack->subSection()==aktSubSection)) &&
70 pack->name().contains( f ) 85 pack->name().contains( f )
71 ) 86 )
72 { 87 {
73 packageList.insert( pack->name(), pack ); 88 packageList.insert( pack->name(), pack );
74 } 89 }
75 ++filterIter; 90 ++filterIter;
76 pack = filterIter.current(); 91 pack = filterIter.current();
77 } 92 }
78} 93}
79 94
80Package* PackageList::find( QString n ) 95Package* PackageList::find( QString n )
81{ 96{
82 return packageList.find( n ); 97 return packageList.find( n );
83} 98}
84 99
85Package* PackageList::first() 100Package* PackageList::first()
86 { 101 {
87 packageIter.toFirst(); 102 packageIter.toFirst();
88 return packageIter.current(); 103 return packageIter.current();
89} 104}
90 105
91Package* PackageList::next() 106Package* PackageList::next()
92{ 107{
93 ++packageIter; 108 ++packageIter;
94 return packageIter.current(); 109 return packageIter.current();
95} 110}
96 111
97QStringList PackageList::getSections() 112QStringList PackageList::getSections()
98{ 113{
99 sections.sort(); 114 sections.sort();
diff --git a/noncore/unsupported/oipkg/packagelist.h b/noncore/unsupported/oipkg/packagelist.h
index acea3b9..d0f8897 100644
--- a/noncore/unsupported/oipkg/packagelist.h
+++ b/noncore/unsupported/oipkg/packagelist.h
@@ -1,58 +1,60 @@
1#ifndef PACKAGELIST_H 1#ifndef PACKAGELIST_H
2#define PACKAGELIST_H 2#define PACKAGELIST_H
3 3
4#include <qdict.h> 4#include <qdict.h>
5#include "package.h" 5#include "package.h"
6#include "pksettings.h" 6#include "pksettings.h"
7#include "debug.h" 7#include "debug.h"
8 8
9class PackageList //:QObject 9class PackageList //:QObject
10{ 10{
11 // Q_OBJECT 11 // Q_OBJECT
12public: 12public:
13 //static QString all = QObject::tr("All"); 13 //static QString all = QObject::tr("All");
14 14
15 PackageList(); 15 PackageList();
16 PackageList( PackageManagerSettings* ); 16 PackageList( PackageManagerSettings* );
17 virtual ~PackageList(); 17 virtual ~PackageList();
18 void insertPackage( Package* ); 18 void insertPackage( Package* );
19 Package* find( QString ); 19 Package* find( QString );
20 Package* next(); 20 Package* next();
21 Package* first(); 21 Package* first();
22 22
23 QStringList getSections(); 23 QStringList getSections();
24 QStringList getSubSections(); 24 QStringList getSubSections();
25 void setSettings( PackageManagerSettings* ); 25 void setSettings( PackageManagerSettings* );
26 void filterPackages( QString ); 26 void filterPackages( QString );
27 Package* getByName( QString ); 27 Package* getByName( QString );
28 void clear(); 28 void clear();
29 void allPackages(); 29 void allPackages();
30 30
31 QDict<Package> *versions;
32
31public slots: 33public slots:
32 void setSection(QString); 34 void setSection(QString);
33 void setSubSection(QString); 35 void setSubSection(QString);
34 // virtual void update(); 36 // virtual void update();
35 37
36protected: 38protected:
37 int currentPackage; 39 int currentPackage;
38 int packageCount; 40 int packageCount;
39 41
40 PackageManagerSettings *settings; 42 PackageManagerSettings *settings;
41 QDict<Package> packageList; 43 QDict<Package> packageList;
42 QDict<Package> origPackageList; 44 QDict<Package> origPackageList;
43 QDictIterator<Package> packageIter; 45 QDictIterator<Package> packageIter;
44 46
45 bool empty; 47 bool empty;
46 QString aktSection; 48 QString aktSection;
47 QString aktSubSection; 49 QString aktSubSection;
48 QStringList sections; 50 QStringList sections;
49 QDict<QStringList> subSections; 51 QDict<QStringList> subSections;
50 QDict<bool> sectionsDict; 52 QDict<bool> sectionsDict;
51 53
52 54
53 void updateSections( Package* ); 55 void updateSections( Package* );
54 void readFileEntries( QString file, QString dest="" ); 56 void readFileEntries( QString file, QString dest="" );
55}; 57};
56 58
57 59
58#endif 60#endif
diff --git a/noncore/unsupported/oipkg/packagelistitem.cpp b/noncore/unsupported/oipkg/packagelistitem.cpp
index 45aaf1d..c743a49 100644
--- a/noncore/unsupported/oipkg/packagelistitem.cpp
+++ b/noncore/unsupported/oipkg/packagelistitem.cpp
@@ -1,144 +1,165 @@
1#include "packagelistitem.h" 1#include "packagelistitem.h"
2 2
3#include <qpe/resource.h> 3#include <qpe/resource.h>
4#include <qobject.h> 4#include <qobject.h>
5 5
6#include "debug.h" 6#include "debug.h"
7 7
8static QPixmap *pm_uninstalled=0; 8static QPixmap *pm_uninstalled=0;
9static QPixmap *pm_uninstalled_old=0;
9static QPixmap *pm_installed=0; 10static QPixmap *pm_installed=0;
11static QPixmap *pm_installed_old=0;
10static QPixmap *pm_uninstall=0; 12static QPixmap *pm_uninstall=0;
11static QPixmap *pm_install=0; 13static QPixmap *pm_install=0;
14static QPixmap *pm_uninstalled_old_installed_new=0;
15static QPixmap *pm_uninstalled_installed_old=0;
12 16
13PackageListItem::PackageListItem(QListView* lv, Package *pi, PackageManagerSettings *s) 17PackageListItem::PackageListItem(QListView* lv, Package *pi, PackageManagerSettings *s)
14 :QCheckListItem(lv,pi->name(),CheckBox) 18 :QCheckListItem(lv,pi->name(),CheckBox)
15{ 19{
16 init(pi,s); 20 init(pi,s);
17} 21}
18 22
19PackageListItem::PackageListItem(QListViewItem *lvi, Package *pi, PackageManagerSettings *s) 23PackageListItem::PackageListItem(QListViewItem *lvi, Package *pi, PackageManagerSettings *s)
20 :QCheckListItem(lvi,pi->name(),CheckBox) 24 :QCheckListItem(lvi,pi->name(),CheckBox)
21{ 25{
22 init(pi,s); 26 init(pi,s);
23} 27}
24 28
25void PackageListItem::init( Package *pi, PackageManagerSettings *s) 29void PackageListItem::init( Package *pi, PackageManagerSettings *s)
26{ 30{
27 package = pi; 31 package = pi;
28 settings = s; 32 settings = s;
29 setExpandable( true ); 33 setExpandable( true );
30 QCheckListItem *item; 34 QCheckListItem *item;
31 nameItem = new QCheckListItem( this, "" ); 35 nameItem = new QCheckListItem( this, "" );
32 item = new QCheckListItem( this, QObject::tr("Size: ")+pi->size() ); 36 item = new QCheckListItem( this, QObject::tr("Size: ")+pi->size() );
33 destItem = new QCheckListItem( this, "" ); 37 destItem = new QCheckListItem( this, "" );
34 linkItem = new QCheckListItem( this, "" ); 38 linkItem = new QCheckListItem( this, "" );
35 statusItem = new QCheckListItem( this, "" ); 39 statusItem = new QCheckListItem( this, "" );
36 QCheckListItem *otherItem = new QCheckListItem( this, QObject::tr("other") ); 40 QCheckListItem *otherItem = new QCheckListItem( this, QObject::tr("other") );
37 item = new QCheckListItem( otherItem, QObject::tr("Description: ")+pi->desc() ); 41 item = new QCheckListItem( otherItem, QObject::tr("Description: ")+pi->desc() );
38 QDict<QString> *fields = pi->getFields(); 42 QDict<QString> *fields = pi->getFields();
39 QDictIterator<QString> it( *fields ); 43 QDictIterator<QString> it( *fields );
40 while ( it.current() ) { 44 while ( it.current() ) {
41 item = new QCheckListItem( otherItem, QString(it.currentKey()+": "+*it.current()) ); 45 item = new QCheckListItem( otherItem, QString(it.currentKey()+": "+*it.current()) );
42 ++it; 46 ++it;
43 } 47 }
44 displayDetails(); 48 displayDetails();
45 49
46 if (!pm_uninstalled) 50 if (!pm_uninstalled)
47 { 51 {
48 pm_uninstalled = new QPixmap(Resource::loadPixmap("oipkg/uninstalled")); 52 pm_uninstalled = new QPixmap(Resource::loadPixmap("oipkg/uninstalled"));
53 pm_uninstalled_old = new QPixmap(Resource::loadPixmap("oipkg/uninstalledOld"));
54 pm_uninstalled_old_installed_new = new QPixmap(Resource::loadPixmap("oipkg/uninstalledOldinstalledNew"));
55 pm_uninstalled_installed_old = new QPixmap(Resource::loadPixmap("oipkg/uninstalledInstalledOld"));
49 pm_installed = new QPixmap(Resource::loadPixmap("oipkg/installed")); 56 pm_installed = new QPixmap(Resource::loadPixmap("oipkg/installed"));
57 pm_installed_old = new QPixmap(Resource::loadPixmap("oipkg/installedOld"));
50 pm_install = new QPixmap(Resource::loadPixmap("oipkg/install")); 58 pm_install = new QPixmap(Resource::loadPixmap("oipkg/install"));
51 pm_uninstall = new QPixmap(Resource::loadPixmap("oipkg/uninstall")); 59 pm_uninstall = new QPixmap(Resource::loadPixmap("oipkg/uninstall"));
52 } 60 }
53} 61}
54 62
55void PackageListItem::paintCell( QPainter *p, const QColorGroup & cg, 63void PackageListItem::paintCell( QPainter *p, const QColorGroup & cg,
56 int column, int width, int alignment ) 64 int column, int width, int alignment )
57{ 65{
58 if ( !p ) 66 if ( !p )
59 return; 67 return;
60 68
61 p->fillRect( 0, 0, width, height(), 69 p->fillRect( 0, 0, width, height(),
62 isSelected()? cg.highlight() : cg.base() ); 70 isSelected()? cg.highlight() : cg.base() );
63 71
64 if ( column != 0 ) { 72 if ( column != 0 ) {
65 // The rest is text 73 // The rest is text
66 QListViewItem::paintCell( p, cg, column, width, alignment ); 74 QListViewItem::paintCell( p, cg, column, width, alignment );
67 return; 75 return;
68 } 76 }
69 77
70 QListView *lv = listView(); 78 QListView *lv = listView();
71 if ( !lv ) 79 if ( !lv )
72 return; 80 return;
73 int marg = lv->itemMargin(); 81 int marg = lv->itemMargin();
74 int r = marg; 82 int r = marg;
75 83
76 QPixmap pm = statePixmap(); 84 QPixmap pm = statePixmap();
77 p->drawPixmap(marg,(height()-pm.height())/2,pm); 85 p->drawPixmap(marg,(height()-pm.height())/2,pm);
78 r += pm.width()+1; 86 r += pm.width()+1;
79 87
80 p->translate( r, 0 ); 88 p->translate( r, 0 );
81 QListViewItem::paintCell( p, cg, column, width - r, alignment ); 89 QListViewItem::paintCell( p, cg, column, width - r, alignment );
82} 90}
83 91
84 92
85void PackageListItem::paintFocus( QPainter *p, const QColorGroup & cg, 93void PackageListItem::paintFocus( QPainter *p, const QColorGroup & cg,
86 const QRect & r ) 94 const QRect & r )
87{ 95{
88 // Skip QCheckListItem 96 // Skip QCheckListItem
89 // (makes you wonder what we're getting from QCheckListItem) 97 // (makes you wonder what we're getting from QCheckListItem)
90 QListViewItem::paintFocus(p,cg,r); 98 QListViewItem::paintFocus(p,cg,r);
91} 99}
92 100
93QPixmap PackageListItem::statePixmap() const 101QPixmap PackageListItem::statePixmap() const
94{ 102{
95 bool installed = package->installed(); 103 bool installed = package->installed();
104 bool old = package->isOld();
105 bool versions = package->hasVersions();
106 bool verinstalled = package->otherInstalled();
96 if ( !package->toProcess() ) { 107 if ( !package->toProcess() ) {
97 if ( !installed ) 108 if ( !installed )
98 return *pm_uninstalled; 109 if (old)
110 {
111 if (verinstalled) return *pm_uninstalled_old_installed_new;
112 else return *pm_uninstalled_old;
113 }
114 else
115 {
116 if (verinstalled) return *pm_uninstalled_installed_old;
117 else return *pm_uninstalled;
118 }
99 else 119 else
100 return *pm_installed; 120 if (old) return *pm_installed_old;
101 } else { 121 else return *pm_installed;
122 } else { //toProcess() == true
102 if ( !installed ) 123 if ( !installed )
103 return *pm_install; 124 return *pm_install;
104 else 125 else
105 return *pm_uninstall; 126 return *pm_uninstall;
106 } 127 }
107} 128}
108 129
109QString PackageListItem::key( int column, bool ascending ) const 130QString PackageListItem::key( int column, bool ascending ) const
110{ 131{
111 if ( column == 2 ) { 132 if ( column == 2 ) {
112 QString t = text(2); 133 QString t = text(2);
113 double bytes=t.toDouble(); 134 double bytes=t.toDouble();
114 if ( t.contains('M') ) bytes*=1024*1024; 135 if ( t.contains('M') ) bytes*=1024*1024;
115 else if ( t.contains('K') || t.contains('k') ) bytes*=1024; 136 else if ( t.contains('K') || t.contains('k') ) bytes*=1024;
116 if ( !ascending ) bytes=999999999-bytes; 137 if ( !ascending ) bytes=999999999-bytes;
117 return QString().sprintf("%09d",(int)bytes); 138 return QString().sprintf("%09d",(int)bytes);
118 } else { 139 } else {
119 return QListViewItem::key(column,ascending); 140 return QListViewItem::key(column,ascending);
120 } 141 }
121} 142}
122 143
123void PackageListItem::setOn( bool b ) 144void PackageListItem::setOn( bool b )
124{ 145{
125 QCheckListItem::setOn( b ); 146 QCheckListItem::setOn( b );
126 package->toggleProcess(); 147 package->toggleProcess();
127 package->setLink( settings->createLinks() ); 148 package->setLink( settings->createLinks() );
128 displayDetails(); 149 displayDetails();
129} 150}
130 151
131void PackageListItem::displayDetails() 152void PackageListItem::displayDetails()
132{ 153{
133 QString sod; 154 QString sod;
134 sod += package->sizeUnits().isEmpty()?QString(""):QString(package->sizeUnits()); 155 sod += package->sizeUnits().isEmpty()?QString(""):QString(package->sizeUnits());
135 //sod += QString(package->dest().isEmpty()?"":QObject::tr(" on ")+package->dest()); 156 //sod += QString(package->dest().isEmpty()?"":QObject::tr(" on ")+package->dest());
136 sod += package->dest().isEmpty()?QString(""):QString(QObject::tr(" on ")+package->dest()); 157 sod += package->dest().isEmpty()?QString(""):QString(QObject::tr(" on ")+package->dest());
137 sod = sod.isEmpty()?QString(""):QString(" ("+sod+")"); 158 sod = sod.isEmpty()?QString(""):QString(" ("+sod+")");
138 setText(0, package->name()+sod ); 159 setText(0, package->name()+sod );
139 nameItem->setText( 0, QObject::tr("Name: ")+package->name()); 160 nameItem->setText( 0, QObject::tr("Name: ")+package->name());
140 linkItem->setText( 0, QObject::tr("Link: ")+QString(package->link()?QObject::tr("Yes"):QObject::tr("No")) ); 161 linkItem->setText( 0, QObject::tr("Link: ")+QString(package->link()?QObject::tr("Yes"):QObject::tr("No")) );
141 destItem->setText( 0, QObject::tr("Destination: ")+package->dest() ); 162 destItem->setText( 0, QObject::tr("Destination: ")+package->dest() );
142 statusItem->setText( 0, QObject::tr("Status: ")+package->status() ); 163 statusItem->setText( 0, QObject::tr("Status: ")+package->status() );
143 repaint(); 164 repaint();
144} 165}
diff --git a/noncore/unsupported/oipkg/pmipkg.cpp b/noncore/unsupported/oipkg/pmipkg.cpp
index 0ae74da..5996e63 100644
--- a/noncore/unsupported/oipkg/pmipkg.cpp
+++ b/noncore/unsupported/oipkg/pmipkg.cpp
@@ -1,123 +1,124 @@
1#include "pmipkg.h" 1#include "pmipkg.h"
2#include "pksettings.h" 2#include "pksettings.h"
3#include "package.h" 3#include "package.h"
4#include "packagelistitem.h" 4#include "packagelistitem.h"
5 5
6#include <qpe/process.h> 6#include <qpe/process.h>
7#include <qpe/resource.h> 7#include <qpe/resource.h>
8#include <qpe/config.h> 8#include <qpe/config.h>
9#include <qpe/stringutil.h> 9#include <qpe/stringutil.h>
10#include <qdir.h> 10#include <qdir.h>
11#include <qfile.h> 11#include <qfile.h>
12#include <qgroupbox.h> 12#include <qgroupbox.h>
13#include <qmultilineedit.h> 13#include <qmultilineedit.h>
14#include <qstring.h> 14#include <qstring.h>
15#include <qcheckbox.h> 15#include <qcheckbox.h>
16#include <qtextstream.h> 16#include <qtextstream.h>
17#include <qtextview.h> 17#include <qtextview.h>
18 18
19#include <qprogressbar.h> 19#include <qprogressbar.h>
20#include <qpushbutton.h> 20#include <qpushbutton.h>
21#include <qlayout.h> 21#include <qlayout.h>
22 22
23#include <stdlib.h> 23#include <stdlib.h>
24#include <unistd.h> 24#include <unistd.h>
25 25
26#include "mainwindow.h" 26#include "mainwindow.h"
27 27
28 28
29PmIpkg::PmIpkg( PackageManagerSettings* s, QWidget* p, const char * name, WFlags f ) 29PmIpkg::PmIpkg( PackageManagerSettings* s, QWidget* p, const char * name, WFlags f )
30 : QObject ( p ) 30 : QObject ( p )
31{ 31{
32 settings = s; 32 settings = s;
33 runwindow = new RunWindow( p, name, true, f ); 33 runwindow = new RunWindow( p, name, true, f );
34} 34}
35 35
36PmIpkg::~PmIpkg() 36PmIpkg::~PmIpkg()
37{ 37{
38} 38}
39 39
40//#define PROC 40//#define PROC
41#define SYSTEM 41#define SYSTEM
42#define QT_QPROCESS_DEBUG
42int PmIpkg::runIpkg(const QString& args, const QString& dest ) 43int PmIpkg::runIpkg(const QString& args, const QString& dest )
43{ 44{
44 pvDebug(2,"PmIpkg::runIpkg "+args); 45 pvDebug(2,"PmIpkg::runIpkg "+args);
45 46 QDir::setCurrent("/tmp");
46#ifdef PROC 47#ifdef PROC
47 QStringList cmd = "ipkg "; 48 QString cmd;
48#endif 49#endif
49#ifdef SYSTEM 50#ifdef SYSTEM
50 QString cmd = "/usr/bin/ipkg "; 51 QString cmd = "/usr/bin/ipkg ";
51#endif 52#endif
52 pvDebug( 3,"PmIpkg::runIpkg got dest="+dest); 53 pvDebug( 3,"PmIpkg::runIpkg got dest="+dest);
53 if ( dest == "" ) 54 if ( dest == "" )
54 cmd += " -dest "+settings->getDestinationName(); 55 cmd += " -dest "+settings->getDestinationName();
55 else 56 else
56 cmd += " -dest "+ dest; 57 cmd += " -dest "+ dest;
57 58
58 cmd += " -force-defaults "; 59 cmd += " -force-defaults ";
59 60
60 if (installDialog->_force_depends) 61 if (installDialog->_force_depends)
61 { 62 {
62 if (installDialog->_force_depends->isChecked()) 63 if (installDialog->_force_depends->isChecked())
63 cmd += " -force-depends "; 64 cmd += " -force-depends ";
64 if (installDialog->_force_reinstall->isChecked()) 65 if (installDialog->_force_reinstall->isChecked())
65 cmd += " -force-reinstall "; 66 cmd += " -force-reinstall ";
66 if (installDialog->_force_remove->isChecked()) 67 if (installDialog->_force_remove->isChecked())
67 cmd += " -force-removal-of-essential-packages "; 68 cmd += " -force-removal-of-essential-packages ";
68 } 69 }
69 70
70 out( "<hr><br>Starting to "+ args+"<br>\n"); 71 out( "<hr><br>Starting to "+ args+"<br>\n");
71 cmd += args; 72 cmd += args;
72 int r = 0; 73 int r = 0;
73#ifdef PROC 74#ifdef PROC
74 QString o = "start"; 75 QString o = "start";
75 Process *ipkg = new Process( cmd ); 76 Process *ipkg = new Process(QStringList() << "ipkg" << cmd );
76 out( "running:<br>\n"+ipkg->arguments().join(" ")+"<br>\n" ); 77 out( "running:<br>\n"+ipkg->arguments().join(" ")+"<br>\n" );
77 QString description; 78 QString description;
78 r = ipkg->exec("",o); 79 r = ipkg->exec("",o);
79 out( o ); 80 out( o );
80#endif 81#endif
81#ifdef SYSTEM 82#ifdef SYSTEM
82 out( "running:<br>\n"+cmd+"<br>\n" ); 83 out( "running:<br>\n"+cmd+"<br>\n" );
83 QString redirect = "/tmp/oipkg.pipe"; 84 QString redirect = "/tmp/oipkg.pipe";
84 cmd += " 2>&1 | tee "+redirect+" 2>&1"; 85 cmd += " 2>&1 | tee "+redirect+" 2>&1";
85 pvDebug(2, "running >"+cmd+"<"); 86 pvDebug(2, "running >"+cmd+"<");
86 r = system(cmd.latin1()); 87 r = system(cmd.latin1());
87 QFile f( redirect ); 88 QFile f( redirect );
88 QString line; 89 QString line;
89 QString oldLine; 90 QString oldLine;
90 while ( ! f.open(IO_ReadOnly) ) {}; 91 while ( ! f.open(IO_ReadOnly) ) {};
91 QTextStream t( &f ); 92 QTextStream t( &f );
92 while ( !t.eof() ) 93 while ( !t.eof() )
93 { 94 {
94 line = t.readLine(); 95 line = t.readLine();
95 if ( line != oldLine ) 96 if ( line != oldLine )
96 { 97 {
97 out( line +"<br>" ); 98 out( line +"<br>" );
98 oldLine = line; 99 oldLine = line;
99 } 100 }
100 } 101 }
101 f.close(); 102 f.close();
102 out( "Finished!<br>"); 103 out( "Finished!<br>");
103#endif 104#endif
104 105
105 return r; 106 return r;
106} 107}
107 108
108void PmIpkg::makeLinks(Package *pack) 109void PmIpkg::makeLinks(Package *pack)
109{ 110{
110 pvDebug( 2, "PmIpkg::makeLinks "+ pack->name()); 111 pvDebug( 2, "PmIpkg::makeLinks "+ pack->name());
111 linkPackage( pack->name(), pack->dest() ); 112 linkPackage( pack->name(), pack->dest() );
112} 113}
113 114
114QStringList* PmIpkg::getList( QString packFileName, QString d ) 115QStringList* PmIpkg::getList( QString packFileName, QString d )
115{ 116{
116 QString dest = settings->getDestinationUrlByName( d ); 117 QString dest = settings->getDestinationUrlByName( d );
117 dest = dest==""?d:dest; 118 dest = dest==""?d:dest;
118 if (dest == "/" ) return 0; 119 if (dest == "/" ) return 0;
119 { 120 {
120 Config cfg( "oipkg", Config::User ); 121 Config cfg( "oipkg", Config::User );
121 cfg.setGroup( "Common" ); 122 cfg.setGroup( "Common" );
122 QString statusDir = cfg.readEntry( "statusDir", "" ); 123 QString statusDir = cfg.readEntry( "statusDir", "" );
123 } 124 }
@@ -252,97 +253,97 @@ void PmIpkg::doIt()
252{ 253{
253 show( true ); 254 show( true );
254 remove(); 255 remove();
255 install(); 256 install();
256} 257}
257 258
258 259
259void PmIpkg::remove() 260void PmIpkg::remove()
260{ 261{
261 if ( to_remove.count() == 0 ) return; 262 if ( to_remove.count() == 0 ) return;
262 263
263 out("<b>"+tr("Removing")+"<br>"+tr("please wait")+"</b><br><hr>"); 264 out("<b>"+tr("Removing")+"<br>"+tr("please wait")+"</b><br><hr>");
264 265
265 QStringList *fileList; 266 QStringList *fileList;
266 for (uint i=0; i < to_remove.count(); i++) 267 for (uint i=0; i < to_remove.count(); i++)
267 { 268 {
268 if ( to_remove.at(i)->link() )fileList = getList( to_remove.at(i)->name(), to_remove.at(i)->dest() ); 269 if ( to_remove.at(i)->link() )fileList = getList( to_remove.at(i)->name(), to_remove.at(i)->dest() );
269 if ( runIpkg("remove " + to_remove.at(i)->name(), to_remove.at(i)->dest() ) == 0) 270 if ( runIpkg("remove " + to_remove.at(i)->name(), to_remove.at(i)->dest() ) == 0)
270 { 271 {
271 runwindow->progress->setProgress( 1 ); 272 runwindow->progress->setProgress( 1 );
272 linkOpp = removeLink; 273 linkOpp = removeLink;
273 if ( to_remove.at(i)->link() ) 274 if ( to_remove.at(i)->link() )
274 { 275 {
275 out( "<br>removing links<br>" ); 276 out( "<br>removing links<br>" );
276 out( "for package "+to_remove.at(i)->name()+" in "+to_remove.at(i)->dest()+"<br>" ); 277 out( "for package "+to_remove.at(i)->name()+" in "+to_remove.at(i)->dest()+"<br>" );
277 processFileList( fileList, to_remove.at(i)->dest() ); 278 processFileList( fileList, to_remove.at(i)->dest() );
278 } 279 }
279 to_remove.at(i)->processed(); 280 to_remove.at(i)->processed();
280 to_remove.take( i ); 281 to_remove.take( i );
281 out("<br><hr>"); 282 out("<br><hr>");
282 }else{ 283 }else{
283 out("<b>"+tr("Error while removing")+"</b><hr>"+to_remove.at(i)->name()); 284 out("<b>"+tr("Error while removing")+"</b><hr>"+to_remove.at(i)->name());
284 } 285 }
285 if ( to_remove.at(i)->link() )delete fileList; 286 if ( to_remove.at(i)->link() )delete fileList;
286 } 287 }
287 to_remove.clear(); 288 to_remove.clear();
288 out("<br>"); 289 out("<br>");
289} 290}
290 291
291 292
292void PmIpkg::install() 293void PmIpkg::install()
293{ 294{
294 if ( to_install.count() == 0 ) return; 295 if ( to_install.count() == 0 ) return;
295 out("<b>"+tr("Installing")+"<br>"+tr("please wait")+"</b><br>"); 296 out("<b>"+tr("Installing")+"<br>"+tr("please wait")+"</b><br>");
296 for (uint i=0; i < to_install.count(); i++) 297 for (uint i=0; i < to_install.count(); i++)
297 { 298 {
298 if ( runIpkg("install " + to_install.at(i)->installName(), to_install.at(i)->dest() ) == 0 ) 299 if ( runIpkg("install " + to_install.at(i)->installName(), to_install.at(i)->dest() ) == 0 )
299 { 300 {
300 runwindow->progress->setProgress( to_install.at(i)->size().toInt() ); 301 runwindow->progress->setProgress( to_install.at(i)->size().toInt() + runwindow->progress->progress());
301 linkOpp = createLink; 302 linkOpp = createLink;
302 if ( to_install.at(i)->link() ) 303 if ( to_install.at(i)->link() )
303 { 304 {
304 out( "<br>creating links<br>" ); 305 out( "<br>creating links<br>" );
305 out( "for package "+to_install.at(i)->name()+" in "+to_install.at(i)->dest()+"<br>" ); 306 out( "for package "+to_install.at(i)->name()+" in "+to_install.at(i)->dest()+"<br>" );
306 makeLinks( to_install.at(i) ); 307 makeLinks( to_install.at(i) );
307 } 308 }
308 to_install.at(i)->processed(); 309 to_install.at(i)->processed();
309 to_install.take( i ); 310 to_install.take( i );
310 out("<br><hr>"); 311 out("<br><hr>");
311 }else{ 312 }else{
312 out("<b>"+tr("Error while installing")+"</b><hr>"+to_install.at(i)->name()); 313 out("<b>"+tr("Error while installing")+"</b><hr>"+to_install.at(i)->name());
313 } 314 }
314 } 315 }
315 out("<br>"); 316 out("<br>");
316 to_install.clear(); 317 to_install.clear();
317} 318}
318 319
319void PmIpkg::createLinks( const QString &dest ) 320void PmIpkg::createLinks( const QString &dest )
320{ 321{
321 pvDebug(2,"PmIpkg::createLinks "+dest); 322 pvDebug(2,"PmIpkg::createLinks "+dest);
322 linkOpp=createLink; 323 linkOpp=createLink;
323 QString url = settings->getDestinationUrlByName( dest ); 324 QString url = settings->getDestinationUrlByName( dest );
324 url = url==""?dest:url; 325 url = url==""?dest:url;
325 processLinkDir( "/opt", url ); 326 processLinkDir( "/opt", url );
326 processLinkDir( "/usr", url ); 327 processLinkDir( "/usr", url );
327} 328}
328 329
329void PmIpkg::removeLinks( const QString &dest ) 330void PmIpkg::removeLinks( const QString &dest )
330{ 331{
331 pvDebug(2,"PmIpkg::removeLinks "+dest); 332 pvDebug(2,"PmIpkg::removeLinks "+dest);
332 linkOpp=removeLink; 333 linkOpp=removeLink;
333 QString url = settings->getDestinationUrlByName( dest ); 334 QString url = settings->getDestinationUrlByName( dest );
334 url = url==""?dest:url; 335 url = url==""?dest:url;
335 processLinkDir( "/opt", url ); 336 processLinkDir( "/opt", url );
336 processLinkDir( "/usr", url ); 337 processLinkDir( "/usr", url );
337} 338}
338 339
339void PmIpkg::update() 340void PmIpkg::update()
340{ 341{
341 show( false ); 342 show( false );
342 runIpkg( "update" ); 343 runIpkg( "update" );
343 runwindow->close(); 344 runwindow->close();
344} 345}
345 346
346void PmIpkg::out( QString o ) 347void PmIpkg::out( QString o )
347{ 348{
348 runwindow->outPut->append(o); 349 runwindow->outPut->append(o);
diff --git a/pics/oipkg/installedOld.png b/pics/oipkg/installedOld.png
new file mode 100644
index 0000000..8a042fc
--- a/dev/null
+++ b/pics/oipkg/installedOld.png
Binary files differ
diff --git a/pics/oipkg/uninstalledInstalledOld.png b/pics/oipkg/uninstalledInstalledOld.png
new file mode 100644
index 0000000..f369c63
--- a/dev/null
+++ b/pics/oipkg/uninstalledInstalledOld.png
Binary files differ
diff --git a/pics/oipkg/uninstalledOld.png b/pics/oipkg/uninstalledOld.png
new file mode 100644
index 0000000..5dce3ea
--- a/dev/null
+++ b/pics/oipkg/uninstalledOld.png
Binary files differ
diff --git a/pics/oipkg/uninstalledOldinstalledNew.png b/pics/oipkg/uninstalledOldinstalledNew.png
new file mode 100644
index 0000000..3bfe126
--- a/dev/null
+++ b/pics/oipkg/uninstalledOldinstalledNew.png
Binary files differ