/* This file is part of KOrganizer. Copyright (c) 2002 Cornelius Schumacher <schumacher@kde.org> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef KNEWSTUFF_ENGINE_H #define KNEWSTUFF_ENGINE_H #include <tqmap.h> #include <tqobject.h> #include <tqstring.h> #include "entry.h" #include "provider.h" namespace KIO { class Job; } class KNewStuff; namespace KNS { class DownloadDialog; class UploadDialog; class ProviderDialog; /** * @short Central class combining all possible KNewStuff operations. * * In most cases, Engine objects are built and used internally. * Using this class explicitely does however give fine-grained control about the * upload and download operations. * * @author Cornelius Schumacher (schumacher@kde.org) * \par Maintainer: * Josef Spillner (spillner@kde.org) */ class KDE_EXPORT Engine : public TQObject { Q_OBJECT struct Private; public: /** Constructor. @param newStuff a KNewStuff object @param type the Hotstuff data type such as "korganizer/calendar" @param parentWidget the parent window */ Engine( KNewStuff *newStuff, const TQString &type, TQWidget *parentWidget = 0 ); /** Constructor. @param newStuff a KNewStuff object @param type the Hotstuff data type such as "korganizer/calendar" @param providerList the URL of the provider list @param parentWidget the parent window */ Engine( KNewStuff *newStuff, const TQString &type, const TQString &providerList, TQWidget *parentWidget = 0 ); /** Destructor. */ virtual ~Engine(); /** Returns the previously set data type. @return the Hotstuff data type */ TQString type() const { return mType; } /** Returns the previously set parent widget. @return parent widget */ TQWidget *parentWidget() const { return mParentWidget; } /** Initiates the download process, retrieving provider lists and invoking the download dialog. */ void download(); /** Initiates the upload process, invoking the provider selection dialog and the file upload dialog. @param fileName name of the payload data file @param previewName name of the preview image file */ void upload( const TQString &fileName = TQString::null, const TQString &previewName = TQString::null ); /** Downloads the specified data file. @param entry the Hotstuff data object to be downloaded */ void download( Entry *entry ); /** Asynchronous lookup of provider information such as upload and download locations, icon etc. @param provider the Hotstuff provider to request information from */ void requestMetaInformation( Provider *provider ); /** Uploads the specified data file to the provider-dependent location. @param entry the Hotstuff data object to be uploaded */ void upload( Entry *entry ); /** Ignores the return value of the install method. Used internally to avoid showing of the success/failure dialog when installation is done in another place, like in @ref KNewStuffSecure */ void ignoreInstallResult(bool ignore); signals: /** Emitted when the upload has finished. @param result indicates the success/failure of the upload */ void uploadFinished( bool result ); protected slots: void getMetaInformation( Provider::List *providers ); void selectUploadProvider( Provider::List *providers ); void slotNewStuffJobData( KIO::Job *job, const TQByteArray &data ); void slotNewStuffJobResult( KIO::Job *job ); void slotDownloadJobResult( KIO::Job *job ); void slotUploadPayloadJobResult( KIO::Job *job ); void slotUploadPreviewJobResult (KIO::Job *job ); void slotUploadMetaJobResult( KIO::Job *job ); protected: bool createMetaFile( Entry * ); private: TQWidget *mParentWidget; ProviderLoader *mProviderLoader; TQMap<KIO::Job *,TQString> mNewStuffJobData; TQMap<KIO::Job *,Provider *> mProviderJobs; TQPtrList<Entry> mNewStuffList; DownloadDialog *mDownloadDialog; UploadDialog *mUploadDialog; ProviderDialog *mProviderDialog; TQString mDownloadDestination; Provider *mUploadProvider; TQString mUploadMetaFile; TQString mUploadFile; TQString mPreviewFile; TQString mProviderList; Private* d; TQString mType; }; } #endif