summaryrefslogtreecommitdiff
path: root/noncore
authordrw <drw>2005-01-02 20:26:01 (UTC)
committer drw <drw>2005-01-02 20:26:01 (UTC)
commite763e0cea060ae3a2dfb1c411f56354e27ac12a9 (patch) (side-by-side diff)
tree37896734be7d2679c3f19635fe9fe3b52a549332 /noncore
parent020ea2d54bcd0fc4420cb433b3e657cd13ae07e2 (diff)
downloadopie-e763e0cea060ae3a2dfb1c411f56354e27ac12a9.zip
opie-e763e0cea060ae3a2dfb1c411f56354e27ac12a9.tar.gz
opie-e763e0cea060ae3a2dfb1c411f56354e27ac12a9.tar.bz2
Implement native package linking code (removing need for ipkg-link and its shortcomings), move package linking code to OIpkg (proper place for ipkg specific code), many small code tweaks and bump version up to 0.6.1
Diffstat (limited to 'noncore') (more/less context) (show whitespace changes)
-rw-r--r--noncore/settings/packagemanager/ChangeLog7
-rw-r--r--noncore/settings/packagemanager/TODO8
-rw-r--r--noncore/settings/packagemanager/installdlg.cpp81
-rw-r--r--noncore/settings/packagemanager/installdlg.h11
-rw-r--r--noncore/settings/packagemanager/oipkg.cpp208
-rw-r--r--noncore/settings/packagemanager/oipkg.h20
-rw-r--r--noncore/settings/packagemanager/oipkgconfigdlg.cpp34
-rw-r--r--noncore/settings/packagemanager/oipkgconfigdlg.h3
-rw-r--r--noncore/settings/packagemanager/opackagemanager.cpp20
-rw-r--r--noncore/settings/packagemanager/opie-packagemanager.control4
-rw-r--r--noncore/settings/packagemanager/packageinfodlg.cpp10
-rw-r--r--noncore/settings/packagemanager/packageinfodlg.h4
12 files changed, 237 insertions, 173 deletions
diff --git a/noncore/settings/packagemanager/ChangeLog b/noncore/settings/packagemanager/ChangeLog
index c776ce5..608cd98 100644
--- a/noncore/settings/packagemanager/ChangeLog
+++ b/noncore/settings/packagemanager/ChangeLog
@@ -1,6 +1,13 @@
+2005-01-02 Dan Williams <drw@handhelds.org>
+
+ * Released version 0.6.1
+ * Implemented native package linking code to remove need for ipkg-link
+ * Implement package in OIpkg (removed from InstallDlg) as this is ipkg specific
+ * Many small code tweaks
+
2004-12-21 Dan Williams <drw@handhelds.org>
* Released version 0.6.0
* Added support for Ipkg 'src/gz' feeds
* Improve server and destination tabs UI's in configuration dialog
* Fix app linking to link all dependent packages as well as selected packages
diff --git a/noncore/settings/packagemanager/TODO b/noncore/settings/packagemanager/TODO
index 744ad95..2512624 100644
--- a/noncore/settings/packagemanager/TODO
+++ b/noncore/settings/packagemanager/TODO
@@ -1,17 +1,15 @@
/************************************************************************
/*
/* Opie - Package Manager
/* ========================
-/* Version 0.6.0
+/* Version 0.6.1
/*
/* A package management client for Opie
/*
/************************************************************************
-----------------------------------------------
- To-do for Opie-PackageManager - December, 2004
+ To-do for Opie-PackageManager - January, 2005
-----------------------------------------------
-1. Move ipkg-link code from InstallDlg to OIpkg
-2. Code ipkg-link logic directly in OIpkg
-3. Re-work package download dialog
+1. Re-work package download dialog
diff --git a/noncore/settings/packagemanager/installdlg.cpp b/noncore/settings/packagemanager/installdlg.cpp
index 985e2bd..7dea591 100644
--- a/noncore/settings/packagemanager/installdlg.cpp
+++ b/noncore/settings/packagemanager/installdlg.cpp
@@ -27,13 +27,12 @@ _;:, .> :=|. This file is free software; you can
*/
#include "installdlg.h"
#include <opie2/ofiledialog.h>
-#include <opie2/oprocess.h>
#include <qpe/fileselector.h>
#include <qpe/resource.h>
#include <qpe/storage.h>
#include <qapplication.h>
@@ -244,93 +243,17 @@ void InstallDlg::slotBtnStart()
}
else
{
m_btnStart->setEnabled( false );
}
- Opie::Core::OProcess process( this );
for ( m_currCommand = 0; m_currCommand < m_numCommands; m_currCommand++ )
{
// Execute next command
m_packman->executeCommand( m_command[ m_currCommand ], m_packages[ m_currCommand ], dest,
- this, SLOT(slotOutput(char*)), true );
-
- if ( m_command[ m_currCommand ] == OPackage::Remove )
- {
- // Unlink application if the package was removed
-
- // Loop through all package names in the command group
- for ( QStringList::Iterator it = m_packages[ m_currCommand ].begin();
- it != m_packages[ m_currCommand ].end();
- ++it )
- {
- OPackage *currPackage = m_packman->findPackage( (*it) );
-
- // Skip package if it is not found or being removed from 'root'
- if ( !currPackage || ( m_command[ m_currCommand ] == OPackage::Remove &&
- currPackage->destination() == "root" ) )
- continue;
-
- // Display feedback to user
- m_output->append( tr( QString( "Running ipkg-link to remove links for package '%1'." )
- .arg( currPackage->name() ) ) );
- m_output->setCursorPosition( m_output->numLines(), 0 );
-
- // Execute ipkg-link
- process.clearArguments();
- process << "ipkg-link"
- << ( ( m_command[ m_currCommand ] == OPackage::Install ) ? "add" : "remove" )
- << currPackage->name();
- if ( !process.start( Opie::Core::OProcess::Block,
- Opie::Core::OProcess::NoCommunication ) )
- {
- slotProcessDone( 0l );
- m_output->append( tr( "Unable to run ipkg-link." ) );
- m_output->setCursorPosition( m_output->numLines(), 0 );
- return;
- }
- }
- }
- else if ( m_command[ m_currCommand ] == OPackage::Install && dest != "root" )
- {
- // Link applications in the destination directory
-
- m_output->append( tr( "Running ipkg-link to link packages in '%1'." ).arg( dest ) );
- m_output->setCursorPosition( m_output->numLines(), 0 );
-
- QString destPath;
- OConfItem *destItem = m_packman->findConfItem( OConfItem::Destination, dest );
-
- // Execute ipkg-link
- process.clearArguments();
- process << "ipkg-link"
- << "mount"
- << destItem->value();
- if ( !process.start( Opie::Core::OProcess::Block,
- Opie::Core::OProcess::NoCommunication ) )
- {
- slotProcessDone( 0l );
- m_output->append( tr( "Unable to run ipkg-link." ) );
- m_output->setCursorPosition( m_output->numLines(), 0 );
- return;
- }
- }
- }
-
- slotProcessDone( 0l );
-}
-
-void InstallDlg::slotProcessDone( Opie::Core::OProcess *proc )
-{
- if ( proc )
- {
- // Display message pnly if linking was done
- m_output->append( tr( "The package linking is done." ) );
- m_output->setCursorPosition( m_output->numLines(), 0 );
-
- delete proc;
+ this, SLOT(slotOutput(const QString &)), true );
}
// All commands executed, allow user to close dialog
m_btnStart->setEnabled( true );
m_btnStart->setText( tr( "Close" ) );
m_btnStart->setIconSet( Resource::loadPixmap( "enter" ) );
@@ -369,13 +292,13 @@ void InstallDlg::slotBtnOptions()
doc.setName( currentFileName );
FileManager fm;
fm.saveFile( doc, m_output->text() );
}
}
-void InstallDlg::slotOutput( char *msg )
+void InstallDlg::slotOutput( const QString &msg )
{
// Allow processing of other events
qApp->processEvents();
QString lineStr = msg;
if ( lineStr[lineStr.length()-1] == '\n' )
diff --git a/noncore/settings/packagemanager/installdlg.h b/noncore/settings/packagemanager/installdlg.h
index 7a64fe0..e633809 100644
--- a/noncore/settings/packagemanager/installdlg.h
+++ b/noncore/settings/packagemanager/installdlg.h
@@ -39,20 +39,12 @@ class QLabel;
class QMultiLineEdit;
class QPushButton;
class OConfItem;
class OPackageManager;
-namespace Opie
-{
- namespace Core
- {
- class OProcess;
- }
-}
-
class InstallDlg : public QWidget
{
Q_OBJECT
public:
InstallDlg( QWidget *parent = 0l, OPackageManager *pm = 0l,
@@ -86,16 +78,15 @@ private:
private slots:
// UI control slots
void slotDisplayAvailSpace( const QString &destination );
void slotBtnStart();
void slotBtnOptions();
- void slotProcessDone( Opie::Core::OProcess *proc );
// Execution slots
- void slotOutput( char *msg );
+ void slotOutput( const QString &msg );
signals:
void closeInstallDlg();
};
#endif
diff --git a/noncore/settings/packagemanager/oipkg.cpp b/noncore/settings/packagemanager/oipkg.cpp
index a66bd51..f2d7e39 100644
--- a/noncore/settings/packagemanager/oipkg.cpp
+++ b/noncore/settings/packagemanager/oipkg.cpp
@@ -33,35 +33,38 @@ _;:, .> :=|. This program is free software; you can
#include <qdir.h>
#include <qfile.h>
#include <qtextstream.h>
#include <stdlib.h>
+#include <unistd.h>
const QString IPKG_CONF = "/etc/ipkg.conf"; // Fully-qualified name of Ipkg primary configuration file
const QString IPKG_CONF_DIR = "/etc/ipkg"; // Directory of secondary Ipkg configuration files
const QString IPKG_PKG_PATH = "/usr/lib/ipkg/lists"; // Directory containing server package lists
const QString IPKG_STATUS_PATH = "usr/lib/ipkg/status"; // Destination status file location
+const QString IPKG_INFO_PATH = "usr/lib/ipkg/info"; // Package file lists location
OIpkg *oipkg;
// Ipkg callback functions
int fsignalIpkgMessage( ipkg_conf_t *conf, message_level_t level, char *msg )
{
+ // Display message only if it is below the message level threshold
if ( conf && ( conf->verbosity < level ) )
return 0;
else
oipkg->ipkgMessage( msg );
return 0;
}
char *fIpkgResponse( char */*question*/ )
{
- return 0x0;
+ return 0l;
}
int fIpkgStatus( char */*name*/, int /*status*/, char *desc, void */*userdata*/ )
{
oipkg->ipkgStatus( desc );
return 0;
@@ -78,12 +81,13 @@ OIpkg::OIpkg( Config *config, QObject *parent, const char *name )
: QObject( parent, name )
, m_config( config )
, m_confInfo( NULL )
, m_ipkgExecOptions( 0 )
, m_ipkgExecVerbosity( 1 )
{
+ // Keep pointer to self for the Ipkg callback functions
oipkg = this;
// Initialize libipkg
ipkg_init( &fsignalIpkgMessage, &fIpkgResponse, &m_ipkgArgs );
// Default ipkg run-time arguments
@@ -359,12 +363,30 @@ OPackageList *OIpkg::installedPackages( const QString &destName, const QString &
f.close();
return pl;
}
+OConfItem *OIpkg::findConfItem( OConfItem::Type type, const QString &name )
+{
+ // Find configuration item in list
+ OConfItemListIterator configIt( *m_confInfo );
+ OConfItem *config = 0l;
+ for ( ; configIt.current(); ++configIt )
+ {
+ config = configIt.current();
+ if ( config->type() == type && config->name() == name )
+ break;
+ }
+
+ if ( config && config->type() == type && config->name() == name )
+ return config;
+
+ return 0l;
+}
+
bool OIpkg::executeCommand( OPackage::Command command, const QStringList &parameters, const QString &destination,
const QObject *receiver, const char *slotOutput, bool rawOutput )
{
if ( command == OPackage::NotDefined )
return false;
@@ -381,70 +403,85 @@ bool OIpkg::executeCommand( OPackage::Command command, const QStringList &parame
int len = destination.length() + 1;
m_ipkgArgs.dest = (char *)malloc( len );
strncpy( m_ipkgArgs.dest, destination, destination.length() );
m_ipkgArgs.dest[ len - 1 ] = '\0';
}
else
- m_ipkgArgs.dest = 0x0;
+ m_ipkgArgs.dest = 0l;
// Connect output signal to widget
- if ( rawOutput )
- {
-// if ( slotOutput )
-// connect( this, SIGNAL(signalIpkgMessage(char*)), receiver, slotOutput );
- }
- else
+ if ( !rawOutput )
{
// TODO - connect to local slot and parse output before emitting signalIpkgMessage
}
switch( command )
{
case OPackage::Update : {
- connect( this, SIGNAL(signalIpkgMessage(char*)), receiver, slotOutput );
+ connect( this, SIGNAL(signalIpkgMessage(const QString &)), receiver, slotOutput );
ipkg_lists_update( &m_ipkgArgs );
};
break;
case OPackage::Upgrade : {
- connect( this, SIGNAL(signalIpkgMessage(char*)), receiver, slotOutput );
+ connect( this, SIGNAL(signalIpkgMessage(const QString &)), receiver, slotOutput );
ipkg_packages_upgrade( &m_ipkgArgs );
+
+ // Re-link non-root destinations to make sure everything is in sync
+ OConfItemList *destList = destinations();
+ OConfItemListIterator it( *destList );
+ for ( ; it.current(); ++it )
+ {
+ OConfItem *dest = it.current();
+ if ( dest->name() != "root" )
+ linkPackageDir( dest->name() );
+ }
+ delete destList;
};
break;
case OPackage::Install : {
- connect( this, SIGNAL(signalIpkgMessage(char*)), receiver, slotOutput );
+ connect( this, SIGNAL(signalIpkgMessage(const QString &)), receiver, slotOutput );
for ( QStringList::ConstIterator it = parameters.begin(); it != parameters.end(); ++it )
{
ipkg_packages_install( &m_ipkgArgs, (*it) );
}
+ if ( destination != "root" )
+ linkPackageDir( destination );
};
break;
case OPackage::Remove : {
- connect( this, SIGNAL(signalIpkgMessage(char*)), receiver, slotOutput );
+ connect( this, SIGNAL(signalIpkgMessage(const QString &)), receiver, slotOutput );
+
+ // Get list of destinations for unlinking of packages not installed to root
+ OConfItemList *destList = destinations();
+
for ( QStringList::ConstIterator it = parameters.begin(); it != parameters.end(); ++it )
{
+ unlinkPackage( (*it), destList );
ipkg_packages_remove( &m_ipkgArgs, (*it), true );
}
+
+ delete destList;
};
break;
case OPackage::Download : {
- connect( this, SIGNAL(signalIpkgMessage(char*)), receiver, slotOutput );
+ connect( this, SIGNAL(signalIpkgMessage(const QString &)), receiver, slotOutput );
for ( QStringList::ConstIterator it = parameters.begin(); it != parameters.end(); ++it )
{
ipkg_packages_download( &m_ipkgArgs, (*it) );
}
};
break;
case OPackage::Info : {
- connect( this, SIGNAL(signalIpkgStatus(char*)), receiver, slotOutput );
- ipkg_packages_info( &m_ipkgArgs, (*parameters.begin()), &fIpkgStatus, 0x0 );
+ connect( this, SIGNAL(signalIpkgStatus(const QString &)), receiver, slotOutput );
+ ipkg_packages_info( &m_ipkgArgs, (*parameters.begin()), &fIpkgStatus, 0l );
};
break;
case OPackage::Files : {
- connect( this, SIGNAL(signalIpkgList(char*)), receiver, slotOutput );
- ipkg_package_files( &m_ipkgArgs, (*parameters.begin()), &fIpkgFiles, 0x0 );
+ connect( this, SIGNAL(signalIpkgList(const QString &)), receiver, slotOutput );
+ ipkg_package_files( &m_ipkgArgs, (*parameters.begin()), &fIpkgFiles, 0l );
};
break;
default : break;
};
return true;
@@ -586,6 +623,143 @@ OConfItemList *OIpkg::filterConfItems( OConfItem::Type typefilter )
sl->append( item );
}
}
return sl;
}
+
+const QString &OIpkg::rootPath()
+{
+ if ( m_rootPath.isEmpty() )
+ {
+ OConfItem *rootDest = findConfItem( OConfItem::Destination, "root" );
+ rootDest ? m_rootPath = rootDest->value()
+ : m_rootPath = '/';
+ if ( m_rootPath.right( 1 ) == '/' )
+ m_rootPath.truncate( m_rootPath.length() - 1 );
+ }
+ return m_rootPath;
+}
+
+void OIpkg::linkPackageDir( const QString &dest )
+{
+ if ( !dest.isNull() )
+ {
+ OConfItem *destConfItem = findConfItem( OConfItem::Destination, dest );
+
+ emit signalIpkgMessage( tr( "Linking packages installed in: %1" ).arg( dest ) );
+
+ // Set package destination directory
+ QString destDir = destConfItem->value();
+ QString destInfoDir = destDir;
+ if ( destInfoDir.right( 1 ) != '/' )
+ destInfoDir.append( '/' );
+ destInfoDir.append( IPKG_INFO_PATH );
+
+ // Get list of installed packages in destination
+ QDir packageDir( destInfoDir );
+ QStringList packageFiles;
+ if ( packageDir.exists() )
+ {
+ packageDir.setNameFilter( "*.list" );
+ packageDir.setFilter( QDir::Files );
+ packageFiles = packageDir.entryList( "*.list", QDir::Files );
+ }
+
+ // Link all files for every package installed in desination
+ QStringList::Iterator lastFile = packageFiles.end();
+ for ( QStringList::Iterator it = packageFiles.begin(); it != lastFile; ++it )
+ {
+ //emit signalIpkgMessage( QString( "Processing: %1/%2" ).arg( destInfoDir ).arg (*it) );
+ QString packageFileName = destInfoDir;
+ packageFileName.append( '/' );
+ packageFileName.append( (*it) );
+ QFile packageFile( packageFileName );
+ if ( packageFile.open( IO_ReadOnly ) )
+ {
+ QTextStream t( &packageFile );
+ QString linkFile;
+ while ( !t.eof() )
+ {
+ // Get the name of the file to link and build the sym link filename
+ linkFile = t.readLine();
+ QString linkDest( linkFile.right( linkFile.length() - destDir.length() ) );
+ linkDest.prepend( rootPath() );
+
+ // If file installed file is actually symbolic link, use actual file for linking
+ QFileInfo fileInfo( linkFile );
+ if ( fileInfo.isSymLink() && !fileInfo.readLink().isEmpty() )
+ linkFile = fileInfo.readLink();
+
+ // See if directory exists in 'root', if not, create
+ fileInfo.setFile( linkDest );
+ QString linkDestDirName = fileInfo.dirPath( true );
+ QDir linkDestDir( linkDestDirName );
+ if ( !linkDestDir.exists() )
+ {
+ linkDestDir.mkdir( linkDestDirName );
+ }
+ else
+ {
+ // Remove any previous link to make sure we will be pointing to the current version
+ if ( QFile::exists( linkDest ) )
+ QFile::remove( linkDest );
+ }
+
+ // Link the file
+ //emit signalIpkgMessage( QString( "Linking '%1' to '%2'" ).arg( linkFile ).arg( linkDest ) );
+ if ( symlink( linkFile, linkDest ) == -1 )
+ emit signalIpkgMessage( tr( "Error linkling '%1' to '%2'" )
+ .arg( linkFile )
+ .arg( linkDest ) );
+ }
+ packageFile.close();
+ }
+ }
+ }
+}
+
+void OIpkg::unlinkPackage( const QString &package, OConfItemList *destList )
+{
+ if ( !package.isNull() )
+ {
+ // Find destination package is installed in
+ if ( destList )
+ {
+ OConfItemListIterator it( *destList );
+ for ( ; it.current(); ++it )
+ {
+ OConfItem *dest = it.current();
+ QString destInfoFileName = QString( "%1/%2/%3.list" ).arg( dest->value() )
+ .arg( IPKG_INFO_PATH )
+ .arg( package );
+ //emit signalIpkgMessage( QString( "Looking for '%1'" ).arg ( destInfoFileName ) );
+
+ // If found and destination is not 'root', remove symbolic links
+ if ( QFile::exists( destInfoFileName ) && dest->name() != "root" )
+ {
+ QFile destInfoFile( destInfoFileName );
+ if ( destInfoFile.open( IO_ReadOnly ) )
+ {
+ QTextStream t( &destInfoFile );
+ QString linkFile;
+ while ( !t.eof() )
+ {
+ // Get the name of the file to link and build the sym link filename
+ linkFile = t.readLine();
+ QString linkDest( linkFile.right( linkFile.length() -
+ dest->value().length() ) );
+ linkDest.prepend( rootPath() );
+
+ //emit signalIpkgMessage( QString( "Deleting: '%1'" ).arg( linkDest ) );
+ QFile::remove( linkDest );
+ }
+ destInfoFile.close();
+ }
+
+ emit signalIpkgMessage( tr( "Links removed for: %1" ).arg( package ) );
+ return;
+ }
+ }
+ }
+ }
+}
diff --git a/noncore/settings/packagemanager/oipkg.h b/noncore/settings/packagemanager/oipkg.h
index 3c96200..0263f50 100644
--- a/noncore/settings/packagemanager/oipkg.h
+++ b/noncore/settings/packagemanager/oipkg.h
@@ -53,13 +53,13 @@ class OConfItemList;
class OIpkg : public QObject
{
Q_OBJECT
public:
- OIpkg( Config *config = 0x0, QObject *parent = 0x0, const char *name = 0x0 );
+ OIpkg( Config *config = 0l, QObject *parent = 0l, const char *name = 0l );
~OIpkg();
OConfItemList *configItems();
OConfItemList *servers();
OConfItemList *destinations();
OConfItemList *options();
@@ -74,17 +74,20 @@ public:
void saveSettings();
OPackageList *availablePackages( const QString &server = QString::null );
OPackageList *installedPackages( const QString &destName = QString::null,
const QString &destPath = QString::null );
+ OConfItem *findConfItem( OConfItem::Type type = OConfItem::NotDefined,
+ const QString &name = QString::null );
+
bool executeCommand( OPackage::Command command = OPackage::NotDefined,
const QStringList &parameters = QStringList(),
const QString &destination = QString::null,
- const QObject *receiver = 0x0,
- const char *slotOutput = 0x0,
+ const QObject *receiver = 0l,
+ const char *slotOutput = 0l,
bool rawOutput = true );
void abortCommand();
void ipkgMessage( char *msg );
void ipkgStatus( char *status );
void ipkgList( char *filelist );
@@ -92,17 +95,22 @@ public:
private:
Config *m_config; // Pointer to application configuration file
args_t m_ipkgArgs; // libipkg configuration arguments
OConfItemList *m_confInfo; // Contains info from all Ipkg configuration files
int m_ipkgExecOptions; // Bit-mapped flags for Ipkg execution options
int m_ipkgExecVerbosity; // Ipkg execution verbosity level
+ QString m_rootPath; // Directory path where the 'root' destination is located
void loadConfiguration();
OConfItemList *filterConfItems( OConfItem::Type typefilter = OConfItem::NotDefined );
+ const QString &rootPath();
+ void linkPackageDir( const QString &dest = QString::null );
+ void unlinkPackage( const QString &package = QString::null,
+ OConfItemList *destList = 0l );
signals:
- void signalIpkgMessage( char *msg );
- void signalIpkgStatus( char *status );
- void signalIpkgList( char *filelist );
+ void signalIpkgMessage( const QString &msg );
+ void signalIpkgStatus( const QString &status );
+ void signalIpkgList( const QString &filelist );
};
#endif
diff --git a/noncore/settings/packagemanager/oipkgconfigdlg.cpp b/noncore/settings/packagemanager/oipkgconfigdlg.cpp
index 77ad220..e6d6a81 100644
--- a/noncore/settings/packagemanager/oipkgconfigdlg.cpp
+++ b/noncore/settings/packagemanager/oipkgconfigdlg.cpp
@@ -89,42 +89,42 @@ OIpkgConfigDlg::OIpkgConfigDlg( OIpkg *ipkg, bool installOptions, QWidget *paren
void OIpkgConfigDlg::accept()
{
// Save server, destination and proxy configuration
if ( !m_installOptions )
{
// Update proxy information before saving settings
- OConfItem *confItem = findConfItem( OConfItem::Option, "http_proxy" );
+ OConfItem *confItem = m_ipkg->findConfItem( OConfItem::Option, "http_proxy" );
if ( confItem )
{
confItem->setValue( m_proxyHttpServer->text() );
confItem->setActive( m_proxyHttpActive->isChecked() );
}
else
m_configs->append( new OConfItem( OConfItem::Option, "http_proxy",
m_proxyHttpServer->text(), QString::null,
m_proxyHttpActive->isChecked() ) );
- confItem = findConfItem( OConfItem::Option, "ftp_proxy" );
+ confItem = m_ipkg->findConfItem( OConfItem::Option, "ftp_proxy" );
if ( confItem )
{
confItem->setValue( m_proxyFtpServer->text() );
confItem->setActive( m_proxyFtpActive->isChecked() );
}
else
m_configs->append( new OConfItem( OConfItem::Option, "ftp_proxy",
m_proxyFtpServer->text(), QString::null,
m_proxyFtpActive->isChecked() ) );
- confItem = findConfItem( OConfItem::Option, "proxy_username" );
+ confItem = m_ipkg->findConfItem( OConfItem::Option, "proxy_username" );
if ( confItem )
confItem->setValue( m_proxyUsername->text() );
else
m_configs->append( new OConfItem( OConfItem::Option, "proxy_username",
m_proxyUsername->text() ) );
- confItem = findConfItem( OConfItem::Option, "proxy_password" );
+ 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() ) );
@@ -390,30 +390,12 @@ void OIpkgConfigDlg::initData()
if ( options & FORCE_OVERWRITE )
m_optForceOverwrite->setChecked( true );
m_optVerboseIpkg->setCurrentItem( m_ipkg->ipkgExecVerbosity() );
}
-OConfItem *OIpkgConfigDlg::findConfItem( OConfItem::Type type, const QString &name )
-{
- // Find selected server in list
- OConfItemListIterator configIt( *m_configs );
- OConfItem *config = 0l;
- for ( ; configIt.current(); ++configIt )
- {
- config = configIt.current();
- if ( config->type() == type && config->name() == name )
- break;
- }
-
- if ( config && config->type() == type && config->name() == name )
- return config;
-
- return 0l;
-}
-
void OIpkgConfigDlg::slotServerSelected( int index )
{
m_serverCurrent = index;
// Enable Edit and Delete buttons
m_serverEditBtn->setEnabled( true );
@@ -439,13 +421,13 @@ void OIpkgConfigDlg::slotServerNew()
delete server;
}
void OIpkgConfigDlg::slotServerEdit()
{
// Find selected server in list
- OConfItem *server = findConfItem( OConfItem::Source, m_serverList->currentText() );
+ OConfItem *server = m_ipkg->findConfItem( OConfItem::Source, m_serverList->currentText() );
// Edit server
if ( server )
{
QString origName = server->name();
OIpkgServerDlg dlg( server, this );
@@ -458,13 +440,13 @@ void OIpkgConfigDlg::slotServerEdit()
}
}
void OIpkgConfigDlg::slotServerDelete()
{
// Find selected server in list
- OConfItem *server = findConfItem( OConfItem::Source, m_serverList->currentText() );
+ OConfItem *server = m_ipkg->findConfItem( OConfItem::Source, m_serverList->currentText() );
// Delete server
if ( server )
{
m_configs->removeRef( server );
m_serverList->removeItem( m_serverCurrent );
@@ -499,13 +481,13 @@ void OIpkgConfigDlg::slotDestNew()
delete dest;
}
void OIpkgConfigDlg::slotDestEdit()
{
// Find selected destination in list
- OConfItem *dest = findConfItem( OConfItem::Destination, m_destList->currentText() );
+ OConfItem *dest = m_ipkg->findConfItem( OConfItem::Destination, m_destList->currentText() );
// Edit destination
if ( dest )
{
QString origName = dest->name();
OIpkgDestDlg dlg( dest, this );
@@ -518,13 +500,13 @@ void OIpkgConfigDlg::slotDestEdit()
}
}
void OIpkgConfigDlg::slotDestDelete()
{
// Find selected destination in list
- OConfItem *destination = findConfItem( OConfItem::Destination, m_destList->currentText() );
+ OConfItem *destination = m_ipkg->findConfItem( OConfItem::Destination, m_destList->currentText() );
// Delete destination
if ( destination )
{
m_configs->removeRef( destination );
m_destList->removeItem( m_destCurrent );
diff --git a/noncore/settings/packagemanager/oipkgconfigdlg.h b/noncore/settings/packagemanager/oipkgconfigdlg.h
index 5b7e91d..0fb2e16 100644
--- a/noncore/settings/packagemanager/oipkgconfigdlg.h
+++ b/noncore/settings/packagemanager/oipkgconfigdlg.h
@@ -104,15 +104,12 @@ private:
void initDestinationWidget();
void initProxyWidget();
void initOptionsWidget();
void initData();
- OConfItem *findConfItem( OConfItem::Type type = OConfItem::NotDefined,
- const QString &name = QString::null );
-
private slots:
void slotServerSelected( int index );
void slotServerNew();
void slotServerEdit();
void slotServerDelete();
diff --git a/noncore/settings/packagemanager/opackagemanager.cpp b/noncore/settings/packagemanager/opackagemanager.cpp
index cbddfe7..c9fdec1 100644
--- a/noncore/settings/packagemanager/opackagemanager.cpp
+++ b/noncore/settings/packagemanager/opackagemanager.cpp
@@ -266,31 +266,13 @@ QStringList OPackageManager::destinations()
return dl;
}
OConfItem *OPackageManager::findConfItem( OConfItem::Type type, const QString &name )
{
- OConfItem *confItem = 0x0;
- OConfItemList *confList = m_ipkg.configItems();
- if ( confList )
- {
- for ( OConfItemListIterator confIt( *confList ); confIt.current(); ++confIt )
- {
- OConfItem *conf = confIt.current();
-
- // Add only active confinations
- if ( conf->type() == type && conf->name() == name )
- {
- confItem = conf;
- break;
- }
- }
- }
-
- return confItem;
-
+ return m_ipkg.findConfItem( type, name );
}
OPackage *OPackageManager::findPackage( const QString &name )
{
return m_packages[ name ];
}
diff --git a/noncore/settings/packagemanager/opie-packagemanager.control b/noncore/settings/packagemanager/opie-packagemanager.control
index cdf419c..da3ddfe 100644
--- a/noncore/settings/packagemanager/opie-packagemanager.control
+++ b/noncore/settings/packagemanager/opie-packagemanager.control
@@ -1,10 +1,10 @@
Package: opie-packagemanager
Files: plugins/application/libpackagemanager.so* bin/packagemanager pics/packagemanager apps/Settings/packagemanager.desktop
Priority: optional
Section: opie/settings
-Depends: task-opie-minimal, libopiecore2, libopieui2, libipkg (>=0.99.120), ipkg-link
+Depends: task-opie-minimal, libopiecore2, libopieui2, libipkg (>=0.99.120)
Replaces: packagemanager
Architecture: arm
Maintainer: Dan Williams (drw@handhelds.org)
Description: Opie package management client
-Version: 0.6.0$EXTRAVERSION
+Version: 0.6.1$EXTRAVERSION
diff --git a/noncore/settings/packagemanager/packageinfodlg.cpp b/noncore/settings/packagemanager/packageinfodlg.cpp
index 5f72a67..3eef939 100644
--- a/noncore/settings/packagemanager/packageinfodlg.cpp
+++ b/noncore/settings/packagemanager/packageinfodlg.cpp
@@ -73,13 +73,14 @@ PackageInfoDlg::PackageInfoDlg( QWidget *parent, OPackageManager *pm, const QStr
if ( !m_package->information().isNull() )
m_information.setText( m_package->information() );
else
{
// Package information is not cached, retrieve it
QStringList list( package );
- m_packman->executeCommand( OPackage::Info, list, QString::null, this, SLOT(slotInfo(char*)), true );
+ m_packman->executeCommand( OPackage::Info, list, QString::null,
+ this, SLOT(slotInfo(const QString &)), true );
}
// Files tab (display only if package is installed)
if ( !m_package->versionInstalled().isNull() )
{
QWidget *filesWidget = new QWidget( tabWidget );
@@ -125,24 +126,25 @@ PackageInfoDlg::~PackageInfoDlg()
void PackageInfoDlg::slotBtnFileScan()
{
m_files.clear();
QStringList list( m_package->name() );
- m_packman->executeCommand( OPackage::Files, list, QString::null, this, SLOT(slotFiles(char*)), true );
+ m_packman->executeCommand( OPackage::Files, list, QString::null,
+ this, SLOT(slotFiles(const QString &)), true );
if ( m_retrieveFiles )
m_retrieveFiles->hide();
}
-void PackageInfoDlg::slotInfo( char *info )
+void PackageInfoDlg::slotInfo( const QString &info )
{
m_information.append( info );
}
-void PackageInfoDlg::slotFiles( char *filelist )
+void PackageInfoDlg::slotFiles( const QString &filelist )
{
QString str = filelist;
// Skip first line of output ("Package xxx is installed...")
if ( str.startsWith( "Package " ) )
str = str.right( str.length() - str.find( '\n' ) - 1 );
diff --git a/noncore/settings/packagemanager/packageinfodlg.h b/noncore/settings/packagemanager/packageinfodlg.h
index d1830de..2962f9a 100644
--- a/noncore/settings/packagemanager/packageinfodlg.h
+++ b/noncore/settings/packagemanager/packageinfodlg.h
@@ -56,11 +56,11 @@ private:
QMultiLineEdit m_information; // Multi-line edit to display package information
QMultiLineEdit m_files; // Multi-line edit to display package file list
QPushButton *m_retrieveFiles; // Push button to retrieve file list
private slots:
void slotBtnFileScan();
- void slotInfo( char *info );
- void slotFiles( char *filelist );
+ void slotInfo( const QString &info );
+ void slotFiles( const QString &filelist );
};
#endif