#ifndef _OPTW_SERVERS_H_
#define _OPTW_SERVERS_H_
//=============================================================================
//
// File : OptionsWidget_servers.h
// Creation date : Wed Jun 12 2000 03:29:01 by Szymon Stefanek
//
// This file is part of the KVIrc IRC client distribution
// Copyright (C) 2000-2010 Szymon Stefanek (pragma at kvirc dot net)
//
// 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.
//
//=============================================================================
#include "KviOptionsWidget.h"
#include <QTreeWidget>
#include <QDialog>
#include <QButtonGroup>
#include <QTabWidget>
#include <QCheckBox>
#include <QToolButton>
class QLabel;
class QLineEdit;
class QComboBox;
class QPushButton;
class KviIpEditor;
class KviIrcServer;
class QMenu;
class KviScriptEditor;
class KviNickServRule;
class NickServRuleEditor;
class KviIrcServer;
class KviIrcNetwork;
class KviIrcNetworkData;
class KviMexServerImport;
class IrcServerOptionsTreeWidgetItem : public QTreeWidgetItem
{
public:
IrcServerOptionsTreeWidgetItem(QTreeWidget * parent, const QPixmap & pm, const KviIrcNetwork * n);
IrcServerOptionsTreeWidgetItem(QTreeWidgetItem * parent, const QPixmap & pm, const KviIrcServer * s);
~IrcServerOptionsTreeWidgetItem();
public:
KviIrcServer * m_pServerData;
KviIrcNetwork * m_pNetworkData;
public:
KviIrcServer * serverData() const
{
return m_pServerData;
}
KviIrcNetwork * networkData() const
{
return m_pNetworkData;
}
public:
void updateVisibleStrings();
};
class IrcNetworkDetailsWidget : public QDialog
{
Q_OBJECT
public:
IrcNetworkDetailsWidget(QWidget * par, KviIrcNetwork * d);
~IrcNetworkDetailsWidget();
protected:
KviScriptEditor * m_pOnConnectEditor;
KviScriptEditor * m_pOnLoginEditor;
QLineEdit * m_pUserEditor;
KviPasswordLineEdit * m_pPassEditor;
QLineEdit * m_pNickEditor;
QLineEdit * m_pAlternativeNickEditor;
QLineEdit * m_pRealEditor;
QLineEdit * m_pDescEditor;
QComboBox * m_pEncodingEditor;
QComboBox * m_pTextEncodingEditor;
QCheckBox * m_pAutoConnectCheck;
QTreeWidget * m_pNickServTreeWidget;
QCheckBox * m_pNickServCheck;
QPushButton * m_pAddRuleButton;
QPushButton * m_pDelRuleButton;
QPushButton * m_pEditRuleButton;
QStringList m_lstChannels;
KviChannelListSelector * m_pChannelListSelector;
public:
void fillData(KviIrcNetwork * d);
protected slots:
void enableDisableNickServControls();
void addNickServRule();
void delNickServRule();
void editNickServRule();
};
class IrcServerDetailsWidget : public QDialog
{
Q_OBJECT
public:
IrcServerDetailsWidget(QWidget * par, KviIrcServer * s);
~IrcServerDetailsWidget();
protected:
QString m_szHostname;
QLabel * m_pHeaderLabel;
KviScriptEditor * m_pOnConnectEditor;
KviScriptEditor * m_pOnLoginEditor;
QLineEdit * m_pUserEditor;
KviPasswordLineEdit * m_pPassEditor;
KviPasswordLineEdit * m_pSaslPassEditor;
QLineEdit * m_pNickEditor;
QLineEdit * m_pAlternativeNickEditor;
QLineEdit * m_pSaslNickEditor;
QLineEdit * m_pRealEditor;
QLineEdit * m_pDescEditor;
QLineEdit * m_pIdEditor;
QComboBox * m_pLinkFilterEditor;
QComboBox * m_pEncodingEditor;
QComboBox * m_pTextEncodingEditor;
KviIpEditor * m_pIpEditor;
QCheckBox * m_pCacheIpCheck;
QCheckBox * m_pUseSSLCheck;
QCheckBox * m_pEnableCAPCheck;
QCheckBox * m_pEnableSTARTTLSCheck;
QCheckBox * m_pEnableSASLCheck;
QCheckBox * m_pUseDefaultInitUMode;
QCheckBox * m_pIMode;
QCheckBox * m_pWMode;
QCheckBox * m_pSMode;
QCheckBox * m_pUseAutoConnect;
QCheckBox * m_pUseIPV6Check;
QLineEdit * m_pPortEditor;
QStringList m_lstChannels;
KviChannelListSelector * m_pChannelListSelector;
QComboBox * m_pSaslMethodComboBox;
QComboBox * m_pProxyEditor;
protected slots:
void useDefaultInitUModeToggled(bool);
void portEditorTextChanged(const QString &);
void useCacheIpCheckToggled(bool);
void useIPV6CheckToggled(bool);
void useSSLCheckToggled(bool);
public:
void setHeaderLabelText();
void fillData(KviIrcServer * s);
};
#define KVI_OPTIONS_WIDGET_ICON_OptionsWidget_servers KviIconManager::ServerConfiguration
#define KVI_OPTIONS_WIDGET_NAME_OptionsWidget_servers __tr2qs_no_lookup("Servers and Configuration")
#define KVI_OPTIONS_WIDGET_KEYWORDS_OptionsWidget_servers __tr2qs_no_lookup("connection")
//#define KVI_OPTIONS_WIDGET_NOPARENT_OptionsWidget_servers OptionsWidget_connection
#define KVI_OPTIONS_WIDGET_PRIORITY_OptionsWidget_servers 99000
class OptionsWidget_servers : public KviOptionsWidget
{
Q_OBJECT
public:
OptionsWidget_servers(QWidget * parent);
~OptionsWidget_servers();
protected:
QTreeWidget * m_pTreeWidget;
QLabel * m_pSrvNetLabel;
QLineEdit * m_pSrvNetEdit;
QLabel * m_pFilterLabel;
QLineEdit * m_pFilterEdit;
QPushButton * m_pDetailsButton;
QMenu * m_pRecentPopup;
QMenu * m_pContextPopup;
QMenu * m_pImportPopup;
KviIrcServer * m_pClipboard;
QPushButton * m_pConnectCurrent;
IrcServerOptionsTreeWidgetItem * m_pLastEditedItem;
IrcServerDetailsWidget * m_pServerDetailsDialog;
IrcNetworkDetailsWidget * m_pNetworkDetailsDialog;
KviMexServerImport * m_pImportFilter;
KviBoolSelector * m_pShowThisDialogAtStartupSelector;
QToolButton * m_pNewServerButton;
QToolButton * m_pNewNetworkButton;
QToolButton * m_pRemoveButton;
QToolButton * m_pCopyServerButton;
QToolButton * m_pPasteServerButton;
QToolButton * m_pImportButton;
QToolButton * m_pFavoriteServerButton;
bool m_bShowingFavoritesOnly;
QToolButton * m_pShowFavoritesOnlyButton;
private:
void fillServerList();
void saveLastItem();
IrcServerOptionsTreeWidgetItem * findNetItem(const QString & netname);
void selectBestServerByUrl(const QString & szUrl);
protected slots:
void slotShowThisDialogAtStartupSelectorDestroyed();
void importerDead();
void importServer(const KviIrcServer & s, const QString & network);
void importPopupAboutToShow();
void currentItemChanged(QTreeWidgetItem * cur, QTreeWidgetItem * prev);
void customContextMenuRequested(const QPoint & pnt);
void newNetwork();
void removeCurrent();
void newServer();
void updateFilter();
void favoriteServer();
void copyServer();
void pasteServer();
void clearList();
void itemDoubleClicked(QTreeWidgetItem *, int);
void detailsClicked();
void connectCurrentClicked();
void recentServersPopupAboutToShow();
void recentServersPopupClicked(QAction * pAction);
void importPopupActivated(QAction * pAction);
void serverNetworkEditTextEdited(const QString & szNewText);
public:
virtual void commit();
};
#endif //!_OPTW_SERVERS_H_