From 15318cad33835e4e2dc620d033e43cd930676cdd Mon Sep 17 00:00:00 2001 From: kergoth Date: Fri, 25 Jan 2002 22:14:26 +0000 Subject: Initial revision --- (limited to 'core/launcher/packageslave.cpp') diff --git a/core/launcher/packageslave.cpp b/core/launcher/packageslave.cpp new file mode 100644 index 0000000..4f149a5 --- a/dev/null +++ b/core/launcher/packageslave.cpp @@ -0,0 +1,97 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qtopia Environment. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ + +#include "packageslave.h" + +#include +#include + +#include +#include + +#include + +PackageSlave::PackageSlave( QObject *parent, char* name ) + : QObject( parent, name ), packageChannel( 0 ) +{ + // setup qcop channel + packageChannel = new QCopChannel( "QPE/Package", this ); + connect( packageChannel, SIGNAL( received(const QCString &, const QByteArray &) ), + this, SLOT( qcopMessage( const QCString &, const QByteArray &) ) ); +} + +void PackageSlave::qcopMessage( const QCString &msg, const QByteArray &data ) +{ + QDataStream stream( data, IO_ReadOnly ); + + if ( msg == "installPackage(QString)" ) { + QString file; + stream >> file; + installPackage( file ); + } + else if ( msg == "removePackage(QString)" ) { + QString file; + stream >> file; + removePackage( file ); + } +} + +void PackageSlave::installPackage( const QString &package ) +{ + Process proc( QStringList() << "ipkg" << "install" << package ); + + sendReply( "installStarted(QString)", package ); + + QString output; + if ( proc.exec( "", output ) ) { + sendReply( "installDone(QString)", package ); + } + else { + sendReply( "installFailed(QString)", package ); + } + QCopEnvelope e("QPE/System", "linkChanged(QString)"); + QString lf = QString::null; + e << lf; + unlink( package ); +} + +void PackageSlave::removePackage( const QString &package ) +{ + Process proc( QStringList() << "ipkg" << "remove" << package ); + + sendReply( "removeStarted(QString)", package ); + + QString output; + if ( proc.exec( "", output ) ) { + sendReply( "removeDone(QString)", package ); + } + else { + sendReply( "removeFailed(QString)", package ); + } + QCopEnvelope e("QPE/System", "linkChanged(QString)"); + QString lf = QString::null; + e << lf; +} + +void PackageSlave::sendReply( const QCString& msg, const QString& arg ) +{ + QCopEnvelope e( "QPE/Desktop", msg ); + e << arg; +} -- cgit v0.9.0.2