@ -21,6 +21,7 @@
# include <kgenericfactory.h>
# include <klocale.h>
# include <kfiledialog.h>
# include <kurlrequester.h>
# include <kaboutapplication.h>
@ -37,13 +38,17 @@
# include <console.h>
# include <install.h>
# include <string>
# include <stdio.h>
using namespace std ;
install : : install ( const QString & url , QWidget * parent , const char * name , const QStringList & )
: InstallDialog ( parent , name )
{
if ( ! url )
path = QFileDialog : : getOpenFileName ( " " , i18n ( " Debian Package (*.deb) " ) , this , i18n ( " open file dialog" ) , i18n ( " Choose a file to open " ) ) ;
path = KFileDialog : : getOpenFileName ( QString : : null , i18n ( " Debian Package (*.deb) " ) , this , i18n ( " Choose a Debian package file to open" ) ) ;
else
path = url ;
@ -56,7 +61,28 @@ install::install( const QString &url, QWidget *parent, const char *name, const Q
installPushButton - > hide ( ) ;
nextPushButton1 - > hide ( ) ;
// Get KDE prefix
// FIXME Is there a better way to do this???
string prefixcommand = " kde-config --prefix " ;
FILE * pipe_prefix ;
char prefix_result [ 2048 ] ;
int i ;
if ( ( pipe_prefix = popen ( prefixcommand . c_str ( ) , " r " ) ) = = NULL )
{
m_kdePrefix = " /usr " ;
}
else {
fgets ( prefix_result , 2048 , pipe_prefix ) ;
pclose ( pipe_prefix ) ;
for ( i = 0 ; i < 2048 ; i + + ) {
if ( prefix_result [ i ] = = 0 ) {
prefix_result [ i - 1 ] = 0 ;
i = 2048 ;
}
}
m_kdePrefix = QString ( prefix_result ) ;
}
if ( ! checkArchitecture ( ) )
page2x1 ( ) ;
@ -116,7 +142,7 @@ void install::page1()
void install : : page2x1 ( )
{
errorTextLabel - > setText ( " <b> " + i18n ( " The architecture of th e package and the system doesn't match! You will not be able to install this package!" ) + " </b> " ) ;
errorTextLabel - > setText ( " <b> " + i18n ( " The architecture of th is package does not match that of your system. You will not be able to install this package!" ) + " </b> " ) ;
nextPushButton2 - > hide ( ) ;
widgetStack - > raiseWidget ( 2 ) ;
@ -133,10 +159,10 @@ void install::page2x2()
void install : : page3 ( )
{
titleTextLabel - > setText ( " <b> " + i18n ( " Resynchroniz ation of the package index files. " ) + " </b> " ) ;
titleTextLabel - > setText ( " <b> " + i18n ( " Resynchroniz e Package Index " ) + " </b> " ) ;
closePushButton - > hide ( ) ;
QStrList run ; run . append ( " /usr /share/kdpkg/sh/kdpkg-sh" ) ;
QStrList run ; run . append ( m_kdePrefix + " /share/kdpkg/sh/kdpkg-sh" ) ;
run . append ( " update " ) ;
QWidget * consoleWidget = new console ( this , run ) ;
@ -151,7 +177,7 @@ void install::page4()
{
installPushButton - > hide ( ) ;
closePushButton - > hide ( ) ;
titleTextLabel - > setText ( " <b> " + i18n ( " Install ation of the new package. " ) + " </b> " ) ;
titleTextLabel - > setText ( " <b> " + i18n ( " Install New Package " ) + " </b> " ) ;
if ( ! installPkg )
@ -159,7 +185,7 @@ void install::page4()
if ( ! removePkg )
removePkg = " none " ;
QStrList run ; run . append ( " /usr /share/kdpkg/sh/kdpkg-sh" ) ;
QStrList run ; run . append ( m_kdePrefix + " /share/kdpkg/sh/kdpkg-sh" ) ;
run . append ( " install " ) ;
run . append ( path ) ;
run . append ( installPkg ) ;
@ -181,6 +207,8 @@ void install::page4()
void install : : showDependencies ( )
{
int start_index ;
int stop_index ;
// show packages which will be installed
@ -214,7 +242,11 @@ void install::showDependencies()
}
}
while ( missingDepends . find ( " ( " ) ! = - 1 ) {
start_index = missingDepends . find ( " ( " ) ;
stop_index = missingDepends . find ( " ) " , start_index ) ;
missingDepends . replace ( start_index , stop_index - start_index + 1 , " " ) ;
}
this - > shell - > setCommand ( " apt-get -s install " + missingDepends ) ;
this - > shell - > start ( true ) ;
QStringList installList = QStringList : : split ( " \n " , this - > shell - > getBuffer ( ) . stripWhiteSpace ( ) ) . grep ( " Inst " ) ;
@ -234,7 +266,7 @@ void install::showDependencies()
pkgVersion = QStringList : : split ( " " , installList [ i ] ) [ 2 ] . mid ( 1 ) ;
QListViewItem * item = new QListViewItem ( dependenciesListView , 0 ) ;
item - > setPixmap ( 0 , QPixmap ( " /usr /share/kdpkg/icons/install.png" ) ) ;
item - > setPixmap ( 0 , QPixmap ( m_kdePrefix + " /share/kdpkg/icons/install.png" ) ) ;
item - > setText ( 1 , name ) ;
item - > setText ( 2 , pkgVersion ) ;
item - > setText ( 3 , sysVersion ) ;
@ -288,6 +320,11 @@ void install::showDependencies()
QString conflicts = fields . grep ( " Conflicts " ) [ 0 ] . mid ( 11 ) ;
conflicts = conflicts . replace ( " , " , " " ) ;
conflicts = conflicts + " " + rconflicts ;
while ( conflicts . find ( " ( " ) ! = - 1 ) {
start_index = conflicts . find ( " ( " ) ;
stop_index = conflicts . find ( " ) " , start_index ) ;
conflicts . replace ( start_index , stop_index - start_index + 1 , " " ) ;
}
this - > shell - > setCommand ( " apt-get -s remove " + conflicts ) ;
this - > shell - > start ( true ) ;
@ -300,7 +337,7 @@ void install::showDependencies()
QString sysVersion = QStringList : : split ( " [ " , removeList [ i ] ) [ 1 ] . replace ( " ] " , " " ) ;
QListViewItem * item = new QListViewItem ( dependenciesListView , 0 ) ;
item - > setPixmap ( 0 , QPixmap ( " /usr /share/kdpkg/icons/remove.png" ) ) ;
item - > setPixmap ( 0 , QPixmap ( m_kdePrefix + " /share/kdpkg/icons/remove.png" ) ) ;
item - > setText ( 1 , name ) ;
item - > setText ( 3 , sysVersion ) ;