author | drw <drw> | 2004-02-13 18:56:44 (UTC) |
---|---|---|
committer | drw <drw> | 2004-02-13 18:56:44 (UTC) |
commit | ed80e76bb5fd0cc8c346e3a27e4be858d5cf5c98 (patch) (unidiff) | |
tree | 446720b4302433a7ef6df33336605c03dc79de8d /noncore/settings | |
parent | f3cf623e76060c8f4ee7c2eef241de02d63a2614 (diff) | |
download | opie-ed80e76bb5fd0cc8c346e3a27e4be858d5cf5c98.zip opie-ed80e76bb5fd0cc8c346e3a27e4be858d5cf5c98.tar.gz opie-ed80e76bb5fd0cc8c346e3a27e4be858d5cf5c98.tar.bz2 |
Do proper version string comparison and fix string alignment code in PromptDlg to eliminate QT warning messages
-rw-r--r-- | noncore/settings/packagemanager/ChangeLog | 3 | ||||
-rw-r--r-- | noncore/settings/packagemanager/oipkg.cpp | 2 | ||||
-rw-r--r-- | noncore/settings/packagemanager/opackagemanager.cpp | 101 | ||||
-rw-r--r-- | noncore/settings/packagemanager/opackagemanager.h | 3 | ||||
-rw-r--r-- | noncore/settings/packagemanager/opie-packagemanager.control | 2 | ||||
-rw-r--r-- | noncore/settings/packagemanager/promptdlg.cpp | 2 |
6 files changed, 103 insertions, 10 deletions
diff --git a/noncore/settings/packagemanager/ChangeLog b/noncore/settings/packagemanager/ChangeLog index 6ad724f..d53a2b3 100644 --- a/noncore/settings/packagemanager/ChangeLog +++ b/noncore/settings/packagemanager/ChangeLog | |||
@@ -1,9 +1,12 @@ | |||
1 | 2004-02-13 Dan Williams <drw@handhelds.org> | 1 | 2004-02-13 Dan Williams <drw@handhelds.org> |
2 | 2 | ||
3 | * Released version 0.3.0 | ||
3 | * Fix handling of filtering options in View menu | 4 | * Fix handling of filtering options in View menu |
5 | * Do proper version string comparison | ||
6 | * Fix string alignment code in PromptDlg to eliminate QT warning messages | ||
4 | 7 | ||
5 | 2004-02-12 Dan Williams <drw@handhelds.org> | 8 | 2004-02-12 Dan Williams <drw@handhelds.org> |
6 | 9 | ||
7 | * Package information dialog implemented | 10 | * Package information dialog implemented |
8 | * What's This app icon enabled | 11 | * What's This app icon enabled |
9 | * Changed all QDialog::exec() occurences to QPEApplication::execDialog() | 12 | * Changed all QDialog::exec() occurences to QPEApplication::execDialog() |
diff --git a/noncore/settings/packagemanager/oipkg.cpp b/noncore/settings/packagemanager/oipkg.cpp index eb07a61..086e91b 100644 --- a/noncore/settings/packagemanager/oipkg.cpp +++ b/noncore/settings/packagemanager/oipkg.cpp | |||
@@ -28,13 +28,12 @@ | |||
28 | Boston, MA 02111-1307, USA. | 28 | Boston, MA 02111-1307, USA. |
29 | 29 | ||
30 | */ | 30 | */ |
31 | 31 | ||
32 | #include "oipkg.h" | 32 | #include "oipkg.h" |
33 | 33 | ||
34 | #include <stdio.h> | ||
35 | #include <stdlib.h> | 34 | #include <stdlib.h> |
36 | #include <string.h> | 35 | #include <string.h> |
37 | 36 | ||
38 | #include <qdir.h> | 37 | #include <qdir.h> |
39 | #include <qfile.h> | 38 | #include <qfile.h> |
40 | #include <qmessagebox.h> | 39 | #include <qmessagebox.h> |
@@ -66,13 +65,12 @@ int fIpkgStatus( char */*name*/, int /*status*/, char *desc, void */*userdata*/ | |||
66 | return 0; | 65 | return 0; |
67 | } | 66 | } |
68 | 67 | ||
69 | int fIpkgFiles( char */*name*/, char *desc, char */*version*/, pkg_state_status_t /*status*/, | 68 | int fIpkgFiles( char */*name*/, char *desc, char */*version*/, pkg_state_status_t /*status*/, |
70 | void */*userdata*/ ) | 69 | void */*userdata*/ ) |
71 | { | 70 | { |
72 | printf( "*****List*****\n%s\n", desc ); | ||
73 | oipkg->ipkgList( desc ); | 71 | oipkg->ipkgList( desc ); |
74 | return 0; | 72 | return 0; |
75 | } | 73 | } |
76 | 74 | ||
77 | OIpkg::OIpkg( Config *config, QObject *parent, const char *name ) | 75 | OIpkg::OIpkg( Config *config, QObject *parent, const char *name ) |
78 | : QObject( parent, name ) | 76 | : QObject( parent, name ) |
diff --git a/noncore/settings/packagemanager/opackagemanager.cpp b/noncore/settings/packagemanager/opackagemanager.cpp index ad2fe02..3633e05 100644 --- a/noncore/settings/packagemanager/opackagemanager.cpp +++ b/noncore/settings/packagemanager/opackagemanager.cpp | |||
@@ -26,12 +26,14 @@ | |||
26 | If not, write to the Free Software Foundation, | 26 | If not, write to the Free Software Foundation, |
27 | Inc., 59 Temple Place - Suite 330, | 27 | Inc., 59 Temple Place - Suite 330, |
28 | Boston, MA 02111-1307, USA. | 28 | Boston, MA 02111-1307, USA. |
29 | 29 | ||
30 | */ | 30 | */ |
31 | 31 | ||
32 | #include <ctype.h> | ||
33 | |||
32 | #include <qpe/qpeapplication.h> | 34 | #include <qpe/qpeapplication.h> |
33 | 35 | ||
34 | #include "opackagemanager.h" | 36 | #include "opackagemanager.h" |
35 | #include "oipkgconfigdlg.h" | 37 | #include "oipkgconfigdlg.h" |
36 | 38 | ||
37 | OPackageManager::OPackageManager( Config *config, QObject *parent, const char *name ) | 39 | OPackageManager::OPackageManager( Config *config, QObject *parent, const char *name ) |
@@ -290,21 +292,34 @@ OConfItem *OPackageManager::findConfItem( OConfItem::Type type, const QString &n | |||
290 | 292 | ||
291 | OPackage *OPackageManager::findPackage( const QString &name ) | 293 | OPackage *OPackageManager::findPackage( const QString &name ) |
292 | { | 294 | { |
293 | return m_packages[ name ]; | 295 | return m_packages[ name ]; |
294 | } | 296 | } |
295 | 297 | ||
296 | int OPackageManager::compareVersions( const QString &version1, const QString &version2 ) | 298 | int OPackageManager::compareVersions( const QString &ver1, const QString &ver2 ) |
297 | { | 299 | { |
298 | // TODO - do proper compare! | 300 | // TODO - should this be in OIpkg??? |
299 | if ( version1 < version2 ) | 301 | |
300 | return -1; | 302 | int epoch1, epoch2; |
301 | else if ( version1 > version2 ) | 303 | QString version1, revision1; |
304 | QString version2, revision2; | ||
305 | |||
306 | parseVersion( ver1, &epoch1, &version1, &revision1 ); | ||
307 | parseVersion( ver2, &epoch2, &version2, &revision2 ); | ||
308 | |||
309 | if ( epoch1 > epoch2 ) | ||
302 | return 1; | 310 | return 1; |
311 | else if ( epoch1 < epoch2 ) | ||
312 | return -1; | ||
303 | 313 | ||
304 | return 0; | 314 | int r = verrevcmp( version1.latin1(), version2.latin1() ); |
315 | if (r) | ||
316 | return r; | ||
317 | |||
318 | r = verrevcmp( revision1.latin1(), revision2.latin1() ); | ||
319 | return r; | ||
305 | } | 320 | } |
306 | 321 | ||
307 | bool OPackageManager::configureDlg( bool installOptions ) | 322 | bool OPackageManager::configureDlg( bool installOptions ) |
308 | { | 323 | { |
309 | OIpkgConfigDlg dlg( &m_ipkg, installOptions, static_cast<QWidget *>(parent()) ); | 324 | OIpkgConfigDlg dlg( &m_ipkg, installOptions, static_cast<QWidget *>(parent()) ); |
310 | return ( QPEApplication::execDialog( &dlg ) == QDialog::Accepted ); | 325 | return ( QPEApplication::execDialog( &dlg ) == QDialog::Accepted ); |
@@ -318,6 +333,80 @@ void OPackageManager::saveSettings() | |||
318 | bool OPackageManager::executeCommand( OPackage::Command command, QStringList *packages, | 333 | bool OPackageManager::executeCommand( OPackage::Command command, QStringList *packages, |
319 | const QString &destination, const QObject *receiver, | 334 | const QString &destination, const QObject *receiver, |
320 | const char *slotOutput, bool rawOutput ) | 335 | const char *slotOutput, bool rawOutput ) |
321 | { | 336 | { |
322 | return m_ipkg.executeCommand( command, packages, destination, receiver, slotOutput, rawOutput ); | 337 | return m_ipkg.executeCommand( command, packages, destination, receiver, slotOutput, rawOutput ); |
323 | } | 338 | } |
339 | |||
340 | void OPackageManager::parseVersion( const QString &verstr, int *epoch, QString *version, | ||
341 | QString *revision ) | ||
342 | { | ||
343 | *epoch = 0; | ||
344 | *revision = QString::null; | ||
345 | |||
346 | // Version string is in the format "ee:vv-rv", where ee=epoch, vv=version, rv=revision | ||
347 | |||
348 | // Get epoch | ||
349 | int colonpos = verstr.find( ':' ); | ||
350 | if ( colonpos > -1 ) | ||
351 | { | ||
352 | *epoch = verstr.left( colonpos ).toInt(); | ||
353 | } | ||
354 | |||
355 | // Get version and revision | ||
356 | int hyphenpos = verstr.find( '-', colonpos + 1 ); | ||
357 | int verlen = verstr.length(); | ||
358 | if ( hyphenpos > -1 ) | ||
359 | { | ||
360 | *version = verstr.mid( colonpos + 1, hyphenpos - colonpos - 1 ); | ||
361 | *revision = verstr.right( verlen - hyphenpos - 1 ); | ||
362 | } | ||
363 | else | ||
364 | { | ||
365 | *version = verstr.right( verlen - colonpos ); | ||
366 | } | ||
367 | } | ||
368 | |||
369 | /* | ||
370 | * libdpkg - Debian packaging suite library routines | ||
371 | * vercmp.c - comparison of version numbers | ||
372 | * | ||
373 | * Copyright (C) 1995 Ian Jackson <iwj10@cus.cam.ac.uk> | ||
374 | */ | ||
375 | int OPackageManager::verrevcmp( const char *val, const char *ref ) | ||
376 | { | ||
377 | int vc, rc; | ||
378 | long vl, rl; | ||
379 | const char *vp, *rp; | ||
380 | const char *vsep, *rsep; | ||
381 | |||
382 | if (!val) val= ""; | ||
383 | if (!ref) ref= ""; | ||
384 | for (;;) { | ||
385 | vp= val; while (*vp && !isdigit(*vp)) vp++; | ||
386 | rp= ref; while (*rp && !isdigit(*rp)) rp++; | ||
387 | for (;;) { | ||
388 | vc= (val == vp) ? 0 : *val++; | ||
389 | rc= (ref == rp) ? 0 : *ref++; | ||
390 | if (!rc && !vc) break; | ||
391 | if (vc && !isalpha(vc)) vc += 256; /* assumes ASCII character set */ | ||
392 | if (rc && !isalpha(rc)) rc += 256; | ||
393 | if (vc != rc) return vc - rc; | ||
394 | } | ||
395 | val= vp; | ||
396 | ref= rp; | ||
397 | vl=0; if (isdigit(*vp)) vl= strtol(val,(char**)&val,10); | ||
398 | rl=0; if (isdigit(*rp)) rl= strtol(ref,(char**)&ref,10); | ||
399 | if (vl != rl) return vl - rl; | ||
400 | |||
401 | vc = *val; | ||
402 | rc = *ref; | ||
403 | vsep = strchr(".-", vc); | ||
404 | rsep = strchr(".-", rc); | ||
405 | if (vsep && !rsep) return -1; | ||
406 | if (!vsep && rsep) return +1; | ||
407 | |||
408 | if (!*val && !*ref) return 0; | ||
409 | if (!*val) return -1; | ||
410 | if (!*ref) return +1; | ||
411 | } | ||
412 | } | ||
diff --git a/noncore/settings/packagemanager/opackagemanager.h b/noncore/settings/packagemanager/opackagemanager.h index 871af0c..b710a51 100644 --- a/noncore/settings/packagemanager/opackagemanager.h +++ b/noncore/settings/packagemanager/opackagemanager.h | |||
@@ -77,12 +77,15 @@ public: | |||
77 | private: | 77 | private: |
78 | Config *m_config; // Pointer to application configuration file | 78 | Config *m_config; // Pointer to application configuration file |
79 | OIpkg m_ipkg; // OIpkg object to retrieve package/configuration information | 79 | OIpkg m_ipkg; // OIpkg object to retrieve package/configuration information |
80 | QDict<OPackage> m_packages; // Global list of available packages | 80 | QDict<OPackage> m_packages; // Global list of available packages |
81 | QStringList m_categories; // List of all categories | 81 | QStringList m_categories; // List of all categories |
82 | 82 | ||
83 | void parseVersion( const QString &verstr, int *epoch, QString *version, QString *revision ); | ||
84 | int verrevcmp( const char *val, const char *ref ); | ||
85 | |||
83 | signals: | 86 | signals: |
84 | void initStatus( int numSteps ); | 87 | void initStatus( int numSteps ); |
85 | void statusText( const QString &status ); | 88 | void statusText( const QString &status ); |
86 | void statusBar( int currStep ); | 89 | void statusBar( int currStep ); |
87 | }; | 90 | }; |
88 | 91 | ||
diff --git a/noncore/settings/packagemanager/opie-packagemanager.control b/noncore/settings/packagemanager/opie-packagemanager.control index 095e3be..5a3908e 100644 --- a/noncore/settings/packagemanager/opie-packagemanager.control +++ b/noncore/settings/packagemanager/opie-packagemanager.control | |||
@@ -4,7 +4,7 @@ Priority: optional | |||
4 | Section: Settings | 4 | Section: Settings |
5 | Depends: task-opie-minimal | 5 | Depends: task-opie-minimal |
6 | Replaces: packagemanager | 6 | Replaces: packagemanager |
7 | Architecture: arm | 7 | Architecture: arm |
8 | Maintainer: Dan Williams (drw@handhelds.org) | 8 | Maintainer: Dan Williams (drw@handhelds.org) |
9 | Description: Opie package management client | 9 | Description: Opie package management client |
10 | Version: 0.2.0 | 10 | Version: 0.3.0 |
diff --git a/noncore/settings/packagemanager/promptdlg.cpp b/noncore/settings/packagemanager/promptdlg.cpp index 128e88e..4e82ba9 100644 --- a/noncore/settings/packagemanager/promptdlg.cpp +++ b/noncore/settings/packagemanager/promptdlg.cpp | |||
@@ -42,13 +42,13 @@ PromptDlg::PromptDlg( const QString &caption, const QString &text, const QString | |||
42 | , m_btnClicked( -1 ) | 42 | , m_btnClicked( -1 ) |
43 | { | 43 | { |
44 | setCaption( caption ); | 44 | setCaption( caption ); |
45 | 45 | ||
46 | QGridLayout *layout = new QGridLayout( this, 2, 2, 4, 2 ); | 46 | QGridLayout *layout = new QGridLayout( this, 2, 2, 4, 2 ); |
47 | QLabel *label = new QLabel( text, this ); | 47 | QLabel *label = new QLabel( text, this ); |
48 | label->setAlignment( AlignCenter | AlignTop | WordBreak ); | 48 | label->setAlignment( AlignCenter | WordBreak ); |
49 | layout->addMultiCellWidget( label, 0, 0, 0, 1 ); | 49 | layout->addMultiCellWidget( label, 0, 0, 0, 1 ); |
50 | 50 | ||
51 | QPushButton *btn = new QPushButton( btn1, this ); | 51 | QPushButton *btn = new QPushButton( btn1, this ); |
52 | layout->addWidget( btn, 1, 0 ); | 52 | layout->addWidget( btn, 1, 0 ); |
53 | connect( btn, SIGNAL(clicked()), this, SLOT(slotBtn1Clicked()) ); | 53 | connect( btn, SIGNAL(clicked()), this, SLOT(slotBtn1Clicked()) ); |
54 | 54 | ||