You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdelibs/knewstuff/engine.h

189 lines
5.1 KiB

/*
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 tqparentWidget the parent window
*/
Engine( KNewStuff *newStuff, const TQString &type, TQWidget *tqparentWidget = 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 tqparentWidget the parent window
*/
Engine( KNewStuff *newStuff, const TQString &type, const TQString &providerList, TQWidget *tqparentWidget = 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 *tqparentWidget() 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