X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fsettingspages%2Fidentitiessettingspage.h;h=b2c5021d6d6a06dd192b03959441a026097561d3;hp=ea43c8c48115dd96d4bcad5a524f94ee56570888;hb=a71a4cc60303b29f493d9d0b6636f00473c4eaf6;hpb=8699dd758516d0ded076811e8ea656adc95e69d0 diff --git a/src/qtui/settingspages/identitiessettingspage.h b/src/qtui/settingspages/identitiessettingspage.h index ea43c8c4..b2c5021d 100644 --- a/src/qtui/settingspages/identitiessettingspage.h +++ b/src/qtui/settingspages/identitiessettingspage.h @@ -21,9 +21,15 @@ #ifndef _IDENTITIESSETTINGSPAGE_H_ #define _IDENTITIESSETTINGSPAGE_H_ +#include "identity.h" #include "settingspage.h" #include "ui_identitiessettingspage.h" +#include "ui_createidentitydlg.h" +#include "ui_saveidentitiesdlg.h" +#include "ui_nickeditdlgnew.h" + +class QAbstractItemModel; class IdentitiesSettingsPage : public SettingsPage { Q_OBJECT @@ -31,19 +37,103 @@ class IdentitiesSettingsPage : public SettingsPage { public: IdentitiesSettingsPage(QWidget *parent = 0); - bool hasChanged() const; + bool aboutToSave(); public slots: void save(); void load(); - void defaults(); private slots: void coreConnectionStateChanged(bool); + void clientIdentityCreated(IdentityId); + void clientIdentityUpdated(); + void clientIdentityRemoved(IdentityId); + + void on_identityList_currentIndexChanged(int index); + + void on_addIdentity_clicked(); + void on_deleteIdentity_clicked(); + void on_renameIdentity_clicked(); + + void on_addNick_clicked(); + void on_deleteNick_clicked(); + void on_renameNick_clicked(); + void on_nickUp_clicked(); + void on_nickDown_clicked(); + + void widgetHasChanged(); + void setWidgetStates(); private: Ui::IdentitiesSettingsPage ui; + QHash identities; + IdentityId currentId; + + QList changedIdentities; // for setting the widget changed state + QList deletedIdentities; + + void insertIdentity(Identity *identity); + void removeIdentity(Identity *identity); + void renameIdentity(IdentityId id, const QString &newName); + void displayIdentity(Identity *, bool dontsave = false); + void saveToIdentity(Identity *); + + bool testHasChanged(); +}; + +class CreateIdentityDlg : public QDialog { + Q_OBJECT + + public: + CreateIdentityDlg(QAbstractItemModel *model, QWidget *parent = 0); + + QString identityName() const; + IdentityId duplicateId() const; + + private slots: + void on_identityName_textChanged(const QString &text); + + private: + Ui::CreateIdentityDlg ui; +}; + +class SaveIdentitiesDlg : public QDialog { + Q_OBJECT + + public: + SaveIdentitiesDlg(QList toCreate, QList toUpdate, QList toRemove, QWidget *parent = 0); + + private slots: + void clientEvent(); + + private: + Ui::SaveIdentitiesDlg ui; + + QList toCreate, toUpdate; + QList toRemove; + + int numevents, rcvevents; + +}; + +class NickEditDlgNew : public QDialog { + Q_OBJECT + + public: + NickEditDlgNew(const QString &oldnick, const QStringList &existing = QStringList(), QWidget *parent = 0); + + QString nick() const; + + private slots: + void on_nickEdit_textChanged(const QString &); + + private: + Ui::NickEditDlgNew ui; + + QString oldNick; + QStringList existing; + }; #endif