Took two large code duplication that converted a kopete::message to a msn::message...
[kdenetwork.git] / kget / mainwindow.h
blob69b5c72507d3b287c08ff0a0517b8301252f18c0
1 /* This file is part of the KDE project
3 Copyright (C) 2002 by Patrick Charbonnier <pch@freeshell.org>
4 Based On Caitoo v.0.7.3 (c) 1998 - 2000, Matej Koss
5 Copyright (C) 2006 Dario Massarin <nekkar@libero.it>
7 This program is free software; you can redistribute it and/or
8 modify it under the terms of the GNU General Public
9 License as published by the Free Software Foundation; either
10 version 2 of the License, or (at your option) any later version.
13 #ifndef MAINWINDOW_H
14 #define MAINWINDOW_H
16 #include <ktoggleaction.h>
17 #include <kxmlguiwindow.h>
18 #include <kurl.h>
20 #include "ui/tray.h"
22 class ViewsContainer;
23 class DropTarget;
24 class DBusModelObserver;
25 class HttpServer;
27 /**
28 * The main window of KGet.
30 * Can be collapsed or expanded.
32 class MainWindow : public KXmlGuiWindow
34 Q_OBJECT
35 public:
36 explicit MainWindow(bool showMainwindow = true, bool startWithoutAnimation = false, QWidget *parent = 0);
37 ~MainWindow();
39 // from the DBUS interface
40 virtual void addTransfer(const QString& src, const QString& destDir = QString(),
41 bool start = false);
42 virtual void showNewTransferDialog(const QStringList &urls);
43 virtual bool dropTargetVisible() const;
44 virtual void setDropTargetVisible( bool setVisible );
45 virtual void setOfflineMode( bool online );
46 virtual bool offlineMode() const;
47 virtual QVariantMap transfers() const;
48 virtual int transfersSpeed() const;
49 virtual void setSystemTrayDownloading(bool running);
50 virtual void importLinks(const QList <QString> &links);
52 KSystemTrayIcon *systemTray() const { return m_dock;};
54 public slots:
55 void slotQuit();
56 void slotImportUrl(const QString &url);
57 void slotUpdateTitlePercent();
59 protected:
60 // ignore/accept quit events
61 virtual void closeEvent(QCloseEvent *);
62 virtual void hideEvent(QHideEvent *);
63 virtual void showEvent(QShowEvent *);
65 // drag and drop
66 virtual void dragEnterEvent(QDragEnterEvent *);
67 virtual void dropEvent(QDropEvent *);
69 // set sensitive initial size
70 virtual QSize sizeHint() const;
72 private slots:
73 // slots connected to actions
74 void slotToggleDropTarget();
75 void slotNewTransfer();
76 void slotImportTransfers();
77 void slotExportTransfers();
78 void slotExportPlainTransfers();
79 void slotPreferences();
80 void slotDeleteGroup();
81 void slotRenameGroup();
82 void slotSetIconGroup();
83 void slotStartDownload();
84 void slotStopDownload();
85 void slotConfigureNotifications();
86 void slotConfigureKeys();
87 void slotConfigureToolbars();
88 void slotToggleAutoPaste();
89 void slotTrayKonquerorIntegration(bool);
90 void slotKonquerorIntegration( bool );
91 void slotShowMenubar();
92 void slotTransferGroupSettings();
93 void slotTransferSettings();
95 // transfers slots
96 void slotStopAllDownload();
97 void slotStopSelectedDownload();
98 void slotStartAllDownload();
99 void slotStartSelectedDownload();
100 void slotDeleteSelected();
101 void slotRedownloadSelected();
102 void slotTransfersOpenDest();
103 void slotTransfersOpenFile();
104 void slotTransfersShowDetails();
105 void slotTransfersCopySourceUrl();
106 void slotDeleteFinished();
108 // misc slots
109 void slotDelayedInit();
110 void slotSaveMyself();
111 void slotNewToolbarConfig();
112 void slotNewConfig();
113 void slotCheckClipboard();
114 void slotTransferHistory();
116 // import links slots
117 void slotShowListLinks();
119 private:
120 void exportTransfers(bool plain=false);
123 * Returns the completed percents of all active transfers
125 int transfersPercent();
127 // one-time functions
128 void setupActions();
130 // internal widgets
131 ViewsContainer * m_viewsContainer;
132 // dbus modelObserver to export the transfer percents
133 DBusModelObserver *m_dbusModelObserver;
135 // separated widgets
136 DropTarget * m_drop;
137 Tray * m_dock;
139 // actions
140 KToggleAction * m_autoPasteAction;
141 KToggleAction * m_menubarAction;
142 KToggleAction * m_konquerorIntegration;
144 // for autopaste function
145 QString lastClipboard;
146 // timer for checking clipboard - autopaste function
147 QTimer *clipboardTimer;
149 bool m_startWithoutAnimation;
151 HttpServer *m_webinterface;
155 * Checks every transfer for a percent change to update the mainwindow title
157 class MainWindowTransferObserver : public QObject, public TransferObserver
159 Q_OBJECT
160 public:
161 MainWindowTransferObserver(MainWindow *window);
162 virtual ~MainWindowTransferObserver(){}
164 virtual void transferChangedEvent(TransferHandler * transfer);
166 // virtual void deleteEvent(TransferHandler * transfer);
168 private:
169 MainWindow *m_window;
173 * Used to update the mainwindow caption when the groups percents change
175 class MainWindowGroupObserver : public QObject, public TransferGroupObserver
177 Q_OBJECT
178 public:
179 MainWindowGroupObserver(MainWindow *window);
180 virtual ~MainWindowGroupObserver() {}
182 virtual void groupChangedEvent(TransferGroupHandler * group);
184 virtual void addedTransferEvent(TransferHandler * transfer, TransferHandler * after);
186 virtual void removedTransferEvent(TransferHandler * transfer);
188 virtual void movedTransferEvent(TransferHandler * transfer, TransferHandler * after);**/
190 private:
191 MainWindow *m_window;
192 MainWindowTransferObserver *m_transferObserver;
195 class MainWindowModelObserver : public QObject, public ModelObserver
197 Q_OBJECT
198 public:
199 MainWindowModelObserver(MainWindow *window);
200 virtual ~MainWindowModelObserver (){}
202 virtual void addedTransferGroupEvent(TransferGroupHandler * group);
204 virtual void removedTransferGroupEvent(TransferGroupHandler * group);
206 private:
207 MainWindow *m_window;
208 MainWindowGroupObserver *m_groupObserver;
211 #endif