summaryrefslogtreecommitdiff
path: root/noncore/settings/packagemanager
authordrw <drw>2005-02-22 22:25:39 (UTC)
committer drw <drw>2005-02-22 22:25:39 (UTC)
commit504c5f59c082106028e3dbc9126d7b655908224f (patch) (side-by-side diff)
tree2cf4465cb2a46b0d13f909d073225585ad4e5092 /noncore/settings/packagemanager
parenta2eea1c6273acd16fed2406493923c52fba19ebc (diff)
downloadopie-504c5f59c082106028e3dbc9126d7b655908224f.zip
opie-504c5f59c082106028e3dbc9126d7b655908224f.tar.gz
opie-504c5f59c082106028e3dbc9126d7b655908224f.tar.bz2
Add support for lists_dir ipkg configuration option, optimize ipkg configuration file read routine, update version to 0.6.2
Diffstat (limited to 'noncore/settings/packagemanager') (more/less context) (ignore 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.cpp117
-rw-r--r--noncore/settings/packagemanager/oipkgconfigdlg.cpp138
-rw-r--r--noncore/settings/packagemanager/oipkgconfigdlg.h7
-rw-r--r--noncore/settings/packagemanager/opie-packagemanager.control2
8 files changed, 177 insertions, 108 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,2 +1,9 @@
+2005-02-22 Dan Williams <drw@handhelds.org>
+
+ * Released version 0.6.2
+ * Added support for ipkg configuration option, 'lists_dir'
+ * Make app depend on libipkg-0.99.143, or greater
+ * Optimize ipkg configuration file read routine
+
2005-02-16 Dan Williams <drw@handhelds.org>
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
@@ -3,5 +3,5 @@
/* Opie - Package Manager
/* ========================
-/* Version 0.6.0
+/* Version 0.6.2
/*
/* A package management client for Opie
@@ -10,5 +10,5 @@
-------------------------------------------------------
- Release Notes for Opie-PackageManager - January, 2004
+ Release Notes for Opie-PackageManager - February, 2004
-------------------------------------------------------
@@ -45,5 +45,5 @@ the build system along with the appropriate headers.
======================
-- Opie-PackageManager is (C) 2003-2004 Dan Williams
+- Opie-PackageManager is (C) 2003-2005 Dan Williams
======================
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
@@ -3,5 +3,5 @@
/* Opie - Package Manager
/* ========================
-/* Version 0.6.1
+/* Version 0.6.2
/*
/* A package management client for Opie
@@ -10,6 +10,4 @@
-----------------------------------------------
- To-do for Opie-PackageManager - January, 2005
+ To-do for Opie-PackageManager - February, 2005
-----------------------------------------------
-
-1. 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
@@ -39,5 +39,5 @@ class OConfItem
{
public:
- enum Type { Source, Destination, Option, Arch, NotDefined };
+ enum Type { Source, Destination, Option, Arch, Other, NotDefined };
OConfItem( Type type = NotDefined, const QString &name = QString::null,
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
@@ -153,4 +153,5 @@ void OIpkg::setConfigItems( OConfItemList *configList )
{
QString confLine;
+ QString name = item->name();
if ( !item->active() )
confLine = "#";
@@ -161,16 +162,26 @@ void OIpkg::setConfigItems( OConfItemList *configList )
{
if ( item->features().contains( "Compressed" ) )
- confLine.append( "src/gz " );
+ confLine.append( "src/gz" );
else
- confLine.append( "src " );
+ confLine.append( "src" );
+ }
+ break;
+ case OConfItem::Destination : confLine.append( "dest" ); break;
+ case OConfItem::Option : confLine.append( "option" ); break;
+ case OConfItem::Arch : confLine.append( "arch" ); break;
+ case OConfItem::Other :
+ {
+ // For options w/type = Other, the mapping is as follows:
+ // name = typeStr (e.g. "lists_dir")
+ // value = value
+ // features = name (from configuration file)
+ confLine.append( item->name() );
+ name = item->features();
}
break;
- case OConfItem::Destination : confLine.append( "dest " ); break;
- case OConfItem::Option : confLine.append( "option " ); break;
- case OConfItem::Arch : confLine.append( "arch " ); break;
default : break;
};
- confStream << confLine << " " << item->name() << " " << item->value() << "\n";
+ confStream << confLine << " " << name << " " << item->value() << "\n";
}
}
@@ -546,48 +557,62 @@ void OIpkg::loadConfiguration()
if ( !line.isEmpty() )
{
- if ( !line.startsWith( "#" ) ||
- line.startsWith( "#src" ) ||
- line.startsWith( "#dest" ) ||
- line.startsWith( "#arch" ) ||
- line.startsWith( "#option" ) )
+ // Strip leading comment marker if exists
+ bool comment = false;
+ if ( line.startsWith( "#" ) )
{
- int pos = line.find( ' ', 1 );
-
- // Type
- QString typeStr = line.left( pos );
- OConfItem::Type type;
- QString features;
- if ( typeStr == "src" || typeStr == "#src" )
- type = OConfItem::Source;
- else if ( typeStr == "src/gz" || typeStr == "#src/gz" )
- {
- type = OConfItem::Source;
- features = "Compressed";
- }
- else if ( typeStr == "dest" || typeStr == "#dest" )
- type = OConfItem::Destination;
- else if ( typeStr == "option" || typeStr == "#option" )
- type = OConfItem::Option;
- else if ( typeStr == "arch" || typeStr == "#arch" )
- type = OConfItem::Arch;
- else
- type = OConfItem::NotDefined;
- ++pos;
- int endpos = line.find( ' ', pos );
-
- // Name
- QString name = line.mid( pos, endpos - pos );
-
- // Value
- QString value = "";
- if ( endpos > -1 )
- value = line.right( line.length() - endpos - 1 );
+ line.remove( 0, 1 );
+ line = line.simplifyWhiteSpace();
+ comment = true;
+ }
- // Active
- bool active = !line.startsWith( "#" );
+ bool recognizedOption = true;
+ int pos = line.find( ' ', 1 ) + 1;
+ int endpos = line.find( ' ', pos );
+
+ // Name
+ QString name = line.mid( pos, endpos - pos );
+
+ // Value
+ QString value = "";
+ if ( endpos > -1 )
+ value = line.right( line.length() - endpos - 1 );
+
+ // Active
+ bool active = !comment;
+
+ // Type
+ // For options w/type = Other, the mapping is as follows:
+ // name = typeStr (e.g. "lists_dir")
+ // value = value
+ // features = name (from configuration file)
+
+ QString typeStr = line.left( pos - 1 );
+ OConfItem::Type type;
+ QString features;
+ if ( typeStr == "src" )
+ type = OConfItem::Source;
+ else if ( typeStr == "src/gz" )
+ {
+ type = OConfItem::Source;
+ features = "Compressed";
+ }
+ else if ( typeStr == "dest" )
+ type = OConfItem::Destination;
+ else if ( typeStr == "option" )
+ type = OConfItem::Option;
+ else if ( typeStr == "arch" )
+ type = OConfItem::Arch;
+ else if ( typeStr == "lists_dir" )
+ {
+ type = OConfItem::Other;
+ features = name;
+ name = typeStr;
+ }
+ else
+ recognizedOption = false;
- // Add to list
+ // Add to list
+ if ( recognizedOption )
m_confInfo->append( new OConfItem( type, name, value, features, active ) );
- }
}
}
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
@@ -129,4 +129,11 @@ void OIpkgConfigDlg::accept()
m_proxyPassword->text() ) );
+ confItem = m_ipkg->findConfItem( OConfItem::Other, "lists_dir" );
+ if ( confItem )
+ confItem->setValue( m_optSourceLists->text() );
+ else
+ m_configs->append( new OConfItem( OConfItem::Other, "lists_dir",
+ m_optSourceLists->text(), "name" ) );
+
m_ipkg->setConfigItems( m_configs );
}
@@ -184,5 +191,5 @@ void OIpkgConfigDlg::initServerWidget()
connect( m_serverEditBtn, SIGNAL(clicked()), this, SLOT(slotServerEdit()) );
layout->addWidget( m_serverEditBtn, 1, 1 );
-
+
m_serverDeleteBtn = new QPushButton( Resource::loadPixmap( "trash" ), tr( "Delete" ), container );
m_serverDeleteBtn->setEnabled( false );
@@ -222,5 +229,5 @@ void OIpkgConfigDlg::initDestinationWidget()
connect( m_destEditBtn, SIGNAL(clicked()), this, SLOT(slotDestEdit()) );
layout->addWidget( m_destEditBtn, 1, 1 );
-
+
m_destDeleteBtn = new QPushButton( Resource::loadPixmap( "trash" ), tr( "Delete" ), container );
m_destDeleteBtn->setEnabled( false );
@@ -298,25 +305,25 @@ void OIpkgConfigDlg::initOptionsWidget()
QWidget *container = new QWidget( sv->viewport() );
sv->addChild( container );
- QVBoxLayout *layout = new QVBoxLayout( container, 2, 4 );
+ QGridLayout *layout = new QGridLayout( container, 8, 2, 2, 4 );
m_optForceDepends = new QCheckBox( tr( "Force Depends" ), container );
QWhatsThis::add( m_optForceDepends, tr( "Tap here to enable or disable the '-force-depends' option for Ipkg." ) );
- layout->addWidget( m_optForceDepends );
+ layout->addMultiCellWidget( m_optForceDepends, 0, 0, 0, 1 );
m_optForceReinstall = new QCheckBox( tr( "Force Reinstall" ), container );
QWhatsThis::add( m_optForceReinstall, tr( "Tap here to enable or disable the '-force-reinstall' option for Ipkg." ) );
- layout->addWidget( m_optForceReinstall );
+ layout->addMultiCellWidget( m_optForceReinstall, 1, 1, 0, 1 );
m_optForceRemove = new QCheckBox( tr( "Force Remove" ), container );
QWhatsThis::add( m_optForceRemove, tr( "Tap here to enable or disable the '-force-removal-of-dependent-packages' option for Ipkg." ) );
- layout->addWidget( m_optForceRemove );
+ layout->addMultiCellWidget( m_optForceRemove, 2, 2, 0, 1 );
m_optForceOverwrite = new QCheckBox( tr( "Force Overwrite" ), container );
QWhatsThis::add( m_optForceOverwrite, tr( "Tap here to enable or disable the '-force-overwrite' option for Ipkg." ) );
- layout->addWidget( m_optForceOverwrite );
+ layout->addMultiCellWidget( m_optForceOverwrite, 3, 3, 0, 1 );
- QLabel *l = new QLabel( tr( "Information Level" ), container );
+ QLabel *l = new QLabel( tr( "Information level:" ), container );
QWhatsThis::add( l, tr( "Select information level for Ipkg." ) );
- layout->addWidget( l );
+ layout->addMultiCellWidget( l, 4, 4, 0, 1 );
m_optVerboseIpkg = new QComboBox( container );
@@ -326,5 +333,18 @@ void OIpkgConfigDlg::initOptionsWidget()
m_optVerboseIpkg->insertItem( tr( "Informative messages" ) );
m_optVerboseIpkg->insertItem( tr( "Troubleshooting output" ) );
- layout->addWidget( m_optVerboseIpkg );
+ layout->addMultiCellWidget( m_optVerboseIpkg, 5, 5, 0, 1 );
+
+ l = new QLabel( tr( "Package source lists directory:" ), container );
+ QWhatsThis::add( l, tr( "Enter the directory where package source feed information is stored." ) );
+ layout->addMultiCellWidget( l, 6, 6, 0, 1 );
+
+ m_optSourceLists = new QLineEdit( container );
+ QWhatsThis::add( m_optSourceLists, tr( "Enter the directory where package source feed information is stored." ) );
+ layout->addWidget( m_optSourceLists, 7, 0 );
+ QPushButton *btn = new QPushButton( Resource::loadPixmap( "folder" ), QString::null, container );
+ btn->setMaximumWidth( btn->height() );
+ QWhatsThis::add( btn, tr( "Tap here to select the directory where package source feed information is stored." ) );
+ connect( btn, SIGNAL(clicked()), this, SLOT(slotOptSelectSourceListsPath()) );
+ layout->addWidget( btn, 7, 1 );
layout->addItem( new QSpacerItem( 1, 1, QSizePolicy::Minimum, QSizePolicy::Expanding ) );
@@ -346,33 +366,40 @@ void OIpkgConfigDlg::initData()
if ( config )
{
- if ( config->type() == OConfItem::Source )
+ switch ( config->type() )
{
- m_serverList->insertItem( config->name() );
- }
- else if ( config->type() == OConfItem::Destination )
- {
- m_destList->insertItem( config->name() );
- }
- else if ( config->type() == OConfItem::Option )
- {
- if ( config->name() == "http_proxy" )
- {
- m_proxyHttpServer->setText( config->value() );
- m_proxyHttpActive->setChecked( config->active() );
- }
- else if ( config->name() == "ftp_proxy" )
- {
- m_proxyFtpServer->setText( config->value() );
- m_proxyFtpActive->setChecked( config->active() );
- }
- else if ( config->name() == "proxy_username" )
- {
- m_proxyUsername->setText( config->value() );
- }
- else if ( config->name() == "proxy_password" )
- {
- m_proxyPassword->setText( config->value() );
- }
- }
+ case OConfItem::Source : m_serverList->insertItem( config->name() ); break;
+ case OConfItem::Destination : m_destList->insertItem( config->name() ); break;
+ case OConfItem::Option :
+ {
+ if ( config->name() == "http_proxy" )
+ {
+ m_proxyHttpServer->setText( config->value() );
+ m_proxyHttpActive->setChecked( config->active() );
+ }
+ else if ( config->name() == "ftp_proxy" )
+ {
+ m_proxyFtpServer->setText( config->value() );
+ m_proxyFtpActive->setChecked( config->active() );
+ }
+ else if ( config->name() == "proxy_username" )
+ {
+ m_proxyUsername->setText( config->value() );
+ }
+ else if ( config->name() == "proxy_password" )
+ {
+ m_proxyPassword->setText( config->value() );
+ }
+ }
+ break;
+ case OConfItem::Other :
+ {
+ if ( config->name() == "lists_dir" )
+ m_optSourceLists->setText( config->value() );
+ else // TODO - use proper libipkg define
+ m_optSourceLists->setText( "/usr/lib/ipkg/lists" );
+ }
+ break;
+ default : break;
+ };
}
}
@@ -397,5 +424,5 @@ void OIpkgConfigDlg::slotServerSelected( int index )
{
m_serverCurrent = index;
-
+
// Enable Edit and Delete buttons
m_serverEditBtn->setEnabled( true );
@@ -406,5 +433,5 @@ void OIpkgConfigDlg::slotServerNew()
{
OConfItem *server = new OConfItem( OConfItem::Source );
-
+
OIpkgServerDlg dlg( server, this );
if ( QPEApplication::execDialog( &dlg ) == QDialog::Accepted )
@@ -457,5 +484,5 @@ void OIpkgConfigDlg::slotDestSelected( int index )
{
m_destCurrent = index;
-
+
// Enable Edit and Delete buttons
m_destEditBtn->setEnabled( true );
@@ -466,5 +493,5 @@ void OIpkgConfigDlg::slotDestNew()
{
OConfItem *dest = new OConfItem( OConfItem::Destination );
-
+
OIpkgDestDlg dlg( dest, this );
if ( QPEApplication::execDialog( &dlg ) == QDialog::Accepted )
@@ -514,4 +541,13 @@ void OIpkgConfigDlg::slotDestDelete()
}
+void OIpkgConfigDlg::slotOptSelectSourceListsPath()
+{
+ QString path = Opie::Ui::OFileDialog::getDirectory( 0, m_optSourceLists->text() );
+ if ( path.at( path.length() - 1 ) == '/' )
+ path.truncate( path.length() - 1 );
+ if ( !path.isNull() )
+ m_optSourceLists->setText( path );
+}
+
OIpkgServerDlg::OIpkgServerDlg( OConfItem *server, QWidget *parent )
: QDialog( parent, QString::null, true, WStyle_ContextHelp )
@@ -520,5 +556,5 @@ OIpkgServerDlg::OIpkgServerDlg( OConfItem *server, QWidget *parent )
setCaption( tr( "Edit Server" ) );
- // Initialize UI
+ // Initialize UI
QVBoxLayout *layout = new QVBoxLayout( this, 2, 4 );
@@ -528,5 +564,5 @@ OIpkgServerDlg::OIpkgServerDlg( OConfItem *server, QWidget *parent )
layout->addStretch();
-
+
QLabel *label = new QLabel( tr( "Name:" ), this );
QWhatsThis::add( label, tr( "Enter the name of this entry here." ) );
@@ -537,5 +573,5 @@ OIpkgServerDlg::OIpkgServerDlg( OConfItem *server, QWidget *parent )
layout->addStretch();
-
+
label = new QLabel( tr( "Address:" ), this );
QWhatsThis::add( label, tr( "Enter the URL address of this entry here." ) );
@@ -550,5 +586,5 @@ OIpkgServerDlg::OIpkgServerDlg( OConfItem *server, QWidget *parent )
QWhatsThis::add( m_compressed, tr( "Tap here to indicate whether the server support compressed archives or not." ) );
layout->addWidget( m_compressed );
-
+
// Populate initial information
if ( m_server )
@@ -581,5 +617,5 @@ OIpkgDestDlg::OIpkgDestDlg( OConfItem *dest, QWidget *parent )
setCaption( tr( "Edit Destination" ) );
- // Initialize UI
+ // Initialize UI
QVBoxLayout *layout = new QVBoxLayout( this, 2, 4 );
@@ -589,5 +625,5 @@ OIpkgDestDlg::OIpkgDestDlg( OConfItem *dest, QWidget *parent )
layout->addStretch();
-
+
QLabel *label = new QLabel( tr( "Name:" ), this );
QWhatsThis::add( label, tr( "Enter the name of this entry here." ) );
@@ -598,5 +634,5 @@ OIpkgDestDlg::OIpkgDestDlg( OConfItem *dest, QWidget *parent )
layout->addStretch();
-
+
label = new QLabel( tr( "Location:" ), this );
QWhatsThis::add( label, tr( "Enter the absolute directory path of this entry here." ) );
@@ -605,5 +641,5 @@ OIpkgDestDlg::OIpkgDestDlg( OConfItem *dest, QWidget *parent )
QHBoxLayout *layout2 = new QHBoxLayout( this, 2, 4 );
layout->addLayout( layout2 );
-
+
m_location = new QLineEdit( this );
QWhatsThis::add( m_location, tr( "Enter the absolute directory path of this entry here." ) );
@@ -614,5 +650,5 @@ OIpkgDestDlg::OIpkgDestDlg( OConfItem *dest, QWidget *parent )
connect( btn, SIGNAL(clicked()), this, SLOT(slotSelectPath()) );
layout2->addWidget( btn );
-
+
// Populate initial information
if ( m_dest )
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
@@ -100,4 +100,5 @@ private:
QCheckBox *m_optForceOverwrite; // Force overwrite ipkg option checkbox
QComboBox *m_optVerboseIpkg; // Ipkg verbosity option selection
+ QLineEdit *m_optSourceLists; // Ipkg source lists destination directory
void initServerWidget();
@@ -118,4 +119,6 @@ private slots:
void slotDestEdit();
void slotDestDelete();
+
+ void slotOptSelectSourceListsPath();
};
@@ -129,5 +132,5 @@ public:
protected slots:
void accept();
-
+
private:
OConfItem *m_server;
@@ -149,5 +152,5 @@ public:
protected slots:
void accept();
-
+
private:
OConfItem *m_dest;
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
@@ -8,3 +8,3 @@ Architecture: arm
Maintainer: Dan Williams (drw@handhelds.org)
Description: Opie package management client
-Version: 0.6.1$EXTRAVERSION
+Version: 0.6.2$EXTRAVERSION