summaryrefslogtreecommitdiff
path: root/noncore
Unidiff
Diffstat (limited to 'noncore') (more/less context) (show whitespace changes)
-rw-r--r--noncore/settings/packagemanager/ChangeLog7
-rw-r--r--noncore/settings/packagemanager/README6
-rw-r--r--noncore/settings/packagemanager/TODO6
-rw-r--r--noncore/settings/packagemanager/oconfitem.h2
-rw-r--r--noncore/settings/packagemanager/oipkg.cpp81
-rw-r--r--noncore/settings/packagemanager/oipkgconfigdlg.cpp68
-rw-r--r--noncore/settings/packagemanager/oipkgconfigdlg.h3
-rw-r--r--noncore/settings/packagemanager/opie-packagemanager.control2
8 files changed, 122 insertions, 53 deletions
diff --git a/noncore/settings/packagemanager/ChangeLog b/noncore/settings/packagemanager/ChangeLog
index 38756b1..92b542c 100644
--- a/noncore/settings/packagemanager/ChangeLog
+++ b/noncore/settings/packagemanager/ChangeLog
@@ -1,24 +1,31 @@
12005-02-22 Dan Williams <drw@handhelds.org>
2
3 * Released version 0.6.2
4 * Added support for ipkg configuration option, 'lists_dir'
5 * Make app depend on libipkg-0.99.143, or greater
6 * Optimize ipkg configuration file read routine
7
12005-02-16 Dan Williams <drw@handhelds.org> 82005-02-16 Dan Williams <drw@handhelds.org>
2 9
3 * Fixed stupid bug where last package in status file was not shown as installed when it should be 10 * Fixed stupid bug where last package in status file was not shown as installed when it should be
4 * Removed printf's 11 * Removed printf's
5 12
62005-01-02 Dan Williams <drw@handhelds.org> 132005-01-02 Dan Williams <drw@handhelds.org>
7 14
8 * Released version 0.6.1 15 * Released version 0.6.1
9 * Implemented native package linking code to remove need for ipkg-link 16 * Implemented native package linking code to remove need for ipkg-link
10 * Implement package in OIpkg (removed from InstallDlg) as this is ipkg specific 17 * Implement package in OIpkg (removed from InstallDlg) as this is ipkg specific
11 * Many small code tweaks 18 * Many small code tweaks
12 19
132004-12-21 Dan Williams <drw@handhelds.org> 202004-12-21 Dan Williams <drw@handhelds.org>
14 21
15 * Released version 0.6.0 22 * Released version 0.6.0
16 * Added support for Ipkg 'src/gz' feeds 23 * Added support for Ipkg 'src/gz' feeds
17 * Improve server and destination tabs UI's in configuration dialog 24 * Improve server and destination tabs UI's in configuration dialog
18 * Fix app linking to link all dependent packages as well as selected packages 25 * Fix app linking to link all dependent packages as well as selected packages
19 * Hide 'Retrive File List' button once list is retrieved in Package Info dialog 26 * Hide 'Retrive File List' button once list is retrieved in Package Info dialog
20 27
212004-11-18 Dan Williams <drw@handhelds.org> 282004-11-18 Dan Williams <drw@handhelds.org>
22 29
23 * Released version 0.5.0 30 * Released version 0.5.0
24 * All v1.0 functionality implemented 31 * All v1.0 functionality implemented
diff --git a/noncore/settings/packagemanager/README b/noncore/settings/packagemanager/README
index ff6d113..9720cb4 100644
--- a/noncore/settings/packagemanager/README
+++ b/noncore/settings/packagemanager/README
@@ -1,55 +1,55 @@
1/************************************************************************ 1/************************************************************************
2/* 2/*
3/* Opie - Package Manager 3/* Opie - Package Manager
4/* ======================== 4/* ========================
5/* Version 0.6.0 5/* Version 0.6.2
6/* 6/*
7/* A package management client for Opie 7/* A package management client for Opie
8/* 8/*
9/************************************************************************ 9/************************************************************************
10 10
11------------------------------------------------------- 11-------------------------------------------------------
12 Release Notes for Opie-PackageManager - January, 2004 12 Release Notes for Opie-PackageManager - February, 2004
13------------------------------------------------------- 13-------------------------------------------------------
14 14
15====================== 15======================
16= To-do = 16= To-do =
17====================== 17======================
18 18
19- See $OPIEDIR/noncore/settings/packagemanager/TODO for more info. 19- See $OPIEDIR/noncore/settings/packagemanager/TODO for more info.
20 20
21====================== 21======================
22= Build = 22= Build =
23====================== 23======================
24 24
25In order to build opie-packagemanager, libipkg needs to be present on 25In order to build opie-packagemanager, libipkg needs to be present on
26the build system along with the appropriate headers. 26the build system along with the appropriate headers.
27 27
28- libipkg source (best to use version 109 or greater): 28- libipkg source (best to use version 109 or greater):
29 - Familiar CVS directory: familiar/dist/ipkg/C (e.g. 'cvs co familiar/dist/ipkg/C') 29 - Familiar CVS directory: familiar/dist/ipkg/C (e.g. 'cvs co familiar/dist/ipkg/C')
30 - FTP: ftp://handhelds.org/linux/packages/ipkg 30 - FTP: ftp://handhelds.org/linux/packages/ipkg
31 31
32- before building opie-packagemanager, define the environmental variable 32- before building opie-packagemanager, define the environmental variable
33 IPKGDIR to point to the directory containing the ipkg source code 33 IPKGDIR to point to the directory containing the ipkg source code
34 - e.g. 'export IPKGDIR=$HOME/familiar/dist/ipkg/C' 34 - e.g. 'export IPKGDIR=$HOME/familiar/dist/ipkg/C'
35 35
36====================== 36======================
37= Run = 37= Run =
38====================== 38======================
39 39
40- In order to use opie-packagemanager, libipkg must be installed 40- In order to use opie-packagemanager, libipkg must be installed
41 on the system. 41 on the system.
42 42
43====================== 43======================
44= Credits = 44= Credits =
45====================== 45======================
46 46
47- Opie-PackageManager is (C) 2003-2004 Dan Williams 47- Opie-PackageManager is (C) 2003-2005 Dan Williams
48 48
49====================== 49======================
50= Links = 50= Links =
51====================== 51======================
52 52
53- Opie Project: http://opie.handhelds.org 53- Opie Project: http://opie.handhelds.org
54- OpenZaurus Project: http://openzaurus.org 54- OpenZaurus Project: http://openzaurus.org
55- Familiar Project: http://familiar.handhelds.org 55- Familiar Project: http://familiar.handhelds.org
diff --git a/noncore/settings/packagemanager/TODO b/noncore/settings/packagemanager/TODO
index 2512624..dd70b11 100644
--- a/noncore/settings/packagemanager/TODO
+++ b/noncore/settings/packagemanager/TODO
@@ -1,15 +1,13 @@
1/************************************************************************ 1/************************************************************************
2/* 2/*
3/* Opie - Package Manager 3/* Opie - Package Manager
4/* ======================== 4/* ========================
5/* Version 0.6.1 5/* Version 0.6.2
6/* 6/*
7/* A package management client for Opie 7/* A package management client for Opie
8/* 8/*
9/************************************************************************ 9/************************************************************************
10 10
11----------------------------------------------- 11-----------------------------------------------
12 To-do for Opie-PackageManager - January, 2005 12 To-do for Opie-PackageManager - February, 2005
13----------------------------------------------- 13-----------------------------------------------
14
151. Re-work package download dialog
diff --git a/noncore/settings/packagemanager/oconfitem.h b/noncore/settings/packagemanager/oconfitem.h
index 9972c00..b306e93 100644
--- a/noncore/settings/packagemanager/oconfitem.h
+++ b/noncore/settings/packagemanager/oconfitem.h
@@ -17,49 +17,49 @@ _;:, .> :=|. This program is free software; you can
17 : .. .:, . . . without even the implied warranty of 17 : .. .:, . . . without even the implied warranty of
18 =_ + =;=|` MERCHANTABILITY or FITNESS FOR A 18 =_ + =;=|` MERCHANTABILITY or FITNESS FOR A
19 _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU 19 _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU
20..}^=.= = ; Library General Public License for more 20..}^=.= = ; Library General Public License for more
21++= -. .` .: details. 21++= -. .` .: details.
22: = ...= . :.=- 22: = ...= . :.=-
23-. .:....=;==+<; You should have received a copy of the GNU 23-. .:....=;==+<; You should have received a copy of the GNU
24 -_. . . )=. = Library General Public License along with 24 -_. . . )=. = Library General Public License along with
25 -- :-=` this library; see the file COPYING.LIB. 25 -- :-=` this library; see the file COPYING.LIB.
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#ifndef OCONFITEM_H 32#ifndef OCONFITEM_H
33#define OCONFITEM_H 33#define OCONFITEM_H
34 34
35#include <qlist.h> 35#include <qlist.h>
36#include <qstring.h> 36#include <qstring.h>
37 37
38class OConfItem 38class OConfItem
39{ 39{
40public: 40public:
41 enum Type { Source, Destination, Option, Arch, NotDefined }; 41 enum Type { Source, Destination, Option, Arch, Other, NotDefined };
42 42
43 OConfItem( Type type = NotDefined, const QString &name = QString::null, 43 OConfItem( Type type = NotDefined, const QString &name = QString::null,
44 const QString &value = QString::null, const QString &features = QString::null, 44 const QString &value = QString::null, const QString &features = QString::null,
45 bool active = true ); 45 bool active = true );
46 46
47 Type type() { return m_type; } 47 Type type() { return m_type; }
48 const QString &name() { return m_name; } 48 const QString &name() { return m_name; }
49 const QString &value() { return m_value; } 49 const QString &value() { return m_value; }
50 const QString &features() { return m_features; } 50 const QString &features() { return m_features; }
51 bool active() { return m_active; } 51 bool active() { return m_active; }
52 52
53 void setType( Type type ) { m_type = type; } 53 void setType( Type type ) { m_type = type; }
54 void setName( const QString &name ) { m_name = name; } 54 void setName( const QString &name ) { m_name = name; }
55 void setValue( const QString &value ) { m_value = value; } 55 void setValue( const QString &value ) { m_value = value; }
56 void setFeatures( const QString &features ) { m_features = features; } 56 void setFeatures( const QString &features ) { m_features = features; }
57 void setActive( bool active ) { m_active = active; } 57 void setActive( bool active ) { m_active = active; }
58 58
59private: 59private:
60 Type m_type; // Type of configuration item 60 Type m_type; // Type of configuration item
61 QString m_name; // Name of item 61 QString m_name; // Name of item
62 QString m_value; // Value of item 62 QString m_value; // Value of item
63 QString m_features; // Comma-deliminated list of features this item supports 63 QString m_features; // Comma-deliminated list of features this item supports
64 bool m_active; // Indicates whether item is currently active 64 bool m_active; // Indicates whether item is currently active
65}; 65};
diff --git a/noncore/settings/packagemanager/oipkg.cpp b/noncore/settings/packagemanager/oipkg.cpp
index e7e292e..3d2c621 100644
--- a/noncore/settings/packagemanager/oipkg.cpp
+++ b/noncore/settings/packagemanager/oipkg.cpp
@@ -131,68 +131,79 @@ OConfItemList *OIpkg::options()
131 131
132void OIpkg::setConfigItems( OConfItemList *configList ) 132void OIpkg::setConfigItems( OConfItemList *configList )
133{ 133{
134 if ( m_confInfo ) 134 if ( m_confInfo )
135 delete m_confInfo; 135 delete m_confInfo;
136 136
137 m_confInfo = configList; 137 m_confInfo = configList;
138 138
139 // Write out new /etc/ipkg.conf 139 // Write out new /etc/ipkg.conf
140 QFile confFile( IPKG_CONF ); 140 QFile confFile( IPKG_CONF );
141 if ( confFile.open( IO_WriteOnly ) ) 141 if ( confFile.open( IO_WriteOnly ) )
142 { 142 {
143 QTextStream confStream( &confFile ); 143 QTextStream confStream( &confFile );
144 confStream << "# Generated by Opie Package Manager\n\n"; 144 confStream << "# Generated by Opie Package Manager\n\n";
145 145
146 OConfItemListIterator it( *m_confInfo ); 146 OConfItemListIterator it( *m_confInfo );
147 for ( ; it.current(); ++it ) 147 for ( ; it.current(); ++it )
148 { 148 {
149 OConfItem *item = it.current(); 149 OConfItem *item = it.current();
150 150
151 // Only write out valid conf items 151 // Only write out valid conf items
152 if ( item->type() != OConfItem::NotDefined ) 152 if ( item->type() != OConfItem::NotDefined )
153 { 153 {
154 QString confLine; 154 QString confLine;
155 QString name = item->name();
155 if ( !item->active() ) 156 if ( !item->active() )
156 confLine = "#"; 157 confLine = "#";
157 158
158 switch ( item->type() ) 159 switch ( item->type() )
159 { 160 {
160 case OConfItem::Source : 161 case OConfItem::Source :
161 { 162 {
162 if ( item->features().contains( "Compressed" ) ) 163 if ( item->features().contains( "Compressed" ) )
163 confLine.append( "src/gz " ); 164 confLine.append( "src/gz " );
164 else 165 else
165 confLine.append( "src " ); 166 confLine.append( "src " );
166 } 167 }
167 break; 168 break;
168 case OConfItem::Destination : confLine.append( "dest " ); break; 169 case OConfItem::Destination : confLine.append( "dest " ); break;
169 case OConfItem::Option : confLine.append( "option " ); break; 170 case OConfItem::Option : confLine.append( "option " ); break;
170 case OConfItem::Arch : confLine.append( "arch " ); break; 171 case OConfItem::Arch : confLine.append( "arch " ); break;
172 case OConfItem::Other :
173 {
174 // For options w/type = Other, the mapping is as follows:
175 // name = typeStr (e.g. "lists_dir")
176 // value = value
177 // features = name (from configuration file)
178 confLine.append( item->name() );
179 name = item->features();
180 }
181 break;
171 default : break; 182 default : break;
172 }; 183 };
173 184
174 confStream << confLine << " " << item->name() << " " << item->value() << "\n"; 185 confStream << confLine << " " << name << " " << item->value() << "\n";
175 } 186 }
176 } 187 }
177 188
178 confFile.close(); 189 confFile.close();
179 } 190 }
180 else 191 else
181 { 192 {
182 // Problem writing to /etc/ipkg.conf, exit before removing other conf files 193 // Problem writing to /etc/ipkg.conf, exit before removing other conf files
183 return; 194 return;
184 } 195 }
185 196
186 // Delete /etc/ipkg/*.conf files (/etc/ipkg.conf should now have all settings 197 // Delete /etc/ipkg/*.conf files (/etc/ipkg.conf should now have all settings
187 QStringList confFiles; 198 QStringList confFiles;
188 QDir confDir( IPKG_CONF_DIR ); 199 QDir confDir( IPKG_CONF_DIR );
189 if ( confDir.exists() ) 200 if ( confDir.exists() )
190 { 201 {
191 confDir.setNameFilter( "*.conf" ); 202 confDir.setNameFilter( "*.conf" );
192 confDir.setFilter( QDir::Files ); 203 confDir.setFilter( QDir::Files );
193 confFiles = confDir.entryList( "*.conf", QDir::Files ); 204 confFiles = confDir.entryList( "*.conf", QDir::Files );
194 205
195 QStringList::Iterator lastFile = confFiles.end(); 206 QStringList::Iterator lastFile = confFiles.end();
196 for ( QStringList::Iterator it = confFiles.begin(); it != lastFile; ++it ) 207 for ( QStringList::Iterator it = confFiles.begin(); it != lastFile; ++it )
197 { 208 {
198 // Create absolute file path if necessary 209 // Create absolute file path if necessary
@@ -524,94 +535,108 @@ void OIpkg::loadConfiguration()
524 } 535 }
525 confFiles << IPKG_CONF; 536 confFiles << IPKG_CONF;
526 537
527 QStringList::Iterator lastFile = confFiles.end(); 538 QStringList::Iterator lastFile = confFiles.end();
528 for ( QStringList::Iterator it = confFiles.begin(); it != lastFile; ++it ) 539 for ( QStringList::Iterator it = confFiles.begin(); it != lastFile; ++it )
529 { 540 {
530 // Create absolute file path if necessary 541 // Create absolute file path if necessary
531 QString absFile = (*it); 542 QString absFile = (*it);
532 if ( !absFile.startsWith( "/" ) ) 543 if ( !absFile.startsWith( "/" ) )
533 absFile.prepend( QString( IPKG_CONF_DIR ) + "/" ); 544 absFile.prepend( QString( IPKG_CONF_DIR ) + "/" );
534 545
535 // Read in file 546 // Read in file
536 QFile f( absFile ); 547 QFile f( absFile );
537 if ( f.open( IO_ReadOnly ) ) 548 if ( f.open( IO_ReadOnly ) )
538 { 549 {
539 QTextStream s( &f ); 550 QTextStream s( &f );
540 while ( !s.eof() ) 551 while ( !s.eof() )
541 { 552 {
542 553
543 QString line = s.readLine().simplifyWhiteSpace(); 554 QString line = s.readLine().simplifyWhiteSpace();
544 555
545 // Parse line and save info to the conf options list 556 // Parse line and save info to the conf options list
546 if ( !line.isEmpty() ) 557 if ( !line.isEmpty() )
547 { 558 {
548 if ( !line.startsWith( "#" ) || 559 // Strip leading comment marker if exists
549 line.startsWith( "#src" ) || 560 bool comment = false;
550 line.startsWith( "#dest" ) || 561 if ( line.startsWith( "#" ) )
551 line.startsWith( "#arch" ) ||
552 line.startsWith( "#option" ) )
553 { 562 {
554 int pos = line.find( ' ', 1 ); 563 line.remove( 0, 1 );
564 line = line.simplifyWhiteSpace();
565 comment = true;
566 }
567
568 bool recognizedOption = true;
569 int pos = line.find( ' ', 1 ) + 1;
570 int endpos = line.find( ' ', pos );
571
572 // Name
573 QString name = line.mid( pos, endpos - pos );
574
575 // Value
576 QString value = "";
577 if ( endpos > -1 )
578 value = line.right( line.length() - endpos - 1 );
579
580 // Active
581 bool active = !comment;
555 582
556 // Type 583 // Type
557 QString typeStr = line.left( pos ); 584 // For options w/type = Other, the mapping is as follows:
585 // name = typeStr (e.g. "lists_dir")
586 // value = value
587 // features = name (from configuration file)
588
589 QString typeStr = line.left( pos - 1 );
558 OConfItem::Type type; 590 OConfItem::Type type;
559 QString features; 591 QString features;
560 if ( typeStr == "src" || typeStr == "#src" ) 592 if ( typeStr == "src" )
561 type = OConfItem::Source; 593 type = OConfItem::Source;
562 else if ( typeStr == "src/gz" || typeStr == "#src/gz" ) 594 else if ( typeStr == "src/gz" )
563 { 595 {
564 type = OConfItem::Source; 596 type = OConfItem::Source;
565 features = "Compressed"; 597 features = "Compressed";
566 } 598 }
567 else if ( typeStr == "dest" || typeStr == "#dest" ) 599 else if ( typeStr == "dest" )
568 type = OConfItem::Destination; 600 type = OConfItem::Destination;
569 else if ( typeStr == "option" || typeStr == "#option" ) 601 else if ( typeStr == "option" )
570 type = OConfItem::Option; 602 type = OConfItem::Option;
571 else if ( typeStr == "arch" || typeStr == "#arch" ) 603 else if ( typeStr == "arch" )
572 type = OConfItem::Arch; 604 type = OConfItem::Arch;
605 else if ( typeStr == "lists_dir" )
606 {
607 type = OConfItem::Other;
608 features = name;
609 name = typeStr;
610 }
573 else 611 else
574 type = OConfItem::NotDefined; 612 recognizedOption = false;
575 ++pos;
576 int endpos = line.find( ' ', pos );
577
578 // Name
579 QString name = line.mid( pos, endpos - pos );
580
581 // Value
582 QString value = "";
583 if ( endpos > -1 )
584 value = line.right( line.length() - endpos - 1 );
585
586 // Active
587 bool active = !line.startsWith( "#" );
588 613
589 // Add to list 614 // Add to list
615 if ( recognizedOption )
590 m_confInfo->append( new OConfItem( type, name, value, features, active ) ); 616 m_confInfo->append( new OConfItem( type, name, value, features, active ) );
591 } 617 }
592 } 618 }
593 }
594 619
595 f.close(); 620 f.close();
596 } 621 }
597 } 622 }
598 623
599 // Load Ipkg execution options from application configuration file 624 // Load Ipkg execution options from application configuration file
600 if ( m_config ) 625 if ( m_config )
601 { 626 {
602 m_config->setGroup( "Ipkg" ); 627 m_config->setGroup( "Ipkg" );
603 m_ipkgExecOptions = m_config->readNumEntry( "ExecOptions", m_ipkgExecOptions ); 628 m_ipkgExecOptions = m_config->readNumEntry( "ExecOptions", m_ipkgExecOptions );
604 m_ipkgExecVerbosity = m_config->readNumEntry( "Verbosity", m_ipkgExecVerbosity ); 629 m_ipkgExecVerbosity = m_config->readNumEntry( "Verbosity", m_ipkgExecVerbosity );
605 } 630 }
606} 631}
607 632
608OConfItemList *OIpkg::filterConfItems( OConfItem::Type typefilter ) 633OConfItemList *OIpkg::filterConfItems( OConfItem::Type typefilter )
609{ 634{
610 // Load Ipkg configuration info if not already cached 635 // Load Ipkg configuration info if not already cached
611 if ( !m_confInfo ) 636 if ( !m_confInfo )
612 loadConfiguration(); 637 loadConfiguration();
613 638
614 // Build new server list (caller is responsible for deleting) 639 // Build new server list (caller is responsible for deleting)
615 OConfItemList *sl = new OConfItemList; 640 OConfItemList *sl = new OConfItemList;
616 641
617 // If typefilter is empty, retrieve all items 642 // If typefilter is empty, retrieve all items
diff --git a/noncore/settings/packagemanager/oipkgconfigdlg.cpp b/noncore/settings/packagemanager/oipkgconfigdlg.cpp
index e6d6a81..7ee2d74 100644
--- a/noncore/settings/packagemanager/oipkgconfigdlg.cpp
+++ b/noncore/settings/packagemanager/oipkgconfigdlg.cpp
@@ -107,48 +107,55 @@ void OIpkgConfigDlg::accept()
107 if ( confItem ) 107 if ( confItem )
108 { 108 {
109 confItem->setValue( m_proxyFtpServer->text() ); 109 confItem->setValue( m_proxyFtpServer->text() );
110 confItem->setActive( m_proxyFtpActive->isChecked() ); 110 confItem->setActive( m_proxyFtpActive->isChecked() );
111 } 111 }
112 else 112 else
113 m_configs->append( new OConfItem( OConfItem::Option, "ftp_proxy", 113 m_configs->append( new OConfItem( OConfItem::Option, "ftp_proxy",
114 m_proxyFtpServer->text(), QString::null, 114 m_proxyFtpServer->text(), QString::null,
115 m_proxyFtpActive->isChecked() ) ); 115 m_proxyFtpActive->isChecked() ) );
116 116
117 confItem = m_ipkg->findConfItem( OConfItem::Option, "proxy_username" ); 117 confItem = m_ipkg->findConfItem( OConfItem::Option, "proxy_username" );
118 if ( confItem ) 118 if ( confItem )
119 confItem->setValue( m_proxyUsername->text() ); 119 confItem->setValue( m_proxyUsername->text() );
120 else 120 else
121 m_configs->append( new OConfItem( OConfItem::Option, "proxy_username", 121 m_configs->append( new OConfItem( OConfItem::Option, "proxy_username",
122 m_proxyUsername->text() ) ); 122 m_proxyUsername->text() ) );
123 123
124 confItem = m_ipkg->findConfItem( OConfItem::Option, "proxy_password" ); 124 confItem = m_ipkg->findConfItem( OConfItem::Option, "proxy_password" );
125 if ( confItem ) 125 if ( confItem )
126 confItem->setValue( m_proxyPassword->text() ); 126 confItem->setValue( m_proxyPassword->text() );
127 else 127 else
128 m_configs->append( new OConfItem( OConfItem::Option, "proxy_password", 128 m_configs->append( new OConfItem( OConfItem::Option, "proxy_password",
129 m_proxyPassword->text() ) ); 129 m_proxyPassword->text() ) );
130 130
131 confItem = m_ipkg->findConfItem( OConfItem::Other, "lists_dir" );
132 if ( confItem )
133 confItem->setValue( m_optSourceLists->text() );
134 else
135 m_configs->append( new OConfItem( OConfItem::Other, "lists_dir",
136 m_optSourceLists->text(), "name" ) );
137
131 m_ipkg->setConfigItems( m_configs ); 138 m_ipkg->setConfigItems( m_configs );
132 } 139 }
133 140
134 // Save options configuration 141 // Save options configuration
135 int options = 0; 142 int options = 0;
136 if ( m_optForceDepends->isChecked() ) 143 if ( m_optForceDepends->isChecked() )
137 options |= FORCE_DEPENDS; 144 options |= FORCE_DEPENDS;
138 if ( m_optForceReinstall->isChecked() ) 145 if ( m_optForceReinstall->isChecked() )
139 options |= FORCE_REINSTALL; 146 options |= FORCE_REINSTALL;
140 if ( m_optForceRemove->isChecked() ) 147 if ( m_optForceRemove->isChecked() )
141 options |= FORCE_REMOVE; 148 options |= FORCE_REMOVE;
142 if ( m_optForceOverwrite->isChecked() ) 149 if ( m_optForceOverwrite->isChecked() )
143 options |= FORCE_OVERWRITE; 150 options |= FORCE_OVERWRITE;
144 m_ipkg->setIpkgExecOptions( options ); 151 m_ipkg->setIpkgExecOptions( options );
145 m_ipkg->setIpkgExecVerbosity( m_optVerboseIpkg->currentItem() ); 152 m_ipkg->setIpkgExecVerbosity( m_optVerboseIpkg->currentItem() );
146 153
147 QDialog::accept(); 154 QDialog::accept();
148} 155}
149 156
150void OIpkgConfigDlg::reject() 157void OIpkgConfigDlg::reject()
151{ 158{
152 if ( m_configs ) 159 if ( m_configs )
153 delete m_configs; 160 delete m_configs;
154} 161}
@@ -276,125 +283,145 @@ void OIpkgConfigDlg::initProxyWidget()
276 m_proxyUsername = new QLineEdit( container ); 283 m_proxyUsername = new QLineEdit( container );
277 QWhatsThis::add( m_proxyUsername, tr( "Enter the username for the proxy servers here." ) ); 284 QWhatsThis::add( m_proxyUsername, tr( "Enter the username for the proxy servers here." ) );
278 layout->addWidget( m_proxyUsername, 2, 1 ); 285 layout->addWidget( m_proxyUsername, 2, 1 );
279 286
280 label = new QLabel( tr( "Password:" ), container ); 287 label = new QLabel( tr( "Password:" ), container );
281 QWhatsThis::add( label, tr( "Enter the password for the proxy servers here." ) ); 288 QWhatsThis::add( label, tr( "Enter the password for the proxy servers here." ) );
282 layout->addWidget( label, 3, 0 ); 289 layout->addWidget( label, 3, 0 );
283 m_proxyPassword = new QLineEdit( container ); 290 m_proxyPassword = new QLineEdit( container );
284 QWhatsThis::add( m_proxyPassword, tr( "Enter the password for the proxy servers here." ) ); 291 QWhatsThis::add( m_proxyPassword, tr( "Enter the password for the proxy servers here." ) );
285 layout->addWidget( m_proxyPassword, 3, 1 ); 292 layout->addWidget( m_proxyPassword, 3, 1 );
286} 293}
287 294
288void OIpkgConfigDlg::initOptionsWidget() 295void OIpkgConfigDlg::initOptionsWidget()
289{ 296{
290 m_optionsWidget = new QWidget( this ); 297 m_optionsWidget = new QWidget( this );
291 298
292 // Initialize UI 299 // Initialize UI
293 QVBoxLayout *vb = new QVBoxLayout( m_optionsWidget ); 300 QVBoxLayout *vb = new QVBoxLayout( m_optionsWidget );
294 QScrollView *sv = new QScrollView( m_optionsWidget ); 301 QScrollView *sv = new QScrollView( m_optionsWidget );
295 vb->addWidget( sv, 0, 0 ); 302 vb->addWidget( sv, 0, 0 );
296 sv->setResizePolicy( QScrollView::AutoOneFit ); 303 sv->setResizePolicy( QScrollView::AutoOneFit );
297 sv->setFrameStyle( QFrame::NoFrame ); 304 sv->setFrameStyle( QFrame::NoFrame );
298 QWidget *container = new QWidget( sv->viewport() ); 305 QWidget *container = new QWidget( sv->viewport() );
299 sv->addChild( container ); 306 sv->addChild( container );
300 QVBoxLayout *layout = new QVBoxLayout( container, 2, 4 ); 307 QGridLayout *layout = new QGridLayout( container, 8, 2, 2, 4 );
301 308
302 m_optForceDepends = new QCheckBox( tr( "Force Depends" ), container ); 309 m_optForceDepends = new QCheckBox( tr( "Force Depends" ), container );
303 QWhatsThis::add( m_optForceDepends, tr( "Tap here to enable or disable the '-force-depends' option for Ipkg." ) ); 310 QWhatsThis::add( m_optForceDepends, tr( "Tap here to enable or disable the '-force-depends' option for Ipkg." ) );
304 layout->addWidget( m_optForceDepends ); 311 layout->addMultiCellWidget( m_optForceDepends, 0, 0, 0, 1 );
305 312
306 m_optForceReinstall = new QCheckBox( tr( "Force Reinstall" ), container ); 313 m_optForceReinstall = new QCheckBox( tr( "Force Reinstall" ), container );
307 QWhatsThis::add( m_optForceReinstall, tr( "Tap here to enable or disable the '-force-reinstall' option for Ipkg." ) ); 314 QWhatsThis::add( m_optForceReinstall, tr( "Tap here to enable or disable the '-force-reinstall' option for Ipkg." ) );
308 layout->addWidget( m_optForceReinstall ); 315 layout->addMultiCellWidget( m_optForceReinstall, 1, 1, 0, 1 );
309 316
310 m_optForceRemove = new QCheckBox( tr( "Force Remove" ), container ); 317 m_optForceRemove = new QCheckBox( tr( "Force Remove" ), container );
311 QWhatsThis::add( m_optForceRemove, tr( "Tap here to enable or disable the '-force-removal-of-dependent-packages' option for Ipkg." ) ); 318 QWhatsThis::add( m_optForceRemove, tr( "Tap here to enable or disable the '-force-removal-of-dependent-packages' option for Ipkg." ) );
312 layout->addWidget( m_optForceRemove ); 319 layout->addMultiCellWidget( m_optForceRemove, 2, 2, 0, 1 );
313 320
314 m_optForceOverwrite = new QCheckBox( tr( "Force Overwrite" ), container ); 321 m_optForceOverwrite = new QCheckBox( tr( "Force Overwrite" ), container );
315 QWhatsThis::add( m_optForceOverwrite, tr( "Tap here to enable or disable the '-force-overwrite' option for Ipkg." ) ); 322 QWhatsThis::add( m_optForceOverwrite, tr( "Tap here to enable or disable the '-force-overwrite' option for Ipkg." ) );
316 layout->addWidget( m_optForceOverwrite ); 323 layout->addMultiCellWidget( m_optForceOverwrite, 3, 3, 0, 1 );
317 324
318 QLabel *l = new QLabel( tr( "Information Level" ), container ); 325 QLabel *l = new QLabel( tr( "Information level:" ), container );
319 QWhatsThis::add( l, tr( "Select information level for Ipkg." ) ); 326 QWhatsThis::add( l, tr( "Select information level for Ipkg." ) );
320 layout->addWidget( l ); 327 layout->addMultiCellWidget( l, 4, 4, 0, 1 );
321 328
322 m_optVerboseIpkg = new QComboBox( container ); 329 m_optVerboseIpkg = new QComboBox( container );
323 QWhatsThis::add( m_optVerboseIpkg, tr( "Select information level for Ipkg." ) ); 330 QWhatsThis::add( m_optVerboseIpkg, tr( "Select information level for Ipkg." ) );
324 m_optVerboseIpkg->insertItem( tr( "Errors only" ) ); 331 m_optVerboseIpkg->insertItem( tr( "Errors only" ) );
325 m_optVerboseIpkg->insertItem( tr( "Normal messages" ) ); 332 m_optVerboseIpkg->insertItem( tr( "Normal messages" ) );
326 m_optVerboseIpkg->insertItem( tr( "Informative messages" ) ); 333 m_optVerboseIpkg->insertItem( tr( "Informative messages" ) );
327 m_optVerboseIpkg->insertItem( tr( "Troubleshooting output" ) ); 334 m_optVerboseIpkg->insertItem( tr( "Troubleshooting output" ) );
328 layout->addWidget( m_optVerboseIpkg ); 335 layout->addMultiCellWidget( m_optVerboseIpkg, 5, 5, 0, 1 );
336
337 l = new QLabel( tr( "Package source lists directory:" ), container );
338 QWhatsThis::add( l, tr( "Enter the directory where package source feed information is stored." ) );
339 layout->addMultiCellWidget( l, 6, 6, 0, 1 );
340
341 m_optSourceLists = new QLineEdit( container );
342 QWhatsThis::add( m_optSourceLists, tr( "Enter the directory where package source feed information is stored." ) );
343 layout->addWidget( m_optSourceLists, 7, 0 );
344 QPushButton *btn = new QPushButton( Resource::loadPixmap( "folder" ), QString::null, container );
345 btn->setMaximumWidth( btn->height() );
346 QWhatsThis::add( btn, tr( "Tap here to select the directory where package source feed information is stored." ) );
347 connect( btn, SIGNAL(clicked()), this, SLOT(slotOptSelectSourceListsPath()) );
348 layout->addWidget( btn, 7, 1 );
329 349
330 layout->addItem( new QSpacerItem( 1, 1, QSizePolicy::Minimum, QSizePolicy::Expanding ) ); 350 layout->addItem( new QSpacerItem( 1, 1, QSizePolicy::Minimum, QSizePolicy::Expanding ) );
331} 351}
332 352
333void OIpkgConfigDlg::initData() 353void OIpkgConfigDlg::initData()
334{ 354{
335 // Read ipkg configuration (server/destination/proxy) information 355 // Read ipkg configuration (server/destination/proxy) information
336 if ( m_ipkg && !m_installOptions ) 356 if ( m_ipkg && !m_installOptions )
337 { 357 {
338 m_configs = m_ipkg->configItems(); 358 m_configs = m_ipkg->configItems();
339 if ( m_configs ) 359 if ( m_configs )
340 { 360 {
341 for ( OConfItemListIterator configIt( *m_configs ); configIt.current(); ++configIt ) 361 for ( OConfItemListIterator configIt( *m_configs ); configIt.current(); ++configIt )
342 { 362 {
343 OConfItem *config = configIt.current(); 363 OConfItem *config = configIt.current();
344 364
345 // Add configuration item to the appropriate dialog controls 365 // Add configuration item to the appropriate dialog controls
346 if ( config ) 366 if ( config )
347 { 367 {
348 if ( config->type() == OConfItem::Source ) 368 switch ( config->type() )
349 {
350 m_serverList->insertItem( config->name() );
351 }
352 else if ( config->type() == OConfItem::Destination )
353 { 369 {
354 m_destList->insertItem( config->name() ); 370 case OConfItem::Source : m_serverList->insertItem( config->name() ); break;
355 } 371 case OConfItem::Destination : m_destList->insertItem( config->name() ); break;
356 else if ( config->type() == OConfItem::Option ) 372 case OConfItem::Option :
357 { 373 {
358 if ( config->name() == "http_proxy" ) 374 if ( config->name() == "http_proxy" )
359 { 375 {
360 m_proxyHttpServer->setText( config->value() ); 376 m_proxyHttpServer->setText( config->value() );
361 m_proxyHttpActive->setChecked( config->active() ); 377 m_proxyHttpActive->setChecked( config->active() );
362 } 378 }
363 else if ( config->name() == "ftp_proxy" ) 379 else if ( config->name() == "ftp_proxy" )
364 { 380 {
365 m_proxyFtpServer->setText( config->value() ); 381 m_proxyFtpServer->setText( config->value() );
366 m_proxyFtpActive->setChecked( config->active() ); 382 m_proxyFtpActive->setChecked( config->active() );
367 } 383 }
368 else if ( config->name() == "proxy_username" ) 384 else if ( config->name() == "proxy_username" )
369 { 385 {
370 m_proxyUsername->setText( config->value() ); 386 m_proxyUsername->setText( config->value() );
371 } 387 }
372 else if ( config->name() == "proxy_password" ) 388 else if ( config->name() == "proxy_password" )
373 { 389 {
374 m_proxyPassword->setText( config->value() ); 390 m_proxyPassword->setText( config->value() );
375 } 391 }
376 } 392 }
393 break;
394 case OConfItem::Other :
395 {
396 if ( config->name() == "lists_dir" )
397 m_optSourceLists->setText( config->value() );
398 else // TODO - use proper libipkg define
399 m_optSourceLists->setText( "/usr/lib/ipkg/lists" );
400 }
401 break;
402 default : break;
403 };
377 } 404 }
378 } 405 }
379 } 406 }
380 } 407 }
381 408
382 // Get Ipkg execution options 409 // Get Ipkg execution options
383 int options = m_ipkg->ipkgExecOptions(); 410 int options = m_ipkg->ipkgExecOptions();
384 if ( options & FORCE_DEPENDS ) 411 if ( options & FORCE_DEPENDS )
385 m_optForceDepends->setChecked( true ); 412 m_optForceDepends->setChecked( true );
386 if ( options & FORCE_REINSTALL ) 413 if ( options & FORCE_REINSTALL )
387 m_optForceReinstall->setChecked( true ); 414 m_optForceReinstall->setChecked( true );
388 if ( options & FORCE_REMOVE ) 415 if ( options & FORCE_REMOVE )
389 m_optForceRemove->setChecked( true ); 416 m_optForceRemove->setChecked( true );
390 if ( options & FORCE_OVERWRITE ) 417 if ( options & FORCE_OVERWRITE )
391 m_optForceOverwrite->setChecked( true ); 418 m_optForceOverwrite->setChecked( true );
392 419
393 m_optVerboseIpkg->setCurrentItem( m_ipkg->ipkgExecVerbosity() ); 420 m_optVerboseIpkg->setCurrentItem( m_ipkg->ipkgExecVerbosity() );
394} 421}
395 422
396void OIpkgConfigDlg::slotServerSelected( int index ) 423void OIpkgConfigDlg::slotServerSelected( int index )
397{ 424{
398 m_serverCurrent = index; 425 m_serverCurrent = index;
399 426
400 // Enable Edit and Delete buttons 427 // Enable Edit and Delete buttons
@@ -492,48 +519,57 @@ void OIpkgConfigDlg::slotDestEdit()
492 QString origName = dest->name(); 519 QString origName = dest->name();
493 OIpkgDestDlg dlg( dest, this ); 520 OIpkgDestDlg dlg( dest, this );
494 if ( QPEApplication::execDialog( &dlg ) == QDialog::Accepted ) 521 if ( QPEApplication::execDialog( &dlg ) == QDialog::Accepted )
495 { 522 {
496 // Check to see if name has changed, if so update the dest list 523 // Check to see if name has changed, if so update the dest list
497 if ( dest->name() != origName ) 524 if ( dest->name() != origName )
498 m_destList->changeItem( dest->name(), m_destCurrent ); 525 m_destList->changeItem( dest->name(), m_destCurrent );
499 } 526 }
500 } 527 }
501} 528}
502 529
503void OIpkgConfigDlg::slotDestDelete() 530void OIpkgConfigDlg::slotDestDelete()
504{ 531{
505 // Find selected destination in list 532 // Find selected destination in list
506 OConfItem *destination = m_ipkg->findConfItem( OConfItem::Destination, m_destList->currentText() ); 533 OConfItem *destination = m_ipkg->findConfItem( OConfItem::Destination, m_destList->currentText() );
507 534
508 // Delete destination 535 // Delete destination
509 if ( destination ) 536 if ( destination )
510 { 537 {
511 m_configs->removeRef( destination ); 538 m_configs->removeRef( destination );
512 m_destList->removeItem( m_destCurrent ); 539 m_destList->removeItem( m_destCurrent );
513 } 540 }
514} 541}
515 542
543void OIpkgConfigDlg::slotOptSelectSourceListsPath()
544{
545 QString path = Opie::Ui::OFileDialog::getDirectory( 0, m_optSourceLists->text() );
546 if ( path.at( path.length() - 1 ) == '/' )
547 path.truncate( path.length() - 1 );
548 if ( !path.isNull() )
549 m_optSourceLists->setText( path );
550}
551
516OIpkgServerDlg::OIpkgServerDlg( OConfItem *server, QWidget *parent ) 552OIpkgServerDlg::OIpkgServerDlg( OConfItem *server, QWidget *parent )
517 : QDialog( parent, QString::null, true, WStyle_ContextHelp ) 553 : QDialog( parent, QString::null, true, WStyle_ContextHelp )
518 , m_server( server ) 554 , m_server( server )
519{ 555{
520 setCaption( tr( "Edit Server" ) ); 556 setCaption( tr( "Edit Server" ) );
521 557
522 // Initialize UI 558 // Initialize UI
523 QVBoxLayout *layout = new QVBoxLayout( this, 2, 4 ); 559 QVBoxLayout *layout = new QVBoxLayout( this, 2, 4 );
524 560
525 m_active = new QCheckBox( tr( "Active" ), this ); 561 m_active = new QCheckBox( tr( "Active" ), this );
526 QWhatsThis::add( m_active, tr( "Tap here to indicate whether this entry is active or not." ) ); 562 QWhatsThis::add( m_active, tr( "Tap here to indicate whether this entry is active or not." ) );
527 layout->addWidget( m_active ); 563 layout->addWidget( m_active );
528 564
529 layout->addStretch(); 565 layout->addStretch();
530 566
531 QLabel *label = new QLabel( tr( "Name:" ), this ); 567 QLabel *label = new QLabel( tr( "Name:" ), this );
532 QWhatsThis::add( label, tr( "Enter the name of this entry here." ) ); 568 QWhatsThis::add( label, tr( "Enter the name of this entry here." ) );
533 layout->addWidget( label ); 569 layout->addWidget( label );
534 m_name = new QLineEdit( this ); 570 m_name = new QLineEdit( this );
535 QWhatsThis::add( m_name, tr( "Enter the name of this entry here." ) ); 571 QWhatsThis::add( m_name, tr( "Enter the name of this entry here." ) );
536 layout->addWidget( m_name ); 572 layout->addWidget( m_name );
537 573
538 layout->addStretch(); 574 layout->addStretch();
539 575
diff --git a/noncore/settings/packagemanager/oipkgconfigdlg.h b/noncore/settings/packagemanager/oipkgconfigdlg.h
index 0fb2e16..9e23b62 100644
--- a/noncore/settings/packagemanager/oipkgconfigdlg.h
+++ b/noncore/settings/packagemanager/oipkgconfigdlg.h
@@ -78,66 +78,69 @@ private:
78 // Server configuration UI controls 78 // Server configuration UI controls
79 QListBox *m_serverList; // Server list selection 79 QListBox *m_serverList; // Server list selection
80 QPushButton *m_serverEditBtn; // Server edit button 80 QPushButton *m_serverEditBtn; // Server edit button
81 QPushButton *m_serverDeleteBtn; // Server edit button 81 QPushButton *m_serverDeleteBtn; // Server edit button
82 82
83 // Destination configuration UI controls 83 // Destination configuration UI controls
84 QListBox *m_destList; // Destination list selection 84 QListBox *m_destList; // Destination list selection
85 QPushButton *m_destEditBtn; // Destination edit button 85 QPushButton *m_destEditBtn; // Destination edit button
86 QPushButton *m_destDeleteBtn; // Destination edit button 86 QPushButton *m_destDeleteBtn; // Destination edit button
87 87
88 // Proxy server configuration UI controls 88 // Proxy server configuration UI controls
89 QLineEdit *m_proxyHttpServer; // HTTP proxy server URL edit box 89 QLineEdit *m_proxyHttpServer; // HTTP proxy server URL edit box
90 QCheckBox *m_proxyHttpActive; // Activate HTTP proxy check box 90 QCheckBox *m_proxyHttpActive; // Activate HTTP proxy check box
91 QLineEdit *m_proxyFtpServer; // FTP proxy server edit box 91 QLineEdit *m_proxyFtpServer; // FTP proxy server edit box
92 QCheckBox *m_proxyFtpActive; // Activate FTP proxy check box 92 QCheckBox *m_proxyFtpActive; // Activate FTP proxy check box
93 QLineEdit *m_proxyUsername; // Proxy server username edit box 93 QLineEdit *m_proxyUsername; // Proxy server username edit box
94 QLineEdit *m_proxyPassword; // Proxy server password edit box 94 QLineEdit *m_proxyPassword; // Proxy server password edit box
95 95
96 // Options configuration UI controls 96 // Options configuration UI controls
97 QCheckBox *m_optForceDepends; // Force depends ipkg option checkbox 97 QCheckBox *m_optForceDepends; // Force depends ipkg option checkbox
98 QCheckBox *m_optForceReinstall; // Force reinstall ipkg option checkbox 98 QCheckBox *m_optForceReinstall; // Force reinstall ipkg option checkbox
99 QCheckBox *m_optForceRemove; // Force remove ipkg option checkbox 99 QCheckBox *m_optForceRemove; // Force remove ipkg option checkbox
100 QCheckBox *m_optForceOverwrite; // Force overwrite ipkg option checkbox 100 QCheckBox *m_optForceOverwrite; // Force overwrite ipkg option checkbox
101 QComboBox *m_optVerboseIpkg; // Ipkg verbosity option selection 101 QComboBox *m_optVerboseIpkg; // Ipkg verbosity option selection
102 QLineEdit *m_optSourceLists; // Ipkg source lists destination directory
102 103
103 void initServerWidget(); 104 void initServerWidget();
104 void initDestinationWidget(); 105 void initDestinationWidget();
105 void initProxyWidget(); 106 void initProxyWidget();
106 void initOptionsWidget(); 107 void initOptionsWidget();
107 108
108 void initData(); 109 void initData();
109 110
110private slots: 111private slots:
111 void slotServerSelected( int index ); 112 void slotServerSelected( int index );
112 void slotServerNew(); 113 void slotServerNew();
113 void slotServerEdit(); 114 void slotServerEdit();
114 void slotServerDelete(); 115 void slotServerDelete();
115 116
116 void slotDestSelected( int index ); 117 void slotDestSelected( int index );
117 void slotDestNew(); 118 void slotDestNew();
118 void slotDestEdit(); 119 void slotDestEdit();
119 void slotDestDelete(); 120 void slotDestDelete();
121
122 void slotOptSelectSourceListsPath();
120}; 123};
121 124
122class OIpkgServerDlg : public QDialog 125class OIpkgServerDlg : public QDialog
123{ 126{
124 Q_OBJECT 127 Q_OBJECT
125 128
126public: 129public:
127 OIpkgServerDlg( OConfItem *server = 0l, QWidget *parent = 0l ); 130 OIpkgServerDlg( OConfItem *server = 0l, QWidget *parent = 0l );
128 131
129protected slots: 132protected slots:
130 void accept(); 133 void accept();
131 134
132private: 135private:
133 OConfItem *m_server; 136 OConfItem *m_server;
134 137
135 // UI controls 138 // UI controls
136 QLineEdit *m_name; // Server name edit box 139 QLineEdit *m_name; // Server name edit box
137 QLineEdit *m_location; // Server location URL edit box 140 QLineEdit *m_location; // Server location URL edit box
138 QCheckBox *m_compressed; // Indicates whether the server is a 'src/gz' feed 141 QCheckBox *m_compressed; // Indicates whether the server is a 'src/gz' feed
139 QCheckBox *m_active; // Indicates whether the server is activated 142 QCheckBox *m_active; // Indicates whether the server is activated
140}; 143};
141 144
142class OIpkgDestDlg : public QDialog 145class OIpkgDestDlg : public QDialog
143{ 146{
diff --git a/noncore/settings/packagemanager/opie-packagemanager.control b/noncore/settings/packagemanager/opie-packagemanager.control
index 5da7a84..94348dd 100644
--- a/noncore/settings/packagemanager/opie-packagemanager.control
+++ b/noncore/settings/packagemanager/opie-packagemanager.control
@@ -1,10 +1,10 @@
1Package: opie-packagemanager 1Package: opie-packagemanager
2Files: plugins/application/libpackagemanager.so* bin/packagemanager pics/packagemanager apps/Settings/packagemanager.desktop 2Files: plugins/application/libpackagemanager.so* bin/packagemanager pics/packagemanager apps/Settings/packagemanager.desktop
3Priority: optional 3Priority: optional
4Section: opie/settings 4Section: opie/settings
5Depends: task-opie-minimal, libopiecore2, libopieui2, libipkg (>=0.99.143) 5Depends: task-opie-minimal, libopiecore2, libopieui2, libipkg (>=0.99.143)
6Replaces: packagemanager 6Replaces: packagemanager
7Architecture: arm 7Architecture: arm
8Maintainer: Dan Williams (drw@handhelds.org) 8Maintainer: Dan Williams (drw@handhelds.org)
9Description: Opie package management client 9Description: Opie package management client
10Version: 0.6.1$EXTRAVERSION 10Version: 0.6.2$EXTRAVERSION