X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fqtui%2Fmainwin.h;h=231ffc0a079432725abb263956719ab20e61ed91;hb=c52a94cb937654bf06d5074bf0736a52ec94a52d;hp=2e7bf640fb19d53906eeaab36d610308fe56f02c;hpb=9fd4619e9aca7d53d7c5df156a0b25956a1bf682;p=quassel.git diff --git a/src/qtui/mainwin.h b/src/qtui/mainwin.h index 2e7bf640..30e57269 100644 --- a/src/qtui/mainwin.h +++ b/src/qtui/mainwin.h @@ -1,11 +1,11 @@ /*************************************************************************** - * Copyright (C) 2005-07 by The Quassel Team * + * Copyright (C) 2005-2015 by the Quassel Project * * devel@quassel-irc.org * * * * 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. * + * (at your option) version 3. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * @@ -15,84 +15,211 @@ * 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., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ -#ifndef _MAINWIN_H_ -#define _MAINWIN_H_ +#ifndef MAINWIN_H_ +#define MAINWIN_H_ -#include "ui_mainwin.h" +#ifdef HAVE_KDE4 +# include +#else +# include +#endif #include "qtui.h" -#include "bufferviewfilter.h" - -class ServerListDlg; -class CoreConnectDlg; -class Buffer; -class SettingsDlg; -class QtUi; -class Message; +#include "titlesetter.h" +#include "uisettings.h" + +class ActionCollection; +class BufferHotListFilter; +class BufferView; +class BufferViewConfig; +class ClientBufferViewConfig; +class ClientTransfer; +class CoreAccount; +class CoreConnectionStatusWidget; +class BufferViewDock; +class BufferWidget; +class InputWidget; +class MsgProcessorStatusWidget; +class NickListWidget; +class SystemTray; +class ChatMonitorView; +class TopicWidget; + +class QMenu; +class QLabel; +class QToolBar; + +class KHelpMenu; //!\brief The main window of Quassel's QtUi. -class MainWin : public QMainWindow { - Q_OBJECT +class MainWin +#ifdef HAVE_KDE4 + : public KMainWindow +{ +#else +: public QMainWindow { +#endif + Q_OBJECT - public: - MainWin(QtUi *gui, QWidget *parent = 0); +public: + MainWin(QWidget *parent = 0); virtual ~MainWin(); void init(); - void addBufferView(const QString &, QAbstractItemModel *, const BufferViewFilter::Modes &, const QStringList &); - AbstractUiMsg *layoutMsg(const Message &); + void addBufferView(ClientBufferViewConfig *config); + BufferView *allBuffersView() const; + BufferView *activeBufferView() const; - protected: - void closeEvent(QCloseEvent *event); + inline BufferWidget *bufferWidget() const { return _bufferWidget; } + inline SystemTray *systemTray() const { return _systemTray; } - protected slots: - void connectedToCore(); - void disconnectedFromCore(); + bool event(QEvent *event); - private slots: + static void flagRemoteCoreOnly(QObject *object) { object->setProperty("REMOTE_CORE_ONLY", true); } + static bool isRemoteCoreOnly(QObject *object) { return object->property("REMOTE_CORE_ONLY").toBool(); } - void showServerList(); - void showSettingsDlg(); - void showCoreConnectionDlg(bool autoConnect = false); - void coreConnectionDlgFinished(int result); + void saveStateToSettings(UiSettings &); + void restoreStateFromSettings(UiSettings &); + +public slots: + void showStatusBarMessage(const QString &message); + void hideCurrentBuffer(); + void nextBufferView(); //!< Activate the next bufferview + void previousBufferView(); //!< Activate the previous bufferview + void nextBuffer(); + void previousBuffer(); - void showBuffer(BufferInfo); - void showBuffer(Buffer *); + //! Quit application + void quit(); - void importBacklog(); +protected: + void closeEvent(QCloseEvent *event); + void moveEvent(QMoveEvent *event); + void resizeEvent(QResizeEvent *event); - signals: +protected slots: + void connectedToCore(); + void setConnectedState(); + void disconnectedFromCore(); + void setDisconnectedState(); + +private slots: + void addBufferView(int bufferViewConfigId); + void awayLogDestroyed(); + void removeBufferView(int bufferViewConfigId); + void currentBufferChanged(BufferId); + void messagesInserted(const QModelIndex &parent, int start, int end); + void showAboutDlg(); + void showChannelList(NetworkId netId = NetworkId()); + void showCoreConnectionDlg(); + void showCoreConfigWizard(const QVariantList &); + void showCoreInfoDlg(); + void showAwayLog(); + void showSettingsDlg(); + void showNotificationsDlg(); + void showIgnoreList(QString newRule = QString()); + void showShortcutsDlg(); + void showNewTransferDlg(const ClientTransfer *transfer); + void onFullScreenToggled(); + + void handleCoreConnectionError(const QString &errorMsg); + void userAuthenticationRequired(CoreAccount *, bool *valid, const QString &errorMessage); + void handleNoSslInClient(bool *accepted); + void handleNoSslInCore(bool *accepted); +#ifdef HAVE_SSL + void handleSslErrors(const QSslSocket *socket, bool *accepted, bool *permanently); +#endif + + void on_actionConfigureNetworks_triggered(); + void on_actionConfigureViews_triggered(); + void on_actionLockLayout_toggled(bool lock); + void on_jumpHotBuffer_triggered(); + void on_actionDebugNetworkModel_triggered(); + void on_actionDebugBufferViewOverlay_triggered(); + void on_actionDebugMessageModel_triggered(); + void on_actionDebugHotList_triggered(); + void on_actionDebugLog_triggered(); + + void bindJumpKey(); + void onJumpKey(); + + void clientNetworkCreated(NetworkId); + void clientNetworkRemoved(NetworkId); + void clientNetworkUpdated(); + void connectOrDisconnectFromNet(); + + void saveMenuBarStatus(bool enabled); + void saveStatusBarStatus(bool enabled); + void saveMainToolBarStatus(bool enabled); + + void loadLayout(); + void saveLayout(); + + void bufferViewToggled(bool enabled); + void bufferViewVisibilityChanged(bool visible); + void changeActiveBufferView(bool backwards); + void changeActiveBufferView(int bufferViewId); + +signals: void connectToCore(const QVariantMap &connInfo); void disconnectFromCore(); - void requestBacklog(BufferInfo, QVariant, QVariant); - void importOldBacklog(); - private: - Ui::MainWin ui; - QtUi *gui; +private: +#ifdef HAVE_KDE4 + KHelpMenu *_kHelpMenu; +#endif - void setupMenus(); - void setupViews(); - void setupSettingsDlg(); + MsgProcessorStatusWidget *_msgProcessorStatusWidget; + CoreConnectionStatusWidget *_coreConnectionStatusWidget; + SystemTray *_systemTray; + TitleSetter _titleSetter; + + void setupActions(); + void setupBufferWidget(); + void setupMenus(); + void setupNickWidget(); + void setupChatMonitor(); + void setupInputWidget(); + void setupTopicWidget(); + void setupViewMenuTail(); + void setupStatusBar(); + void setupSystray(); + void setupTitleSetter(); + void setupToolBars(); + void setupHotList(); + + void updateIcon(); void enableMenus(); - QSystemTrayIcon *systray; + QList _bufferViews; + BufferWidget *_bufferWidget; + NickListWidget *_nickListWidget; + InputWidget *_inputWidget; + ChatMonitorView *_chatMonitorView; + TopicWidget *_topicWidget; + + QMenu *_fileMenu, *_networksMenu, *_viewMenu, *_bufferViewsMenu, *_settingsMenu, *_helpMenu, *_helpDebugMenu; + QMenu *_toolbarMenu; + QToolBar *_mainToolBar, *_chatViewToolBar, *_nickToolBar; - ServerListDlg *serverListDlg; - CoreConnectDlg *coreConnectDlg; - SettingsDlg *settingsDlg; + QWidget *_awayLog; - uint currentBuffer; - QString currentProfile; + bool _layoutLoaded; - QList netViews; + QSize _normalSize; //!< Size of the non-maximized window + QPoint _normalPos; //!< Position of the non-maximized window + + BufferHotListFilter *_bufferHotList; + QHash _jumpKeyMap; + int _activeBufferViewIndex; friend class QtUi; }; + #endif