Stage 3
[quassel.git] / src / qtui / identities.h
diff --git a/src/qtui/identities.h b/src/qtui/identities.h
new file mode 100644 (file)
index 0000000..91cf06e
--- /dev/null
@@ -0,0 +1,134 @@
+/***************************************************************************
+ *   Copyright (C) 2005/06 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 _IDENTITIES_H_
+#define _IDENTITIES_H_
+
+#include <QtGui>
+#include <QtCore>
+
+#include "global.h"
+#include "ui_identitiesdlg.h"
+#include "ui_identitieseditdlg.h"
+#include "ui_nickeditdlg.h"
+
+class IdentitiesDlg : public QDialog {
+  Q_OBJECT
+
+  public:
+    IdentitiesDlg(QWidget *parent, QString selectedId = QString());
+
+    QVariantMap 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();
+
+    void globalDataUpdated(QString);
+
+  private:
+    Ui::IdentitiesDlg ui;
+    QVariantMap identities;
+    QMap<QString, QString> nameMapping;
+    QString lastIdentity;
+
+    QString checkValidity();
+    QVariantMap 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, QVariantMap identities, QMap<QString, QString> mapping, QVariantMap templ, QString selected = QString());
+
+    QVariantMap getIdentities() { return identities; }
+    QMap<QString, QString> getMapping() { return mapping; }
+    QString getSelectedIdentity() { return ui.identList->currentItem()->text(); }
+
+    //virtual void accept();
+
+  private slots:
+    void selectionChanged();
+
+    void addIdentity();
+    void duplicateIdentity();
+    void renameIdentity();
+    void deleteIdentity();
+
+  private:
+    Ui::IdentitiesEditDlg ui;
+
+    QVariantMap identities;
+    QVariantMap 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