Diffstat (limited to 'noncore/settings/packagemanager/oipkgconfigdlg.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/settings/packagemanager/oipkgconfigdlg.cpp | 138 |
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 |