beginning of keys setting
This commit is contained in:
parent
75554c7451
commit
8f5325b291
@ -806,6 +806,14 @@ void Core::Account::updateInfo(const Shared::Info& info) {
|
||||
//TODO switch case of what kind of entity this info update is about
|
||||
//right now it could be only about myself
|
||||
vh->uploadVCard(info.getVCardRef());
|
||||
const std::list<Shared::KeyInfo>& keys = info.getActiveKeysRef();
|
||||
for (const Shared::KeyInfo& info : keys) {
|
||||
qDebug() << "An attempt to save key: ";
|
||||
qDebug() << "id:" << info.id;
|
||||
qDebug() << "label:" << info.label;
|
||||
qDebug() << "current device:" << info.currentDevice;
|
||||
qDebug() << "... but it's not implemented yet, ignoring";
|
||||
}
|
||||
}
|
||||
|
||||
QString Core::Account::getAvatarPath() const {
|
||||
|
@ -67,11 +67,9 @@
|
||||
#include "handlers/omemohandler.h"
|
||||
#endif
|
||||
|
||||
namespace Core
|
||||
{
|
||||
namespace Core {
|
||||
|
||||
class Account : public QObject
|
||||
{
|
||||
class Account : public QObject {
|
||||
Q_OBJECT
|
||||
friend class MessageHandler;
|
||||
friend class RosterHandler;
|
||||
|
@ -41,8 +41,6 @@
|
||||
#include <core/delayManager/manager.h>
|
||||
|
||||
namespace Core {
|
||||
|
||||
|
||||
class Account;
|
||||
|
||||
class RosterHandler : public QObject {
|
||||
|
525
shared/info.cpp
525
shared/info.cpp
@ -1,353 +1,384 @@
|
||||
// Squawk messenger.
|
||||
// Copyright (C) 2019 Yury Gubich <blue@macaw.me>
|
||||
//
|
||||
// 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 3 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, see <http://www.gnu.org/licenses/>.
|
||||
/*
|
||||
* Squawk messenger.
|
||||
* Copyright (C) 2019 Yury Gubich <blue@macaw.me>
|
||||
*
|
||||
* 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 3 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, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "info.h"
|
||||
|
||||
Shared::Info::Info(const QString& addr, EntryType tp):
|
||||
type(tp),
|
||||
address(addr),
|
||||
vcard(nullptr),
|
||||
activeKeys(nullptr),
|
||||
inactiveKeys(nullptr)
|
||||
{
|
||||
Shared::Info::Info(const QString &addr, EntryType tp):
|
||||
type(tp),
|
||||
address(addr),
|
||||
vcard(nullptr),
|
||||
activeKeys(nullptr),
|
||||
inactiveKeys(nullptr) {
|
||||
switch (type) {
|
||||
case EntryType::none:
|
||||
break;
|
||||
case EntryType::contact:
|
||||
case EntryType::ownAccount:
|
||||
vcard = new VCard();
|
||||
activeKeys = new std::list<KeyInfo>();
|
||||
inactiveKeys = new std::list<KeyInfo>();
|
||||
break;
|
||||
default:
|
||||
throw 352;
|
||||
case EntryType::none:
|
||||
break;
|
||||
case EntryType::contact:
|
||||
case EntryType::ownAccount:
|
||||
vcard = new VCard();
|
||||
activeKeys = new std::list<KeyInfo>();
|
||||
inactiveKeys = new std::list<KeyInfo>();
|
||||
break;
|
||||
default:
|
||||
throw 352;
|
||||
}
|
||||
}
|
||||
|
||||
Shared::Info::Info():
|
||||
type(EntryType::none),
|
||||
address(""),
|
||||
vcard(nullptr),
|
||||
activeKeys(nullptr),
|
||||
inactiveKeys(nullptr)
|
||||
{}
|
||||
type(EntryType::none),
|
||||
address(""),
|
||||
vcard(nullptr),
|
||||
activeKeys(nullptr),
|
||||
inactiveKeys(nullptr) {}
|
||||
|
||||
Shared::Info::Info(const Shared::Info& other):
|
||||
type(other.type),
|
||||
address(other.address),
|
||||
vcard(nullptr),
|
||||
activeKeys(nullptr),
|
||||
inactiveKeys(nullptr)
|
||||
{
|
||||
Shared::Info::Info(const Shared::Info &other):
|
||||
type(other.type),
|
||||
address(other.address),
|
||||
vcard(nullptr),
|
||||
activeKeys(nullptr),
|
||||
inactiveKeys(nullptr) {
|
||||
switch (type) {
|
||||
case EntryType::none:
|
||||
break;
|
||||
case EntryType::contact:
|
||||
case EntryType::ownAccount:
|
||||
vcard = new VCard(other.getVCardRef());
|
||||
activeKeys = new std::list<KeyInfo>(other.getActiveKeysRef());
|
||||
inactiveKeys = new std::list<KeyInfo>(other.getInactiveKeysRef());
|
||||
break;
|
||||
default:
|
||||
throw 353;
|
||||
case EntryType::none:
|
||||
break;
|
||||
case EntryType::contact:
|
||||
case EntryType::ownAccount:
|
||||
vcard = new VCard(other.getVCardRef());
|
||||
activeKeys = new std::list<KeyInfo>(other.getActiveKeysRef());
|
||||
inactiveKeys = new std::list<KeyInfo>(other.getInactiveKeysRef());
|
||||
break;
|
||||
default:
|
||||
throw 353;
|
||||
}
|
||||
}
|
||||
|
||||
Shared::Info::Info(Info &&other):
|
||||
type(other.type),
|
||||
address(other.address),
|
||||
vcard(other.vcard),
|
||||
activeKeys(other.activeKeys),
|
||||
inactiveKeys(other.inactiveKeys) {
|
||||
other.type = EntryType::none;
|
||||
}
|
||||
|
||||
Shared::Info &Shared::Info::operator=(Info &&other) {
|
||||
type = other.type;
|
||||
address = other.address;
|
||||
vcard = other.vcard;
|
||||
activeKeys = other.activeKeys;
|
||||
inactiveKeys = other.inactiveKeys;
|
||||
|
||||
other.type = EntryType::none;
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
Shared::Info &Shared::Info::operator=(const Info &other) {
|
||||
type = other.type;
|
||||
address = other.address;
|
||||
|
||||
switch (type) {
|
||||
case EntryType::none:
|
||||
break;
|
||||
case EntryType::contact:
|
||||
case EntryType::ownAccount:
|
||||
vcard = new VCard(other.getVCardRef());
|
||||
activeKeys = new std::list<KeyInfo>(other.getActiveKeysRef());
|
||||
inactiveKeys = new std::list<KeyInfo>(other.getInactiveKeysRef());
|
||||
break;
|
||||
default:
|
||||
throw 351;
|
||||
}
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
Shared::Info::~Info() {
|
||||
turnIntoNone();
|
||||
}
|
||||
|
||||
void Shared::Info::turnIntoNone() {
|
||||
switch (type) {
|
||||
case EntryType::none:
|
||||
break;
|
||||
case EntryType::contact:
|
||||
case EntryType::ownAccount:
|
||||
delete vcard;
|
||||
vcard = nullptr;
|
||||
delete activeKeys;
|
||||
activeKeys = nullptr;
|
||||
delete inactiveKeys;
|
||||
inactiveKeys = nullptr;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
case EntryType::none:
|
||||
break;
|
||||
case EntryType::contact:
|
||||
case EntryType::ownAccount:
|
||||
delete vcard;
|
||||
vcard = nullptr;
|
||||
delete activeKeys;
|
||||
activeKeys = nullptr;
|
||||
delete inactiveKeys;
|
||||
inactiveKeys = nullptr;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
type = EntryType::none;
|
||||
}
|
||||
|
||||
void Shared::Info::turnIntoContact(
|
||||
const Shared::VCard& crd,
|
||||
const std::list<KeyInfo>& aks,
|
||||
const std::list<KeyInfo>& iaks
|
||||
const Shared::VCard &crd, const std::list<KeyInfo> &aks, const std::list<KeyInfo> &iaks
|
||||
) {
|
||||
switch (type) {
|
||||
case EntryType::none:
|
||||
vcard = new VCard(crd);
|
||||
activeKeys = new std::list<KeyInfo>(aks);
|
||||
inactiveKeys = new std::list<KeyInfo>(iaks);
|
||||
break;
|
||||
case EntryType::contact:
|
||||
case EntryType::ownAccount:
|
||||
*vcard = crd;
|
||||
*activeKeys = aks;
|
||||
*inactiveKeys = iaks;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
case EntryType::none:
|
||||
vcard = new VCard(crd);
|
||||
activeKeys = new std::list<KeyInfo>(aks);
|
||||
inactiveKeys = new std::list<KeyInfo>(iaks);
|
||||
break;
|
||||
case EntryType::contact:
|
||||
case EntryType::ownAccount:
|
||||
*vcard = crd;
|
||||
*activeKeys = aks;
|
||||
*inactiveKeys = iaks;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
type = EntryType::contact;
|
||||
}
|
||||
|
||||
void Shared::Info::turnIntoContact(
|
||||
Shared::VCard* crd,
|
||||
std::list<KeyInfo>* aks,
|
||||
std::list<KeyInfo>* iaks
|
||||
) {
|
||||
void Shared::Info::turnIntoContact(Shared::VCard *crd, std::list<KeyInfo> *aks, std::list<KeyInfo> *iaks) {
|
||||
switch (type) {
|
||||
case EntryType::contact:
|
||||
case EntryType::ownAccount:
|
||||
delete vcard;
|
||||
delete activeKeys;
|
||||
delete inactiveKeys;
|
||||
[[fallthrough]];
|
||||
case EntryType::none:
|
||||
vcard = crd;
|
||||
activeKeys = aks;
|
||||
inactiveKeys = iaks;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
case EntryType::contact:
|
||||
case EntryType::ownAccount:
|
||||
delete vcard;
|
||||
delete activeKeys;
|
||||
delete inactiveKeys;
|
||||
[[fallthrough]];
|
||||
case EntryType::none:
|
||||
vcard = crd;
|
||||
activeKeys = aks;
|
||||
inactiveKeys = iaks;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
type = EntryType::contact;
|
||||
}
|
||||
|
||||
void Shared::Info::turnIntoOwnAccount(
|
||||
const Shared::VCard& crd,
|
||||
const std::list<KeyInfo>& aks,
|
||||
const std::list<KeyInfo>& iaks
|
||||
) {
|
||||
switch (type) {
|
||||
case EntryType::none:
|
||||
vcard = new VCard(crd);
|
||||
activeKeys = new std::list<KeyInfo>(aks);
|
||||
inactiveKeys = new std::list<KeyInfo>(iaks);
|
||||
break;
|
||||
case EntryType::contact:
|
||||
case EntryType::ownAccount:
|
||||
*vcard = crd;
|
||||
*activeKeys = aks;
|
||||
*inactiveKeys = iaks;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
type = EntryType::ownAccount;
|
||||
}
|
||||
|
||||
void Shared::Info::turnIntoOwnAccount(
|
||||
Shared::VCard* crd,
|
||||
std::list<KeyInfo>* aks,
|
||||
std::list<KeyInfo>* iaks
|
||||
const Shared::VCard &crd, const std::list<KeyInfo> &aks, const std::list<KeyInfo> &iaks
|
||||
) {
|
||||
switch (type) {
|
||||
case EntryType::contact:
|
||||
case EntryType::ownAccount:
|
||||
delete vcard;
|
||||
delete activeKeys;
|
||||
delete inactiveKeys;
|
||||
[[fallthrough]];
|
||||
case EntryType::none:
|
||||
vcard = crd;
|
||||
activeKeys = aks;
|
||||
inactiveKeys = iaks;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
case EntryType::none:
|
||||
vcard = new VCard(crd);
|
||||
activeKeys = new std::list<KeyInfo>(aks);
|
||||
inactiveKeys = new std::list<KeyInfo>(iaks);
|
||||
break;
|
||||
case EntryType::contact:
|
||||
case EntryType::ownAccount:
|
||||
*vcard = crd;
|
||||
*activeKeys = aks;
|
||||
*inactiveKeys = iaks;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
type = EntryType::ownAccount;
|
||||
}
|
||||
|
||||
void Shared::Info::setAddress(const QString& addr) {
|
||||
address = addr;}
|
||||
void Shared::Info::turnIntoOwnAccount(Shared::VCard *crd, std::list<KeyInfo> *aks, std::list<KeyInfo> *iaks) {
|
||||
switch (type) {
|
||||
case EntryType::contact:
|
||||
case EntryType::ownAccount:
|
||||
delete vcard;
|
||||
delete activeKeys;
|
||||
delete inactiveKeys;
|
||||
[[fallthrough]];
|
||||
case EntryType::none:
|
||||
vcard = crd;
|
||||
activeKeys = aks;
|
||||
inactiveKeys = iaks;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
type = EntryType::ownAccount;
|
||||
}
|
||||
|
||||
void Shared::Info::setAddress(const QString &addr) {
|
||||
address = addr;
|
||||
}
|
||||
|
||||
QString Shared::Info::getAddress() const {
|
||||
return address;}
|
||||
return address;
|
||||
}
|
||||
|
||||
const QString& Shared::Info::getAddressRef() const {
|
||||
return address;}
|
||||
const QString &Shared::Info::getAddressRef() const {
|
||||
return address;
|
||||
}
|
||||
|
||||
Shared::EntryType Shared::Info::getType() const {
|
||||
return type;}
|
||||
return type;
|
||||
}
|
||||
|
||||
std::list<Shared::KeyInfo> & Shared::Info::getActiveKeysRef() {
|
||||
std::list<Shared::KeyInfo> &Shared::Info::getActiveKeysRef() {
|
||||
switch (type) {
|
||||
case EntryType::contact:
|
||||
case EntryType::ownAccount:
|
||||
return *activeKeys;
|
||||
break;
|
||||
default:
|
||||
throw 354;
|
||||
case EntryType::contact:
|
||||
case EntryType::ownAccount:
|
||||
return *activeKeys;
|
||||
break;
|
||||
default:
|
||||
throw 354;
|
||||
}
|
||||
}
|
||||
|
||||
const std::list<Shared::KeyInfo> & Shared::Info::getActiveKeysRef() const {
|
||||
const std::list<Shared::KeyInfo> &Shared::Info::getActiveKeysRef() const {
|
||||
switch (type) {
|
||||
case EntryType::contact:
|
||||
case EntryType::ownAccount:
|
||||
return *activeKeys;
|
||||
break;
|
||||
default:
|
||||
throw 355;
|
||||
case EntryType::contact:
|
||||
case EntryType::ownAccount:
|
||||
return *activeKeys;
|
||||
break;
|
||||
default:
|
||||
throw 355;
|
||||
}
|
||||
}
|
||||
|
||||
std::list<Shared::KeyInfo>* Shared::Info::getActiveKeys() {
|
||||
std::list<Shared::KeyInfo> *Shared::Info::getActiveKeys() {
|
||||
switch (type) {
|
||||
case EntryType::contact:
|
||||
case EntryType::ownAccount:
|
||||
return activeKeys;
|
||||
break;
|
||||
default:
|
||||
throw 356;
|
||||
case EntryType::contact:
|
||||
case EntryType::ownAccount:
|
||||
return activeKeys;
|
||||
break;
|
||||
default:
|
||||
throw 356;
|
||||
}
|
||||
}
|
||||
|
||||
const std::list<Shared::KeyInfo>* Shared::Info::getActiveKeys() const {
|
||||
const std::list<Shared::KeyInfo> *Shared::Info::getActiveKeys() const {
|
||||
switch (type) {
|
||||
case EntryType::contact:
|
||||
case EntryType::ownAccount:
|
||||
return activeKeys;
|
||||
break;
|
||||
default:
|
||||
throw 357;
|
||||
case EntryType::contact:
|
||||
case EntryType::ownAccount:
|
||||
return activeKeys;
|
||||
break;
|
||||
default:
|
||||
throw 357;
|
||||
}
|
||||
}
|
||||
|
||||
std::list<Shared::KeyInfo> & Shared::Info::getInactiveKeysRef() {
|
||||
std::list<Shared::KeyInfo> &Shared::Info::getInactiveKeysRef() {
|
||||
switch (type) {
|
||||
case EntryType::contact:
|
||||
case EntryType::ownAccount:
|
||||
return *inactiveKeys;
|
||||
break;
|
||||
default:
|
||||
throw 358;
|
||||
case EntryType::contact:
|
||||
case EntryType::ownAccount:
|
||||
return *inactiveKeys;
|
||||
break;
|
||||
default:
|
||||
throw 358;
|
||||
}
|
||||
}
|
||||
|
||||
const std::list<Shared::KeyInfo> & Shared::Info::getInactiveKeysRef() const {
|
||||
const std::list<Shared::KeyInfo> &Shared::Info::getInactiveKeysRef() const {
|
||||
switch (type) {
|
||||
case EntryType::contact:
|
||||
case EntryType::ownAccount:
|
||||
return *inactiveKeys;
|
||||
break;
|
||||
default:
|
||||
throw 359;
|
||||
case EntryType::contact:
|
||||
case EntryType::ownAccount:
|
||||
return *inactiveKeys;
|
||||
break;
|
||||
default:
|
||||
throw 359;
|
||||
}
|
||||
}
|
||||
|
||||
std::list<Shared::KeyInfo>* Shared::Info::getInactiveKeys() {
|
||||
std::list<Shared::KeyInfo> *Shared::Info::getInactiveKeys() {
|
||||
switch (type) {
|
||||
case EntryType::contact:
|
||||
case EntryType::ownAccount:
|
||||
return inactiveKeys;
|
||||
break;
|
||||
default:
|
||||
throw 360;
|
||||
case EntryType::contact:
|
||||
case EntryType::ownAccount:
|
||||
return inactiveKeys;
|
||||
break;
|
||||
default:
|
||||
throw 360;
|
||||
}
|
||||
}
|
||||
|
||||
const std::list<Shared::KeyInfo>* Shared::Info::getInactiveKeys() const {
|
||||
const std::list<Shared::KeyInfo> *Shared::Info::getInactiveKeys() const {
|
||||
switch (type) {
|
||||
case EntryType::contact:
|
||||
case EntryType::ownAccount:
|
||||
return inactiveKeys;
|
||||
break;
|
||||
default:
|
||||
throw 361;
|
||||
case EntryType::contact:
|
||||
case EntryType::ownAccount:
|
||||
return inactiveKeys;
|
||||
break;
|
||||
default:
|
||||
throw 361;
|
||||
}
|
||||
}
|
||||
|
||||
const Shared::VCard & Shared::Info::getVCardRef() const {
|
||||
const Shared::VCard &Shared::Info::getVCardRef() const {
|
||||
switch (type) {
|
||||
case EntryType::contact:
|
||||
case EntryType::ownAccount:
|
||||
return *vcard;
|
||||
break;
|
||||
default:
|
||||
throw 362;
|
||||
case EntryType::contact:
|
||||
case EntryType::ownAccount:
|
||||
return *vcard;
|
||||
break;
|
||||
default:
|
||||
throw 362;
|
||||
}
|
||||
}
|
||||
|
||||
Shared::VCard & Shared::Info::getVCardRef() {
|
||||
Shared::VCard &Shared::Info::getVCardRef() {
|
||||
switch (type) {
|
||||
case EntryType::contact:
|
||||
case EntryType::ownAccount:
|
||||
return *vcard;
|
||||
break;
|
||||
default:
|
||||
throw 363;
|
||||
case EntryType::contact:
|
||||
case EntryType::ownAccount:
|
||||
return *vcard;
|
||||
break;
|
||||
default:
|
||||
throw 363;
|
||||
}
|
||||
}
|
||||
|
||||
const Shared::VCard * Shared::Info::getVCard() const {
|
||||
const Shared::VCard *Shared::Info::getVCard() const {
|
||||
switch (type) {
|
||||
case EntryType::contact:
|
||||
case EntryType::ownAccount:
|
||||
return vcard;
|
||||
break;
|
||||
default:
|
||||
throw 364;
|
||||
case EntryType::contact:
|
||||
case EntryType::ownAccount:
|
||||
return vcard;
|
||||
break;
|
||||
default:
|
||||
throw 364;
|
||||
}
|
||||
}
|
||||
|
||||
Shared::VCard * Shared::Info::getVCard() {
|
||||
Shared::VCard *Shared::Info::getVCard() {
|
||||
switch (type) {
|
||||
case EntryType::contact:
|
||||
case EntryType::ownAccount:
|
||||
return vcard;
|
||||
break;
|
||||
default:
|
||||
throw 365;
|
||||
case EntryType::contact:
|
||||
case EntryType::ownAccount:
|
||||
return vcard;
|
||||
break;
|
||||
default:
|
||||
throw 365;
|
||||
}
|
||||
}
|
||||
|
||||
void Shared::Info::setActiveKeys(std::list<KeyInfo>* keys) {
|
||||
void Shared::Info::setActiveKeys(std::list<KeyInfo> *keys) {
|
||||
switch (type) {
|
||||
case EntryType::contact:
|
||||
case EntryType::ownAccount:
|
||||
activeKeys = keys;
|
||||
break;
|
||||
default:
|
||||
throw 366;
|
||||
case EntryType::contact:
|
||||
case EntryType::ownAccount:
|
||||
activeKeys = keys;
|
||||
break;
|
||||
default:
|
||||
throw 366;
|
||||
}
|
||||
}
|
||||
|
||||
void Shared::Info::setVCard(Shared::VCard* card) {
|
||||
void Shared::Info::setVCard(Shared::VCard *card) {
|
||||
switch (type) {
|
||||
case EntryType::contact:
|
||||
case EntryType::ownAccount:
|
||||
vcard = card;
|
||||
break;
|
||||
default:
|
||||
throw 367;
|
||||
case EntryType::contact:
|
||||
case EntryType::ownAccount:
|
||||
vcard = card;
|
||||
break;
|
||||
default:
|
||||
throw 367;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,21 +1,22 @@
|
||||
// Squawk messenger.
|
||||
// Copyright (C) 2019 Yury Gubich <blue@macaw.me>
|
||||
//
|
||||
// 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 3 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, see <http://www.gnu.org/licenses/>.
|
||||
/*
|
||||
* Squawk messenger.
|
||||
* Copyright (C) 2019 Yury Gubich <blue@macaw.me>
|
||||
*
|
||||
* 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 3 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, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef SHARED_INFO_H
|
||||
#define SHARED_INFO_H
|
||||
#pragma once
|
||||
|
||||
#include "vcard.h"
|
||||
#include "keyinfo.h"
|
||||
@ -36,7 +37,10 @@ public:
|
||||
Info();
|
||||
Info(const QString& address, EntryType = EntryType::none);
|
||||
Info(const Info& other);
|
||||
Info(Info&& other);
|
||||
virtual ~Info();
|
||||
Info& operator = (const Info& other);
|
||||
Info& operator = (Info&& other);
|
||||
|
||||
QString getAddress() const;
|
||||
const QString& getAddressRef() const;
|
||||
@ -90,7 +94,4 @@ private:
|
||||
std::list<KeyInfo>* activeKeys;
|
||||
std::list<KeyInfo>* inactiveKeys;
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // SHARED_INFO_H
|
||||
|
@ -1,18 +1,20 @@
|
||||
// Squawk messenger.
|
||||
// Copyright (C) 2019 Yury Gubich <blue@macaw.me>
|
||||
//
|
||||
// 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 3 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, see <http://www.gnu.org/licenses/>.
|
||||
/*
|
||||
* Squawk messenger.
|
||||
* Copyright (C) 2019 Yury Gubich <blue@macaw.me>
|
||||
*
|
||||
* 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 3 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, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "keys.h"
|
||||
|
||||
@ -37,18 +39,34 @@ Models::Keys::~Keys() {
|
||||
delete pair.second;
|
||||
}
|
||||
|
||||
std::deque<Shared::KeyInfo> Models::Keys::modifiedKeys() const {
|
||||
std::deque<Shared::KeyInfo> response(modified.size());
|
||||
std::list<Shared::KeyInfo> Models::Keys::modifiedKeys() const {
|
||||
std::list<Shared::KeyInfo> response;
|
||||
for (const std::pair<const int, Shared::KeyInfo*>& pair: modified)
|
||||
response.push_back(*(pair.second));
|
||||
|
||||
int i = 0;
|
||||
for (const std::pair<const int, Shared::KeyInfo*>& pair: modified) {
|
||||
response[i] = *(pair.second);
|
||||
++i;
|
||||
}
|
||||
|
||||
return response;
|
||||
}
|
||||
|
||||
std::list<Shared::KeyInfo> Models::Keys::finalKeys() const {
|
||||
std::list<Shared::KeyInfo> result;
|
||||
finalKeys(result);
|
||||
return result;
|
||||
}
|
||||
|
||||
void Models::Keys::finalKeys(std::list<Shared::KeyInfo>& out) const {
|
||||
for (int i = 0; i < rowCount(); ++i)
|
||||
out.push_back(key(i));
|
||||
}
|
||||
|
||||
const Shared::KeyInfo & Models::Keys::key(unsigned int i) const {
|
||||
std::map<int, Shared::KeyInfo*>::const_iterator itr = modified.find(i);
|
||||
if (itr != modified.end())
|
||||
return*(itr->second);
|
||||
else
|
||||
return *(keys[i]);
|
||||
}
|
||||
|
||||
void Models::Keys::addKey(const Shared::KeyInfo& info) {
|
||||
beginInsertRows(QModelIndex(), keys.size(), keys.size());
|
||||
keys.push_back(new Shared::KeyInfo(info));
|
||||
|
@ -1,21 +1,22 @@
|
||||
// Squawk messenger.
|
||||
// Copyright (C) 2019 Yury Gubich <blue@macaw.me>
|
||||
//
|
||||
// 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 3 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, see <http://www.gnu.org/licenses/>.
|
||||
/*
|
||||
* Squawk messenger.
|
||||
* Copyright (C) 2019 Yury Gubich <blue@macaw.me>
|
||||
*
|
||||
* 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 3 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, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef MODELS_KEYS_H
|
||||
#define MODELS_KEYS_H
|
||||
#pragma once
|
||||
|
||||
#include <QAbstractListModel>
|
||||
|
||||
@ -23,11 +24,7 @@
|
||||
|
||||
namespace Models {
|
||||
|
||||
/**
|
||||
* @todo write docs
|
||||
*/
|
||||
class Keys : public QAbstractListModel
|
||||
{
|
||||
class Keys : public QAbstractListModel {
|
||||
public:
|
||||
Keys(QObject *parent = nullptr);
|
||||
~Keys();
|
||||
@ -37,11 +34,14 @@ public:
|
||||
|
||||
QVariant data(const QModelIndex & index, int role = Qt::DisplayRole) const override;
|
||||
int rowCount(const QModelIndex& parent = QModelIndex()) const override;
|
||||
const Shared::KeyInfo& key(unsigned int i) const;
|
||||
|
||||
QHash<int, QByteArray> roleNames() const override;
|
||||
QModelIndex index(int row, int column, const QModelIndex & parent) const override;
|
||||
|
||||
std::deque<Shared::KeyInfo> modifiedKeys() const;
|
||||
std::list<Shared::KeyInfo> modifiedKeys() const;
|
||||
std::list<Shared::KeyInfo> finalKeys() const;
|
||||
void finalKeys(std::list<Shared::KeyInfo>& out) const;
|
||||
|
||||
enum Roles {
|
||||
Label = Qt::UserRole + 1,
|
||||
@ -64,5 +64,3 @@ private:
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // MODELS_KEYS_H
|
||||
|
@ -114,6 +114,9 @@ void UI::Info::onButtonBoxAccepted() {
|
||||
contactGeneral->fillVCard(card);
|
||||
contactContacts->fillVCard(card);
|
||||
card.setDescription(description->description());
|
||||
#ifdef WITH_OMEMO
|
||||
omemo->fillData(info.getActiveKeysRef());
|
||||
#endif
|
||||
emit saveInfo(info);
|
||||
emit close();
|
||||
}
|
||||
@ -161,7 +164,8 @@ void UI::Info::initializeDescription(const QString& descr, bool editable) {
|
||||
}
|
||||
|
||||
QString UI::Info::getJid() const {
|
||||
return jid;}
|
||||
return jid;
|
||||
}
|
||||
|
||||
void UI::Info::clear() {
|
||||
if (contactGeneral != nullptr) {
|
||||
|
@ -39,8 +39,7 @@
|
||||
|
||||
|
||||
namespace UI {
|
||||
namespace Ui
|
||||
{
|
||||
namespace Ui {
|
||||
class Info;
|
||||
}
|
||||
|
||||
|
@ -88,6 +88,12 @@ void UI::Omemo::setData(const std::list<Shared::KeyInfo>& keys) {
|
||||
deviceKeyVisibility(deviceKeyModel.rowCount() > 0);
|
||||
}
|
||||
|
||||
void UI::Omemo::fillData(std::list<Shared::KeyInfo>& out) {
|
||||
deviceKeyModel.finalKeys(out);
|
||||
keysModel.finalKeys(out);
|
||||
unusedKeysModel.finalKeys(out);
|
||||
}
|
||||
|
||||
const QString UI::Omemo::title() const {
|
||||
return m_ui->OMEMOHeading->text();
|
||||
}
|
||||
|
@ -41,6 +41,7 @@ public:
|
||||
~Omemo();
|
||||
|
||||
void setData(const std::list<Shared::KeyInfo>& keys);
|
||||
void fillData(std::list<Shared::KeyInfo>& out);
|
||||
const QString title() const;
|
||||
|
||||
private slots:
|
||||
|
Loading…
Reference in New Issue
Block a user