1
0
forked from blue/squawk
squawk/shared/info.h
2023-11-16 21:08:40 -03:00

98 lines
2.9 KiB
C++

/*
* 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/>.
*/
#pragma once
#include "vcard.h"
#include "keyinfo.h"
#include "enums.h"
#include <list>
namespace Shared {
/**
* This class should contain all nessesary data to display
* roster element info (contact, or out of roster contact, or MUC, or MIX in the future)
*
* under development yet
*/
class Info {
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;
void setAddress(const QString& address);
EntryType getType() const;
void turnIntoNone();
void turnIntoContact(
const VCard& card = VCard(),
const std::list<KeyInfo>& activeKeys = {},
const std::list<KeyInfo>& inactiveKeys = {}
);
void turnIntoContact(
VCard* card = new VCard,
std::list<KeyInfo>* activeKeys = new std::list<KeyInfo>,
std::list<KeyInfo>* inactiveKeys = new std::list<KeyInfo>
);
void turnIntoOwnAccount(
const VCard& card = VCard(),
const std::list<KeyInfo>& activeKeys = {},
const std::list<KeyInfo>& inactiveKeys = {}
);
void turnIntoOwnAccount(
VCard* card = new VCard,
std::list<KeyInfo>* activeKeys = new std::list<KeyInfo>,
std::list<KeyInfo>* inactiveKeys = new std::list<KeyInfo>
);
const VCard& getVCardRef() const;
VCard& getVCardRef();
const VCard* getVCard() const;
VCard* getVCard();
void setVCard(Shared::VCard* card);
const std::list<KeyInfo>& getActiveKeysRef() const;
std::list<KeyInfo>& getActiveKeysRef();
const std::list<KeyInfo>* getActiveKeys() const;
std::list<KeyInfo>* getActiveKeys();
void setActiveKeys(std::list<KeyInfo>* keys);
const std::list<KeyInfo>& getInactiveKeysRef() const;
std::list<KeyInfo>& getInactiveKeysRef();
const std::list<KeyInfo>* getInactiveKeys() const;
std::list<KeyInfo>* getInactiveKeys();
private:
EntryType type;
QString address;
VCard* vcard;
std::list<KeyInfo>* activeKeys;
std::list<KeyInfo>* inactiveKeys;
};
}