Port KGet to the standard KDE notification system: this means less code, and
[kdenetwork.git] / kget / kmainwidget.h
blob311c35117caa3dda1cb25364b6c5924542aefc65
1 /***************************************************************************
2 * kmainwidget.h
3 * -------------------
5 * Revision : $Id$
6 * begin : Tue Jan 29 2002
7 * copyright : (C) 2002 by Patrick Charbonnier
8 * : Based On Caitoo v.0.7.3 (c) 1998 - 2000, Matej Koss
9 * email : pch@freeshell.org
11 ****************************************************************************/
13 /***************************************************************************
15 * This program is free software; you can redistribute it and/or modify
16 * it under the terms of the GNU General Public License as published by
17 * the Free Software Foundation; either version 2 of the License, or
18 * (at your option) any later version.
20 * This program is distributed in the hope that it will be useful,
21 * but WITHOUT ANY WARRANTY; without even the implied warranty of
22 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23 * GNU General Public License for more details.
25 ***************************************************************************/
28 #ifndef _KMAINWIDGET_H_
29 #define _KMAINWIDGET_H_
31 #include <kmainwindow.h>
32 #include <kaction.h>
33 #include <kurl.h>
34 #include "common.h"
36 #include "kget_iface.h"
38 class KAction;
39 //class KToggleAction;
40 class KRadioAction;
42 class DockWidget;
43 class DropTarget;
44 class LogWindow;
45 class DlgPreferences;
47 class Transfer;
48 class TransferList;
49 class Settings;
52 class KMainWidget:public KMainWindow, virtual public KGetIface
55 Q_OBJECT
57 public:
58 enum StatusbarFields { ID_TOTAL_TRANSFERS = 1, ID_TOTAL_FILES, ID_TOTAL_SIZE,
59 ID_TOTAL_TIME , ID_TOTAL_SPEED };
61 KMainWidget(bool bShowMain = false);
62 ~KMainWidget();
64 void addTransfer( const QString& src );
65 void addTransferEx( const KURL& url,
66 const KURL& destFile = KURL());
68 // dcop interface
69 virtual void addTransfers( const KURL::List& src, const QString& destDir = QString::null );
70 virtual bool isDropTargetVisible() const;
71 virtual void setDropTargetVisible( bool setVisible );
74 void checkQueue();
76 void setListFont();
77 void setAutoSave();
78 void setAutoDisconnect();
80 LogWindow *logwin()const { return logWindow;}
81 friend class Settings;
83 // Actions
84 KToggleAction *m_paShowLog;
85 KAction *m_paPreferences;
86 KAction *m_paQuit;
87 bool b_viewLogWindow;
89 void readTransfersEx(const KURL & url);
91 void activateDropTarget();
93 public slots:
94 void slotPasteTransfer();
95 void slotToggleLogWindow();
96 void slotPreferences();
97 void slotConfigureNotifications();
98 void slotToggleExpertMode();
99 void slotToggleOfflineMode();
100 void slotToggleUseLastDir();
101 void slotToggleAutoDisconnect();
102 void slotToggleAutoShutdown();
103 void slotToggleAutoPaste();
104 void slotToggleDropTarget();
105 void slotToggleAnimation();
106 void slotUpdateActions();
108 protected slots:
109 void slotQuit();
111 void slotOpenTransfer();
112 void slotExportTransfers();
113 void slotImportTransfers();
114 void slotImportTextFile();
116 void slotSaveYourself();
117 void slotCheckConnection();
120 void slotStatusChanged(Transfer * item, int _operation);
122 void slotResumeCurrent();
123 void slotPauseCurrent();
124 void slotDeleteCurrent();
125 void slotRestartCurrent();
127 void slotQueueCurrent();
128 void slotTimerCurrent();
129 void slotDelayCurrent();
131 void slotOpenIndividual();
133 void slotAnimTimeout();
134 void slotTransferTimeout();
135 void slotAutosaveTimeout();
137 void slotMoveToBegin();
138 void slotMoveToEnd();
140 void slotCopyToClipboard();
141 void slotCheckClipboard();
143 void slotConfigureToolbars();
144 void slotNewToolbarConfig();
146 void slotPopupMenu(Transfer * item);
148 protected:
149 virtual void setOfflineMode( bool online );
150 virtual bool isOfflineMode() const;
151 virtual bool queryClose();
152 void writeLog();
154 // drag and drop
155 virtual void dragEnterEvent(QDragEnterEvent *);
156 virtual void dropEvent(QDropEvent *);
158 void readTransfers(bool ask_for_name = false);
159 void writeTransfers(bool ask_for_name = false);
162 void setupGUI();
163 void setupWhatsThis();
165 void updateStatusBar();
167 // some flags
168 bool b_connected;
169 bool b_viewPreferences;
171 // utility functions
172 void onlineDisconnect();
173 void checkOnline();
174 void stopAll();
175 void log(const QString & message, bool statusbar = true);
177 /** No descriptions */
178 virtual void customEvent(QCustomEvent * e);
180 // various timers
181 QTimer *animTimer; // animation timer
182 QTimer *connectionTimer; // timer that checks whether we are online
183 QTimer *transferTimer; // timer for scheduled transfers
184 QTimer *autosaveTimer; // timer for autosaving transfer list
185 QTimer *clipboardTimer; // timer for checking clipboard - autopaste function
187 QString logFileName;
191 private:
192 QString getSaveDirectoryFor( const QString& filename ) const;
193 bool sanityChecksSuccessful( const KURL& url );
195 TransferList * myTransferList;
196 KHelpMenu *menuHelp;
198 LogWindow *logWindow;
199 DlgPreferences *prefDlg;
200 DockWidget *kdock;
202 QString lastClipboard;
204 uint animCounter;
206 int _sock;
208 // Actions
209 KAction *m_paOpenTransfer, *m_paPasteTransfer, *m_paExportTransfers, *m_paImportTransfers;
210 KAction *m_paImportText;
212 KAction *m_paMoveToBegin, *m_paMoveToEnd, *m_paCopy, *m_paIndividual;
213 KAction *m_paResume, *m_paPause, *m_paDelete, *m_paRestart;
214 KRadioAction *m_paQueue, *m_paTimer, *m_paDelay;
216 KToggleAction *m_paUseAnimation;
217 KToggleAction *m_paExpertMode, *m_paUseLastDir, *m_paOfflineMode;
218 KToggleAction *m_paAutoDisconnect, *m_paAutoShutdown, *m_paAutoPaste;
220 KAction *m_paDropTarget;
221 bool m_showDropTarget;
225 extern KMainWidget *kmain;
226 extern DropTarget *kdrop;
228 #endif // _KMAINWIDGET_H_