X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fsettingspages%2Fidentitiessettingspage.h;h=7dc31bf8903ed29e7f02bdc7fefc2a1fb2d3291e;hp=ea43c8c48115dd96d4bcad5a524f94ee56570888;hb=HEAD;hpb=8699dd758516d0ded076811e8ea656adc95e69d0 diff --git a/src/qtui/settingspages/identitiessettingspage.h b/src/qtui/settingspages/identitiessettingspage.h index ea43c8c4..168e9374 100644 --- a/src/qtui/settingspages/identitiessettingspage.h +++ b/src/qtui/settingspages/identitiessettingspage.h @@ -1,11 +1,11 @@ /*************************************************************************** - * Copyright (C) 2005-08 by the Quassel Project * + * Copyright (C) 2005-2022 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,35 +15,110 @@ * 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 _IDENTITIESSETTINGSPAGE_H_ -#define _IDENTITIESSETTINGSPAGE_H_ +#pragma once +#include "clientidentity.h" +#include "identityeditwidget.h" #include "settingspage.h" +#include "ui_createidentitydlg.h" #include "ui_identitiessettingspage.h" +#include "ui_saveidentitiesdlg.h" -class IdentitiesSettingsPage : public SettingsPage { - Q_OBJECT +class QAbstractItemModel; - public: - IdentitiesSettingsPage(QWidget *parent = 0); +class IdentitiesSettingsPage : public SettingsPage +{ + Q_OBJECT - bool hasChanged() const; +public: + IdentitiesSettingsPage(QWidget* parent = nullptr); - public slots: - void save(); - void load(); - void defaults(); + inline bool needsCoreConnection() const override { return true; } - private slots: + bool aboutToSave() override; + +public slots: + void save() final override; + void load() final override; + +private slots: void coreConnectionStateChanged(bool); + void clientIdentityCreated(IdentityId); + void clientIdentityUpdated(); + void clientIdentityRemoved(IdentityId); + + void on_identityList_currentIndexChanged(int index); - private: + void on_addIdentity_clicked(); + void on_deleteIdentity_clicked(); + void on_renameIdentity_clicked(); + + void continueUnsecured(); + void widgetHasChanged(); + void setWidgetStates(); + +private: Ui::IdentitiesSettingsPage ui; + QHash identities; + IdentityId currentId; + + QList changedIdentities; // for setting the widget changed state + QList deletedIdentities; + + bool _editSsl{false}; + + void insertIdentity(CertIdentity* identity); + void removeIdentity(Identity* identity); + void renameIdentity(IdentityId id, const QString& newName); + + QSslKey keyByFilename(const QString& filename); + void showKeyState(const QSslKey& key); + QSslCertificate certByFilename(const QString& filename); + void showCertState(const QSslCertificate& cert); + + bool testHasChanged(); }; -#endif +// ============================== +// Various Dialogs +// ============================== +class CreateIdentityDlg : public QDialog +{ + Q_OBJECT + +public: + CreateIdentityDlg(QAbstractItemModel* model, QWidget* parent = nullptr); + + 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(const QList& toCreate, + const QList& toUpdate, + const QList& toRemove, + QWidget* parent = nullptr); + +private slots: + void clientEvent(); + +private: + Ui::SaveIdentitiesDlg ui; + + int numevents, rcvevents; +};