summaryrefslogtreecommitdiff
authordrw <drw>2004-01-13 21:46:50 (UTC)
committer drw <drw>2004-01-13 21:46:50 (UTC)
commit4dae04411e1cd75237b89dee6b5d6ba74089505d (patch) (side-by-side diff)
tree1704e1ec9dc235817436568fd9354824c3279a7e
parent4a48472bbe915852ed6eaa66284b8b8c0f3b493d (diff)
downloadopie-4dae04411e1cd75237b89dee6b5d6ba74089505d.zip
opie-4dae04411e1cd75237b89dee6b5d6ba74089505d.tar.gz
opie-4dae04411e1cd75237b89dee6b5d6ba74089505d.tar.bz2
Add .cvsignore and fix sigsev when updating and upgrading
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/settings/packagemanager/.cvsignore3
-rw-r--r--noncore/settings/packagemanager/installdlg.cpp7
2 files changed, 8 insertions, 2 deletions
diff --git a/noncore/settings/packagemanager/.cvsignore b/noncore/settings/packagemanager/.cvsignore
new file mode 100644
index 0000000..4183697
--- a/dev/null
+++ b/noncore/settings/packagemanager/.cvsignore
@@ -0,0 +1,3 @@
+Makefile*
+moc*
+.moc*
diff --git a/noncore/settings/packagemanager/installdlg.cpp b/noncore/settings/packagemanager/installdlg.cpp
index c0c03fc..980d5eb 100644
--- a/noncore/settings/packagemanager/installdlg.cpp
+++ b/noncore/settings/packagemanager/installdlg.cpp
@@ -104,203 +104,206 @@ InstallDlg::InstallDlg( QWidget *parent, OPackageManager *pm, const QString &cap
}
else
{
m_destination = 0x0;
m_availSpace = 0x0;
}
QGroupBox *groupBox = new QGroupBox( 0, Qt::Vertical, tr( "Output" ), this );
groupBox->layout()->setSpacing( 0 );
groupBox->layout()->setMargin( 4 );
QVBoxLayout *groupBoxLayout = new QVBoxLayout( groupBox->layout() );
m_output = new QMultiLineEdit( groupBox );
m_output->setReadOnly( true );
groupBoxLayout->addWidget( m_output );
layout->addMultiCellWidget( groupBox, 2, 2, 0, 1 );
m_btnStart = new QPushButton( Resource::loadPixmap( "packagemanager/apply" ), tr( "Start" ), this );
layout->addWidget( m_btnStart, 3, 0 );
connect( m_btnStart, SIGNAL(clicked()), this, SLOT(slotBtnStart()) );
m_btnOptions = new QPushButton( Resource::loadPixmap( "SettingsIcon" ), tr( "Options" ), this );
layout->addWidget( m_btnOptions, 3, 1 );
connect( m_btnOptions, SIGNAL( clicked() ), this, SLOT(slotBtnOptions()) );
// Display packages being acted upon in output widget
for( int i = 0; i < m_numCommands; i++ )
{
if ( m_packages[ i ] )
{
QString lineStr = tr( "Packages to " );
switch( m_command[ i ] )
{
case OPackage::Install : lineStr.append( tr( "install" ) );
break;
case OPackage::Remove : lineStr.append( tr( "remove" ) );
break;
case OPackage::Upgrade : lineStr.append( tr( "upgrade" ) );
break;
default :
break;
};
lineStr.append( ":\n" );
for ( QStringList::Iterator it = m_packages[ i ]->begin(); it != m_packages[ i ]->end(); ++it )
{
lineStr.append( QString( "\t%1\n" ).arg( ( *it ) ) );
}
m_output->append( lineStr );
}
}
m_output->append( tr( "Press the start button to begin.\n" ) );
m_output->setCursorPosition( m_output->numLines(), 0 );
}
InstallDlg::~InstallDlg()
{
for( int i = 0; i < m_numCommands; i++ )
{
if ( m_packages[ i ] )
delete m_packages[ i ];
}
}
void InstallDlg::slotDisplayAvailSpace( const QString &destination )
{
// If available space is not displayed, exit
if ( !m_availSpace )
return;
QString space = tr( "Unknown" );
// Get destination
OConfItem *dest = m_packman->findConfItem( OConfItem::Destination, destination );
if ( dest )
{
// Calculate available space
struct statfs fs;
if ( !statfs( dest->value(), &fs ) )
{
long mult = fs.f_bsize / 1024;
long div = 1024 / fs.f_bsize;
if ( !mult ) mult = 1;
if ( !div ) div = 1;
long avail = fs.f_bavail * mult / div;
space = tr( "%1 Kb" ).arg( avail );
}
}
- // Display available space (if known)
+ // Display available space
m_availSpace->setText( space );
}
void InstallDlg::slotBtnStart()
{
QString btnText = m_btnStart->text();
if ( btnText == tr( "Abort" ) )
{
// Stop execution of current command and prevent any others from executing
m_packman->abortCommand();
m_currCommand = 999;
// Allow user to close dialog
m_btnStart->setText( tr( "Close" ) );
m_btnStart->setIconSet( Resource::loadPixmap( "enter" ) );
return;
}
else if ( btnText == tr( "Close" ) )
{
// TODO - force reload of package data
emit closeInstallDlg();
return;
}
// Start was clicked, execute first command
m_btnOptions->setEnabled( false );
m_btnStart->setText( tr( "Abort" ) );
m_btnStart->setIconSet( Resource::loadPixmap( "close" ) );
- m_packman->executeCommand( m_command[ 0 ], m_packages[ 0 ], m_destination->currentText(), this,
+ QString dest;
+ if ( m_destination )
+ dest = m_destination->currentText();
+ m_packman->executeCommand( m_command[ 0 ], m_packages[ 0 ], dest, this,
SLOT(slotOutput(OProcess*,char*,int)), SLOT(slotErrors(OProcess*,char*,int)),
SLOT(slotFinished(OProcess*)), true );
}
void InstallDlg::slotBtnOptions()
{
QString btnText = m_btnOptions->text();
if ( btnText == tr( "Options" ) )
{
// Display configuration dialog (only options tab is enabled)
m_packman->configureDlg( true );
return;
}
// Save output was clicked
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, m_output->text() );
}
}
void InstallDlg::slotOutput( OProcess */*process*/, char *buffer, int buffLen )
{
QString lineStr = buffer;
if ( lineStr[buffLen-1] == '\n' )
lineStr.truncate( buffLen - 1 );
m_output->append( lineStr );
m_output->setCursorPosition( m_output->numLines(), 0 );
}
void InstallDlg::slotErrors( OProcess */*process*/, char *buffer, int buffLen )
{
QString lineStr = buffer;
if ( lineStr[buffLen-1] == '\n' )
lineStr.truncate( buffLen - 1 );
m_output->append( lineStr );
m_output->setCursorPosition( m_output->numLines(), 0 );
}
void InstallDlg::slotFinished( OProcess */*process*/ )
{
++m_currCommand;
if ( m_currCommand < m_numCommands )
{
// More commands left, execute next one
m_packman->executeCommand( m_command[ m_currCommand ], m_packages[ m_currCommand ], m_destination->currentText(),
this, SLOT(slotOutput(OProcess*,char*,int)),
SLOT(slotErrors(OProcess*,char*,int)),
SLOT(slotFinished(OProcess*)), true );
}
else
{
// All commands executed, allow user to close dialog
m_btnStart->setText( tr( "Close" ) );
m_btnStart->setIconSet( Resource::loadPixmap( "enter" ) );
m_btnOptions->setEnabled( true );
m_btnOptions->setText( tr( "Save output" ) );
m_btnOptions->setIconSet( Resource::loadPixmap( "save" ) );
}
}