Diffstat (limited to 'noncore/settings/packagemanager/packageinfodlg.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | noncore/settings/packagemanager/packageinfodlg.cpp | 96 |
1 files changed, 77 insertions, 19 deletions
diff --git a/noncore/settings/packagemanager/packageinfodlg.cpp b/noncore/settings/packagemanager/packageinfodlg.cpp index 26356b9..7daf336 100644 --- a/noncore/settings/packagemanager/packageinfodlg.cpp +++ b/noncore/settings/packagemanager/packageinfodlg.cpp @@ -19,64 +19,122 @@ ..}^=.= = ; Public License for more details. ++= -. .` .: : = ...= . :.=- You should have received a copy of the GNU -. .:....=;==+<; General Public License along with this file; -_. . . )=. = see the file COPYING. If not, write to the -- :-=` Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "packageinfodlg.h" +#include "opackage.h" +#include "opackagemanager.h" #include <qlayout.h> #include <qpushbutton.h> #include <qpe/resource.h> #include <opie/otabwidget.h> PackageInfoDlg::PackageInfoDlg( QWidget *parent, OPackageManager *pm, const QString &package ) : QWidget( 0x0 ) , m_packman( pm ) , m_information( this ) , m_files( this ) { // Initialize UI if ( parent ) parent->setCaption( package ); - QVBoxLayout *layout = new QVBoxLayout( this, 4, 0 ); + QVBoxLayout *layout = new QVBoxLayout( this, 4, 2 ); OTabWidget *tabWidget = new OTabWidget( this ); layout->addWidget( tabWidget ); - QPushButton *btn = new QPushButton( Resource::loadPixmap( "enter" ), tr( "Close" ), this ); - layout->addWidget( btn ); - connect( btn, SIGNAL(clicked()), this, SLOT(slotBtnClose()) ); - // Information tab m_information.reparent( tabWidget, QPoint( 0, 0 ) ); m_information.setReadOnly( true ); tabWidget->addTab( &m_information, "UtilsIcon", tr( "Information" ) ); - // Files tab - QWidget *filesWidget = new QWidget( tabWidget ); - QVBoxLayout *filesLayout = new QVBoxLayout( filesWidget, 4, 0 ); - m_files.reparent( filesWidget, QPoint( 0, 0 ) ); - m_files.setReadOnly( true ); - filesLayout->addWidget( &m_files ); + // Retrive package information + m_package = m_packman->findPackage( package ); + if ( !m_package ) + { + m_information.setText( tr( "Unable to retrieve package information." ) ); + return; + } + + // Display package information + 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 ); + } + + // Files tab (display only if package is installed) + if ( !m_package->versionInstalled().isNull() ) + { + QWidget *filesWidget = new QWidget( tabWidget ); + QVBoxLayout *filesLayout = new QVBoxLayout( filesWidget, 2, 2 ); + m_files.reparent( filesWidget, QPoint( 0, 0 ) ); + m_files.setReadOnly( true ); + filesLayout->addWidget( &m_files ); + + QPushButton *btn = new QPushButton( Resource::loadPixmap( "packagemanager/apply" ), + tr( "Retrieve file list" ), filesWidget ); + filesLayout->addWidget( btn ); + connect( btn, SIGNAL(clicked()), this, SLOT(slotBtnFileScan()) ); + tabWidget->addTab( filesWidget, "binary", tr( "File list" ) ); + + tabWidget->setCurrentTab( tr( "Information" ) ); + + // If file list is already cached, display + if ( !m_package->files().isNull() ) + m_files.setText( m_package->files() ); + } + else + m_files.hide(); +} + +PackageInfoDlg::~PackageInfoDlg() +{ + if ( !m_package ) + return; + + // Cache package information + if ( !m_information.text().isNull() ) + m_package->setInformation( m_information.text() ); - btn = new QPushButton( Resource::loadPixmap( "packagemanager/apply" ), tr( "Retrieve file list" ), - filesWidget ); - filesLayout->addWidget( btn ); -// TODO connect( btn, SIGNAL(clicked()), this, SLOT(slotFileScan()) ); - tabWidget->addTab( filesWidget, "binary", tr( "Files" ) ); + // Cache package file list + if ( !m_files.text().isNull() ) + m_package->setFiles( m_files.text() ); +} - tabWidget->setCurrentTab( tr( "Information" ) ); +void PackageInfoDlg::slotBtnFileScan() +{ + m_files.clear(); + + QStringList list( m_package->name() ); + m_packman->executeCommand( OPackage::Files, &list, QString::null, this, SLOT(slotFiles(char*)), true ); } -void PackageInfoDlg::slotBtnClose() +void PackageInfoDlg::slotInfo( char *info ) { - emit closeInfoDlg(); + m_information.append( info ); +} + +void PackageInfoDlg::slotFiles( char *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 ); + + m_files.append( str ); } |