summaryrefslogtreecommitdiffstats
path: root/src/apps/ktorrent/ktorrent.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/apps/ktorrent/ktorrent.h')
-rw-r--r--src/apps/ktorrent/ktorrent.h239
1 files changed, 239 insertions, 0 deletions
diff --git a/src/apps/ktorrent/ktorrent.h b/src/apps/ktorrent/ktorrent.h
new file mode 100644
index 0000000..6669443
--- /dev/null
+++ b/src/apps/ktorrent/ktorrent.h
@@ -0,0 +1,239 @@
+/***************************************************************************
+ * Copyright (C) 2005 by Joris Guisson *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program 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 General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
+ ***************************************************************************/
+
+
+#ifndef _KTORRENT_H_
+#define _KTORRENT_H_
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <tdeapplication.h>
+#include <newui/dmainwindow.h>
+#include <tqtimer.h>
+#include <interfaces/guiinterface.h>
+
+typedef TQValueList<TQCString> QCStringList;
+
+class TDEAction;
+class TDEToggleAction;
+class KURL;
+class KTorrentCore;
+class KTorrentView;
+class TrayIcon;
+class SetMaxRate;
+class KTorrentDCOP;
+class TQLabel;
+class TQListViewItem;
+class KTorrentPreferences;
+class ViewManager;
+
+
+namespace kt
+{
+ class TorrentInterface;
+ class Group;
+ class GroupView;
+}
+
+
+/**
+ * This class serves as the main window for KTorrent. It handles the
+ * menus, toolbars, and status bars.
+ *
+ * @short Main window class
+ * @author Joris Guisson <[email protected]>
+ * @version 0.1
+ */
+class KTorrent : public DMainWindow, public kt::GUIInterface
+{
+ TQ_OBJECT
+
+public:
+ /**
+ * Default Constructor
+ */
+ KTorrent();
+
+ /**
+ * Default Destructor
+ */
+ virtual ~KTorrent();
+
+ /// Open a view with the given group
+ void openView(const TQString & group_name);
+
+ /// Get the core
+ KTorrentCore & getCore() {return *m_core;}
+
+ /**
+ * Apply the settings.
+ * @param change_port Wether or not to change the server port
+ */
+ void applySettings(bool change_port = true);
+
+ virtual void addTabPage(TQWidget* page,const TQIconSet & icon,
+ const TQString & caption,kt::CloseTabListener* ctl = 0);
+ virtual void addTabPage(TQWidget* page,const TQPixmap & icon,
+ const TQString & caption,kt::CloseTabListener* ctl = 0);
+ virtual void removeTabPage(TQWidget* page);
+ virtual void addPrefPage(kt::PrefPageInterface* page);
+ virtual void removePrefPage(kt::PrefPageInterface* page);
+ virtual void mergePluginGui(kt::Plugin* p);
+ virtual void removePluginGui(kt::Plugin* p);
+ virtual void addWidgetBelowView(TQWidget* w,const TQString & icon,const TQString & caption);
+ virtual void removeWidgetBelowView(TQWidget* w);
+ virtual void addToolWidget(TQWidget* w,const TQString & icon,const TQString & caption,ToolDock dock);
+ virtual void removeToolWidget(TQWidget* w);
+ virtual const kt::TorrentInterface* getCurrentTorrent() const;
+ virtual TDEToolBar* addToolBar(const char* name);
+ virtual void removeToolBar(TDEToolBar* tb);
+ virtual KProgress* addProgressBarToStatusBar();
+ virtual void removeProgressBarFromStatusBar(KProgress* p);
+
+ TQString getStatusInfo();
+ TQString getStatusTransfer();
+ TQString getStatusSpeed();
+ TQString getStatusDHT();
+ TQString getStatusFirewall();
+ QCStringList getTorrentInfo(kt::TorrentInterface* tc);
+
+public slots:
+ /**
+ * Use this method to load whatever file/URL you have
+ */
+ void load(const KURL& url);
+
+ /**
+ * Does the same as load, but doesn't ask any questions
+ */
+ void loadSilently(const KURL& url);
+
+ /**
+ * Does the same as loadSilently, except accepts a directory to
+ * save to
+ */
+ void loadSilentlyDir(const KURL& url, const KURL& savedir);
+
+ /// Open a view with the given group
+ void openView(kt::Group* g);
+
+protected:
+ /**
+ * This function is called when it is time for the app to save its
+ * properties for session management purposes.
+ */
+ void saveProperties(TDEConfig *);
+
+ /**
+ * This function is called when this app is restored. The TDEConfig
+ * object points to the session management config file that was saved
+ * with @ref saveProperties
+ */
+ void readProperties(TDEConfig *);
+
+
+private slots:
+ void fileOpen();
+ void fileNew();
+ void torrentPaste();
+ void startDownload();
+ void startAllDownloadsCurrentView();
+ void startAllDownloads();
+ void stopDownload();
+ void stopAllDownloadsCurrentView();
+ void stopAllDownloads();
+ void showIPFilter();
+ void removeDownload();
+ void queueManagerShow();
+ void optionsShowStatusbar();
+ void optionsShowMenubar();
+ void optionsConfigureKeys();
+ void optionsConfigureToolbars();
+ void optionsPreferences();
+ void newToolbarConfig();
+ void changeStatusbar(const TQString& text);
+ void changeCaption(const TQString& text);
+ void currentTorrentChanged(kt::TorrentInterface* tc);
+ void updatedStats();
+ void urlDropped(TQDropEvent*,TQListViewItem*);
+ void onUpdateActions(int flags);
+ void groupChanged(kt::Group* g);
+ void groupRenamed(kt::Group* g);
+ void groupRemoved(kt::Group* g);
+ void currentTabChanged(TQWidget* w);
+ void openDefaultView();
+ void statusBarMsgExpired();
+ void find();
+
+private:
+ void setupAccel();
+ void setupActions();
+ bool queryClose();
+ bool queryExit();
+
+
+ virtual void addWidgetInView(TQWidget* w,kt::Position pos);
+ virtual void removeWidgetFromView(TQWidget* w);
+ virtual void closeTab();
+
+private:
+ kt::GroupView* m_group_view;
+ ViewManager* m_view_man;
+ TDEToggleAction *m_statusbarAction;
+ TDEToggleAction* m_menubarAction;
+
+ KTorrentCore* m_core;
+ TrayIcon* m_systray_icon;
+ SetMaxRate* m_set_max_upload_rate;
+ SetMaxRate* m_set_max_download_rate;
+
+ KTorrentDCOP* m_dcop;
+ TQTimer m_gui_update_timer;
+ TQTimer m_status_msg_expire;
+ KTorrentPreferences* m_pref;
+
+ TQMap<TQWidget*,kt::CloseTabListener*> m_tab_map;
+
+ TQLabel* m_statusInfo;
+ TQLabel* m_statusTransfer;
+ TQLabel* m_statusSpeed;
+ TQLabel* m_statusDHT;
+ TQLabel* m_statusFirewall;
+
+ TDEAction* m_start;
+ TDEAction* m_stop;
+ TDEAction* m_remove;
+ TDEAction* m_startall;
+ TDEAction* m_startall_systray;
+ TDEAction* m_stopall;
+ TDEAction* m_stopall_systray;
+ TDEAction* m_pasteurl;
+ TDEAction* m_queuemgr;
+ TDEAction* m_queueaction;
+ TDEAction* m_datacheck;
+ TDEAction* m_ipfilter;
+ TDEAction* m_find;
+
+ KProgress* m_status_prog;
+};
+
+#endif // _KTORRENT_H_