summaryrefslogtreecommitdiff
path: root/noncore/settings/packagemanager/oipkgconfigdlg.cpp
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/oipkgconfigdlg.cpp
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/oipkgconfigdlg.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/packagemanager/oipkgconfigdlg.cpp138
1 files changed, 87 insertions, 51 deletions
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
@@ -119,24 +119,31 @@ void OIpkgConfigDlg::accept()
confItem->setValue( m_proxyUsername->text() );
else
m_configs->append( new OConfItem( OConfItem::Option, "proxy_username",
m_proxyUsername->text() ) );
confItem = m_ipkg->findConfItem( OConfItem::Option, "proxy_password" );
if ( confItem )
confItem->setValue( m_proxyPassword->text() );
else
m_configs->append( new OConfItem( OConfItem::Option, "proxy_password",
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 );
}
// Save options configuration
int options = 0;
if ( m_optForceDepends->isChecked() )
options |= FORCE_DEPENDS;
if ( m_optForceReinstall->isChecked() )
options |= FORCE_REINSTALL;
if ( m_optForceRemove->isChecked() )
options |= FORCE_REMOVE;
if ( m_optForceOverwrite->isChecked() )
@@ -174,25 +181,25 @@ void OIpkgConfigDlg::initServerWidget()
layout->addMultiCellWidget( m_serverList, 0, 0, 0, 2 );
QPushButton *btn = new QPushButton( Resource::loadPixmap( "new" ), tr( "New" ), container );
QWhatsThis::add( btn, tr( "Tap here to create a new entry. Fill in the fields below and then tap on Update." ) );
connect( btn, SIGNAL(clicked()), this, SLOT(slotServerNew()) );
layout->addWidget( btn, 1, 0 );
m_serverEditBtn = new QPushButton( Resource::loadPixmap( "edit" ), tr( "Edit" ), container );
m_serverEditBtn->setEnabled( false );
QWhatsThis::add( m_serverEditBtn, tr( "Tap here to edit the entry selected above." ) );
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 );
QWhatsThis::add( m_serverDeleteBtn, tr( "Tap here to delete the entry selected above." ) );
connect( m_serverDeleteBtn, SIGNAL(clicked()), this, SLOT(slotServerDelete()) );
layout->addWidget( m_serverDeleteBtn, 1, 2 );
}
void OIpkgConfigDlg::initDestinationWidget()
{
m_destWidget = new QWidget( this );
// Initialize UI
@@ -212,25 +219,25 @@ void OIpkgConfigDlg::initDestinationWidget()
layout->addMultiCellWidget( m_destList, 0, 0, 0, 2 );
QPushButton *btn = new QPushButton( Resource::loadPixmap( "new" ), tr( "New" ), container );
QWhatsThis::add( btn, tr( "Tap here to create a new entry. Fill in the fields below and then tap on Update." ) );
connect( btn, SIGNAL(clicked()), this, SLOT(slotDestNew()) );
layout->addWidget( btn, 1, 0 );
m_destEditBtn = new QPushButton( Resource::loadPixmap( "edit" ), tr( "Edit" ), container );
m_destEditBtn->setEnabled( false );
QWhatsThis::add( m_destEditBtn, tr( "Tap here to edit the entry selected above." ) );
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 );
QWhatsThis::add( m_destDeleteBtn, tr( "Tap here to delete the entry selected above." ) );
connect( m_destDeleteBtn, SIGNAL(clicked()), this, SLOT(slotDestDelete()) );
layout->addWidget( m_destDeleteBtn, 1, 2 );
}
void OIpkgConfigDlg::initProxyWidget()
{
m_proxyWidget = new QWidget( this );
// Initialize UI
@@ -288,133 +295,153 @@ void OIpkgConfigDlg::initProxyWidget()
void OIpkgConfigDlg::initOptionsWidget()
{
m_optionsWidget = new QWidget( this );
// Initialize UI
QVBoxLayout *vb = new QVBoxLayout( m_optionsWidget );
QScrollView *sv = new QScrollView( m_optionsWidget );
vb->addWidget( sv, 0, 0 );
sv->setResizePolicy( QScrollView::AutoOneFit );
sv->setFrameStyle( QFrame::NoFrame );
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 );
QWhatsThis::add( m_optVerboseIpkg, tr( "Select information level for Ipkg." ) );
m_optVerboseIpkg->insertItem( tr( "Errors only" ) );
m_optVerboseIpkg->insertItem( tr( "Normal messages" ) );
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 ) );
}
void OIpkgConfigDlg::initData()
{
// Read ipkg configuration (server/destination/proxy) information
if ( m_ipkg && !m_installOptions )
{
m_configs = m_ipkg->configItems();
if ( m_configs )
{
for ( OConfItemListIterator configIt( *m_configs ); configIt.current(); ++configIt )
{
OConfItem *config = configIt.current();
// Add configuration item to the appropriate dialog controls
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;
+ };
}
}
}
}
// Get Ipkg execution options
int options = m_ipkg->ipkgExecOptions();
if ( options & FORCE_DEPENDS )
m_optForceDepends->setChecked( true );
if ( options & FORCE_REINSTALL )
m_optForceReinstall->setChecked( true );
if ( options & FORCE_REMOVE )
m_optForceRemove->setChecked( true );
if ( options & FORCE_OVERWRITE )
m_optForceOverwrite->setChecked( true );
m_optVerboseIpkg->setCurrentItem( m_ipkg->ipkgExecVerbosity() );
}
void OIpkgConfigDlg::slotServerSelected( int index )
{
m_serverCurrent = index;
-
+
// Enable Edit and Delete buttons
m_serverEditBtn->setEnabled( true );
m_serverDeleteBtn->setEnabled( true );
}
void OIpkgConfigDlg::slotServerNew()
{
OConfItem *server = new OConfItem( OConfItem::Source );
-
+
OIpkgServerDlg dlg( server, this );
if ( QPEApplication::execDialog( &dlg ) == QDialog::Accepted )
{
// Add to configuration option list
m_configs->append( server );
m_configs->sort();
// Add to server list
m_serverList->insertItem( server->name() );
m_serverList->setCurrentItem( m_serverList->count() );
}
else
@@ -447,34 +474,34 @@ void OIpkgConfigDlg::slotServerDelete()
// Delete server
if ( server )
{
m_configs->removeRef( server );
m_serverList->removeItem( m_serverCurrent );
}
}
void OIpkgConfigDlg::slotDestSelected( int index )
{
m_destCurrent = index;
-
+
// Enable Edit and Delete buttons
m_destEditBtn->setEnabled( true );
m_destDeleteBtn->setEnabled( true );
}
void OIpkgConfigDlg::slotDestNew()
{
OConfItem *dest = new OConfItem( OConfItem::Destination );
-
+
OIpkgDestDlg dlg( dest, this );
if ( QPEApplication::execDialog( &dlg ) == QDialog::Accepted )
{
// Add to configuration option list
m_configs->append( dest );
m_configs->sort();
// Add to destination list
m_destList->insertItem( dest->name() );
m_destList->setCurrentItem( m_destList->count() );
}
else
@@ -504,61 +531,70 @@ void OIpkgConfigDlg::slotDestDelete()
{
// Find selected destination in list
OConfItem *destination = m_ipkg->findConfItem( OConfItem::Destination, m_destList->currentText() );
// Delete destination
if ( destination )
{
m_configs->removeRef( destination );
m_destList->removeItem( m_destCurrent );
}
}
+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 )
, m_server( server )
{
setCaption( tr( "Edit Server" ) );
- // Initialize UI
+ // Initialize UI
QVBoxLayout *layout = new QVBoxLayout( this, 2, 4 );
m_active = new QCheckBox( tr( "Active" ), this );
QWhatsThis::add( m_active, tr( "Tap here to indicate whether this entry is active or not." ) );
layout->addWidget( m_active );
layout->addStretch();
-
+
QLabel *label = new QLabel( tr( "Name:" ), this );
QWhatsThis::add( label, tr( "Enter the name of this entry here." ) );
layout->addWidget( label );
m_name = new QLineEdit( this );
QWhatsThis::add( m_name, tr( "Enter the name of this entry here." ) );
layout->addWidget( m_name );
layout->addStretch();
-
+
label = new QLabel( tr( "Address:" ), this );
QWhatsThis::add( label, tr( "Enter the URL address of this entry here." ) );
layout->addWidget( label );
m_location = new QLineEdit( this );
QWhatsThis::add( m_location, tr( "Enter the URL address of this entry here." ) );
layout->addWidget( m_location );
layout->addStretch();
m_compressed = new QCheckBox( tr( "Compressed server feed" ), this );
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 )
{
m_name->setText( m_server->name() );
m_location->setText( m_server->value() );
m_compressed->setChecked( m_server->features().contains( "Compressed" ) );
m_active->setChecked( m_server->active() );
}
}
void OIpkgServerDlg::accept()
{
@@ -571,58 +607,58 @@ void OIpkgServerDlg::accept()
: m_server->setFeatures( QString::null );
m_server->setActive( m_active->isChecked() );
QDialog::accept();
}
OIpkgDestDlg::OIpkgDestDlg( OConfItem *dest, QWidget *parent )
: QDialog( parent, QString::null, true, WStyle_ContextHelp )
, m_dest( dest )
{
setCaption( tr( "Edit Destination" ) );
- // Initialize UI
+ // Initialize UI
QVBoxLayout *layout = new QVBoxLayout( this, 2, 4 );
m_active = new QCheckBox( tr( "Active" ), this );
QWhatsThis::add( m_active, tr( "Tap here to indicate whether this entry is active or not." ) );
layout->addWidget( m_active );
layout->addStretch();
-
+
QLabel *label = new QLabel( tr( "Name:" ), this );
QWhatsThis::add( label, tr( "Enter the name of this entry here." ) );
layout->addWidget( label );
m_name = new QLineEdit( this );
QWhatsThis::add( m_name, tr( "Enter the name of this entry here." ) );
layout->addWidget( m_name );
layout->addStretch();
-
+
label = new QLabel( tr( "Location:" ), this );
QWhatsThis::add( label, tr( "Enter the absolute directory path of this entry here." ) );
layout->addWidget( label );
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." ) );
layout2->addWidget( m_location );
QPushButton *btn = new QPushButton( Resource::loadPixmap( "folder" ), QString::null, this );
btn->setMaximumWidth( btn->height() );
QWhatsThis::add( btn, tr( "Tap here to select the desired location." ) );
connect( btn, SIGNAL(clicked()), this, SLOT(slotSelectPath()) );
layout2->addWidget( btn );
-
+
// Populate initial information
if ( m_dest )
{
m_name->setText( m_dest->name() );
m_location->setText( m_dest->value() );
m_active->setChecked( m_dest->active() );
}
}
void OIpkgDestDlg::accept()
{
// Save information entered