summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/unsupported/oipkg/package.cpp2
-rw-r--r--noncore/unsupported/oipkg/pksettings.cpp5
2 files changed, 3 insertions, 4 deletions
diff --git a/noncore/unsupported/oipkg/package.cpp b/noncore/unsupported/oipkg/package.cpp
index 1054a1d..3effb73 100644
--- a/noncore/unsupported/oipkg/package.cpp
+++ b/noncore/unsupported/oipkg/package.cpp
@@ -1,479 +1,479 @@
1/*************************************************************************** 1/***************************************************************************
2 * * 2 * *
3 * This program is free software; you can redistribute it and/or modify * 3 * This program is free software; you can redistribute it and/or modify *
4 * it under the terms of the GNU General Public License as published by * 4 * it under the terms of the GNU General Public License as published by *
5 * the Free Software Foundation; either version 2 of the License, or * 5 * the Free Software Foundation; either version 2 of the License, or *
6 * (at your option) any later version. * 6 * (at your option) any later version. *
7 * * 7 * *
8 ***************************************************************************/ 8 ***************************************************************************/
9// (c) 2002 Patrick S. Vogt <tille@handhelds.org> 9// (c) 2002 Patrick S. Vogt <tille@handhelds.org>
10#include "package.h" 10#include "package.h"
11 11
12#include <qpe/process.h> 12#include <qpe/process.h>
13#include <qpe/stringutil.h> 13#include <qpe/stringutil.h>
14#include <qfile.h> 14#include <qfile.h>
15#include <qtextstream.h> 15#include <qtextstream.h>
16#include <stdlib.h> 16#include <stdlib.h>
17#include <unistd.h> 17#include <unistd.h>
18 18
19#include "debug.h" 19#include "debug.h"
20 20
21Package::Package( QObject *parent, const char *name ) 21Package::Package( QObject *parent, const char *name )
22 : QObject(parent,name) 22 : QObject(parent,name)
23{ 23{
24 24
25} 25}
26 26
27Package::~Package() 27Package::~Package()
28{ 28{
29} 29}
30 30
31Package::Package( PackageManagerSettings *s, QObject *parent, const char *name ) 31Package::Package( PackageManagerSettings *s, QObject *parent, const char *name )
32 : QObject(parent,name) 32 : QObject(parent,name)
33{ 33{
34 Package(parent,name); 34 Package(parent,name);
35 init(s); 35 init(s);
36} 36}
37 37
38void Package::init( PackageManagerSettings *s ) 38void Package::init( PackageManagerSettings *s )
39{ 39{
40 settings = s; 40 settings = s;
41 _size = ""; 41 _size = "";
42 _section = ""; 42 _section = "";
43 _subsection = ""; 43 _subsection = "";
44 _shortDesc = ""; 44 _shortDesc = "";
45 _desc = ""; 45 _desc = "";
46 _name = ""; 46 _name = "";
47 _toProcess = false; 47 _toProcess = false;
48 _useFileName = false; 48 _useFileName = false;
49 _old = false; 49 _old = false;
50 _status = ""; 50 _status = "";
51 _dest = settings->getDestinationName(); 51 _dest = settings->getDestinationName();
52 _link = settings->createLinks(); 52 _link = settings->createLinks();
53 _versions=0; 53 _versions=0;
54 _version=""; 54 _version="";
55} 55}
56 56
57Package::Package( QStringList pack, PackageManagerSettings *s , QObject *parent, const char *name ) 57Package::Package( QStringList pack, PackageManagerSettings *s , QObject *parent, const char *name )
58 : QObject(parent,name) 58 : QObject(parent,name)
59{ 59{
60 init(s); 60 init(s);
61 parsePackage( pack ); 61 parsePackage( pack );
62} 62}
63 63
64Package::Package( QString n, PackageManagerSettings *s, QObject *parent, const char *name ) 64Package::Package( QString n, PackageManagerSettings *s, QObject *parent, const char *name )
65 : QObject(parent,name) 65 : QObject(parent,name)
66{ 66{
67 init(s); 67 init(s);
68 if ( !QFile::exists( n ) ) 68 if ( !QFile::exists( n ) )
69 { 69 {
70 _name = QString( n ); 70 _name = QString( n );
71 }else{ 71 }else{
72 pvDebug(4,"remote file: "+n); 72 pvDebug(4,"remote file: "+n);
73 parseIpkgFile( n ); 73 parseIpkgFile( n );
74 _useFileName = true; 74 _useFileName = true;
75 _fileName = QString( n ); 75 _fileName = QString( n );
76 } 76 }
77} 77}
78 78
79Package::Package( Package *pi, QObject *parent, const char *name ) 79Package::Package( Package *pi, QObject *parent, const char *name )
80 : QObject(parent,name) 80 : QObject(parent,name)
81{ 81{
82 init(pi->settings); 82 init(pi->settings);
83 copyValues( pi ); 83 copyValues( pi );
84} 84}
85 85
86 86
87void Package::setValue( QString n, QString t ) 87void Package::setValue( QString n, QString t )
88{ 88{
89 if ( n == "Package" ) 89 if ( n == "Package" )
90 { 90 {
91 _name = QString( t ); 91 _name = QString( t );
92 }else if ( n == "Installed-Size" ) 92 }else if ( n == "Installed-Size" )
93 { 93 {
94 _size = t; 94 _size = t;
95// }else if ( n == "Priority") 95// }else if ( n == "Priority")
96// { 96// {
97 97
98 }else if ( n == "Section") 98 }else if ( n == "Section")
99 { 99 {
100 setSection( t ); 100 setSection( t );
101// }else if ( n == "Maintainer") 101// }else if ( n == "Maintainer")
102// { 102// {
103// 103//
104// }else if ( n == "Architecture") 104// }else if ( n == "Architecture")
105// { 105// {
106 106
107 }else if ( n == "Version") 107 }else if ( n == "Version")
108 { 108 {
109 _version = t; 109 _version = t;
110// }else if ( n == "Pre-Depends") 110// }else if ( n == "Pre-Depends")
111// { 111// {
112// 112//
113// }else if ( n == "Depends") 113// }else if ( n == "Depends")
114// { 114// {
115 115
116 }else if ( n == "Filename") 116 }else if ( n == "Filename")
117 { 117 {
118 _fileName = t; 118 _fileName = t;
119// }else if ( n == "Size") 119// }else if ( n == "Size")
120 // { 120 // {
121// 121//
122 //}else if ( n == "MD5Sum") 122 //}else if ( n == "MD5Sum")
123 //{ 123 //{
124 124
125 }else if ( n == "Description") 125 }else if ( n == "Description")
126 { 126 {
127 setDesc( t ); 127 setDesc( t );
128 }else if ( n == "Status") 128 }else if ( n == "Status")
129 { 129 {
130 if ( installed() ) return; 130 if ( installed() ) return;
131 _status = t; 131 _status = t;
132// }else if ( n == "Essential") 132// }else if ( n == "Essential")
133// { 133// {
134 134
135 }else{ 135 }else{
136 _values.insert(n,new QString(t)); 136 _values.insert(n,new QString(t));
137 } 137 }
138} 138}
139 139
140QString Package::name() 140QString Package::name()
141{ 141{
142 if (_displayName.isEmpty() ) return _name; 142 if (_displayName.isEmpty() ) return _name;
143 else return _displayName; 143 else return _displayName;
144} 144}
145 145
146 146
147QString Package::installName() 147QString Package::installName()
148{ 148{
149 if (_useFileName) return _fileName; 149 if (_useFileName) return _fileName;
150 else return _name; 150 else return _name;
151} 151}
152 152
153QString Package::packageName() 153QString Package::packageName()
154{ 154{
155 QString pn = installName(); 155 QString pn = installName();
156 pn = pn.right(pn.length()-pn.findRev("/")); 156 pn = pn.right(pn.length()-pn.findRev("/"));
157 pn = pn.left(pn.find("_")); 157 pn = pn.left(pn.find("_"));
158 return pn; 158 return pn;
159} 159}
160 160
161bool Package::installed() 161bool Package::installed()
162{ 162{
163 if (_status.contains("installed")) 163 if (_status.contains("installed"))
164 { 164 {
165 if (_status.contains("not-installed")) 165 if (_status.contains("not-installed"))
166 { 166 {
167 _toProcess = true; 167 _toProcess = true;
168 return false; 168 return false;
169 } 169 }
170 else return true; 170 else return true;
171 } 171 }
172 else 172 else
173 if (_versions) 173 if (_versions)
174 { 174 {
175 QDictIterator<Package> other( *_versions ); 175 QDictIterator<Package> other( *_versions );
176 while ( other.current() ) 176 while ( other.current() )
177 { 177 {
178 if (other.current()->status().contains("installed") 178 if (other.current()->status().contains("installed")
179 && other.current()->version() == version()) 179 && other.current()->version() == version())
180 return true; 180 return true;
181 ++other; 181 ++other;
182 } 182 }
183 } 183 }
184 return false; 184 return false;
185} 185}
186 186
187bool Package::otherInstalled() 187bool Package::otherInstalled()
188{ 188{
189 if (_versions) 189 if (_versions)
190 { 190 {
191 QDictIterator<Package> other( *_versions ); 191 QDictIterator<Package> other( *_versions );
192 while ( other.current() ) 192 while ( other.current() )
193 { 193 {
194 if (other.current()->installed()) return true; 194 if (other.current()->installed()) return true;
195 ++other; 195 ++other;
196 } 196 }
197 } 197 }
198 return false; 198 return false;
199} 199}
200 200
201void Package::setDesc( QString s ) 201void Package::setDesc( QString s )
202{ 202{
203 _desc = s; 203 _desc = s;
204 _shortDesc = s.left( s.find("\n") ); 204 _shortDesc = s.left( s.find("\n") );
205} 205}
206 206
207QString Package::desc() 207QString Package::desc()
208{ 208{
209 return _desc; 209 return _desc;
210} 210}
211 211
212QString Package::shortDesc() 212QString Package::shortDesc()
213{ 213{
214 return _shortDesc; 214 return _shortDesc;
215} 215}
216 216
217QString Package::size() 217QString Package::size()
218{ 218{
219 return _size; 219 return _size;
220} 220}
221 221
222 222
223QString Package::version() 223QString Package::version()
224{ 224{
225 return _version; 225 return _version;
226} 226}
227 227
228QString Package::sizeUnits() 228QString Package::sizeUnits()
229{ 229{
230 int i = _size.toInt(); 230 int i = _size.toInt();
231 int c = 0; 231 int c = 0;
232 QString ret; 232 QString ret;
233 QStringList unit; 233 QStringList unit;
234 unit << "B" << "KB" << "MB" << "GB" << "TB"; //prepair for the future ;) 234 unit << "B" << "KB" << "MB" << "GB" << "TB"; //prepair for the future ;)
235 while (i > 1) 235 while (i > 1)
236 { 236 {
237 ret=QString::number(i)+" "+unit[c]; 237 ret=QString::number(i)+" "+unit[c];
238 c++; 238 c++;
239 i /= 1024; 239 i /= 1024;
240 } 240 }
241 return ret; 241 return ret;
242} 242}
243 243
244bool Package::toProcess() 244bool Package::toProcess()
245{ 245{
246 return _toProcess; 246 return _toProcess;
247} 247}
248 248
249bool Package::toRemove() 249bool Package::toRemove()
250{ 250{
251 if ( _toProcess && installed() ) return true; 251 if ( _toProcess && installed() ) return true;
252 else return false; 252 else return false;
253} 253}
254 254
255bool Package::toInstall() 255bool Package::toInstall()
256{ 256{
257 if ( _toProcess && !installed() ) return true; 257 if ( _toProcess && !installed() ) return true;
258 else return false; 258 else return false;
259} 259}
260 260
261void Package::toggleProcess() 261void Package::toggleProcess()
262{ 262{
263 _toProcess = ! _toProcess; 263 _toProcess = ! _toProcess;
264} 264}
265 265
266 266
267 267
268void Package::copyValues( Package* pack ) 268void Package::copyValues( Package* pack )
269{ 269{
270 if (_size.isEmpty() && !pack->_size.isEmpty()) _size = QString( pack->_size ); 270 if (_size.isEmpty() && !pack->_size.isEmpty()) _size = QString( pack->_size );
271 if (_section.isEmpty() && !pack->_section.isEmpty()) _section = QString( pack->_section ); 271 if (_section.isEmpty() && !pack->_section.isEmpty()) _section = QString( pack->_section );
272 if (_subsection.isEmpty()&& !pack->_subsection.isEmpty()) _subsection = QString( pack->_subsection ); 272 if (_subsection.isEmpty()&& !pack->_subsection.isEmpty()) _subsection = QString( pack->_subsection );
273 if (_shortDesc.isEmpty() && !pack->_shortDesc.isEmpty()) _shortDesc = QString( pack->_shortDesc ); 273 if (_shortDesc.isEmpty() && !pack->_shortDesc.isEmpty()) _shortDesc = QString( pack->_shortDesc );
274 if (_desc.isEmpty() && !pack->_desc.isEmpty()) _desc = QString( pack->_desc ); 274 if (_desc.isEmpty() && !pack->_desc.isEmpty()) _desc = QString( pack->_desc );
275 if (_name.isEmpty() && !pack->_name.isEmpty()) _name = QString( pack->_name ); 275 if (_name.isEmpty() && !pack->_name.isEmpty()) _name = QString( pack->_name );
276 if (_dest.isEmpty() && !pack->_dest.isEmpty()) _dest= QString( pack->_dest ); 276 if (_dest.isEmpty() && !pack->_dest.isEmpty()) _dest= QString( pack->_dest );
277 if (_displayName.isEmpty()&& !pack->_displayName.isEmpty()) _displayName = QString( pack->_displayName ); 277 if (_displayName.isEmpty()&& !pack->_displayName.isEmpty()) _displayName = QString( pack->_displayName );
278 if (_fileName.isEmpty() && !pack->_fileName.isEmpty()) _fileName = QString( pack->_fileName ); 278 if (_fileName.isEmpty() && !pack->_fileName.isEmpty()) _fileName = QString( pack->_fileName );
279 if (_version.isEmpty() && !pack->_version.isEmpty()) _version = QString( pack->_version ); 279 if (_version.isEmpty() && !pack->_version.isEmpty()) _version = QString( pack->_version );
280 if (_values.isEmpty() && !pack->_values.isEmpty())_values = QDict<QString>( pack->_values ); 280 if (_values.isEmpty() && !pack->_values.isEmpty())_values = QDict<QString>( pack->_values );
281 if (!installed() && _status.isEmpty() && !pack->_status.isEmpty()) _status = QString( pack->_status ); 281 if (!installed() && _status.isEmpty() && !pack->_status.isEmpty()) _status = QString( pack->_status );
282} 282}
283 283
284QString Package::section() 284QString Package::section()
285{ 285{
286 return _section; 286 return _section;
287} 287}
288 288
289void Package::setSection( QString s) 289void Package::setSection( QString s)
290{ 290{
291 int i = s.find("/"); 291 int i = s.find("/");
292 if ( i > 0 ) 292 if ( i > 0 )
293 { 293 {
294 _section = s.left(i); 294 _section = s.left(i);
295 _subsection = s.mid(i+1); 295 _subsection = s.mid(i+1);
296 }else{ 296 }else{
297 _section = s; 297 _section = s;
298 _subsection = ""; 298 _subsection = "";
299 } 299 }
300} 300}
301 301
302QString Package::subSection() 302QString Package::subSection()
303{ 303{
304 return _subsection; 304 return _subsection;
305} 305}
306 306
307void Package::parsePackage( QStringList pack ) 307void Package::parsePackage( QStringList pack )
308{ 308{
309 if ( pack.isEmpty() ) return; 309 if ( pack.isEmpty() ) return;
310 int count = pack.count(); 310 int count = pack.count();
311 for( int i = 0; i < count; i++ ) 311 for( int i = 0; i < count; i++ )
312 { 312 {
313 QString line = pack[i]; 313 QString line = pack[i];
314 int sep = line.find( QRegExp(":[\t ]+") ); 314 int sep = line.find( QRegExp(":[\t ]+") );
315 if ( sep >= 0 ) 315 if ( sep >= 0 )
316 { 316 {
317 QString tag = line.left(sep); 317 QString tag = line.left(sep);
318 QString value = line.mid(sep+2).simplifyWhiteSpace(); 318 QString value = line.mid(sep+2).simplifyWhiteSpace();
319 setValue( tag, value ); 319 setValue( tag, value );
320 }else{ 320 }else{
321 } 321 }
322 } 322 }
323 return; 323 return;
324} 324}
325 325
326QString Package::details() 326QString Package::details()
327{ 327{
328 QString status; 328 QString status;
329 Process ipkg_status(QStringList() << "ipkg" << "info" << name() ); 329 Process ipkg_status(QStringList() << "ipkg" << "info" << name() );
330 QString description; 330 QString description;
331 if ( ipkg_status.exec("",status) ) 331 if ( ipkg_status.exec("",status) )
332 { 332 {
333 QStringList lines = QStringList::split('\n',status,TRUE); 333 QStringList lines = QStringList::split('\n',status,TRUE);
334 for (QStringList::Iterator it = lines.begin(); it!=lines.end(); ++it) { 334 for (QStringList::Iterator it = lines.begin(); it!=lines.end(); ++it) {
335 QString line = *it; 335 QString line = *it;
336 if ( line == " ." ) 336 if ( line == " ." )
337 { 337 {
338 description.append("<p>"); 338 description.append("<p>");
339 } else 339 } else
340 if ( line[0] == ' ' || line[0] == '\t' ) 340 if ( line[0] == ' ' || line[0] == '\t' )
341 { 341 {
342 // continuation 342 // continuation
343 description.append(" "); 343 description.append(" ");
344 description.append(Qtopia::escapeString(line)); 344 description.append(Qtopia::escapeString(line));
345 } else { 345 } else {
346 int sep = line.find(QRegExp(":[\t ]+")); 346 int sep = line.find(QRegExp(":[\t ]+"));
347 if ( sep >= 0 ) 347 if ( sep >= 0 )
348 { 348 {
349 QString tag = line.left(sep); 349 QString tag = line.left(sep);
350 description.append("<br>"); 350 description.append("<br>");
351 description.append("<b>"); 351 description.append("<b>");
352 description.append(Qtopia::escapeString(tag)); 352 description.append(Qtopia::escapeString(tag));
353 description.append(":</b> "); 353 description.append(":</b> ");
354 description.append(Qtopia::escapeString(line.mid(sep+2))); 354 description.append(Qtopia::escapeString(line.mid(sep+2)));
355 } else { 355 } else {
356 description.append(" "); 356 description.append(" ");
357 description.append(Qtopia::escapeString(line)); 357 description.append(Qtopia::escapeString(line));
358 } 358 }
359 } 359 }
360 } 360 }
361 } 361 }
362 return description; 362 return description;
363} 363}
364 364
365void Package::processed() 365void Package::processed()
366{ 366{
367 _toProcess = false; 367 _toProcess = false;
368 //hack, but we're not writing status anyway... 368 //hack, but we're not writing status anyway...
369 if ( installed() ) _status = "install"; 369 if ( installed() ) _status = "install";
370 else _status = "installed"; 370 else _status = "installed";
371} 371}
372 372
373QString Package::dest() 373QString Package::dest()
374{ 374{
375 if ( installed()||(!installed() && _toProcess) ) 375 if ( installed()||(!installed() && _toProcess) )
376 return _dest!=""?_dest:settings->getDestinationName(); 376 return _dest!=""?_dest:settings->getDestinationName();
377 else return ""; 377 else return "";
378} 378}
379 379
380void Package::setDest( QString d ) 380void Package::setDest( QString d )
381{ 381{
382 if ( d == "remote") _useFileName = true; 382 if ( d == "remote") _useFileName = true;
383 else _dest = d; 383 else _dest = d;
384} 384}
385 385
386void Package::setOn() 386void Package::setOn()
387{ 387{
388 _toProcess = true; 388 _toProcess = true;
389} 389}
390 390
391bool Package::link() 391bool Package::link()
392{ 392{
393 if ( _dest == "root" || (!installed() && !_toProcess) ) return false; 393 if ( _dest == "root" || (!installed() && !_toProcess) ) return false;
394 return _link; 394 return _link;
395} 395}
396 396
397void Package::setLink(bool b) 397void Package::setLink(bool b)
398{ 398{
399 _link = b; 399 _link = b;
400} 400}
401 401
402void Package::parseIpkgFile( QString file) 402void Package::parseIpkgFile( QString file)
403{ 403{
404// 20020830 404// 20020830
405// a quick hack to make oipkg understand the new ipk format 405// a quick hack to make oipkg understand the new ipk format
406// neu: ar pf PACKAGE control.tar.gz | tar xfOz - ./control > /tmp/control 406// neu: ar pf PACKAGE control.tar.gz | tar xfOz - ./control > /tmp/control
407 if (! system("ar pf "+file+" control.tar.gz | tar xfOz - ./control > /tmp/control") ) 407 if (system("ar pf "+file+" control.tar.gz | tar xfOz - ./control > /tmp/control") != 0)
408 { 408 {
409//#old tar ipk format 409//#old tar ipk format
410 system("tar xzf "+file+" -C /tmp"); 410 system("tar xzf "+file+" -C /tmp");
411 system("tar xzf /tmp/control.tar.gz -C /tmp"); 411 system("tar xzf /tmp/control.tar.gz -C /tmp");
412 } 412 }
413 QFile f("/tmp/control"); 413 QFile f("/tmp/control");
414 if ( f.open(IO_ReadOnly) ) 414 if ( f.open(IO_ReadOnly) )
415 { 415 {
416 QTextStream t( &f ); 416 QTextStream t( &f );
417 QStringList pack; 417 QStringList pack;
418 while ( !t.eof() ) 418 while ( !t.eof() )
419 { 419 {
420 pack << t.readLine(); 420 pack << t.readLine();
421 } 421 }
422 f.close(); 422 f.close();
423 parsePackage( pack ); 423 parsePackage( pack );
424 } 424 }
425 425
426} 426}
427 427
428//QString Package::getPackageName() 428//QString Package::getPackageName()
429//{ 429//{
430 //if ( _packageName.isEmpty() ) return _name; 430 //if ( _packageName.isEmpty() ) return _name;
431 //else return _packageName; 431 //else return _packageName;
432//} 432//}
433 433
434void Package::instalFromFile(bool iff) 434void Package::instalFromFile(bool iff)
435{ 435{
436 _useFileName = iff; 436 _useFileName = iff;
437} 437}
438 438
439void Package::setName(QString n) 439void Package::setName(QString n)
440{ 440{
441 _displayName = n; 441 _displayName = n;
442} 442}
443 443
444QDict<QString>* Package::getFields() 444QDict<QString>* Package::getFields()
445{ 445{
446 return &_values; 446 return &_values;
447} 447}
448 448
449QString Package::status() 449QString Package::status()
450{ 450{
451 return _status; 451 return _status;
452} 452}
453 453
454bool Package::isOld() 454bool Package::isOld()
455{ 455{
456 if (!_versions) return false; 456 if (!_versions) return false;
457 QDictIterator<Package> other( *_versions ); 457 QDictIterator<Package> other( *_versions );
458 while ( other.current() ) { 458 while ( other.current() ) {
459 if (other.current()->version() > version() ) return true; 459 if (other.current()->version() > version() ) return true;
460 ++other; 460 ++other;
461 } 461 }
462 return false; 462 return false;
463} 463}
464 464
465bool Package::hasVersions() 465bool Package::hasVersions()
466{ 466{
467 if (!_versions) return false; 467 if (!_versions) return false;
468 else return true; 468 else return true;
469} 469}
470 470
471QDict<Package>* Package::getOtherVersions() 471QDict<Package>* Package::getOtherVersions()
472{ 472{
473 return _versions; 473 return _versions;
474} 474}
475 475
476void Package::setOtherVersions(QDict<Package> *v) 476void Package::setOtherVersions(QDict<Package> *v)
477{ 477{
478 _versions=v; 478 _versions=v;
479} 479}
diff --git a/noncore/unsupported/oipkg/pksettings.cpp b/noncore/unsupported/oipkg/pksettings.cpp
index acabaed..063b018 100644
--- a/noncore/unsupported/oipkg/pksettings.cpp
+++ b/noncore/unsupported/oipkg/pksettings.cpp
@@ -1,576 +1,575 @@
1#include "pksettings.h" 1#include "pksettings.h"
2 2
3#include <qpe/process.h> 3#include <qpe/process.h>
4#include <qpe/resource.h> 4#include <qpe/resource.h>
5#include <qpe/stringutil.h> 5#include <qpe/stringutil.h>
6#include <qpe/qpeapplication.h> 6#include <qpe/qpeapplication.h>
7#include <qpe/qcopenvelope_qws.h> 7#include <qpe/qcopenvelope_qws.h>
8#include <qpe/applnk.h> 8#include <qpe/applnk.h>
9#include <qpe/config.h> 9#include <qpe/config.h>
10 10
11#include <qprogressbar.h> 11#include <qprogressbar.h>
12#include <qcombobox.h> 12#include <qcombobox.h>
13#include <qdict.h> 13#include <qdict.h>
14#include <qfile.h> 14#include <qfile.h>
15#include <qlineedit.h> 15#include <qlineedit.h>
16#include <qpushbutton.h> 16#include <qpushbutton.h>
17#include <qlistview.h> 17#include <qlistview.h>
18#include <qlistbox.h> 18#include <qlistbox.h>
19#include <qcheckbox.h> 19#include <qcheckbox.h>
20#include <qmessagebox.h> 20#include <qmessagebox.h>
21#include <qpainter.h> 21#include <qpainter.h>
22#include <qpixmap.h> 22#include <qpixmap.h>
23#include <qregexp.h> 23#include <qregexp.h>
24#include <qstring.h> 24#include <qstring.h>
25#include <qobject.h> 25#include <qobject.h>
26#include <qtextstream.h> 26#include <qtextstream.h>
27#include <qtextview.h> 27#include <qtextview.h>
28#include <qtoolbutton.h> 28#include <qtoolbutton.h>
29#include <qtabwidget.h> 29#include <qtabwidget.h>
30 30
31#include <stdlib.h> 31#include <stdlib.h>
32#include <unistd.h> 32#include <unistd.h>
33#include "debug.h" 33#include "debug.h"
34//#include "utils.h" 34//#include "utils.h"
35 35
36PackageManagerSettings::PackageManagerSettings( QWidget* parent, const char* name, WFlags fl ) 36PackageManagerSettings::PackageManagerSettings( QWidget* parent, const char* name, WFlags fl )
37 : PackageManagerSettingsBase( parent, name, fl ) 37 : PackageManagerSettingsBase( parent, name, fl )
38{ 38{
39 connect( newserver, SIGNAL(clicked()), this, SLOT(newServer()) ); 39 connect( newserver, SIGNAL(clicked()), this, SLOT(newServer()) );
40 connect( removeserver, SIGNAL(clicked()), this, SLOT(removeServer()) ); 40 connect( removeserver, SIGNAL(clicked()), this, SLOT(removeServer()) );
41 connect( servers, SIGNAL(highlighted(int)), this, SLOT(editServer(int)) ); 41 connect( servers, SIGNAL(highlighted(int)), this, SLOT(editServer(int)) );
42 connect( newdestination, SIGNAL(clicked()), this, SLOT(newDestination()) ); 42 connect( newdestination, SIGNAL(clicked()), this, SLOT(newDestination()) );
43 connect( removedestination, SIGNAL(clicked()), this, SLOT(removeDestination()) ); 43 connect( removedestination, SIGNAL(clicked()), this, SLOT(removeDestination()) );
44 connect( destinations, SIGNAL(highlighted(int)), this, SLOT(editDestination(int)) ); 44 connect( destinations, SIGNAL(highlighted(int)), this, SLOT(editDestination(int)) );
45 // connect( CheckBoxLink, SIGNAL(toggled(bool)), 45 // connect( CheckBoxLink, SIGNAL(toggled(bool)),
46 // activeLinkDestination, SLOT(setEnabled(bool)) ); 46 // activeLinkDestination, SLOT(setEnabled(bool)) );
47 47
48// connect( settingName, SIGNAL(activated(int)), this, SLOT(installationSettingChange(int)) ); 48// connect( settingName, SIGNAL(activated(int)), this, SLOT(installationSettingChange(int)) );
49// connect( settingName, SIGNAL(textChanged(const QString &)), this, SLOT(installationSettingSetName(const QString &)) ); 49// connect( settingName, SIGNAL(textChanged(const QString &)), this, SLOT(installationSettingSetName(const QString &)) );
50// connect( newsetting, SIGNAL(clicked()), this, SLOT(newInstallationSetting()) ); 50// connect( newsetting, SIGNAL(clicked()), this, SLOT(newInstallationSetting()) );
51// connect( renamesetting, SIGNAL(clicked()), this, SLOT(renameInstallationSetting()) ); 51// connect( renamesetting, SIGNAL(clicked()), this, SLOT(renameInstallationSetting()) );
52 // connect( removesetting, SIGNAL(clicked()), this, SLOT(removeInstallationSetting()) ); 52 // connect( removesetting, SIGNAL(clicked()), this, SLOT(removeInstallationSetting()) );
53 servername->setEnabled(FALSE); 53 servername->setEnabled(FALSE);
54 serverurl->setEnabled(FALSE); 54 serverurl->setEnabled(FALSE);
55 serverurlDic.setAutoDelete(TRUE); 55 serverurlDic.setAutoDelete(TRUE);
56 destinationname->setEnabled(FALSE); 56 destinationname->setEnabled(FALSE);
57 destinationurl->setEnabled(FALSE); 57 destinationurl->setEnabled(FALSE);
58 destinationurlDic.setAutoDelete(TRUE); 58 destinationurlDic.setAutoDelete(TRUE);
59 readSettings(); 59 readSettings();
60 activeLinkDestination->hide(); 60 activeLinkDestination->hide();
61 serverChanged = false; 61 serverChanged = false;
62 62
63 // get rid of setups 63 // get rid of setups
64// Settings->hide(); 64// Settings->hide();
65// settingName->hide(); 65// settingName->hide();
66// newsetting->hide(); 66// newsetting->hide();
67// renamesetting->hide(); 67// renamesetting->hide();
68// removesetting->hide(); 68// removesetting->hide();
69} 69}
70 70
71PackageManagerSettings::~PackageManagerSettings() 71PackageManagerSettings::~PackageManagerSettings()
72{ 72{
73} 73}
74 74
75 75
76void PackageManagerSettings::newServer() 76void PackageManagerSettings::newServer()
77{ 77{
78 int i = servers->count(); 78 int i = servers->count();
79 if ( servername->isEnabled() || serverurl->text().isEmpty() ) { 79 if ( servername->isEnabled() || serverurl->text().isEmpty() ) {
80 serverurlDic.insert(i,new QString("http://")); 80 serverurlDic.insert(i,new QString("http://"));
81 servers->insertItem(tr("New")); 81 servers->insertItem(tr("New"));
82 activeServers->insertItem(tr("New")); 82 activeServers->insertItem(tr("New"));
83 } else { 83 } else {
84 // allows one-level undo 84 // allows one-level undo
85 serverurlDic.insert(i,new QString(serverurl->text())); 85 serverurlDic.insert(i,new QString(serverurl->text()));
86 servers->insertItem(servername->text()); 86 servers->insertItem(servername->text());
87 activeServers->insertItem(servername->text()); 87 activeServers->insertItem(servername->text());
88 } 88 }
89 changed = true; 89 changed = true;
90 servers->setSelected(i,TRUE); 90 servers->setSelected(i,TRUE);
91 editServer(i); 91 editServer(i);
92 changed = true; 92 changed = true;
93} 93}
94 94
95void PackageManagerSettings::newDestination() 95void PackageManagerSettings::newDestination()
96{ 96{
97 int i = destinations->count(); 97 int i = destinations->count();
98 if ( destinationname->isEnabled() || destinationurl->text().isEmpty() ) { 98 if ( destinationname->isEnabled() || destinationurl->text().isEmpty() ) {
99 destinationurlDic.insert(i,new QString("/")); 99 destinationurlDic.insert(i,new QString("/"));
100 destinations->insertItem(tr("New")); 100 destinations->insertItem(tr("New"));
101 activeDestination->insertItem(tr("New")); 101 activeDestination->insertItem(tr("New"));
102 activeLinkDestination->insertItem(tr("New")); 102 activeLinkDestination->insertItem(tr("New"));
103 } else { 103 } else {
104 // allows one-level undo 104 // allows one-level undo
105 destinationurlDic.insert(i,new QString(destinationurl->text())); 105 destinationurlDic.insert(i,new QString(destinationurl->text()));
106 destinations->insertItem(destinationname->text()); 106 destinations->insertItem(destinationname->text());
107 activeDestination->insertItem(destinationname->text()); 107 activeDestination->insertItem(destinationname->text());
108 activeLinkDestination->insertItem(destinationname->text()); 108 activeLinkDestination->insertItem(destinationname->text());
109 } 109 }
110 destinations->setSelected(i,TRUE); 110 destinations->setSelected(i,TRUE);
111 editDestination(i); 111 editDestination(i);
112 changed = true; 112 changed = true;
113} 113}
114 114
115 115
116void PackageManagerSettings::editServer(int i) 116void PackageManagerSettings::editServer(int i)
117{ 117{
118 if ( servername->isEnabled() ) { 118 if ( servername->isEnabled() ) {
119 disconnect( servername, SIGNAL(textChanged(const QString&)), this, SLOT(serverNameChanged(const QString&)) ); 119 disconnect( servername, SIGNAL(textChanged(const QString&)), this, SLOT(serverNameChanged(const QString&)) );
120 disconnect( serverurl, SIGNAL(textChanged(const QString&)), this, SLOT(serverUrlChanged(const QString&)) ); 120 disconnect( serverurl, SIGNAL(textChanged(const QString&)), this, SLOT(serverUrlChanged(const QString&)) );
121 } else { 121 } else {
122 servername->setEnabled(TRUE); 122 servername->setEnabled(TRUE);
123 serverurl->setEnabled(TRUE); 123 serverurl->setEnabled(TRUE);
124 } 124 }
125 125
126 servername->setText( servers->text(i) ); 126 servername->setText( servers->text(i) );
127 serverurl->setText( *serverurlDic[i] ); 127 serverurl->setText( *serverurlDic[i] );
128 128
129 editedserver = i; 129 editedserver = i;
130 serverChanged = true; 130 serverChanged = true;
131 connect( servername, SIGNAL(textChanged(const QString&)), this, SLOT(serverNameChanged(const QString&)) ); 131 connect( servername, SIGNAL(textChanged(const QString&)), this, SLOT(serverNameChanged(const QString&)) );
132 connect( serverurl, SIGNAL(textChanged(const QString&)), this, SLOT(serverUrlChanged(const QString&)) ); 132 connect( serverurl, SIGNAL(textChanged(const QString&)), this, SLOT(serverUrlChanged(const QString&)) );
133 changed = true; 133 changed = true;
134} 134}
135 135
136 136
137void PackageManagerSettings::editDestination(int i) 137void PackageManagerSettings::editDestination(int i)
138{ 138{
139 if ( destinationname->isEnabled() ) { 139 if ( destinationname->isEnabled() ) {
140 disconnect( destinationname, SIGNAL(textChanged(const QString&)), this, SLOT(destNameChanged(const QString&)) ); 140 disconnect( destinationname, SIGNAL(textChanged(const QString&)), this, SLOT(destNameChanged(const QString&)) );
141 disconnect( destinationurl, SIGNAL(textChanged(const QString&)), this, SLOT(destUrlChanged(const QString&)) ); 141 disconnect( destinationurl, SIGNAL(textChanged(const QString&)), this, SLOT(destUrlChanged(const QString&)) );
142 } else { 142 } else {
143 destinationname->setEnabled(TRUE); 143 destinationname->setEnabled(TRUE);
144 destinationurl->setEnabled(TRUE); 144 destinationurl->setEnabled(TRUE);
145 //since it does not work anyway 145 //since it does not work anyway
146// createLinksButton->setEnabled(TRUE); 146// createLinksButton->setEnabled(TRUE);
147// removeLinksButton->setEnabled(TRUE); 147// removeLinksButton->setEnabled(TRUE);
148 } 148 }
149 149
150 destinationname->setText( destinations->text(i) ); 150 destinationname->setText( destinations->text(i) );
151 destinationurl->setText( *destinationurlDic[i] ); 151 destinationurl->setText( *destinationurlDic[i] );
152 152
153 editeddestination = i; 153 editeddestination = i;
154 154
155 connect( destinationname, SIGNAL(textChanged(const QString&)), this, SLOT(destNameChanged(const QString&)) ); 155 connect( destinationname, SIGNAL(textChanged(const QString&)), this, SLOT(destNameChanged(const QString&)) );
156 connect( destinationurl, SIGNAL(textChanged(const QString&)), this, SLOT(destUrlChanged(const QString&)) ); 156 connect( destinationurl, SIGNAL(textChanged(const QString&)), this, SLOT(destUrlChanged(const QString&)) );
157 changed = true; 157 changed = true;
158} 158}
159 159
160void PackageManagerSettings::removeServer() 160void PackageManagerSettings::removeServer()
161{ 161{
162 disconnect( servername, SIGNAL(textChanged(const QString&)), this, SLOT(serverNameChanged(const QString&)) ); 162 disconnect( servername, SIGNAL(textChanged(const QString&)), this, SLOT(serverNameChanged(const QString&)) );
163 disconnect( serverurl, SIGNAL(textChanged(const QString&)), this, SLOT(serverUrlChanged(const QString&)) ); 163 disconnect( serverurl, SIGNAL(textChanged(const QString&)), this, SLOT(serverUrlChanged(const QString&)) );
164 servername->setText(servers->text(editedserver)); 164 servername->setText(servers->text(editedserver));
165 serverurl->setText(*serverurlDic[editedserver]); 165 serverurl->setText(*serverurlDic[editedserver]);
166 disconnect( servers, SIGNAL(highlighted(int)), this, SLOT(editServer(int)) ); 166 disconnect( servers, SIGNAL(highlighted(int)), this, SLOT(editServer(int)) );
167 servers->removeItem(editedserver); 167 servers->removeItem(editedserver);
168 activeServers->removeItem(editedserver); 168 activeServers->removeItem(editedserver);
169 connect( servers, SIGNAL(highlighted(int)), this, SLOT(editServer(int)) ); 169 connect( servers, SIGNAL(highlighted(int)), this, SLOT(editServer(int)) );
170 servername->setEnabled(FALSE); 170 servername->setEnabled(FALSE);
171 serverurl->setEnabled(FALSE); 171 serverurl->setEnabled(FALSE);
172 changed = true; 172 changed = true;
173} 173}
174 174
175void PackageManagerSettings::removeDestination() 175void PackageManagerSettings::removeDestination()
176{ 176{
177 disconnect( destinationname, SIGNAL(textChanged(const QString&)), this, SLOT(destNameChanged(const QString&)) ); 177 disconnect( destinationname, SIGNAL(textChanged(const QString&)), this, SLOT(destNameChanged(const QString&)) );
178 disconnect( destinationurl, SIGNAL(textChanged(const QString&)), this, SLOT(destUrlChanged(const QString&)) ); 178 disconnect( destinationurl, SIGNAL(textChanged(const QString&)), this, SLOT(destUrlChanged(const QString&)) );
179 destinationname->setText(""); 179 destinationname->setText("");
180 destinationurl->setText(""); 180 destinationurl->setText("");
181 disconnect( destinations, SIGNAL(highlighted(int)), this, SLOT(editDestination(int)) ); 181 disconnect( destinations, SIGNAL(highlighted(int)), this, SLOT(editDestination(int)) );
182 destinations->removeItem(editeddestination); 182 destinations->removeItem(editeddestination);
183 activeDestination->removeItem(editeddestination); 183 activeDestination->removeItem(editeddestination);
184 activeLinkDestination->removeItem(editeddestination); 184 activeLinkDestination->removeItem(editeddestination);
185 editeddestination=0; 185 editeddestination=0;
186 connect( destinations, SIGNAL(highlighted(int)), this, SLOT(editDestination(int)) ); 186 connect( destinations, SIGNAL(highlighted(int)), this, SLOT(editDestination(int)) );
187 destinationname->setEnabled(FALSE); 187 destinationname->setEnabled(FALSE);
188 destinationurl->setEnabled(FALSE); 188 destinationurl->setEnabled(FALSE);
189 changed = true; 189 changed = true;
190} 190}
191 191
192void PackageManagerSettings::serverNameChanged(const QString& t) 192void PackageManagerSettings::serverNameChanged(const QString& t)
193{ 193{
194 disconnect( servers, SIGNAL(highlighted(int)), this, SLOT(editServer(int)) ); 194 disconnect( servers, SIGNAL(highlighted(int)), this, SLOT(editServer(int)) );
195 servers->changeItem( t, editedserver ); 195 servers->changeItem( t, editedserver );
196 activeServers->changeItem( t, editedserver ); 196 activeServers->changeItem( t, editedserver );
197 connect( servers, SIGNAL(highlighted(int)), this, SLOT(editServer(int)) ); 197 connect( servers, SIGNAL(highlighted(int)), this, SLOT(editServer(int)) );
198 changed = true; 198 changed = true;
199 serverChanged = true; 199 serverChanged = true;
200} 200}
201 201
202void PackageManagerSettings::destNameChanged(const QString& t) 202void PackageManagerSettings::destNameChanged(const QString& t)
203{ 203{
204 disconnect( destinations, SIGNAL(highlighted(int)), this, SLOT(editDestination(int)) ); 204 disconnect( destinations, SIGNAL(highlighted(int)), this, SLOT(editDestination(int)) );
205 destinations->changeItem( t, editeddestination ); 205 destinations->changeItem( t, editeddestination );
206 activeDestination->changeItem( t, editeddestination ); 206 activeDestination->changeItem( t, editeddestination );
207 activeLinkDestination->changeItem( t, editeddestination ); 207 activeLinkDestination->changeItem( t, editeddestination );
208 connect( destinations, SIGNAL(highlighted(int)), this, SLOT(editDestination(int)) ); 208 connect( destinations, SIGNAL(highlighted(int)), this, SLOT(editDestination(int)) );
209 changed = true; 209 changed = true;
210} 210}
211 211
212void PackageManagerSettings::serverUrlChanged(const QString& t) 212void PackageManagerSettings::serverUrlChanged(const QString& t)
213{ 213{
214 serverurlDic.replace(editedserver, new QString(t)); 214 serverurlDic.replace(editedserver, new QString(t));
215 changed = true; 215 changed = true;
216 serverChanged = true; 216 serverChanged = true;
217} 217}
218 218
219void PackageManagerSettings::destUrlChanged(const QString& t) 219void PackageManagerSettings::destUrlChanged(const QString& t)
220{ 220{
221 destinationurlDic.replace(editeddestination, new QString(t)); 221 destinationurlDic.replace(editeddestination, new QString(t));
222 changed = true; 222 changed = true;
223} 223}
224 224
225void PackageManagerSettings::writeIpkgConfig(const QString& conffile) 225void PackageManagerSettings::writeIpkgConfig(const QString& conffile)
226{ 226{
227 QFile conf(conffile); 227 QFile conf(conffile);
228 if ( ! conf.open(IO_WriteOnly) ) return; 228 if ( ! conf.open(IO_WriteOnly) ) return;
229 QTextStream s(&conf); 229 QTextStream s(&conf);
230 s << "# Written by qpie Package Manager\n"; 230 s << "# Written by oipkg -- the opie package manager\n";
231 for (int i=0; i<(int)activeServers->count(); i++) 231 for (int i=0; i<(int)activeServers->count(); i++)
232 { 232 {
233 QString url = serverurlDic[i] ? *serverurlDic[i] : QString("???"); 233 QString url = serverurlDic[i] ? *serverurlDic[i] : QString("???");
234 if ( !activeServers->isSelected(i) ) 234 if ( !activeServers->isSelected(i) ) s << "#";
235 s << "#";
236 s << "src " << activeServers->text(i) << " " << url << "\n"; 235 s << "src " << activeServers->text(i) << " " << url << "\n";
237 } 236 }
238 for (int i=0; i<(int)destinations->count(); i++) 237 for (int i=0; i<(int)destinations->count(); i++)
239 { 238 {
240 QString url = destinationurlDic[i] ? *destinationurlDic[i] : QString("???"); 239 QString url = destinationurlDic[i] ? *destinationurlDic[i] : QString("???");
241 s << "dest " << destinations->text(i) << " " << url << "\n"; 240 s << "dest " << destinations->text(i) << " " << url << "\n";
242 } 241 }
243 conf.close(); 242 conf.close();
244} 243}
245 244
246 245
247void PackageManagerSettings::readInstallationSettings() 246void PackageManagerSettings::readInstallationSettings()
248{ 247{
249 Config cfg( "oipkg", Config::User ); 248 Config cfg( "oipkg", Config::User );
250 cfg.setGroup( "Settings" ); 249 cfg.setGroup( "Settings" );
251 250
252 installationSettingsCount = cfg.readNumEntry( "count", -1 ); 251 installationSettingsCount = cfg.readNumEntry( "count", -1 );
253 currentSetting = cfg.readNumEntry( "current", 0 );// o should be -1 252 currentSetting = cfg.readNumEntry( "current", 0 );// o should be -1
254 253
255// for (int i = 0; i < installationSettingsCount; i++) 254// for (int i = 0; i < installationSettingsCount; i++)
256// { 255// {
257// cfg.setGroup( "Setting_" + QString::number(i) ); 256// cfg.setGroup( "Setting_" + QString::number(i) );
258// settingName->insertItem( cfg.readEntry( "name", "???" ), i ); 257// settingName->insertItem( cfg.readEntry( "name", "???" ), i );
259// }; 258// };
260 readInstallationSetting( currentSetting ); 259 readInstallationSetting( currentSetting );
261} 260}
262 261
263 262
264 263
265///** 264///**
266// * remove from conf file 265// * remove from conf file
267// */ 266// */
268//void PackageManagerSettings::removeInstallationSetting() 267//void PackageManagerSettings::removeInstallationSetting()
269//{ 268//{
270// settingName->removeItem( settingName->currentItem() ); 269// settingName->removeItem( settingName->currentItem() );
271// Config cfg( "oipkg", Config::User ); 270// Config cfg( "oipkg", Config::User );
272// cfg.setGroup( "Setting_" + QString::number( installationSettingsCount ) ); 271// cfg.setGroup( "Setting_" + QString::number( installationSettingsCount ) );
273// cfg.clearGroup(); 272// cfg.clearGroup();
274// installationSettingsCount--; 273// installationSettingsCount--;
275// changed = true; 274// changed = true;
276// settingName->setEditable( false ); 275// settingName->setEditable( false );
277//} 276//}
278 277
279///** 278///**
280// * write to confgile 279// * write to confgile
281// */ 280// */
282//void PackageManagerSettings::newInstallationSetting() 281//void PackageManagerSettings::newInstallationSetting()
283//{ 282//{
284// installationSettingsCount++; 283// installationSettingsCount++;
285// settingName->insertItem( "New", installationSettingsCount ); 284// settingName->insertItem( "New", installationSettingsCount );
286// settingName->setCurrentItem( installationSettingsCount ); 285// settingName->setCurrentItem( installationSettingsCount );
287// settingName->setEditable( true ); 286// settingName->setEditable( true );
288// changed = true; 287// changed = true;
289//} 288//}
290 289
291//void PackageManagerSettings::installationSettingChange(int cs) 290//void PackageManagerSettings::installationSettingChange(int cs)
292//{ 291//{
293// writeCurrentInstallationSetting(); 292// writeCurrentInstallationSetting();
294// currentSetting = cs; 293// currentSetting = cs;
295// readInstallationSetting( cs ); 294// readInstallationSetting( cs );
296// changed = true; 295// changed = true;
297//} 296//}
298 297
299void PackageManagerSettings::writeInstallationSettings() 298void PackageManagerSettings::writeInstallationSettings()
300{ 299{
301 { 300 {
302 Config cfg( "oipkg", Config::User ); 301 Config cfg( "oipkg", Config::User );
303 cfg.setGroup( "Settings" ); 302 cfg.setGroup( "Settings" );
304 cfg.writeEntry( "count", installationSettingsCount ); 303 cfg.writeEntry( "count", installationSettingsCount );
305 cfg.writeEntry( "current", currentSetting ); 304 cfg.writeEntry( "current", currentSetting );
306 } 305 }
307 writeCurrentInstallationSetting(); 306 writeCurrentInstallationSetting();
308} 307}
309 308
310 309
311void PackageManagerSettings::readInstallationSetting(int setting) 310void PackageManagerSettings::readInstallationSetting(int setting)
312{ 311{
313 if ( setting < 0 ) return; 312 if ( setting < 0 ) return;
314 Config cfg( "oipkg", Config::User ); 313 Config cfg( "oipkg", Config::User );
315 cfg.setGroup( "Setting_" + QString::number( setting ) ); 314 cfg.setGroup( "Setting_" + QString::number( setting ) );
316 CheckBoxLink->setChecked( cfg.readBoolEntry( "link", true ) ); 315 CheckBoxLink->setChecked( cfg.readBoolEntry( "link", true ) );
317 QString dest = cfg.readEntry( "dest" ); 316 QString dest = cfg.readEntry( "dest" );
318 QString linkdest = cfg.readEntry( "linkdest" ); 317 QString linkdest = cfg.readEntry( "linkdest" );
319 pvDebug(3, "dest="+dest); 318 pvDebug(3, "dest="+dest);
320 pvDebug(3, "linkdest="+linkdest); 319 pvDebug(3, "linkdest="+linkdest);
321 for ( int i = 0; i < activeDestination->count(); i++) 320 for ( int i = 0; i < activeDestination->count(); i++)
322 { 321 {
323 if ( activeDestination->text( i ) == dest ) 322 if ( activeDestination->text( i ) == dest )
324 activeDestination->setCurrentItem( i ); 323 activeDestination->setCurrentItem( i );
325 if ( activeLinkDestination->text( i ) == linkdest ) 324 if ( activeLinkDestination->text( i ) == linkdest )
326 activeLinkDestination->setCurrentItem( i ); 325 activeLinkDestination->setCurrentItem( i );
327 } 326 }
328} 327}
329 328
330void PackageManagerSettings::writeCurrentInstallationSetting() 329void PackageManagerSettings::writeCurrentInstallationSetting()
331{ 330{
332 Config cfg( "oipkg", Config::User ); 331 Config cfg( "oipkg", Config::User );
333 cfg.setGroup( "Setting_" + QString::number(currentSetting) ); 332 cfg.setGroup( "Setting_" + QString::number(currentSetting) );
334 cfg.writeEntry( "link", CheckBoxLink->isChecked() ); 333 cfg.writeEntry( "link", CheckBoxLink->isChecked() );
335 cfg.writeEntry( "dest", getDestinationName() ); 334 cfg.writeEntry( "dest", getDestinationName() );
336 cfg.writeEntry( "linkdest" , getLinkDestinationName() ); 335 cfg.writeEntry( "linkdest" , getLinkDestinationName() );
337 QStringList sers = getActiveServers(); 336 QStringList sers = getActiveServers();
338 int srvc = 0; 337 int srvc = 0;
339 for ( QStringList::Iterator it = sers.begin(); it != sers.end(); ++it ) { 338 for ( QStringList::Iterator it = sers.begin(); it != sers.end(); ++it ) {
340 cfg.writeEntry( "server_" + QString::number(srvc++), *it ); 339 cfg.writeEntry( "server_" + QString::number(srvc++), *it );
341 } 340 }
342 cfg.writeEntry( "server_count", srvc ); 341 cfg.writeEntry( "server_count", srvc );
343} 342}
344 343
345//void PackageManagerSettings::renameInstallationSetting() 344//void PackageManagerSettings::renameInstallationSetting()
346//{ 345//{
347// settingName->setEditable( true ); 346// settingName->setEditable( true );
348// changed = true; 347// changed = true;
349//} 348//}
350 349
351//void PackageManagerSettings::installationSettingSetName(const QString &name) 350//void PackageManagerSettings::installationSettingSetName(const QString &name)
352//{ 351//{
353// settingName->changeItem( name, settingName->currentItem() ); 352// settingName->changeItem( name, settingName->currentItem() );
354// changed = true; 353// changed = true;
355//} 354//}
356 355
357 356
358bool PackageManagerSettings::readIpkgConfig(const QString& conffile) 357bool PackageManagerSettings::readIpkgConfig(const QString& conffile)
359{ 358{
360 QFile conf(conffile); 359 QFile conf(conffile);
361 changed = false; 360 changed = false;
362 if ( conf.open(IO_ReadOnly) ) { 361 if ( conf.open(IO_ReadOnly) ) {
363 QTextStream s(&conf); 362 QTextStream s(&conf);
364 servers->clear(); 363 servers->clear();
365 activeServers->clear(); 364 activeServers->clear();
366 destinations->clear(); 365 destinations->clear();
367 activeDestination->clear(); 366 activeDestination->clear();
368 activeLinkDestination->clear(); 367 activeLinkDestination->clear();
369 serverurlDic.clear(); 368 serverurlDic.clear();
370 destinationurlDic.clear(); 369 destinationurlDic.clear();
371 ipkg_old=0; 370 ipkg_old=0;
372 int currentserver=0; 371 int currentserver=0;
373 while ( !s.atEnd() ) { 372 while ( !s.atEnd() ) {
374 QString l = s.readLine(); 373 QString l = s.readLine();
375 QStringList token = QStringList::split(' ', l); 374 QStringList token = QStringList::split(' ', l);
376 if ( token[0] == "src" || token[0] == "#src" ) { 375 if ( token[0] == "src" || token[0] == "#src" ) {
377 currentserver=servers->count(); 376 currentserver=servers->count();
378 serverurlDic.insert(servers->count(),new QString(token[2])); 377 serverurlDic.insert(servers->count(),new QString(token[2]));
379 int a = token[0] == "src" ? 1 : 0; 378 int a = token[0] == "src" ? 1 : 0;
380 int i = servers->count(); 379 int i = servers->count();
381 servers->insertItem(token[1]); 380 servers->insertItem(token[1]);
382 activeServers->insertItem( token[1] ); 381 activeServers->insertItem( token[1] );
383 activeServers->setSelected(i,a); 382 activeServers->setSelected(i,a);
384 } else if ( token[0] == "dest" ) { 383 } else if ( token[0] == "dest" ) {
385 currentserver=destinations->count(); 384 currentserver=destinations->count();
386 destinationurlDic.insert(destinations->count(),new QString(token[2])); 385 destinationurlDic.insert(destinations->count(),new QString(token[2]));
387 destinations->insertItem(token[1]); 386 destinations->insertItem(token[1]);
388 activeDestination->insertItem( token[1] ); 387 activeDestination->insertItem( token[1] );
389 activeLinkDestination->insertItem( token[1] ); 388 activeLinkDestination->insertItem( token[1] );
390 389
391 } else if ( token[0] == "option" ) { 390 } else if ( token[0] == "option" ) {
392 // ### somehow need to use the settings from netsetup 391 // ### somehow need to use the settings from netsetup
393 // if ( token[1] == "http_proxy" ) 392 // if ( token[1] == "http_proxy" )
394 // http->setText(token[2]); 393 // http->setText(token[2]);
395 // else if ( token[1] == "ftp_proxy" ) 394 // else if ( token[1] == "ftp_proxy" )
396 // ftp->setText(token[2]); 395 // ftp->setText(token[2]);
397 // else if ( token[1] == "proxy_username" ) 396 // else if ( token[1] == "proxy_username" )
398 // username->setText(token[2]); 397 // username->setText(token[2]);
399 // else if ( token[1] == "proxy_password" ) 398 // else if ( token[1] == "proxy_password" )
400 // password->setText(token[2]); 399 // password->setText(token[2]);
401 } else { 400 } else {
402 // Old style? 401 // Old style?
403 int eq = l.find('='); 402 int eq = l.find('=');
404 if ( eq >= 0 ) { 403 if ( eq >= 0 ) {
405 QString v = l.mid(eq+1).stripWhiteSpace(); 404 QString v = l.mid(eq+1).stripWhiteSpace();
406 if ( v[0] == '"' || v[0] == '\'' ) { 405 if ( v[0] == '"' || v[0] == '\'' ) {
407 int cl=v.find(v[0],1); 406 int cl=v.find(v[0],1);
408 if ( cl >= 0 ) 407 if ( cl >= 0 )
409 v = v.mid(1,cl-1); 408 v = v.mid(1,cl-1);
410 } 409 }
411 if ( l.left(12) == "IPKG_SOURCE=" ) { 410 if ( l.left(12) == "IPKG_SOURCE=" ) {
412 ipkg_old=1; 411 ipkg_old=1;
413 currentserver=servers->count(); 412 currentserver=servers->count();
414 serverurlDic.insert(servers->count(),new QString(v)); 413 serverurlDic.insert(servers->count(),new QString(v));
415 servers->insertItem(v); 414 servers->insertItem(v);
416 } else if ( l.left(13) == "#IPKG_SOURCE=" ) { 415 } else if ( l.left(13) == "#IPKG_SOURCE=" ) {
417 serverurlDic.insert(servers->count(),new QString(v)); 416 serverurlDic.insert(servers->count(),new QString(v));
418 servers->insertItem(v); 417 servers->insertItem(v);
419 } else if ( l.left(10) == "IPKG_ROOT=" ) { 418 } else if ( l.left(10) == "IPKG_ROOT=" ) {
420 // ### no UI 419 // ### no UI
421 // } else if ( l.left(20) == "IPKG_PROXY_USERNAME=" ) { 420 // } else if ( l.left(20) == "IPKG_PROXY_USERNAME=" ) {
422 // username->setText(v); 421 // username->setText(v);
423 // } else if ( l.left(20) == "IPKG_PROXY_PASSWORD=" ) { 422 // } else if ( l.left(20) == "IPKG_PROXY_PASSWORD=" ) {
424 // password->setText(v); 423 // password->setText(v);
425 // } else if ( l.left(16) == "IPKG_PROXY_HTTP=" ) { 424 // } else if ( l.left(16) == "IPKG_PROXY_HTTP=" ) {
426 // http->setText(v); 425 // http->setText(v);
427 // } else if ( l.left(16) == "IPKG_PROXY_FTP=" ) { 426 // } else if ( l.left(16) == "IPKG_PROXY_FTP=" ) {
428 // ftp->setText(v); 427 // ftp->setText(v);
429 } 428 }
430 } 429 }
431 } 430 }
432 } 431 }
433 if ( ipkg_old ) { 432 if ( ipkg_old ) {
434 servers->setSelectionMode(QListBox::Single); 433 servers->setSelectionMode(QListBox::Single);
435 servers->setSelected(currentserver,TRUE); 434 servers->setSelected(currentserver,TRUE);
436 } 435 }
437 return TRUE; 436 return TRUE;
438 } else { 437 } else {
439 return FALSE; 438 return FALSE;
440 } 439 }
441} 440}
442 441
443 442
444/** 443/**
445 * read from config file(s) 444 * read from config file(s)
446 */ 445 */
447void PackageManagerSettings::readSettings() 446void PackageManagerSettings::readSettings()
448{ 447{
449 readIpkgConfig("/etc/ipkg.conf"); 448 readIpkgConfig("/etc/ipkg.conf");
450 readInstallationSettings(); 449 readInstallationSettings();
451} 450}
452 451
453void PackageManagerSettings::writeSettings() 452void PackageManagerSettings::writeSettings()
454{ 453{
455 if ( changed ) writeIpkgConfig("/etc/ipkg.conf"); 454 if ( changed ) writeIpkgConfig("/etc/ipkg.conf");
456 writeInstallationSettings(); 455 writeInstallationSettings();
457} 456}
458/** shows the setting dialog */ 457/** shows the setting dialog */
459bool PackageManagerSettings::showDialog( int i ) 458bool PackageManagerSettings::showDialog( int i )
460{ 459{
461 TabWidget->setCurrentPage( i ); 460 TabWidget->setCurrentPage( i );
462 showMaximized(); 461 showMaximized();
463 bool ret = exec(); 462 bool ret = exec();
464 if ( ret ) writeSettings(); 463 if ( ret ) writeSettings();
465 else readSettings(); 464 else readSettings();
466 return (changed && ret); 465 return (changed && ret);
467} 466}
468/** Returns the installation destination */ 467/** Returns the installation destination */
469QString PackageManagerSettings::getDestinationName() 468QString PackageManagerSettings::getDestinationName()
470{ 469{
471 return activeDestination->currentText(); 470 return activeDestination->currentText();
472} 471}
473/** Returns the link destination */ 472/** Returns the link destination */
474QString PackageManagerSettings::getLinkDestinationName() 473QString PackageManagerSettings::getLinkDestinationName()
475{ 474{
476 return activeLinkDestination->currentText(); 475 return activeLinkDestination->currentText();
477} 476}
478/** Returns the URL of the active destination */ 477/** Returns the URL of the active destination */
479QString PackageManagerSettings::getDestinationUrl() 478QString PackageManagerSettings::getDestinationUrl()
480{ 479{
481 int dnr = activeDestination->currentItem(); 480 int dnr = activeDestination->currentItem();
482 return *destinationurlDic.find(dnr); 481 return *destinationurlDic.find(dnr);
483} 482}
484/** Should oipkg create links form install destination to link destination */ 483/** Should oipkg create links form install destination to link destination */
485bool PackageManagerSettings::createLinks() 484bool PackageManagerSettings::createLinks()
486{ 485{
487 return CheckBoxLink->isChecked(); 486 return CheckBoxLink->isChecked();
488} 487}
489/** get the servers that are active */ 488/** get the servers that are active */
490QStringList PackageManagerSettings::getActiveServers() 489QStringList PackageManagerSettings::getActiveServers()
491{ 490{
492 QStringList sl; 491 QStringList sl;
493 for (int i=0; i<(int)activeServers->count(); i++) 492 for (int i=0; i<(int)activeServers->count(); i++)
494 { 493 {
495 if ( activeServers->isSelected(i) ) 494 if ( activeServers->isSelected(i) )
496 sl += activeServers->text(i); 495 sl += activeServers->text(i);
497 } 496 }
498 return sl; 497 return sl;
499} 498}
500 QStringList PackageManagerSettings::getServers() 499 QStringList PackageManagerSettings::getServers()
501{ 500{
502 QStringList sl; 501 QStringList sl;
503 for (int i=0; i<(int)activeServers->count(); i++) 502 for (int i=0; i<(int)activeServers->count(); i++)
504 { 503 {
505 sl += activeServers->text(i); 504 sl += activeServers->text(i);
506 } 505 }
507 return sl; 506 return sl;
508} 507}
509 508
510/** returns the destination listed in ipkg.conf */ 509/** returns the destination listed in ipkg.conf */
511QStringList PackageManagerSettings::getDestinationUrls() 510QStringList PackageManagerSettings::getDestinationUrls()
512{ 511{
513 QStringList sl; 512 QStringList sl;
514 for (int i=0; i<(int)destinations->count(); i++) 513 for (int i=0; i<(int)destinations->count(); i++)
515 { 514 {
516 sl += *destinationurlDic[i]; 515 sl += *destinationurlDic[i];
517 } 516 }
518 return sl; 517 return sl;
519} 518}
520 519
521/** returns the destination listed in ipkg.conf */ 520/** returns the destination listed in ipkg.conf */
522QString PackageManagerSettings::getDestinationUrlByName(QString n) 521QString PackageManagerSettings::getDestinationUrlByName(QString n)
523{ 522{
524 QStringList sl; 523 QStringList sl;
525 for (int i=0; i<(int)destinations->count(); i++) 524 for (int i=0; i<(int)destinations->count(); i++)
526 { 525 {
527 if ( n == destinations->text(i)) return*destinationurlDic[i]; 526 if ( n == destinations->text(i)) return*destinationurlDic[i];
528 } 527 }
529 return ""; 528 return "";
530} 529}
531 530
532/** returns the destination listed in ipkg.conf */ 531/** returns the destination listed in ipkg.conf */
533QStringList PackageManagerSettings::getDestinationNames() 532QStringList PackageManagerSettings::getDestinationNames()
534{ 533{
535 QStringList sl; 534 QStringList sl;
536 for (int i=0; i<(int)destinations->count(); i++) 535 for (int i=0; i<(int)destinations->count(); i++)
537 { 536 {
538 sl += destinations->text(i); 537 sl += destinations->text(i);
539 } 538 }
540 return sl; 539 return sl;
541} 540}
542 541
543 542
544void PackageManagerSettings::linkEnabled( bool b ) 543void PackageManagerSettings::linkEnabled( bool b )
545{ 544{
546 pvDebug(2,"PackageManagerSettings::linkEnabled "+QString(b?"yes":"no")); 545 pvDebug(2,"PackageManagerSettings::linkEnabled "+QString(b?"yes":"no"));
547 activeLinkDestination->setEnabled( b ); 546 activeLinkDestination->setEnabled( b );
548 CheckBoxLink->setChecked( b ); 547 CheckBoxLink->setChecked( b );
549} 548}
550 549
551void PackageManagerSettings::activeServerChanged() 550void PackageManagerSettings::activeServerChanged()
552{ 551{
553 changed = true; 552 changed = true;
554} 553}
555 554
556void PackageManagerSettings::createLinksToDest() 555void PackageManagerSettings::createLinksToDest()
557{ 556{
558 pvDebug(2,"creating links..."); 557 pvDebug(2,"creating links...");
559 // emit doCreateLinks( destinationurl->text() ); 558 // emit doCreateLinks( destinationurl->text() );
560 //ipkg->createLinks( destinationurl ); 559 //ipkg->createLinks( destinationurl );
561} 560}
562 561
563void PackageManagerSettings::removeLinksToDest() 562void PackageManagerSettings::removeLinksToDest()
564{ 563{
565 pvDebug(2,"removing links..."); 564 pvDebug(2,"removing links...");
566 // emit doRemoveLinks( destinationurl->text() ); 565 // emit doRemoveLinks( destinationurl->text() );
567 //ipkg->removeLinks( destinationurl ); 566 //ipkg->removeLinks( destinationurl );
568} 567}
569 568
570void PackageManagerSettings::activeDestinationChange(int i) 569void PackageManagerSettings::activeDestinationChange(int i)
571{ 570{
572 pvDebug(5,"activeDestinationChange "+QString::number(i)); 571 pvDebug(5,"activeDestinationChange "+QString::number(i));
573 if (i > activeDestination->count()) return; 572 if (i > activeDestination->count()) return;
574 activeDestination->setCurrentItem(i); 573 activeDestination->setCurrentItem(i);
575 pvDebug(5,"dest name "+ activeDestination->currentText()); 574 pvDebug(5,"dest name "+ activeDestination->currentText());
576} 575}