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 <KNotification>
00023 #include <ktabwidget.h>
00024
00025 #include "kuiserverjobs.h"
00026 #include "scheduler.h"
00027 #include "kget_export.h"
00028 #include "observer.h"
00029
00030 class QDomElement;
00031 class QAbstractItemView;
00032
00033 class Transfer;
00034 class TransferDataSource;
00035 class TransferGroup;
00036 class TransferHandler;
00037 class TransferGroupHandler;
00038 class TransferFactory;
00039 class TransferTreeModel;
00040 class TransferTreeSelectionModel;
00041 class ModelObserver;
00042 class KGetPlugin;
00043 class MainWindow;
00044 class NewTransferDialog;
00045 class TransferGroupScheduler;
00046 class GenericTransferGroupObserver;
00047
00058 class KGET_EXPORT KGet
00059 {
00060 friend class NewTransferDialog;
00061 friend class GenericTransferObserver;
00062
00063 public:
00064 enum AfterFinishAction {
00065 Quit = 0,
00066 Shutdown = 1
00067 };
00068
00069 static KGet& self( MainWindow * mainWindow=0 );
00070
00076 static void addObserver(ModelObserver * observer);
00077
00083 static void delObserver(ModelObserver * observer);
00084
00094 static bool addGroup(const QString& groupName);
00095
00101 static void delGroup(const QString& groupName);
00102
00109 static void renameGroup(const QString& oldName, const QString& newName);
00110
00114 static QStringList transferGroupNames();
00115
00126 static void addTransfer(KUrl srcUrl, QString destDir = QString(),
00127 const QString& groupName = QString(), bool start=false);
00128
00135 static void addTransfer(const QDomElement& e, const QString& groupName = QString());
00136
00147 static void addTransfer(KUrl::List srcUrls, QString destDir = QString(),
00148 const QString& groupName = QString(), bool start=false);
00149
00155 static bool delTransfer(TransferHandler * transfer);
00156
00163 static void moveTransfer(TransferHandler * transfer, const QString& groupName);
00164
00169 static void redownloadTransfer(TransferHandler * transfer);
00170
00174 static QList<TransferHandler *> selectedTransfers();
00175
00179 static QList<TransferHandler *> finishedTransfers();
00180
00184 static QList<TransferGroupHandler *>
00185 selectedTransferGroups();
00186
00190 static TransferTreeSelectionModel * selectionModel();
00191
00197 static void load( QString filename=QString() );
00198
00205 static void save( QString filename=QString(), bool plain=false );
00206
00212 static TransferFactory * factory(TransferHandler * transfer);
00213
00217 static KActionCollection * actionCollection();
00218
00223 static void setSchedulerRunning(bool running=true);
00224
00228 static bool schedulerRunning();
00229
00233 static void addTransferView(QAbstractItemView * view);
00234
00238 static QList<TransferHandler*> allTransfers();
00239
00243 static QList<TransferGroupHandler*> allTransferGroups();
00244
00249 static TransferHandler * findTransfer(const KUrl &src);
00250
00255 static void checkSystemTray();
00256
00260 static void settingsChanged();
00261
00266 static void registerKJob(KJob *);
00267 static void unregisterKJob(KJob *);
00268 static void reloadKJobs();
00269
00273 static QStringList defaultFolders(const KUrl &filename, const QString &groupname);
00274
00281 static TransferDataSource * createTransferDataSource(const KUrl &src);
00282
00287 static void setGlobalDownloadLimit(int limit);
00288
00293 static void setGlobalUploadLimit(int limit);
00294
00298 static void calculateGlobalSpeedLimits();
00299
00303 static void calculateGlobalDownloadLimit();
00304
00308 static void calculateGlobalUploadLimit();
00309
00310
00318 static void showNotification(QWidget *parent, KNotification::StandardEvent eventId,
00319 const QString &text,
00320 const QString &icon = QString("dialog-error"));
00321
00322 static void loadPlugins();
00323
00324 private:
00325 KGet();
00326 ~KGet();
00327
00337 static bool createTransfer(const KUrl &src, const KUrl &dest, const QString& groupName = QString(), bool start = false, const QDomElement * e = 0);
00338
00344 static void postAddedTransferGroupEvent(TransferGroup * group, ModelObserver * observer = 0);
00345
00351 static void postRemovedTransferGroupEvent(TransferGroup * group, ModelObserver * observer = 0);
00352
00353 static KUrl urlInputDialog();
00354 static QString destInputDialog();
00355 static QString getSaveDirectoryFromExceptions(const KUrl &filename);
00356
00357 static bool isValidSource(const KUrl &source);
00358 static bool isValidDestDirectory(const QString& destDir);
00359
00367 static bool isValidDestUrl(const KUrl &destUrl);
00368
00369 static KUrl getValidDestUrl(const QString& destDir, const KUrl &srcUrl);
00370
00371 static TransferGroup * findGroup(const QString& groupName);
00372
00373
00374 static void unloadPlugins();
00375 static KGetPlugin * createPluginFromService( const KService::Ptr &service );
00376
00377
00387 static bool safeDeleteFile( const KUrl& url );
00388
00389 static QList<ModelObserver *> m_observers;
00390
00391
00392 static TransferTreeModel * m_transferTreeModel;
00393 static TransferTreeSelectionModel * m_selectionModel;
00394
00395
00396 static QList<TransferFactory *> m_transferFactories;
00397
00398
00399 static MainWindow * m_mainWindow;
00400
00401
00402 static TransferGroupScheduler * m_scheduler;
00403
00404
00405 static KUiServerJobs *m_jobManager;
00406 };
00407
00408 class GenericModelObserver : public QObject, public ModelObserver
00409 {
00410 Q_OBJECT
00411 public:
00412 GenericModelObserver(QObject *parent = 0);
00413 virtual ~GenericModelObserver ();
00414
00415 virtual void addedTransferGroupEvent(TransferGroupHandler * group);
00416
00417 virtual void removedTransferGroupEvent(TransferGroupHandler * group);
00418
00419 private:
00420 GenericTransferGroupObserver *m_groupObserver;
00421 };
00422 #endif