Initial checkin of first CMake based version.
[quassel.git] / gui / serverlist.h
diff --git a/gui/serverlist.h b/gui/serverlist.h
new file mode 100644 (file)
index 0000000..854b240
--- /dev/null
@@ -0,0 +1,178 @@
+/***************************************************************************
+ *   Copyright (C) 2005 by The Quassel Team                                *
+ *   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.                                   *
+ *                                                                         *
+ *   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.,                                       *
+ *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
+ ***************************************************************************/
+
+#ifndef _SERVERLIST_H_
+#define _SERVERLIST_H_
+
+#include <QtGui>
+#include <QMap>
+#include <QList>
+#include <QVariant>
+
+#include "ui_serverlistdlg.h"
+#include "ui_identitiesdlg.h"
+#include "ui_identitieseditdlg.h"
+#include "ui_nickeditdlg.h"
+#include "ui_networkeditdlg.h"
+
+typedef QMap<QString, QVariant> VarMap;
+
+class ServerListDlg : public QDialog {
+  Q_OBJECT
+
+  public:
+    ServerListDlg(QWidget *parent);
+    virtual ~ServerListDlg();
+
+    bool showOnStartup();
+
+  public slots:
+    void editIdentities();
+
+  private slots:
+    void updateButtons();
+    void on_showOnStartup_stateChanged(int);
+    void on_addButton_clicked();
+
+  private:
+    Ui::ServerListDlg ui;
+
+    void loadNetworks();
+    void storeNetworks();
+    void loadIdentities();
+    void storeIdentities();
+
+    VarMap networks;
+    VarMap identities;
+};
+
+class NetworkEditDlg : public QDialog {
+  Q_OBJECT
+
+  public:
+    NetworkEditDlg(QWidget *parent, VarMap network, VarMap identities);
+
+  private:
+    Ui::NetworkEditDlg ui;
+
+    VarMap network;
+    VarMap identities;
+
+    VarMap createDefaultNetwork();
+};
+
+class IdentitiesDlg : public QDialog {
+  Q_OBJECT
+
+  public:
+    IdentitiesDlg(QWidget *parent, VarMap identities);
+
+    VarMap getIdentities() { return identities; }
+    QMap<QString, QString> getNameMapping() { return nameMapping; }
+
+  public slots:
+    virtual void accept();
+
+  private slots:
+    void autoAwayChecked();
+    void identityChanged(QString);
+    void nickSelectionChanged();
+
+    void addNick();
+    void editNick();
+    void delNick();
+    void upNick();
+    void downNick();
+
+    void editIdentities();
+
+  private:
+    Ui::IdentitiesDlg ui;
+    VarMap identities;
+    QMap<QString, QString> nameMapping;
+    QString lastIdentity;
+
+    QString checkValidity();
+    VarMap createDefaultIdentity();
+    QString getCurIdentity();
+    void updateWidgets();
+    void updateIdentity(QString);
+};
+
+class NickEditDlg : public QDialog {
+  Q_OBJECT
+
+  public:
+    NickEditDlg(QWidget *parent, QString nick = QString());
+
+    QString getNick();
+
+  private slots:
+    void textChanged(QString);
+
+  private:
+    Ui::NickEditDlg ui;
+
+};
+
+class IdentitiesEditDlg : public QDialog {
+  Q_OBJECT
+
+  public:
+    IdentitiesEditDlg(QWidget *parent, VarMap identities, QMap<QString, QString> mapping, VarMap templ);
+
+    VarMap getIdentities() { return identities; }
+    QMap<QString, QString> getMapping() { return mapping; }
+
+  private slots:
+    void selectionChanged();
+
+    void addIdentity();
+    void duplicateIdentity();
+    void renameIdentity();
+    void deleteIdentity();
+
+  private:
+    Ui::IdentitiesEditDlg ui;
+
+    VarMap identities;
+    VarMap identTemplate;
+    QMap<QString, QString> mapping;
+
+    void sortList();
+};
+
+class RenameIdentityDlg : public QDialog {
+  Q_OBJECT
+
+  public:
+    RenameIdentityDlg(QWidget *parent, QList<QString> reserved, QString name = QString());
+
+    QString getName();
+
+  private slots:
+    void textChanged(QString);
+
+  private:
+    Ui::NickEditDlg ui;
+    QList<QString> reserved;
+};
+#endif