author | drw <drw> | 2004-11-18 15:49:02 (UTC) |
---|---|---|
committer | drw <drw> | 2004-11-18 15:49:02 (UTC) |
commit | 7ac32658ba09d8456cc75e5cf80707caa616848b (patch) (side-by-side diff) | |
tree | 56bae9b9c75eae7a9096013830fe98d28a4de0ed | |
parent | 718a7a8ba68e10faa1a22fcc6bdc26e1723b2a40 (diff) | |
download | opie-7ac32658ba09d8456cc75e5cf80707caa616848b.zip opie-7ac32658ba09d8456cc75e5cf80707caa616848b.tar.gz opie-7ac32658ba09d8456cc75e5cf80707caa616848b.tar.bz2 |
UI tweaks for Installation dialog - 1. Show destination selection only when installing apps, 2. Update available disk space after each package is processed, 3. Disable destination selection once start button has been clicked
-rw-r--r-- | noncore/settings/packagemanager/installdlg.cpp | 61 | ||||
-rw-r--r-- | noncore/settings/packagemanager/installdlg.h | 12 | ||||
-rw-r--r-- | noncore/settings/packagemanager/mainwindow.cpp | 2 |
3 files changed, 62 insertions, 13 deletions
diff --git a/noncore/settings/packagemanager/installdlg.cpp b/noncore/settings/packagemanager/installdlg.cpp index 945dfed..781f8f5 100644 --- a/noncore/settings/packagemanager/installdlg.cpp +++ b/noncore/settings/packagemanager/installdlg.cpp @@ -31,4 +31,5 @@ _;:, .> :=|. This file is free software; you can #include <opie2/ofiledialog.h> +#include <opie2/oprocess.h> #include <qpe/fileselector.h> @@ -58,4 +59,5 @@ InstallDlg::InstallDlg( QWidget *parent, OPackageManager *pm, const QString &cap , m_numCommands( 0 ) , m_currCommand( 0 ) + , m_destItem( 0x0 ) { // Save command/package list information @@ -164,8 +166,4 @@ InstallDlg::InstallDlg( QWidget *parent, OPackageManager *pm, const QString &cap } -InstallDlg::~InstallDlg() -{ -} - void InstallDlg::slotDisplayAvailSpace( const QString &destination ) { @@ -177,11 +175,12 @@ void InstallDlg::slotDisplayAvailSpace( const QString &destination ) // Get destination - OConfItem *dest = m_packman->findConfItem( OConfItem::Destination, destination ); + if ( !destination.isNull() ) + m_destItem = m_packman->findConfItem( OConfItem::Destination, destination ); - if ( dest ) + if ( m_destItem ) { // Calculate available space struct statfs fs; - if ( !statfs( dest->value(), &fs ) ) + if ( !statfs( m_destItem->value(), &fs ) ) { long mult = fs.f_bsize / 1024; @@ -221,4 +220,11 @@ void InstallDlg::slotBtnStart() // Start was clicked, start executing + QString dest; + if ( m_destination ) + { + dest = m_destination->currentText(); + m_destination->setEnabled( false ); + } + m_btnOptions->setEnabled( false ); if ( m_numCommands > 1 ) @@ -232,8 +238,4 @@ void InstallDlg::slotBtnStart() } - QString dest; - if ( m_destination ) - dest = m_destination->currentText(); - for ( m_currCommand = 0; m_currCommand < m_numCommands; m_currCommand++ ) { @@ -242,4 +244,38 @@ void InstallDlg::slotBtnStart() this, SLOT(slotOutput(char*)), true ); } + slotProcessDone(0l); + + // Get destination +/* + if ( dest == "root" ) + { + slotProcessDone(0l); + return; + } + + m_destItem = m_packman->findConfItem( OConfItem::Destination, dest ); + if ( m_destItem ) + { + QString path = m_destItem->value(); + Opie::Core::OProcess *process = new Opie::Core::OProcess( this, "ipkg-link process" ); + connect( process, SIGNAL(processExited(Opie::Core::OProcess*)), + this, SLOT(slotProcessDone(Opie::Core::OProcess*)) ); + + *process << "ipkg-link" << "mount" << path; + if ( !process->start( Opie::Core::OProcess::NotifyOnExit, + Opie::Core::OProcess::NoCommunication ) ) + slotProcessDone( 0l ); + m_output->append( tr( "Starting ipkg-link to link installed applications." ) ); + m_output->setCursorPosition( m_output->numLines(), 0 ); + } +*/ +} + +void InstallDlg::slotProcessDone( Opie::Core::OProcess *proc ) +{ + delete proc; + + m_output->append( tr( "The package linking is done." ) ); + m_output->setCursorPosition( m_output->numLines(), 0 ); // All commands executed, allow user to close dialog @@ -295,3 +331,6 @@ void InstallDlg::slotOutput( char *msg ) m_output->append( lineStr ); m_output->setCursorPosition( m_output->numLines(), 0 ); + + // Update available space + slotDisplayAvailSpace( QString::null ); } diff --git a/noncore/settings/packagemanager/installdlg.h b/noncore/settings/packagemanager/installdlg.h index cddc911..f45c17c 100644 --- a/noncore/settings/packagemanager/installdlg.h +++ b/noncore/settings/packagemanager/installdlg.h @@ -40,6 +40,15 @@ class QMultiLineEdit; class QPushButton; +class OConfItem; class OPackageManager; +namespace Opie +{ + namespace Core + { + class OProcess; + } +} + class InstallDlg : public QWidget { @@ -55,5 +64,4 @@ public: OPackage::Command command3 = OPackage::NotDefined, const QStringList &packages3 = QStringList() ); - ~InstallDlg(); private: @@ -72,4 +80,5 @@ private: OPackage::Command m_command[3]; // List of commands to be executed QStringList m_packages[3]; // Lists of package names associated to commands (m_command[]) + OConfItem *m_destItem; // Pointer to destination for package installation private slots: @@ -78,4 +87,5 @@ private slots: void slotBtnStart(); void slotBtnOptions(); + void slotProcessDone( Opie::Core::OProcess *proc ); // Execution slots diff --git a/noncore/settings/packagemanager/mainwindow.cpp b/noncore/settings/packagemanager/mainwindow.cpp index 5e15874..459a75b 100644 --- a/noncore/settings/packagemanager/mainwindow.cpp +++ b/noncore/settings/packagemanager/mainwindow.cpp @@ -532,5 +532,5 @@ void MainWindow::slotApply() // Create package manager output widget - InstallDlg *dlg = new InstallDlg( this, &m_packman, tr( "Apply changes" ), true, + InstallDlg *dlg = new InstallDlg( this, &m_packman, tr( "Apply changes" ), !installList.isEmpty(), removeCmd, removeList, installCmd, installList, |