kget
kget.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef KGET_H
00017 #define KGET_H
00018
00019 #include <kservice.h>
00020 #include <kurl.h>
00021 #include <kactioncollection.h>
00022 #include <ktabwidget.h>
00023
00024 #include "scheduler.h"
00025 #include "kget_export.h"
00026 #include "observer.h"
00027
00028 class QDomElement;
00029 class QAbstractItemView;
00030
00031 class KLibrary;
00032
00033 class Transfer;
00034 class TransferGroup;
00035 class TransferHandler;
00036 class TransferGroupHandler;
00037 class TransferFactory;
00038 class TransferTreeModel;
00039 class TransferTreeSelectionModel;
00040 class ModelObserver;
00041 class KGetPlugin;
00042 class MainWindow;
00043 class NewTransferDialog;
00044
00055 static const QString KGET_QUIT_MESSAGE_TITLE = i18n("Quit KGet");
00056 static const QString KGET_QUIT_MESSAGE = i18n("KGet quits now because all downloads have been completed.");
00057
00058 class KGET_EXPORT KGet
00059 {
00060 friend class NewTransferDialog;
00061 friend class TransferFinishedObserver;
00062
00063 public:
00064 static KGet& self( MainWindow * mainWindow=0 );
00065
00071 static void addObserver(ModelObserver * observer);
00072
00078 static void delObserver(ModelObserver * observer);
00079
00089 static bool addGroup(const QString& groupName);
00090
00096 static void delGroup(const QString& groupName);
00097
00104 static void renameGroup(const QString& oldName, const QString& newName);
00105
00109 static QStringList transferGroupNames();
00110
00121 static void addTransfer(KUrl srcUrl, QString destDir = QString(),
00122 const QString& groupName = QString(), bool start=false);
00123
00130 static void addTransfer(const QDomElement& e, const QString& groupName = QString());
00131
00142 static void addTransfer(KUrl::List srcUrls, QString destDir = QString(),
00143 const QString& groupName = QString(), bool start=false);
00144
00150 static void delTransfer(TransferHandler * transfer);
00151
00158 static void moveTransfer(TransferHandler * transfer, const QString& groupName);
00159
00163 static QList<TransferHandler *> selectedTransfers();
00164
00168 static QList<TransferGroupHandler *>
00169 selectedTransferGroups();
00170
00174 static TransferTreeSelectionModel * selectionModel();
00175
00181 static void load( QString filename=QString() );
00182
00188 static void save( QString filename=QString() );
00189
00195 static TransferFactory * factory(TransferHandler * transfer);
00196
00200 static KActionCollection * actionCollection();
00201
00206 static void setSchedulerRunning(bool running=true);
00207
00211 static bool schedulerRunning();
00212
00216 static void addTransferView(QAbstractItemView * view);
00217
00222 static void setPluginsSettingsWidget(KTabWidget * widget);
00223
00227 static QList<TransferHandler*> allTransfers();
00228
00233 static void checkSystemTray();
00234
00235 private:
00236 KGet();
00237 ~KGet();
00238
00248 static void createTransfer(const KUrl &src, const KUrl &dest, const QString& groupName = QString(), bool start = false, const QDomElement * e = 0);
00249
00255 static void postAddedTransferGroupEvent(TransferGroup * group, ModelObserver * observer = 0);
00256
00262 static void postRemovedTransferGroupEvent(TransferGroup * group, ModelObserver * observer = 0);
00263
00264 static KUrl urlInputDialog();
00265 static QString destInputDialog();
00266 static QString getSaveDirectoryFromExceptions(const KUrl &filename);
00267
00268 static bool isValidSource(const KUrl &source);
00269 static bool isValidDestDirectory(const QString& destDir);
00270
00278 static bool isValidDestUrl(const KUrl &destUrl);
00279
00280 static KUrl getValidDestUrl(const QString& destDir, const KUrl &srcUrl);
00281
00282 static TransferGroup * findGroup(const QString& groupName);
00283 static Transfer * findTransfer(KUrl url);
00284
00285
00286 static void loadPlugins();
00287 static void unloadPlugins();
00288 static KGetPlugin * createPluginFromService( const KService::Ptr service );
00289
00290
00300 static bool safeDeleteFile( const KUrl& url );
00301
00302 static QList<ModelObserver *> m_observers;
00303
00304
00305 static TransferTreeModel * m_transferTreeModel;
00306 static TransferTreeSelectionModel * m_selectionModel;
00307
00308
00309 static QList<TransferFactory *> m_transferFactories;
00310
00311
00312 static QList<KLibrary *> m_pluginKLibraries;
00313
00314
00315 static MainWindow * m_mainWindow;
00316
00317
00318 static Scheduler * m_scheduler;
00319 };
00320
00321
00322 class TransferFinishedObserver : public TransferObserver
00323 {
00324 public:
00325 TransferFinishedObserver();
00326
00327 void transferChangedEvent(TransferHandler * transfer);
00328
00329 private:
00330 void checkAndFinish();
00331 void checkAndUpdateSystemTray();
00332
00333 QString prevStatus;
00334 };
00335
00336 #endif