summaryrefslogtreecommitdiff
path: root/noncore
authordrw <drw>2003-04-17 20:19:52 (UTC)
committer drw <drw>2003-04-17 20:19:52 (UTC)
commitfabadbc7caba39006fcdda5167c29fa287e23cc3 (patch) (side-by-side diff)
treebcd0fe44cd443001514ff4f9e50af5e9da093fcc /noncore
parent187e3c56ab0bb2f562c9d6347a99edb440c18d6c (diff)
downloadopie-fabadbc7caba39006fcdda5167c29fa287e23cc3.zip
opie-fabadbc7caba39006fcdda5167c29fa287e23cc3.tar.gz
opie-fabadbc7caba39006fcdda5167c29fa287e23cc3.tar.bz2
Added better verbosity options and option to save ipkg output to a file (per 'bugs' #856 & #857). Also fixed Ok/Cancel behavior on install options dialog.
Diffstat (limited to 'noncore') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/aqpkg/installdlgimpl.cpp58
-rw-r--r--noncore/settings/aqpkg/installdlgimpl.h1
-rw-r--r--noncore/settings/aqpkg/instoptionsimpl.cpp27
-rw-r--r--noncore/settings/aqpkg/instoptionsimpl.h5
-rw-r--r--noncore/settings/aqpkg/ipkg.cpp6
-rw-r--r--noncore/settings/aqpkg/ipkg.h3
6 files changed, 79 insertions, 21 deletions
diff --git a/noncore/settings/aqpkg/installdlgimpl.cpp b/noncore/settings/aqpkg/installdlgimpl.cpp
index 2bb8b4d..76d0a80 100644
--- a/noncore/settings/aqpkg/installdlgimpl.cpp
+++ b/noncore/settings/aqpkg/installdlgimpl.cpp
@@ -13,23 +13,27 @@
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#include <stdio.h>
+
+#include <opie/ofiledialog.h>
#ifdef QWS
#include <qpe/config.h>
+#include <qpe/fileselector.h>
#include <qpe/qpeapplication.h>
#include <qpe/resource.h>
#include <qpe/storage.h>
#endif
#include <qcheckbox.h>
#include <qcombobox.h>
#include <qdialog.h>
+#include <qfileinfo.h>
#include <qgroupbox.h>
#include <qmultilineedit.h>
#include <qlabel.h>
#include <qlayout.h>
#include <qpushbutton.h>
@@ -60,12 +64,13 @@ InstallDlgImpl::InstallDlgImpl( QList<InstallData> &packageList, DataManager *da
Config cfg( "aqpkg" );
cfg.setGroup( "settings" );
defaultDest = cfg.readEntry( "dest", "root" );
// Grab flags - Turn MAKE_LINKS on by default (if no flags found)
flags = cfg.readNumEntry( "installFlags", 0 );
+ infoLevel = cfg.readNumEntry( "infoLevel", 1 );
#else
flags = 0;
#endif
// Output text is read only
output->setReadOnly( true );
@@ -187,23 +192,51 @@ void InstallDlgImpl :: init( bool displayextrainfo )
layout->addWidget( btnOptions, 3, 1 );
connect( btnOptions, SIGNAL( clicked() ), this, SLOT( optionsSelected() ) );
}
void InstallDlgImpl :: optionsSelected()
{
- InstallOptionsDlgImpl opt( flags, this, "Option", true );
- opt.exec();
-
- // set options selected from dialog
- flags = opt.getFlags();
+ if ( btnOptions->text() == tr( "Options" ) )
+ {
+ InstallOptionsDlgImpl opt( flags, infoLevel, this, "Option", true );
+ if ( opt.exec() == QDialog::Accepted )
+ {
+ // set options selected from dialog
+ flags = opt.getFlags();
+ infoLevel = opt.getInfoLevel();
#ifdef QWS
- Config cfg( "aqpkg" );
- cfg.setGroup( "settings" );
- cfg.writeEntry( "installFlags", flags );
+ Config cfg( "aqpkg" );
+ cfg.setGroup( "settings" );
+ cfg.writeEntry( "installFlags", flags );
+ cfg.writeEntry( "infoLevel", infoLevel );
#endif
+ }
+ }
+ else // Save output
+ {
+ QMap<QString, QStringList> map;
+ map.insert( tr( "All" ), QStringList() );
+ QStringList text;
+ text << "text/*";
+ map.insert(tr( "Text" ), text );
+ text << "*";
+ map.insert( tr( "All" ), text );
+
+ QString filename = OFileDialog::getSaveFileName( 2, "/", "ipkg-output", map );
+ if( !filename.isEmpty() )
+ {
+ QString currentFileName = QFileInfo( filename ).fileName();
+ DocLnk doc;
+ doc.setType( "text/plain" );
+ doc.setFile( filename );
+ doc.setName( currentFileName );
+ FileManager fm;
+ fm.saveFile( doc, output->text() );
+ }
+ }
}
void InstallDlgImpl :: installSelected()
{
if ( btnInstall->text() == tr( "Abort" ) )
{
@@ -269,20 +302,20 @@ void InstallDlgImpl :: installSelected()
pIpkg->setPackage( idata->packageName );
int tmpFlags = flags;
if ( idata->destination->linkToRoot() )
tmpFlags |= MAKE_LINKS;
- pIpkg->setFlags( tmpFlags );
+ pIpkg->setFlags( tmpFlags, infoLevel );
pIpkg->runIpkg();
}
pIpkg->setOption( "install" );
pIpkg->setDestination( dest );
pIpkg->setDestinationDir( destDir );
- pIpkg->setFlags( instFlags );
+ pIpkg->setFlags( instFlags, infoLevel );
QListIterator<InstallData> it2( installList );
for ( ; it2.current(); ++it2 )
{
pIpkg->setPackage( it2.current()->packageName );
pIpkg->runIpkg();
}
@@ -300,24 +333,27 @@ void InstallDlgImpl :: installSelected()
pIpkg->setDestinationDir( idata->destination->getDestinationPath() );
pIpkg->setPackage( idata->packageName );
int tmpFlags = flags;
if ( idata->destination->linkToRoot() && idata->recreateLinks )
tmpFlags |= MAKE_LINKS;
- pIpkg->setFlags( tmpFlags );
+ pIpkg->setFlags( tmpFlags, infoLevel );
pIpkg->runIpkg();
}
delete pIpkg;
pIpkg = 0;
}
btnOptions->setEnabled( true );
// btnInstall->setEnabled( true );
btnInstall->setText( tr( "Close" ) );
btnInstall->setIconSet( Resource::loadPixmap( "enter" ) );
+
+ btnOptions->setText( tr( "Save output" ) );
+ btnOptions->setIconSet( Resource::loadPixmap( "save" ) );
if ( destination && destination->currentText() != 0 && destination->currentText() != "" )
displayAvailableSpace( destination->currentText() );
}
diff --git a/noncore/settings/aqpkg/installdlgimpl.h b/noncore/settings/aqpkg/installdlgimpl.h
index c30963e..15cf427 100644
--- a/noncore/settings/aqpkg/installdlgimpl.h
+++ b/noncore/settings/aqpkg/installdlgimpl.h
@@ -56,12 +56,13 @@ protected:
private:
DataManager *dataMgr;
QList<InstallData> installList;
QList<InstallData> removeList;
QList<InstallData> updateList;
int flags;
+ int infoLevel;
Ipkg *pIpkg;
bool upgradePackages;
QComboBox *destination;
QPushButton *btnInstall;
QPushButton *btnOptions;
diff --git a/noncore/settings/aqpkg/instoptionsimpl.cpp b/noncore/settings/aqpkg/instoptionsimpl.cpp
index 47b250d..72d794f 100644
--- a/noncore/settings/aqpkg/instoptionsimpl.cpp
+++ b/noncore/settings/aqpkg/instoptionsimpl.cpp
@@ -17,20 +17,22 @@
#ifdef QWS
#include <qpe/config.h>
#endif
#include <qcheckbox.h>
+#include <qcombobox.h>
#include <qgroupbox.h>
+#include <qlabel.h>
#include <qlayout.h>
#include "global.h"
#include "instoptionsimpl.h"
#include "ipkg.h"
-InstallOptionsDlgImpl::InstallOptionsDlgImpl( int flags, QWidget * parent, const char* name, bool modal, WFlags fl )
+InstallOptionsDlgImpl::InstallOptionsDlgImpl( int flags, int verb, QWidget * parent, const char* name, bool modal, WFlags fl )
: QDialog( parent, name, modal, fl )
{
setCaption( tr( "Options" ) );
QVBoxLayout *layout = new QVBoxLayout( this );
layout->setMargin( 2 );
@@ -52,25 +54,35 @@ InstallOptionsDlgImpl::InstallOptionsDlgImpl( int flags, QWidget * parent, const
forceRemove = new QCheckBox( tr( "Force Remove" ), grpbox );
grplayout->addWidget( forceRemove );
forceOverwrite = new QCheckBox( tr( "Force Overwrite" ), grpbox );
grplayout->addWidget( forceOverwrite );
- verboseWget = new QCheckBox( tr( "Verbose WGet" ), grpbox );
- grplayout->addWidget( verboseWget );
+ QLabel *l = new QLabel( tr( "Information Level" ), grpbox );
+ grplayout->addWidget( l );
+
+ verboseIpkg = new QComboBox( grpbox );
+ verboseIpkg->insertItem( tr( "Errors only" ) );
+ verboseIpkg->insertItem( tr( "Normal messages" ) );
+ verboseIpkg->insertItem( tr( "Informative messages" ) );
+ verboseIpkg->insertItem( tr( "Troubleshooting output" ) );
+ verboseIpkg->setCurrentItem( verb );
+ grplayout->addWidget( verboseIpkg );
+
+ grplayout->addItem( new QSpacerItem( 1, 1, QSizePolicy::Minimum, QSizePolicy::Expanding ) );
if ( flags & FORCE_DEPENDS )
forceDepends->setChecked( true );
if ( flags & FORCE_REINSTALL )
forceReinstall->setChecked( true );
if ( flags & FORCE_REMOVE )
forceRemove->setChecked( true );
if ( flags & FORCE_OVERWRITE )
forceOverwrite->setChecked( true );
- if ( flags & VERBOSE_WGET )
- verboseWget->setChecked( true );
+// if ( flags & VERBOSE_WGET )
+// verboseWget->setChecked( true );
// if ( flags & MAKE_LINKS )
// makeLinks->setChecked( true );
showMaximized();
}
@@ -94,6 +106,11 @@ int InstallOptionsDlgImpl :: getFlags()
flags |= FORCE_OVERWRITE;
if ( verboseWget->isChecked() )
flags |= VERBOSE_WGET;
return flags;
}
+
+int InstallOptionsDlgImpl :: getInfoLevel()
+{
+ return verboseIpkg->currentItem();
+}
diff --git a/noncore/settings/aqpkg/instoptionsimpl.h b/noncore/settings/aqpkg/instoptionsimpl.h
index f4724a0..1312afd 100644
--- a/noncore/settings/aqpkg/instoptionsimpl.h
+++ b/noncore/settings/aqpkg/instoptionsimpl.h
@@ -17,24 +17,27 @@
#ifndef INSTALLOPTIONSIMPL_H
#define INSTALLOPTIONSIMPL_H
#include <qdialog.h>
class QCheckBox;
+class QComboBox;
class InstallOptionsDlgImpl : public QDialog
{
Q_OBJECT
public:
- InstallOptionsDlgImpl( int flags, QWidget * parent = 0, const char* name = 0, bool modal = false, WFlags fl = 0 );
+ InstallOptionsDlgImpl( int, int, QWidget * = 0, const char * = 0, bool = false, WFlags = 0 );
~InstallOptionsDlgImpl();
int getFlags();
+ int getInfoLevel();
private:
QCheckBox* forceDepends;
QCheckBox* forceReinstall;
QCheckBox* forceRemove;
QCheckBox* forceOverwrite;
QCheckBox* verboseWget;
+ QComboBox* verboseIpkg;
};
#endif
diff --git a/noncore/settings/aqpkg/ipkg.cpp b/noncore/settings/aqpkg/ipkg.cpp
index e66c02d..7df643e 100644
--- a/noncore/settings/aqpkg/ipkg.cpp
+++ b/noncore/settings/aqpkg/ipkg.cpp
@@ -66,13 +66,13 @@ bool Ipkg :: runIpkg( )
if ( runtimeDir != "" )
{
commands << "cd ";
commands << runtimeDir;
commands << ";";
}
- commands << "ipkg" << "-force-defaults";
+ commands << "ipkg" << "-V" << QString::number( infoLevel ) << "-force-defaults";
// only set the destination for an install operation
if ( option == "install" )
commands << "-dest" << destination;
@@ -83,13 +83,13 @@ bool Ipkg :: runIpkg( )
if ( flags & FORCE_REINSTALL )
commands << "-force-reinstall";
if ( flags & FORCE_REMOVE )
commands << "-force-removal-of-essential-packages";
if ( flags & FORCE_OVERWRITE )
commands << "-force-overwrite";
- if ( flags & VERBOSE_WGET )
+ if ( infoLevel == 3 )
commands << "-verbose_wget";
// Handle make links
// Rules - If make links is switched on, create links to root
// if destDir is NOT /
if ( flags & MAKE_LINKS )
@@ -250,13 +250,13 @@ void Ipkg :: removeStatusEntry()
// Remove old status file and put tmp stats file in its place
remove( statusFile );
rename( outStatusFile, statusFile );
}
-int Ipkg :: executeIpkgCommand( QStringList &cmd, const QString option )
+int Ipkg :: executeIpkgCommand( QStringList &cmd, const QString /*option*/ )
{
// If one is already running - should never be but just to be safe
if ( proc )
{
delete proc;
proc = 0;
diff --git a/noncore/settings/aqpkg/ipkg.h b/noncore/settings/aqpkg/ipkg.h
index d49bb04..531bfc0 100644
--- a/noncore/settings/aqpkg/ipkg.h
+++ b/noncore/settings/aqpkg/ipkg.h
@@ -46,13 +46,13 @@ public:
bool runIpkg( );
void setOption( const char *opt ) { option = opt; }
void setPackage( const char *pkg ) { package = pkg; }
void setDestination( const char *dest ) { destination = dest; }
void setDestinationDir( const char *dir ) { destDir = dir; }
- void setFlags( int fl ) { flags = fl; }
+ void setFlags( int fl, int il ) { flags = fl; infoLevel = il; }
void setRuntimeDirectory( const char *dir ) { runtimeDir = dir; }
signals:
void outputText( const QString &text );
public slots:
@@ -70,12 +70,13 @@ private:
QString package;
QString destination;
QString destDir;
QString runtimeDir;
OProcess *proc;
int flags;
+ int infoLevel;
bool finished;
QList<QString> *dependantPackages;
int executeIpkgCommand( QStringList &cmd, const QString option );
void removeStatusEntry();