summaryrefslogtreecommitdiff
authorandyq <andyq>2002-10-22 18:00:55 (UTC)
committer andyq <andyq>2002-10-22 18:00:55 (UTC)
commitd7cca919f20d602bd755b7690c25e31f6e9520b1 (patch) (unidiff)
treeb5ffe24d905ace7563c21be0eea06b39402430aa
parent6843a1bd8f8e679c220431f8377abcd2ffd2019b (diff)
downloadopie-d7cca919f20d602bd755b7690c25e31f6e9520b1.zip
opie-d7cca919f20d602bd755b7690c25e31f6e9520b1.tar.gz
opie-d7cca919f20d602bd755b7690c25e31f6e9520b1.tar.bz2
Changed so that refreshing server packages shows status dialog
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/aqpkg/installdlgimpl.cpp58
-rw-r--r--noncore/settings/aqpkg/installdlgimpl.h4
-rw-r--r--noncore/settings/aqpkg/ipkg.cpp5
-rw-r--r--noncore/settings/aqpkg/networkpkgmgr.cpp23
4 files changed, 46 insertions, 44 deletions
diff --git a/noncore/settings/aqpkg/installdlgimpl.cpp b/noncore/settings/aqpkg/installdlgimpl.cpp
index e122064..a924daf 100644
--- a/noncore/settings/aqpkg/installdlgimpl.cpp
+++ b/noncore/settings/aqpkg/installdlgimpl.cpp
@@ -1,236 +1,236 @@
1/*************************************************************************** 1/***************************************************************************
2 installdlgimpl.cpp - description 2 installdlgimpl.cpp - description
3 ------------------- 3 -------------------
4 begin : Mon Aug 26 2002 4 begin : Mon Aug 26 2002
5 copyright : (C) 2002 by Andy Qua 5 copyright : (C) 2002 by Andy Qua
6 email : andy.qua@blueyonder.co.uk 6 email : andy.qua@blueyonder.co.uk
7 ***************************************************************************/ 7 ***************************************************************************/
8 8
9/*************************************************************************** 9/***************************************************************************
10 * * 10 * *
11 * This program is free software; you can redistribute it and/or modify * 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 * 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 * 13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. * 14 * (at your option) any later version. *
15 * * 15 * *
16 ***************************************************************************/ 16 ***************************************************************************/
17 17
18#ifdef QWS 18#ifdef QWS
19#include <qpe/config.h> 19#include <qpe/config.h>
20#endif 20#endif
21 21
22#include <qmultilineedit.h> 22#include <qmultilineedit.h>
23#include <qdialog.h> 23#include <qdialog.h>
24#include <qcombobox.h> 24#include <qcombobox.h>
25#include <qcheckbox.h> 25#include <qcheckbox.h>
26#include <qpushbutton.h> 26#include <qpushbutton.h>
27 27
28 28
29#include "datamgr.h" 29#include "datamgr.h"
30#include "instoptionsimpl.h" 30#include "instoptionsimpl.h"
31#include "destination.h" 31#include "destination.h"
32#include "installdlgimpl.h" 32#include "installdlgimpl.h"
33#include "global.h" 33#include "global.h"
34 34
35InstallDlgImpl::InstallDlgImpl( vector<InstallData> &packageList, DataManager *dataManager, QWidget * parent, const char* name, bool modal, WFlags fl ) 35InstallDlgImpl::InstallDlgImpl( vector<InstallData> &packageList, DataManager *dataManager, QWidget * parent, const char* name, bool modal, WFlags fl )
36 : InstallDlg( parent, name, modal, fl ) 36 : InstallDlg( parent, name, modal, fl )
37{ 37{
38 upgradePackages = false; 38 upgradePackages = false;
39 dataMgr = dataManager; 39 dataMgr = dataManager;
40 vector<Destination>::iterator dit; 40 vector<Destination>::iterator dit;
41 41
42 QString defaultDest = "root"; 42 QString defaultDest = "root";
43#ifdef QWS 43#ifdef QWS
44 Config cfg( "aqpkg" ); 44 Config cfg( "aqpkg" );
45 cfg.setGroup( "settings" ); 45 cfg.setGroup( "settings" );
46 defaultDest = cfg.readEntry( "dest", "root" ); 46 defaultDest = cfg.readEntry( "dest", "root" );
47 47
48 // Grab flags - Turn MAKE_LINKS on by default (if no flags found) 48 // Grab flags - Turn MAKE_LINKS on by default (if no flags found)
49// flags = cfg.readNumEntry( "installFlags", MAKE_LINKS ); 49// flags = cfg.readNumEntry( "installFlags", MAKE_LINKS );
50 flags = 0; 50 flags = 0;
51#else 51#else
52 flags = 0; 52 flags = 0;
53#endif 53#endif
54 54
55 // Output text is read only 55 // Output text is read only
56 output->setReadOnly( true ); 56 output->setReadOnly( true );
57 QFont f( "helvetica" ); 57 QFont f( "helvetica" );
58 f.setPointSize( 10 ); 58 f.setPointSize( 10 );
59 output->setFont( f ); 59 output->setFont( f );
60 60
61 61
62 // setup destination data 62 // setup destination data
63 int defIndex = 0; 63 int defIndex = 0;
64 int i; 64 int i;
65 for ( i = 0 , dit = dataMgr->getDestinationList().begin() ; dit != dataMgr->getDestinationList().end() ; ++dit, ++i ) 65 for ( i = 0 , dit = dataMgr->getDestinationList().begin() ; dit != dataMgr->getDestinationList().end() ; ++dit, ++i )
66 { 66 {
67 destination->insertItem( dit->getDestinationName() ); 67 destination->insertItem( dit->getDestinationName() );
68 if ( dit->getDestinationName() == defaultDest ) 68 if ( dit->getDestinationName() == defaultDest )
69 defIndex = i; 69 defIndex = i;
70 } 70 }
71 71
72 destination->setCurrentItem( defIndex ); 72 destination->setCurrentItem( defIndex );
73 73
74 vector<InstallData>::iterator it; 74 vector<InstallData>::iterator it;
75 // setup package data 75 // setup package data
76 QString remove = "Remove\n"; 76 QString remove = "Remove\n";
77 QString install = "\nInstall\n"; 77 QString install = "\nInstall\n";
78 QString upgrade = "\nUpgrade\n"; 78 QString upgrade = "\nUpgrade\n";
79 for ( it = packageList.begin() ; it != packageList.end() ; ++it ) 79 for ( it = packageList.begin() ; it != packageList.end() ; ++it )
80 { 80 {
81 InstallData item = *it; 81 InstallData item = *it;
82 if ( item.option == "I" ) 82 if ( item.option == "I" )
83 { 83 {
84 installList.push_back( item ); 84 installList.push_back( item );
85 install += " " + item.packageName + "\n"; 85 install += " " + item.packageName + "\n";
86 } 86 }
87 else if ( item.option == "D" ) 87 else if ( item.option == "D" )
88 { 88 {
89 removeList.push_back( item ); 89 removeList.push_back( item );
90 remove += " " + item.packageName + "\n"; 90 remove += " " + item.packageName + "\n";
91 } 91 }
92 else if ( item.option == "U" ) 92 else if ( item.option == "U" )
93 { 93 {
94 updateList.push_back( item ); 94 updateList.push_back( item );
95 upgrade += " " + item.packageName + "\n"; 95 upgrade += " " + item.packageName + "\n";
96 } 96 }
97 } 97 }
98 98
99 output->setText( remove + install + upgrade ); 99 output->setText( remove + install + upgrade );
100
101 connect( &ipkg, SIGNAL(outputText(const QString &)), this, SLOT(displayText(const QString &)));
102} 100}
103 101
104InstallDlgImpl::InstallDlgImpl( QWidget *parent, const char *name, bool modal, WFlags fl ) 102InstallDlgImpl::InstallDlgImpl( Ipkg *ipkg, QString initialText, QWidget *parent, const char *name, bool modal, WFlags fl )
105 : InstallDlg( parent, name, modal, fl ) 103 : InstallDlg( parent, name, modal, fl )
106{ 104{
107 upgradePackages = true; 105 pIpkg = ipkg;
108 output->setText( "Upgrading installed packages" ); 106 output->setText( initialText );
109 connect( &ipkg, SIGNAL(outputText(const QString &)), this, SLOT(displayText(const QString &)));
110} 107}
111 108
112 109
113InstallDlgImpl::~InstallDlgImpl() 110InstallDlgImpl::~InstallDlgImpl()
114{ 111{
115} 112}
116 113
117bool InstallDlgImpl :: showDlg() 114bool InstallDlgImpl :: showDlg()
118{ 115{
119 showMaximized(); 116 showMaximized();
120 bool ret = exec(); 117 bool ret = exec();
121 118
122 return ret; 119 return ret;
123} 120}
124 121
125void InstallDlgImpl :: optionsSelected() 122void InstallDlgImpl :: optionsSelected()
126{ 123{
127 InstallOptionsDlgImpl opt( flags, this, "Option", true ); 124 InstallOptionsDlgImpl opt( flags, this, "Option", true );
128 opt.exec(); 125 opt.exec();
129 126
130 // set options selected from dialog 127 // set options selected from dialog
131 flags = 0; 128 flags = 0;
132 if ( opt.forceDepends->isChecked() ) 129 if ( opt.forceDepends->isChecked() )
133 flags |= FORCE_DEPENDS; 130 flags |= FORCE_DEPENDS;
134 if ( opt.forceReinstall->isChecked() ) 131 if ( opt.forceReinstall->isChecked() )
135 flags |= FORCE_REINSTALL; 132 flags |= FORCE_REINSTALL;
136 if ( opt.forceRemove->isChecked() ) 133 if ( opt.forceRemove->isChecked() )
137 flags |= FORCE_REMOVE; 134 flags |= FORCE_REMOVE;
138 if ( opt.forceOverwrite->isChecked() ) 135 if ( opt.forceOverwrite->isChecked() )
139 flags |= FORCE_OVERWRITE; 136 flags |= FORCE_OVERWRITE;
140 137
141#ifdef QWS 138#ifdef QWS
142 Config cfg( "aqpkg" ); 139 Config cfg( "aqpkg" );
143 cfg.setGroup( "settings" ); 140 cfg.setGroup( "settings" );
144 cfg.writeEntry( "installFlags", flags ); 141 cfg.writeEntry( "installFlags", flags );
145#endif 142#endif
146} 143}
147 144
148void InstallDlgImpl :: installSelected() 145void InstallDlgImpl :: installSelected()
149{ 146{
150 if ( btnInstall->text() == "Close" ) 147 if ( btnInstall->text() == "Close" )
151 { 148 {
152 done( 1 ); 149 done( 1 );
153 return; 150 return;
154 } 151 }
155 152
156 btnInstall->setEnabled( false ); 153 btnInstall->setEnabled( false );
157 154
158 if ( upgradePackages ) 155 if ( pIpkg )
159 { 156 {
160 output->setText( "" ); 157 output->setText( "" );
161 158
162 Ipkg ipkg; 159 connect( pIpkg, SIGNAL(outputText(const QString &)), this, SLOT(displayText(const QString &)));
163 connect( &ipkg, SIGNAL(outputText(const QString &)), this, SLOT(displayText(const QString &))); 160 pIpkg->runIpkg();
164 ipkg.setOption( "upgrade" );
165 ipkg.runIpkg();
166 } 161 }
167 else 162 else
168 { 163 {
169 output->setText( "" ); 164 output->setText( "" );
170 Destination *d = dataMgr->getDestination( destination->currentText() ); 165 Destination *d = dataMgr->getDestination( destination->currentText() );
171 QString dest = d->getDestinationName(); 166 QString dest = d->getDestinationName();
172 QString destDir = d->getDestinationPath(); 167 QString destDir = d->getDestinationPath();
173 int instFlags = flags; 168 int instFlags = flags;
174 if ( d->linkToRoot() ) 169 if ( d->linkToRoot() )
175 instFlags |= MAKE_LINKS; 170 instFlags |= MAKE_LINKS;
176 171
177#ifdef QWS 172#ifdef QWS
178 // Save settings 173 // Save settings
179 Config cfg( "aqpkg" ); 174 Config cfg( "aqpkg" );
180 cfg.setGroup( "settings" ); 175 cfg.setGroup( "settings" );
181 cfg.writeEntry( "dest", dest ); 176 cfg.writeEntry( "dest", dest );
182#endif 177#endif
183 178
179 pIpkg = new Ipkg;
180 connect( pIpkg, SIGNAL(outputText(const QString &)), this, SLOT(displayText(const QString &)));
181
184 // First run through the remove list, then the install list then the upgrade list 182 // First run through the remove list, then the install list then the upgrade list
185 vector<InstallData>::iterator it; 183 vector<InstallData>::iterator it;
186 ipkg.setOption( "remove" ); 184 pIpkg->setOption( "remove" );
187 for ( it = removeList.begin() ; it != removeList.end() ; ++it ) 185 for ( it = removeList.begin() ; it != removeList.end() ; ++it )
188 { 186 {
189 ipkg.setDestination( it->destination->getDestinationName() ); 187 pIpkg->setDestination( it->destination->getDestinationName() );
190 ipkg.setDestinationDir( it->destination->getDestinationPath() ); 188 pIpkg->setDestinationDir( it->destination->getDestinationPath() );
191 ipkg.setPackage( it->packageName ); 189 pIpkg->setPackage( it->packageName );
192 190
193 int tmpFlags = flags; 191 int tmpFlags = flags;
194 if ( it->destination->linkToRoot() ) 192 if ( it->destination->linkToRoot() )
195 tmpFlags |= MAKE_LINKS; 193 tmpFlags |= MAKE_LINKS;
196 194
197 ipkg.setFlags( tmpFlags ); 195 pIpkg->setFlags( tmpFlags );
198 ipkg.runIpkg(); 196 pIpkg->runIpkg();
199 } 197 }
200 198
201 ipkg.setOption( "install" ); 199 pIpkg->setOption( "install" );
202 ipkg.setDestination( dest ); 200 pIpkg->setDestination( dest );
203 ipkg.setDestinationDir( destDir ); 201 pIpkg->setDestinationDir( destDir );
204 ipkg.setFlags( instFlags ); 202 pIpkg->setFlags( instFlags );
205 for ( it = installList.begin() ; it != installList.end() ; ++it ) 203 for ( it = installList.begin() ; it != installList.end() ; ++it )
206 { 204 {
207 ipkg.setPackage( it->packageName ); 205 pIpkg->setPackage( it->packageName );
208 ipkg.runIpkg(); 206 pIpkg->runIpkg();
209 } 207 }
210 208
211 flags |= FORCE_REINSTALL; 209 flags |= FORCE_REINSTALL;
212 ipkg.setOption( "reinstall" ); 210 pIpkg->setOption( "reinstall" );
213 for ( it = updateList.begin() ; it != updateList.end() ; ++it ) 211 for ( it = updateList.begin() ; it != updateList.end() ; ++it )
214 { 212 {
215 ipkg.setDestination( it->destination->getDestinationName() ); 213 pIpkg->setDestination( it->destination->getDestinationName() );
216 ipkg.setDestinationDir( it->destination->getDestinationPath() ); 214 pIpkg->setDestinationDir( it->destination->getDestinationPath() );
217 ipkg.setPackage( it->packageName ); 215 pIpkg->setPackage( it->packageName );
218 216
219 int tmpFlags = flags; 217 int tmpFlags = flags;
220 if ( it->destination->linkToRoot() && it->recreateLinks ) 218 if ( it->destination->linkToRoot() && it->recreateLinks )
221 tmpFlags |= MAKE_LINKS; 219 tmpFlags |= MAKE_LINKS;
222 ipkg.setFlags( tmpFlags ); 220 pIpkg->setFlags( tmpFlags );
223 ipkg.runIpkg(); 221 pIpkg->runIpkg();
224 } 222 }
223
224 delete pIpkg;
225 } 225 }
226 226
227 btnInstall->setEnabled( true ); 227 btnInstall->setEnabled( true );
228 btnInstall->setText( tr( "Close" ) ); 228 btnInstall->setText( tr( "Close" ) );
229} 229}
230 230
231void InstallDlgImpl :: displayText(const QString &text ) 231void InstallDlgImpl :: displayText(const QString &text )
232{ 232{
233 QString t = output->text() + "\n" + text; 233 QString t = output->text() + "\n" + text;
234 output->setText( t ); 234 output->setText( t );
235 output->setCursorPosition( output->numLines(), 0 ); 235 output->setCursorPosition( output->numLines(), 0 );
236} 236}
diff --git a/noncore/settings/aqpkg/installdlgimpl.h b/noncore/settings/aqpkg/installdlgimpl.h
index 3a5d8b8..6716ced 100644
--- a/noncore/settings/aqpkg/installdlgimpl.h
+++ b/noncore/settings/aqpkg/installdlgimpl.h
@@ -1,65 +1,65 @@
1/*************************************************************************** 1/***************************************************************************
2 installdlgimpl.h - description 2 installdlgimpl.h - description
3 ------------------- 3 -------------------
4 begin : Mon Aug 26 2002 4 begin : Mon Aug 26 2002
5 copyright : (C) 2002 by Andy Qua 5 copyright : (C) 2002 by Andy Qua
6 email : andy.qua@blueyonder.co.uk 6 email : andy.qua@blueyonder.co.uk
7 ***************************************************************************/ 7 ***************************************************************************/
8 8
9/*************************************************************************** 9/***************************************************************************
10 * * 10 * *
11 * This program is free software; you can redistribute it and/or modify * 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 * 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 * 13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. * 14 * (at your option) any later version. *
15 * * 15 * *
16 ***************************************************************************/ 16 ***************************************************************************/
17#ifndef INSTALLDLGIMPL_H 17#ifndef INSTALLDLGIMPL_H
18#define INSTALLDLGIMPL_H 18#define INSTALLDLGIMPL_H
19 19
20#include <vector> 20#include <vector>
21using namespace std; 21using namespace std;
22 22
23#include <qstring.h> 23#include <qstring.h>
24 24
25#include "ipkg.h" 25#include "ipkg.h"
26#include "install.h" 26#include "install.h"
27 27
28class InstallData 28class InstallData
29{ 29{
30public: 30public:
31 QString option; // I - install, D - delete, U - upgrade 31 QString option; // I - install, D - delete, U - upgrade
32 QString packageName; 32 QString packageName;
33 Destination *destination; 33 Destination *destination;
34 bool recreateLinks; 34 bool recreateLinks;
35}; 35};
36 36
37class InstallDlgImpl : public InstallDlg 37class InstallDlgImpl : public InstallDlg
38{ 38{
39public: 39public:
40 InstallDlgImpl( vector<InstallData> &packageList, DataManager *dataManager, QWidget * parent = 0, const char* name = 0, bool modal = false, WFlags fl = 0 ); 40 InstallDlgImpl( vector<InstallData> &packageList, DataManager *dataManager, QWidget * parent = 0, const char* name = 0, bool modal = false, WFlags fl = 0 );
41 InstallDlgImpl( QWidget * parent = 0, const char* name = 0, bool modal = false, WFlags fl = 0 ); 41 InstallDlgImpl( Ipkg *ipkg, QString initialText, QWidget * parent = 0, const char* name = 0, bool modal = false, WFlags fl = 0 );
42 ~InstallDlgImpl(); 42 ~InstallDlgImpl();
43 43
44 bool showDlg(); 44 bool showDlg();
45 bool upgradeServer( QString &server ); 45 bool upgradeServer( QString &server );
46 46
47protected: 47protected:
48 48
49private: 49private:
50 DataManager *dataMgr; 50 DataManager *dataMgr;
51 vector<InstallData> installList; 51 vector<InstallData> installList;
52 vector<InstallData> removeList; 52 vector<InstallData> removeList;
53 vector<InstallData> updateList; 53 vector<InstallData> updateList;
54 int flags; 54 int flags;
55 Ipkg ipkg; 55 Ipkg *pIpkg;
56 bool upgradePackages; 56 bool upgradePackages;
57 57
58 bool runIpkg( QString &option, const QString& package, const QString& dest, int flags ); 58 bool runIpkg( QString &option, const QString& package, const QString& dest, int flags );
59 59
60 void optionsSelected(); 60 void optionsSelected();
61 void installSelected(); 61 void installSelected();
62 void displayText(const QString &text ); 62 void displayText(const QString &text );
63}; 63};
64 64
65#endif 65#endif
diff --git a/noncore/settings/aqpkg/ipkg.cpp b/noncore/settings/aqpkg/ipkg.cpp
index 02d4258..eacef76 100644
--- a/noncore/settings/aqpkg/ipkg.cpp
+++ b/noncore/settings/aqpkg/ipkg.cpp
@@ -1,237 +1,238 @@
1/*************************************************************************** 1/***************************************************************************
2 ipkg.cpp - description 2 ipkg.cpp - description
3 ------------------- 3 -------------------
4 begin : Sat Aug 31 2002 4 begin : Sat Aug 31 2002
5 copyright : (C) 2002 by Andy Qua 5 copyright : (C) 2002 by Andy Qua
6 email : andy.qua@blueyonder.co.uk 6 email : andy.qua@blueyonder.co.uk
7 ***************************************************************************/ 7 ***************************************************************************/
8 8
9/*************************************************************************** 9/***************************************************************************
10 * * 10 * *
11 * This program is free software; you can redistribute it and/or modify * 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 * 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 * 13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. * 14 * (at your option) any later version. *
15 * * 15 * *
16 ***************************************************************************/ 16 ***************************************************************************/
17 17
18#include <fstream> 18#include <fstream>
19using namespace std; 19using namespace std;
20 20
21#include <stdio.h> 21#include <stdio.h>
22#include <unistd.h> 22#include <unistd.h>
23 23
24#ifdef QWS 24#ifdef QWS
25#include <qpe/qpeapplication.h> 25#include <qpe/qpeapplication.h>
26#else 26#else
27#include <qapplication.h> 27#include <qapplication.h>
28#endif 28#endif
29#include <qdir.h> 29#include <qdir.h>
30#include <qtextstream.h> 30#include <qtextstream.h>
31 31
32#include "utils.h" 32#include "utils.h"
33#include "ipkg.h" 33#include "ipkg.h"
34#include "global.h" 34#include "global.h"
35 35
36Ipkg :: Ipkg() 36Ipkg :: Ipkg()
37{ 37{
38} 38}
39 39
40Ipkg :: ~Ipkg() 40Ipkg :: ~Ipkg()
41{ 41{
42} 42}
43 43
44// Option is what we are going to do - install, upgrade, download, reinstall 44// Option is what we are going to do - install, upgrade, download, reinstall
45// package is the package name to install - either a fully qualified path and ipk 45// package is the package name to install - either a fully qualified path and ipk
46// file (if stored locally) or just the name of the package (for a network package) 46// file (if stored locally) or just the name of the package (for a network package)
47// packageName is the package name - (for a network package this will be the same as 47// packageName is the package name - (for a network package this will be the same as
48// package parameter) 48// package parameter)
49// dest is the destination alias (from ipk.conf) 49// dest is the destination alias (from ipk.conf)
50// destDir is the dir that the destination alias points to (used to link to root) 50// destDir is the dir that the destination alias points to (used to link to root)
51// flags is the ipkg options flags 51// flags is the ipkg options flags
52// dir is the directory to run ipkg in (defaults to "") 52// dir is the directory to run ipkg in (defaults to "")
53bool Ipkg :: runIpkg( ) 53bool Ipkg :: runIpkg( )
54{ 54{
55 bool ret = false; 55 bool ret = false;
56 56
57 QDir::setCurrent( "/tmp" ); 57 QDir::setCurrent( "/tmp" );
58 QString cmd = ""; 58 QString cmd = "";
59 59
60 if ( runtimeDir != "" ) 60 if ( runtimeDir != "" )
61 { 61 {
62 cmd += "cd "; 62 cmd += "cd ";
63 cmd += runtimeDir; 63 cmd += runtimeDir;
64 cmd += " ; "; 64 cmd += " ; ";
65 } 65 }
66 cmd += "ipkg"; 66 cmd += "ipkg";
67 67
68 if ( option != "update" && option != "download" && option != "upgrade" ) 68 if ( option != "update" && option != "download" && option != "upgrade" )
69 { 69 {
70 cmd += " -dest "+ destination; 70 cmd += " -dest "+ destination;
71 cmd += " -force-defaults"; 71 cmd += " -force-defaults";
72 72
73 if ( flags & FORCE_DEPENDS ) 73 if ( flags & FORCE_DEPENDS )
74 cmd += " -force-depends"; 74 cmd += " -force-depends";
75 if ( flags & FORCE_REINSTALL ) 75 if ( flags & FORCE_REINSTALL )
76 cmd += " -force-reinstall"; 76 cmd += " -force-reinstall";
77 if ( flags & FORCE_REMOVE ) 77 if ( flags & FORCE_REMOVE )
78 cmd += " -force-removal-of-essential-packages"; 78 cmd += " -force-removal-of-essential-packages";
79 if ( flags & FORCE_OVERWRITE ) 79 if ( flags & FORCE_OVERWRITE )
80 cmd += " -force-overwrite"; 80 cmd += " -force-overwrite";
81 81
82 // Handle make links 82 // Handle make links
83 // Rules - If make links is switched on, create links to root 83 // Rules - If make links is switched on, create links to root
84 // if destDir is NOT / 84 // if destDir is NOT /
85 if ( flags & MAKE_LINKS ) 85 if ( flags & MAKE_LINKS )
86 { 86 {
87 // If destDir == / turn off make links as package is being insalled 87 // If destDir == / turn off make links as package is being insalled
88 // to root already. 88 // to root already.
89 if ( destDir == "/" ) 89 if ( destDir == "/" )
90 flags ^= MAKE_LINKS; 90 flags ^= MAKE_LINKS;
91 } 91 }
92 } 92 }
93 93
94#ifdef X86 94#ifdef X86
95 cmd += " -f "; 95 cmd += " -f ";
96 cmd += IPKG_CONF; 96 cmd += IPKG_CONF;
97#endif 97#endif
98 98
99 99
100 if ( option == "reinstall" ) 100 if ( option == "reinstall" )
101 cmd += " install"; 101 cmd += " install";
102 else 102 else
103 cmd += " " + option; 103 cmd += " " + option;
104 if ( option != "upgrade" ) 104 if ( option != "upgrade" )
105 cmd += " " + package; 105 cmd += " " + package;
106 cmd += " 2>&1"; 106 cmd += " 2>&1";
107 107
108 108
109 emit outputText( QString( "Dealing with package " ) + package ); 109 if ( package != "" )
110 emit outputText( QString( "Dealing with package " ) + package );
110 111
111 qApp->processEvents(); 112 qApp->processEvents();
112 113
113 // If we are removing packages and make links option is selected 114 // If we are removing packages and make links option is selected
114 // create the links 115 // create the links
115 if ( option == "remove" || option == "reinstall" ) 116 if ( option == "remove" || option == "reinstall" )
116 { 117 {
117 createLinks = false; 118 createLinks = false;
118 if ( flags & MAKE_LINKS ) 119 if ( flags & MAKE_LINKS )
119 { 120 {
120 emit outputText( QString( "Removing symbolic links...\n" ) ); 121 emit outputText( QString( "Removing symbolic links...\n" ) );
121 linkPackage( Utils::getPackageNameFromIpkFilename( package ), destination, destDir ); 122 linkPackage( Utils::getPackageNameFromIpkFilename( package ), destination, destDir );
122 emit outputText( QString( " " ) ); 123 emit outputText( QString( " " ) );
123 } 124 }
124 } 125 }
125 126
126 emit outputText( cmd ); 127 emit outputText( cmd );
127 128
128 // Execute command 129 // Execute command
129 dependantPackages = new QList<QString>; 130 dependantPackages = new QList<QString>;
130 dependantPackages->setAutoDelete( true ); 131 dependantPackages->setAutoDelete( true );
131 132
132 ret = executeIpkgCommand( cmd, option ); 133 ret = executeIpkgCommand( cmd, option );
133 134
134 if ( option == "install" || option == "reinstall" ) 135 if ( option == "install" || option == "reinstall" )
135 { 136 {
136 // If we are not removing packages and make links option is selected 137 // If we are not removing packages and make links option is selected
137 // create the links 138 // create the links
138 createLinks = true; 139 createLinks = true;
139 if ( flags & MAKE_LINKS ) 140 if ( flags & MAKE_LINKS )
140 { 141 {
141 emit outputText( " " ); 142 emit outputText( " " );
142 emit outputText( QString( "Creating symbolic links for " )+ package ); 143 emit outputText( QString( "Creating symbolic links for " )+ package );
143 144
144 linkPackage( Utils::getPackageNameFromIpkFilename( package ), destination, destDir ); 145 linkPackage( Utils::getPackageNameFromIpkFilename( package ), destination, destDir );
145 146
146 // link dependant packages that were installed with this release 147 // link dependant packages that were installed with this release
147 QString *pkg; 148 QString *pkg;
148 for ( pkg = dependantPackages->first(); pkg != 0; pkg = dependantPackages->next() ) 149 for ( pkg = dependantPackages->first(); pkg != 0; pkg = dependantPackages->next() )
149 { 150 {
150 if ( *pkg == package ) 151 if ( *pkg == package )
151 continue; 152 continue;
152 emit outputText( " " ); 153 emit outputText( " " );
153 emit outputText( QString( "Creating symbolic links for " )+ (*pkg) ); 154 emit outputText( QString( "Creating symbolic links for " )+ (*pkg) );
154 linkPackage( Utils::getPackageNameFromIpkFilename( *pkg ), destination, destDir ); 155 linkPackage( Utils::getPackageNameFromIpkFilename( *pkg ), destination, destDir );
155 } 156 }
156 } 157 }
157 } 158 }
158 159
159 delete dependantPackages; 160 delete dependantPackages;
160 161
161 emit outputText( QString( "Finished - status=" ) + (ret ? "success" : "failure") ); 162 emit outputText( QString( "Finished - status=" ) + (ret ? "success" : "failure") );
162 emit outputText( "" ); 163 emit outputText( "" );
163 return ret; 164 return ret;
164} 165}
165 166
166 167
167int Ipkg :: executeIpkgCommand( QString &cmd, const QString option ) 168int Ipkg :: executeIpkgCommand( QString &cmd, const QString option )
168{ 169{
169 FILE *fp = NULL; 170 FILE *fp = NULL;
170 char line[130]; 171 char line[130];
171 QString lineStr, lineStrOld; 172 QString lineStr, lineStrOld;
172 int ret = false; 173 int ret = false;
173 174
174 fp = popen( (const char *) cmd, "r"); 175 fp = popen( (const char *) cmd, "r");
175 if ( fp == NULL ) 176 if ( fp == NULL )
176 { 177 {
177 cout << "Couldn't execute " << cmd << "! err = " << fp << endl; 178 cout << "Couldn't execute " << cmd << "! err = " << fp << endl;
178 QString text; 179 QString text;
179 text.sprintf( "Couldn't execute %s! See stdout for error code", (const char *)cmd ); 180 text.sprintf( "Couldn't execute %s! See stdout for error code", (const char *)cmd );
180 emit outputText( text ); 181 emit outputText( text );
181 } 182 }
182 else 183 else
183 { 184 {
184 while ( fgets( line, sizeof line, fp) != NULL ) 185 while ( fgets( line, sizeof line, fp) != NULL )
185 { 186 {
186 lineStr = line; 187 lineStr = line;
187 lineStr=lineStr.left( lineStr.length()-1 ); 188 lineStr=lineStr.left( lineStr.length()-1 );
188 189
189 if ( lineStr != lineStrOld ) 190 if ( lineStr != lineStrOld )
190 { 191 {
191 //See if we're finished 192 //See if we're finished
192 if ( option == "install" || option == "reinstall" ) 193 if ( option == "install" || option == "reinstall" )
193 { 194 {
194 // Need to keep track of any dependant packages that get installed 195 // Need to keep track of any dependant packages that get installed
195 // so that we can create links to them as necessary 196 // so that we can create links to them as necessary
196 if ( lineStr.startsWith( "Installing " ) ) 197 if ( lineStr.startsWith( "Installing " ) )
197 { 198 {
198 cout << "LineStr = " << lineStr << endl; 199 cout << "LineStr = " << lineStr << endl;
199 int start = lineStr.find( " " ) + 1; 200 int start = lineStr.find( " " ) + 1;
200 int end = lineStr.find( " ", start ); 201 int end = lineStr.find( " ", start );
201 QString *package = new QString( lineStr.mid( start, end-start ) ); 202 QString *package = new QString( lineStr.mid( start, end-start ) );
202 dependantPackages->append( package ); 203 dependantPackages->append( package );
203 cout << "installing dependant package <" << *package << ">" << endl; 204 cout << "installing dependant package <" << *package << ">" << endl;
204 } 205 }
205 } 206 }
206 207
207 if ( option == "update" ) 208 if ( option == "update" )
208 { 209 {
209 if (lineStr.contains("Updated list")) 210 if (lineStr.contains("Updated list"))
210 ret = true; 211 ret = true;
211 } 212 }
212 else if ( option == "download" ) 213 else if ( option == "download" )
213 { 214 {
214 if (lineStr.contains("Downloaded")) 215 if (lineStr.contains("Downloaded"))
215 ret = true; 216 ret = true;
216 } 217 }
217 else 218 else
218 { 219 {
219 if (lineStr.contains("Done")) 220 if (lineStr.contains("Done"))
220 ret = true; 221 ret = true;
221 } 222 }
222 223
223 emit outputText( lineStr ); 224 emit outputText( lineStr );
224 } 225 }
225 lineStrOld = lineStr; 226 lineStrOld = lineStr;
226 qApp->processEvents(); 227 qApp->processEvents();
227 } 228 }
228 pclose(fp); 229 pclose(fp);
229 } 230 }
230 231
231 return ret; 232 return ret;
232} 233}
233 234
234 235
235void Ipkg :: linkPackage( const QString &packFileName, const QString &dest, const QString &destDir ) 236void Ipkg :: linkPackage( const QString &packFileName, const QString &dest, const QString &destDir )
236{ 237{
237 if ( dest == "root" || dest == "/" ) 238 if ( dest == "root" || dest == "/" )
diff --git a/noncore/settings/aqpkg/networkpkgmgr.cpp b/noncore/settings/aqpkg/networkpkgmgr.cpp
index 52d95a8..6874ded 100644
--- a/noncore/settings/aqpkg/networkpkgmgr.cpp
+++ b/noncore/settings/aqpkg/networkpkgmgr.cpp
@@ -143,298 +143,299 @@ void NetworkPackageManager :: initGui()
143 } 143 }
144 144
145 vbox->addWidget( packagesList ); 145 vbox->addWidget( packagesList );
146 packagesList->addColumn( "Packages" ); 146 packagesList->addColumn( "Packages" );
147 147
148 QHBoxLayout *hbox2 = new QHBoxLayout( vbox, -1, "HBox2" ); 148 QHBoxLayout *hbox2 = new QHBoxLayout( vbox, -1, "HBox2" );
149 hbox2->addWidget( update ); 149 hbox2->addWidget( update );
150 hbox2->addWidget( download ); 150 hbox2->addWidget( download );
151 hbox2->addWidget( upgrade ); 151 hbox2->addWidget( upgrade );
152 hbox2->addWidget( apply ); 152 hbox2->addWidget( apply );
153} 153}
154 154
155void NetworkPackageManager :: setupConnections() 155void NetworkPackageManager :: setupConnections()
156{ 156{
157 connect( serversList, SIGNAL(activated( int )), this, SLOT(serverSelected( int ))); 157 connect( serversList, SIGNAL(activated( int )), this, SLOT(serverSelected( int )));
158 connect( apply, SIGNAL(released()), this, SLOT(applyChanges()) ); 158 connect( apply, SIGNAL(released()), this, SLOT(applyChanges()) );
159 connect( download, SIGNAL(released()), this, SLOT(downloadPackage()) ); 159 connect( download, SIGNAL(released()), this, SLOT(downloadPackage()) );
160 connect( upgrade, SIGNAL( released()), this, SLOT(upgradePackages()) ); 160 connect( upgrade, SIGNAL( released()), this, SLOT(upgradePackages()) );
161 connect( update, SIGNAL(released()), this, SLOT(updateServer()) ); 161 connect( update, SIGNAL(released()), this, SLOT(updateServer()) );
162} 162}
163 163
164void NetworkPackageManager :: showProgressDialog( char *initialText ) 164void NetworkPackageManager :: showProgressDialog( char *initialText )
165{ 165{
166 if ( !progressDlg ) 166 if ( !progressDlg )
167 progressDlg = new ProgressDlg( this, "Progress", false ); 167 progressDlg = new ProgressDlg( this, "Progress", false );
168 progressDlg->setText( initialText ); 168 progressDlg->setText( initialText );
169 progressDlg->show(); 169 progressDlg->show();
170} 170}
171 171
172 172
173void NetworkPackageManager :: serverSelected( int ) 173void NetworkPackageManager :: serverSelected( int )
174{ 174{
175 packagesList->clear(); 175 packagesList->clear();
176 176
177 // display packages 177 // display packages
178 QString serverName = serversList->currentText(); 178 QString serverName = serversList->currentText();
179 currentlySelectedServer = serverName; 179 currentlySelectedServer = serverName;
180 180
181#ifdef QWS 181#ifdef QWS
182 // read download directory from config file 182 // read download directory from config file
183 Config cfg( "aqpkg" ); 183 Config cfg( "aqpkg" );
184 cfg.setGroup( "settings" ); 184 cfg.setGroup( "settings" );
185 cfg.writeEntry( "selectedServer", currentlySelectedServer ); 185 cfg.writeEntry( "selectedServer", currentlySelectedServer );
186#endif 186#endif
187 187
188 Server *s = dataMgr->getServer( serverName ); 188 Server *s = dataMgr->getServer( serverName );
189// dataMgr->setActiveServer( serverName ); 189// dataMgr->setActiveServer( serverName );
190 190
191 vector<Package> &list = s->getPackageList(); 191 vector<Package> &list = s->getPackageList();
192 vector<Package>::iterator it; 192 vector<Package>::iterator it;
193 for ( it = list.begin() ; it != list.end() ; ++it ) 193 for ( it = list.begin() ; it != list.end() ; ++it )
194 { 194 {
195 QString text = ""; 195 QString text = "";
196 196
197 // If the local server, only display installed packages 197 // If the local server, only display installed packages
198 if ( serverName == LOCAL_SERVER && !it->isInstalled() ) 198 if ( serverName == LOCAL_SERVER && !it->isInstalled() )
199 continue; 199 continue;
200 200
201 text += it->getPackageName(); 201 text += it->getPackageName();
202 if ( it->isInstalled() ) 202 if ( it->isInstalled() )
203 { 203 {
204 text += " (installed)"; 204 text += " (installed)";
205 205
206 // If a different version of package is available, postfix it with an * 206 // If a different version of package is available, postfix it with an *
207 if ( it->getVersion() != it->getInstalledVersion() ) 207 if ( it->getVersion() != it->getInstalledVersion() )
208 text += "*"; 208 text += "*";
209 } 209 }
210 210
211 QCheckListItem *item = new QCheckListItem( packagesList, text, QCheckListItem::CheckBox ); 211 QCheckListItem *item = new QCheckListItem( packagesList, text, QCheckListItem::CheckBox );
212 212
213 if ( it->isInstalled() ) 213 if ( it->isInstalled() )
214 { 214 {
215 QString destName = ""; 215 QString destName = "";
216 if ( it->getLocalPackage() ) 216 if ( it->getLocalPackage() )
217 { 217 {
218 if ( it->getLocalPackage()->getInstalledTo() ) 218 if ( it->getLocalPackage()->getInstalledTo() )
219 destName = it->getLocalPackage()->getInstalledTo()->getDestinationName(); 219 destName = it->getLocalPackage()->getInstalledTo()->getDestinationName();
220 } 220 }
221 else 221 else
222 { 222 {
223 if ( it->getInstalledTo() ) 223 if ( it->getInstalledTo() )
224 destName = it->getInstalledTo()->getDestinationName(); 224 destName = it->getInstalledTo()->getDestinationName();
225 } 225 }
226 if ( destName != "" ) 226 if ( destName != "" )
227 new QCheckListItem( item, QString( "Installed To - " ) + destName ); 227 new QCheckListItem( item, QString( "Installed To - " ) + destName );
228 } 228 }
229 229
230 if ( !it->isPackageStoredLocally() ) 230 if ( !it->isPackageStoredLocally() )
231 new QCheckListItem( item, QString( "Description - " ) + it->getDescription() ); 231 new QCheckListItem( item, QString( "Description - " ) + it->getDescription() );
232 else 232 else
233 new QCheckListItem( item, QString( "Filename - " ) + it->getFilename() ); 233 new QCheckListItem( item, QString( "Filename - " ) + it->getFilename() );
234 234
235 new QCheckListItem( item, QString( "V. Available - " ) + it->getVersion() ); 235 new QCheckListItem( item, QString( "V. Available - " ) + it->getVersion() );
236 if ( it->getLocalPackage() ) 236 if ( it->getLocalPackage() )
237 { 237 {
238 if ( it->isInstalled() ) 238 if ( it->isInstalled() )
239 new QCheckListItem( item, QString( "V. Installed - " ) + it->getInstalledVersion() ); 239 new QCheckListItem( item, QString( "V. Installed - " ) + it->getInstalledVersion() );
240 } 240 }
241 packagesList->insertItem( item ); 241 packagesList->insertItem( item );
242 } 242 }
243 243
244 // If the local server or the local ipkgs server disable the download button 244 // If the local server or the local ipkgs server disable the download button
245 if ( serverName == LOCAL_SERVER ) 245 if ( serverName == LOCAL_SERVER )
246 { 246 {
247 upgrade->setEnabled( false ); 247 upgrade->setEnabled( false );
248 download->setText( "Download" ); 248 download->setText( "Download" );
249 download->setEnabled( false ); 249 download->setEnabled( false );
250 } 250 }
251 else if ( serverName == LOCAL_IPKGS ) 251 else if ( serverName == LOCAL_IPKGS )
252 { 252 {
253 upgrade->setEnabled( false ); 253 upgrade->setEnabled( false );
254 download->setEnabled( true ); 254 download->setEnabled( true );
255 download->setText( "Remove" ); 255 download->setText( "Remove" );
256 } 256 }
257 else 257 else
258 { 258 {
259 upgrade->setEnabled( true ); 259 upgrade->setEnabled( true );
260 download->setEnabled( true ); 260 download->setEnabled( true );
261 download->setText( "Download" ); 261 download->setText( "Download" );
262 } 262 }
263} 263}
264 264
265void NetworkPackageManager :: updateServer() 265void NetworkPackageManager :: updateServer()
266{ 266{
267 QString serverName = serversList->currentText(); 267 QString serverName = serversList->currentText();
268 268
269 // Update the current server 269 // Update the current server
270 // Display dialog 270 // Display dialog
271 ProgressDlg *dlg = new ProgressDlg( this ); 271// ProgressDlg *progDlg = new ProgressDlg( this );
272 QString status = "Updating package lists..."; 272// QString status = "Updating package lists...";
273 dlg->show(); 273// progDlg->show();
274 dlg->setText( status ); 274// progDlg->setText( status );
275 275
276 // Disable buttons to stop silly people clicking lots on them :) 276 // Disable buttons to stop silly people clicking lots on them :)
277 277
278 // First, write out ipkg_conf file so that ipkg can use it 278 // First, write out ipkg_conf file so that ipkg can use it
279 dataMgr->writeOutIpkgConf(); 279 dataMgr->writeOutIpkgConf();
280 280
281 QString option = "update";
282 QString dummy = "";
283 Ipkg ipkg; 281 Ipkg ipkg;
284 connect( &ipkg, SIGNAL(outputText(const QString &)), this, SLOT(displayText(const QString &))); 282 ipkg.setOption( "update" );
285 ipkg.setOption( option );
286 283
287 ipkg.runIpkg( ); 284 InstallDlgImpl dlg( &ipkg, "Refreshing server package lists", this, "Upgrade", true );
285 dlg.showDlg();
288 286
289 // Reload data 287 // Reload data
290 dataMgr->reloadServerData( serversList->currentText() ); 288 dataMgr->reloadServerData( serversList->currentText() );
291 serverSelected(-1); 289 serverSelected(-1);
292 delete dlg; 290// delete progDlg;
293} 291}
294 292
295void NetworkPackageManager :: upgradePackages() 293void NetworkPackageManager :: upgradePackages()
296{ 294{
297 // We're gonna do an upgrade of all packages 295 // We're gonna do an upgrade of all packages
298 // First warn user that this isn't recommended 296 // First warn user that this isn't recommended
299 QString text = "WARNING: Upgrading while\nOpie/Qtopia is running\nis NOT recommended!\n\nAre you sure?\n"; 297 QString text = "WARNING: Upgrading while\nOpie/Qtopia is running\nis NOT recommended!\n\nAre you sure?\n";
300 QMessageBox warn("Warning", text, QMessageBox::Warning, 298 QMessageBox warn("Warning", text, QMessageBox::Warning,
301 QMessageBox::Yes, 299 QMessageBox::Yes,
302 QMessageBox::No | QMessageBox::Escape | QMessageBox::Default , 300 QMessageBox::No | QMessageBox::Escape | QMessageBox::Default ,
303 0, this ); 301 0, this );
304 warn.adjustSize(); 302 warn.adjustSize();
305 303
306 if ( warn.exec() == QMessageBox::Yes ) 304 if ( warn.exec() == QMessageBox::Yes )
307 { 305 {
308 // First, write out ipkg_conf file so that ipkg can use it 306 // First, write out ipkg_conf file so that ipkg can use it
309 dataMgr->writeOutIpkgConf(); 307 dataMgr->writeOutIpkgConf();
310 308
311 // Now run upgrade 309 // Now run upgrade
312 InstallDlgImpl dlg( this, "Upgrade", true ); 310 Ipkg ipkg;
311 ipkg.setOption( "upgrade" );
312
313 InstallDlgImpl dlg( &ipkg, "Upgrading installed packages", this, "Upgrade", true );
313 dlg.showDlg(); 314 dlg.showDlg();
314 315
315 // Reload data 316 // Reload data
316 dataMgr->reloadServerData( LOCAL_SERVER ); 317 dataMgr->reloadServerData( LOCAL_SERVER );
317 318
318 dataMgr->reloadServerData( serversList->currentText() ); 319 dataMgr->reloadServerData( serversList->currentText() );
319 serverSelected(-1); 320 serverSelected(-1);
320 } 321 }
321} 322}
322 323
323 324
324void NetworkPackageManager :: downloadPackage() 325void NetworkPackageManager :: downloadPackage()
325{ 326{
326 if ( download->text() == "Download" ) 327 if ( download->text() == "Download" )
327 { 328 {
328 // First, write out ipkg_conf file so that ipkg can use it 329 // First, write out ipkg_conf file so that ipkg can use it
329 dataMgr->writeOutIpkgConf(); 330 dataMgr->writeOutIpkgConf();
330 331
331 // Display dialog to user asking where to download the files to 332 // Display dialog to user asking where to download the files to
332 bool ok = FALSE; 333 bool ok = FALSE;
333 QString dir = ""; 334 QString dir = "";
334#ifdef QWS 335#ifdef QWS
335 // read download directory from config file 336 // read download directory from config file
336 Config cfg( "aqpkg" ); 337 Config cfg( "aqpkg" );
337 cfg.setGroup( "settings" ); 338 cfg.setGroup( "settings" );
338 dir = cfg.readEntry( "downloadDir", "/home/root/Documents/application/ipkg" ); 339 dir = cfg.readEntry( "downloadDir", "/home/root/Documents/application/ipkg" );
339#endif 340#endif
340 341
341 QString text = InputDialog::getText( tr( "Download to where" ), tr( "Enter path to download to" ), dir, &ok, this ); 342 QString text = InputDialog::getText( tr( "Download to where" ), tr( "Enter path to download to" ), dir, &ok, this );
342 if ( ok && !text.isEmpty() ) 343 if ( ok && !text.isEmpty() )
343 dir = text; // user entered something and pressed ok 344 dir = text; // user entered something and pressed ok
344 else 345 else
345 return; // user entered nothing or pressed cancel 346 return; // user entered nothing or pressed cancel
346 347
347#ifdef QWS 348#ifdef QWS
348 // Store download directory in config file 349 // Store download directory in config file
349 cfg.writeEntry( "downloadDir", dir ); 350 cfg.writeEntry( "downloadDir", dir );
350#endif 351#endif
351 352
352 // Get starting directory 353 // Get starting directory
353 char initDir[PATH_MAX]; 354 char initDir[PATH_MAX];
354 getcwd( initDir, PATH_MAX ); 355 getcwd( initDir, PATH_MAX );
355 356
356 // Download each package 357 // Download each package
357 Ipkg ipkg; 358 Ipkg ipkg;
358 connect( &ipkg, SIGNAL(outputText(const QString &)), this, SLOT(displayText(const QString &))); 359 connect( &ipkg, SIGNAL(outputText(const QString &)), this, SLOT(displayText(const QString &)));
359 360
360 ipkg.setOption( "download" ); 361 ipkg.setOption( "download" );
361 ipkg.setRuntimeDirectory( dir ); 362 ipkg.setRuntimeDirectory( dir );
362 for ( QCheckListItem *item = (QCheckListItem *)packagesList->firstChild(); 363 for ( QCheckListItem *item = (QCheckListItem *)packagesList->firstChild();
363 item != 0 ; 364 item != 0 ;
364 item = (QCheckListItem *)item->nextSibling() ) 365 item = (QCheckListItem *)item->nextSibling() )
365 { 366 {
366 if ( item->isOn() ) 367 if ( item->isOn() )
367 { 368 {
368 QString name = item->text(); 369 QString name = item->text();
369 int pos = name.find( "*" ); 370 int pos = name.find( "*" );
370 name.truncate( pos ); 371 name.truncate( pos );
371 372
372 // if (there is a (installed), remove it 373 // if (there is a (installed), remove it
373 pos = name.find( "(installed)" ); 374 pos = name.find( "(installed)" );
374 if ( pos > 0 ) 375 if ( pos > 0 )
375 name.truncate( pos - 1 ); 376 name.truncate( pos - 1 );
376 377
377 ipkg.setPackage( name ); 378 ipkg.setPackage( name );
378 ipkg.runIpkg( ); 379 ipkg.runIpkg( );
379 } 380 }
380 } 381 }
381 } 382 }
382 else if ( download->text() == "Remove" ) 383 else if ( download->text() == "Remove" )
383 { 384 {
384 for ( QCheckListItem *item = (QCheckListItem *)packagesList->firstChild(); 385 for ( QCheckListItem *item = (QCheckListItem *)packagesList->firstChild();
385 item != 0 ; 386 item != 0 ;
386 item = (QCheckListItem *)item->nextSibling() ) 387 item = (QCheckListItem *)item->nextSibling() )
387 { 388 {
388 if ( item->isOn() ) 389 if ( item->isOn() )
389 { 390 {
390 QString name = item->text(); 391 QString name = item->text();
391 int pos = name.find( "*" ); 392 int pos = name.find( "*" );
392 name.truncate( pos ); 393 name.truncate( pos );
393 394
394 // if (there is a (installed), remove it 395 // if (there is a (installed), remove it
395 pos = name.find( "(installed)" ); 396 pos = name.find( "(installed)" );
396 if ( pos > 0 ) 397 if ( pos > 0 )
397 name.truncate( pos - 1 ); 398 name.truncate( pos - 1 );
398 399
399 Package *p = dataMgr->getServer( serversList->currentText() )->getPackage( name ); 400 Package *p = dataMgr->getServer( serversList->currentText() )->getPackage( name );
400 QFile f( p->getFilename() ); 401 QFile f( p->getFilename() );
401 f.remove(); 402 f.remove();
402 } 403 }
403 } 404 }
404 } 405 }
405 406
406 dataMgr->reloadServerData( LOCAL_IPKGS ); 407 dataMgr->reloadServerData( LOCAL_IPKGS );
407 serverSelected( -1 ); 408 serverSelected( -1 );
408} 409}
409 410
410 411
411void NetworkPackageManager :: applyChanges() 412void NetworkPackageManager :: applyChanges()
412{ 413{
413 stickyOption = ""; 414 stickyOption = "";
414 415
415 // First, write out ipkg_conf file so that ipkg can use it 416 // First, write out ipkg_conf file so that ipkg can use it
416 dataMgr->writeOutIpkgConf(); 417 dataMgr->writeOutIpkgConf();
417 418
418 // Now for each selected item 419 // Now for each selected item
419 // deal with it 420 // deal with it
420 421
421 vector<InstallData> workingPackages; 422 vector<InstallData> workingPackages;
422 for ( QCheckListItem *item = (QCheckListItem *)packagesList->firstChild(); 423 for ( QCheckListItem *item = (QCheckListItem *)packagesList->firstChild();
423 item != 0 ; 424 item != 0 ;
424 item = (QCheckListItem *)item->nextSibling() ) 425 item = (QCheckListItem *)item->nextSibling() )
425 { 426 {
426 if ( item->isOn() ) 427 if ( item->isOn() )
427 { 428 {
428 InstallData data = dealWithItem( item ); 429 InstallData data = dealWithItem( item );
429 workingPackages.push_back( data ); 430 workingPackages.push_back( data );
430 } 431 }
431 } 432 }
432 433
433 if ( workingPackages.size() == 0 ) 434 if ( workingPackages.size() == 0 )
434 { 435 {
435 // Nothing to do 436 // Nothing to do
436 QMessageBox::information( this, "Nothing to do", 437 QMessageBox::information( this, "Nothing to do",
437 "No packages selected", "OK" ); 438 "No packages selected", "OK" );
438 439
439 return; 440 return;
440 } 441 }