forked from blue/squawk
started refactoring of the VCard UI
This commit is contained in:
parent
bb304ce774
commit
4af16b75bf
@ -16,13 +16,25 @@
|
|||||||
|
|
||||||
#include "info.h"
|
#include "info.h"
|
||||||
|
|
||||||
|
Shared::Info::Info(const QString& p_jid, bool p_editable):
|
||||||
|
jid(p_jid),
|
||||||
|
editable(p_editable),
|
||||||
|
vcard(),
|
||||||
|
activeKeys(),
|
||||||
|
inactiveKeys()
|
||||||
|
{}
|
||||||
|
|
||||||
Shared::Info::Info():
|
Shared::Info::Info():
|
||||||
|
jid(),
|
||||||
|
editable(false),
|
||||||
vcard(),
|
vcard(),
|
||||||
activeKeys(),
|
activeKeys(),
|
||||||
inactiveKeys()
|
inactiveKeys()
|
||||||
{}
|
{}
|
||||||
|
|
||||||
Shared::Info::Info(const Shared::Info& other):
|
Shared::Info::Info(const Shared::Info& other):
|
||||||
|
jid(other.jid),
|
||||||
|
editable(other.editable),
|
||||||
vcard(other.vcard),
|
vcard(other.vcard),
|
||||||
activeKeys(other.activeKeys),
|
activeKeys(other.activeKeys),
|
||||||
inactiveKeys(other.inactiveKeys)
|
inactiveKeys(other.inactiveKeys)
|
||||||
|
@ -33,9 +33,12 @@ namespace Shared {
|
|||||||
class Info {
|
class Info {
|
||||||
public:
|
public:
|
||||||
Info();
|
Info();
|
||||||
|
Info(const QString& jid, bool editable = false);
|
||||||
Info(const Info& other);
|
Info(const Info& other);
|
||||||
~Info();
|
~Info();
|
||||||
|
|
||||||
|
QString jid;
|
||||||
|
bool editable;
|
||||||
VCard vcard;
|
VCard vcard;
|
||||||
std::list<KeyInfo> activeKeys;
|
std::list<KeyInfo> activeKeys;
|
||||||
std::list<KeyInfo> inactiveKeys;
|
std::list<KeyInfo> inactiveKeys;
|
||||||
|
@ -24,3 +24,5 @@ target_sources(squawk PRIVATE
|
|||||||
roster.cpp
|
roster.cpp
|
||||||
roster.h
|
roster.h
|
||||||
)
|
)
|
||||||
|
|
||||||
|
add_subdirectory(info)
|
||||||
|
10
ui/models/info/CMakeLists.txt
Normal file
10
ui/models/info/CMakeLists.txt
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
target_sources(squawk PRIVATE
|
||||||
|
emails.cpp
|
||||||
|
emails.h
|
||||||
|
phones.cpp
|
||||||
|
phones.h
|
||||||
|
)
|
||||||
|
|
||||||
|
if (WITH_OMEMO)
|
||||||
|
add_subdirectory(omemo)
|
||||||
|
endif()
|
@ -16,30 +16,29 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "emailsmodel.h"
|
#include "emails.h"
|
||||||
|
|
||||||
#include "shared/icons.h"
|
#include "shared/icons.h"
|
||||||
#include <QCoreApplication>
|
#include <QCoreApplication>
|
||||||
|
|
||||||
UI::VCard::EMailsModel::EMailsModel(bool p_edit, QObject* parent):
|
Models::EMails::EMails(bool p_edit, QObject* parent):
|
||||||
QAbstractTableModel(parent),
|
QAbstractTableModel(parent),
|
||||||
edit(p_edit),
|
edit(p_edit),
|
||||||
deque()
|
deque() {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
int UI::VCard::EMailsModel::columnCount(const QModelIndex& parent) const
|
int Models::EMails::columnCount(const QModelIndex& parent) const {
|
||||||
{
|
return 3;}
|
||||||
return 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
int UI::VCard::EMailsModel::rowCount(const QModelIndex& parent) const
|
int Models::EMails::rowCount(const QModelIndex& parent) const {
|
||||||
{
|
return deque.size();}
|
||||||
return deque.size();
|
|
||||||
}
|
|
||||||
|
|
||||||
QVariant UI::VCard::EMailsModel::data(const QModelIndex& index, int role) const
|
void Models::EMails::revertPreferred(quint32 row) {
|
||||||
{
|
setData(createIndex(row, 2), !isPreferred(row));}
|
||||||
|
|
||||||
|
QString Models::EMails::getEmail(quint32 row) const {
|
||||||
|
return deque[row].address;}
|
||||||
|
|
||||||
|
QVariant Models::EMails::data(const QModelIndex& index, int role) const {
|
||||||
if (index.isValid()) {
|
if (index.isValid()) {
|
||||||
int col = index.column();
|
int col = index.column();
|
||||||
switch (col) {
|
switch (col) {
|
||||||
@ -82,8 +81,7 @@ QVariant UI::VCard::EMailsModel::data(const QModelIndex& index, int role) const
|
|||||||
return QVariant();
|
return QVariant();
|
||||||
}
|
}
|
||||||
|
|
||||||
Qt::ItemFlags UI::VCard::EMailsModel::flags(const QModelIndex& index) const
|
Qt::ItemFlags Models::EMails::flags(const QModelIndex& index) const {
|
||||||
{
|
|
||||||
Qt::ItemFlags f = QAbstractTableModel::flags(index);
|
Qt::ItemFlags f = QAbstractTableModel::flags(index);
|
||||||
if (edit && index.column() != 2) {
|
if (edit && index.column() != 2) {
|
||||||
f = Qt::ItemIsEditable | f;
|
f = Qt::ItemIsEditable | f;
|
||||||
@ -91,8 +89,7 @@ Qt::ItemFlags UI::VCard::EMailsModel::flags(const QModelIndex& index) const
|
|||||||
return f;
|
return f;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool UI::VCard::EMailsModel::setData(const QModelIndex& index, const QVariant& value, int role)
|
bool Models::EMails::setData(const QModelIndex& index, const QVariant& value, int role) {
|
||||||
{
|
|
||||||
if (role == Qt::EditRole && checkIndex(index)) {
|
if (role == Qt::EditRole && checkIndex(index)) {
|
||||||
Shared::VCard::Email& item = deque[index.row()];
|
Shared::VCard::Email& item = deque[index.row()];
|
||||||
switch (index.column()) {
|
switch (index.column()) {
|
||||||
@ -124,8 +121,7 @@ bool UI::VCard::EMailsModel::setData(const QModelIndex& index, const QVariant& v
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool UI::VCard::EMailsModel::dropPrefered()
|
bool Models::EMails::dropPrefered() {
|
||||||
{
|
|
||||||
bool dropped = false;
|
bool dropped = false;
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for (Shared::VCard::Email& email : deque) {
|
for (Shared::VCard::Email& email : deque) {
|
||||||
@ -140,16 +136,14 @@ bool UI::VCard::EMailsModel::dropPrefered()
|
|||||||
return dropped;
|
return dropped;
|
||||||
}
|
}
|
||||||
|
|
||||||
QModelIndex UI::VCard::EMailsModel::addNewEmptyLine()
|
QModelIndex Models::EMails::addNewEmptyLine() {
|
||||||
{
|
|
||||||
beginInsertRows(QModelIndex(), deque.size(), deque.size());
|
beginInsertRows(QModelIndex(), deque.size(), deque.size());
|
||||||
deque.emplace_back("");
|
deque.emplace_back("");
|
||||||
endInsertRows();
|
endInsertRows();
|
||||||
return createIndex(deque.size() - 1, 0, &(deque.back()));
|
return createIndex(deque.size() - 1, 0, &(deque.back()));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool UI::VCard::EMailsModel::isPreferred(quint32 row) const
|
bool Models::EMails::isPreferred(quint32 row) const {
|
||||||
{
|
|
||||||
if (row < deque.size()) {
|
if (row < deque.size()) {
|
||||||
return deque[row].prefered;
|
return deque[row].prefered;
|
||||||
} else {
|
} else {
|
||||||
@ -157,8 +151,7 @@ bool UI::VCard::EMailsModel::isPreferred(quint32 row) const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UI::VCard::EMailsModel::removeLines(quint32 index, quint32 count)
|
void Models::EMails::removeLines(quint32 index, quint32 count) {
|
||||||
{
|
|
||||||
if (index < deque.size()) {
|
if (index < deque.size()) {
|
||||||
quint32 maxCount = deque.size() - index;
|
quint32 maxCount = deque.size() - index;
|
||||||
if (count > maxCount) {
|
if (count > maxCount) {
|
||||||
@ -175,15 +168,13 @@ void UI::VCard::EMailsModel::removeLines(quint32 index, quint32 count)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UI::VCard::EMailsModel::getEmails(std::deque<Shared::VCard::Email>& emails) const
|
void Models::EMails::getEmails(std::deque<Shared::VCard::Email>& emails) const {
|
||||||
{
|
|
||||||
for (const Shared::VCard::Email& my : deque) {
|
for (const Shared::VCard::Email& my : deque) {
|
||||||
emails.emplace_back(my);
|
emails.emplace_back(my);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UI::VCard::EMailsModel::setEmails(const std::deque<Shared::VCard::Email>& emails)
|
void Models::EMails::setEmails(const std::deque<Shared::VCard::Email>& emails) {
|
||||||
{
|
|
||||||
if (deque.size() > 0) {
|
if (deque.size() > 0) {
|
||||||
removeLines(0, deque.size());
|
removeLines(0, deque.size());
|
||||||
}
|
}
|
||||||
@ -196,13 +187,3 @@ void UI::VCard::EMailsModel::setEmails(const std::deque<Shared::VCard::Email>& e
|
|||||||
endInsertRows();
|
endInsertRows();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UI::VCard::EMailsModel::revertPreferred(quint32 row)
|
|
||||||
{
|
|
||||||
setData(createIndex(row, 2), !isPreferred(row));
|
|
||||||
}
|
|
||||||
|
|
||||||
QString UI::VCard::EMailsModel::getEmail(quint32 row) const
|
|
||||||
{
|
|
||||||
return deque[row].address;
|
|
||||||
}
|
|
@ -16,8 +16,8 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef UI_VCARD_EMAILSMODEL_H
|
#ifndef MODELS_EMAILS_H
|
||||||
#define UI_VCARD_EMAILSMODEL_H
|
#define MODELS_EMAILS_H
|
||||||
|
|
||||||
#include <QAbstractTableModel>
|
#include <QAbstractTableModel>
|
||||||
#include <QIcon>
|
#include <QIcon>
|
||||||
@ -26,14 +26,12 @@
|
|||||||
|
|
||||||
#include "shared/vcard.h"
|
#include "shared/vcard.h"
|
||||||
|
|
||||||
namespace UI {
|
namespace Models {
|
||||||
namespace VCard {
|
|
||||||
|
|
||||||
class EMailsModel : public QAbstractTableModel
|
class EMails : public QAbstractTableModel {
|
||||||
{
|
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
EMailsModel(bool edit = false, QObject *parent = nullptr);
|
EMails(bool edit = false, QObject *parent = nullptr);
|
||||||
|
|
||||||
int rowCount(const QModelIndex& parent = QModelIndex()) const override;
|
int rowCount(const QModelIndex& parent = QModelIndex()) const override;
|
||||||
int columnCount(const QModelIndex& parent = QModelIndex()) const override;
|
int columnCount(const QModelIndex& parent = QModelIndex()) const override;
|
||||||
@ -59,6 +57,6 @@ private:
|
|||||||
bool dropPrefered();
|
bool dropPrefered();
|
||||||
};
|
};
|
||||||
|
|
||||||
}}
|
}
|
||||||
|
|
||||||
#endif // UI_VCARD_EMAILSMODEL_H
|
#endif // MODELS_EMAILS_H
|
4
ui/models/info/omemo/CMakeLists.txt
Normal file
4
ui/models/info/omemo/CMakeLists.txt
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
target_sources(squawk PRIVATE
|
||||||
|
keys.cpp
|
||||||
|
keys.h
|
||||||
|
)
|
@ -14,23 +14,20 @@
|
|||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
#include "keysmodel.h"
|
#include "keys.h"
|
||||||
|
|
||||||
const QHash<int, QByteArray> UI::KeysModel::roles = {
|
const QHash<int, QByteArray> Models::Keys::roles = {
|
||||||
{Label, "label"},
|
{Label, "label"},
|
||||||
{FingerPrint, "fingerPrint"},
|
{FingerPrint, "fingerPrint"},
|
||||||
{TrustLevel, "trustLevel"}
|
{TrustLevel, "trustLevel"}
|
||||||
};
|
};
|
||||||
|
|
||||||
UI::KeysModel::KeysModel(QObject* parent):
|
Models::Keys::Keys(QObject* parent):
|
||||||
QAbstractListModel(parent),
|
QAbstractListModel(parent),
|
||||||
keys(),
|
keys(),
|
||||||
modified()
|
modified() {}
|
||||||
{
|
|
||||||
|
|
||||||
}
|
Models::Keys::~Keys() {
|
||||||
|
|
||||||
UI::KeysModel::~KeysModel() {
|
|
||||||
for (Shared::KeyInfo* key : keys) {
|
for (Shared::KeyInfo* key : keys) {
|
||||||
delete key;
|
delete key;
|
||||||
}
|
}
|
||||||
@ -40,7 +37,7 @@ UI::KeysModel::~KeysModel() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::deque<Shared::KeyInfo> UI::KeysModel::modifiedKeys() const {
|
std::deque<Shared::KeyInfo> Models::Keys::modifiedKeys() const {
|
||||||
std::deque<Shared::KeyInfo> response(modified.size());
|
std::deque<Shared::KeyInfo> response(modified.size());
|
||||||
|
|
||||||
int i = 0;
|
int i = 0;
|
||||||
@ -52,13 +49,13 @@ std::deque<Shared::KeyInfo> UI::KeysModel::modifiedKeys() const {
|
|||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UI::KeysModel::addKey(const Shared::KeyInfo& info) {
|
void Models::Keys::addKey(const Shared::KeyInfo& info) {
|
||||||
beginInsertRows(QModelIndex(), keys.size(), keys.size());
|
beginInsertRows(QModelIndex(), keys.size(), keys.size());
|
||||||
keys.push_back(new Shared::KeyInfo(info));
|
keys.push_back(new Shared::KeyInfo(info));
|
||||||
endInsertRows();
|
endInsertRows();
|
||||||
}
|
}
|
||||||
|
|
||||||
QVariant UI::KeysModel::data(const QModelIndex& index, int role) const {
|
QVariant Models::Keys::data(const QModelIndex& index, int role) const {
|
||||||
int i = index.row();
|
int i = index.row();
|
||||||
const Shared::KeyInfo* info;
|
const Shared::KeyInfo* info;
|
||||||
bool dirty;
|
bool dirty;
|
||||||
@ -94,13 +91,13 @@ QVariant UI::KeysModel::data(const QModelIndex& index, int role) const {
|
|||||||
return answer;
|
return answer;
|
||||||
}
|
}
|
||||||
|
|
||||||
int UI::KeysModel::rowCount(const QModelIndex& parent) const {
|
int Models::Keys::rowCount(const QModelIndex& parent) const {
|
||||||
return keys.size();
|
return keys.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
QHash<int, QByteArray> UI::KeysModel::roleNames() const {return roles;}
|
QHash<int, QByteArray> Models::Keys::roleNames() const {return roles;}
|
||||||
|
|
||||||
QModelIndex UI::KeysModel::index(int row, int column, const QModelIndex& parent) const {
|
QModelIndex Models::Keys::index(int row, int column, const QModelIndex& parent) const {
|
||||||
if (!hasIndex(row, column, parent)) {
|
if (!hasIndex(row, column, parent)) {
|
||||||
return QModelIndex();
|
return QModelIndex();
|
||||||
}
|
}
|
||||||
@ -108,7 +105,7 @@ QModelIndex UI::KeysModel::index(int row, int column, const QModelIndex& parent)
|
|||||||
return createIndex(row, column, keys[row]);
|
return createIndex(row, column, keys[row]);
|
||||||
}
|
}
|
||||||
|
|
||||||
void UI::KeysModel::revertKey(int row) {
|
void Models::Keys::revertKey(int row) {
|
||||||
std::map<int, Shared::KeyInfo*>::const_iterator itr = modified.find(row);
|
std::map<int, Shared::KeyInfo*>::const_iterator itr = modified.find(row);
|
||||||
if (itr != modified.end()) {
|
if (itr != modified.end()) {
|
||||||
modified.erase(itr);
|
modified.erase(itr);
|
||||||
@ -117,7 +114,7 @@ void UI::KeysModel::revertKey(int row) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UI::KeysModel::setTrustLevel(int row, Shared::TrustLevel level) {
|
void Models::Keys::setTrustLevel(int row, Shared::TrustLevel level) {
|
||||||
std::map<int, Shared::KeyInfo*>::const_iterator itr = modified.find(row);
|
std::map<int, Shared::KeyInfo*>::const_iterator itr = modified.find(row);
|
||||||
Shared::KeyInfo* info;
|
Shared::KeyInfo* info;
|
||||||
if (itr == modified.end()) {
|
if (itr == modified.end()) {
|
||||||
@ -134,7 +131,7 @@ void UI::KeysModel::setTrustLevel(int row, Shared::TrustLevel level) {
|
|||||||
info->trustLevel = level;
|
info->trustLevel = level;
|
||||||
|
|
||||||
QModelIndex index = createIndex(row, 0, info);
|
QModelIndex index = createIndex(row, 0, info);
|
||||||
dataChanged(index, index, {KeysModel::Dirty});
|
dataChanged(index, index, {Keys::Dirty});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -14,23 +14,23 @@
|
|||||||
// You should have received a copy of the GNU General Public License
|
// You should have received a copy of the GNU General Public License
|
||||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
#ifndef UI_KEYSMODEL_H
|
#ifndef MODELS_KEYS_H
|
||||||
#define UI_KEYSMODEL_H
|
#define MODELS_KEYS_H
|
||||||
|
|
||||||
#include <QAbstractListModel>
|
#include <QAbstractListModel>
|
||||||
|
|
||||||
#include <shared/keyinfo.h>
|
#include <shared/keyinfo.h>
|
||||||
|
|
||||||
namespace UI {
|
namespace Models {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @todo write docs
|
* @todo write docs
|
||||||
*/
|
*/
|
||||||
class KeysModel : public QAbstractListModel
|
class Keys : public QAbstractListModel
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
KeysModel(QObject *parent = nullptr);
|
Keys(QObject *parent = nullptr);
|
||||||
~KeysModel();
|
~Keys();
|
||||||
|
|
||||||
void addKey(const Shared::KeyInfo& info);
|
void addKey(const Shared::KeyInfo& info);
|
||||||
|
|
||||||
@ -64,4 +64,4 @@ private:
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // UI_KEYSMODEL_H
|
#endif // MODELS_KEYS_H
|
@ -16,30 +16,30 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "phonesmodel.h"
|
#include "phones.h"
|
||||||
|
|
||||||
#include "shared/icons.h"
|
#include "shared/icons.h"
|
||||||
#include <QCoreApplication>
|
#include <QCoreApplication>
|
||||||
|
|
||||||
UI::VCard::PhonesModel::PhonesModel(bool p_edit, QObject* parent):
|
Models::Phones::Phones(bool p_edit, QObject* parent):
|
||||||
QAbstractTableModel(parent),
|
QAbstractTableModel(parent),
|
||||||
edit(p_edit),
|
edit(p_edit),
|
||||||
deque()
|
deque() {}
|
||||||
{
|
|
||||||
|
int Models::Phones::columnCount(const QModelIndex& parent) const {
|
||||||
|
return 4;}
|
||||||
|
|
||||||
|
int Models::Phones::rowCount(const QModelIndex& parent) const {
|
||||||
|
return deque.size();}
|
||||||
|
|
||||||
|
void Models::Phones::revertPreferred(quint32 row) {
|
||||||
|
setData(createIndex(row, 3), !isPreferred(row));
|
||||||
}
|
}
|
||||||
|
|
||||||
int UI::VCard::PhonesModel::columnCount(const QModelIndex& parent) const
|
QString Models::Phones::getPhone(quint32 row) const {
|
||||||
{
|
return deque[row].number;}
|
||||||
return 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
int UI::VCard::PhonesModel::rowCount(const QModelIndex& parent) const
|
QVariant Models::Phones::data(const QModelIndex& index, int role) const {
|
||||||
{
|
|
||||||
return deque.size();
|
|
||||||
}
|
|
||||||
|
|
||||||
QVariant UI::VCard::PhonesModel::data(const QModelIndex& index, int role) const
|
|
||||||
{
|
|
||||||
if (index.isValid()) {
|
if (index.isValid()) {
|
||||||
int col = index.column();
|
int col = index.column();
|
||||||
switch (col) {
|
switch (col) {
|
||||||
@ -92,16 +92,14 @@ QVariant UI::VCard::PhonesModel::data(const QModelIndex& index, int role) const
|
|||||||
return QVariant();
|
return QVariant();
|
||||||
}
|
}
|
||||||
|
|
||||||
QModelIndex UI::VCard::PhonesModel::addNewEmptyLine()
|
QModelIndex Models::Phones::addNewEmptyLine() {
|
||||||
{
|
|
||||||
beginInsertRows(QModelIndex(), deque.size(), deque.size());
|
beginInsertRows(QModelIndex(), deque.size(), deque.size());
|
||||||
deque.emplace_back("", Shared::VCard::Phone::other);
|
deque.emplace_back("", Shared::VCard::Phone::other);
|
||||||
endInsertRows();
|
endInsertRows();
|
||||||
return createIndex(deque.size() - 1, 0, &(deque.back()));
|
return createIndex(deque.size() - 1, 0, &(deque.back()));
|
||||||
}
|
}
|
||||||
|
|
||||||
Qt::ItemFlags UI::VCard::PhonesModel::flags(const QModelIndex& index) const
|
Qt::ItemFlags Models::Phones::flags(const QModelIndex& index) const {
|
||||||
{
|
|
||||||
Qt::ItemFlags f = QAbstractTableModel::flags(index);
|
Qt::ItemFlags f = QAbstractTableModel::flags(index);
|
||||||
if (edit && index.column() != 3) {
|
if (edit && index.column() != 3) {
|
||||||
f = Qt::ItemIsEditable | f;
|
f = Qt::ItemIsEditable | f;
|
||||||
@ -109,8 +107,7 @@ Qt::ItemFlags UI::VCard::PhonesModel::flags(const QModelIndex& index) const
|
|||||||
return f;
|
return f;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool UI::VCard::PhonesModel::dropPrefered()
|
bool Models::Phones::dropPrefered() {
|
||||||
{
|
|
||||||
bool dropped = false;
|
bool dropped = false;
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for (Shared::VCard::Phone& phone : deque) {
|
for (Shared::VCard::Phone& phone : deque) {
|
||||||
@ -125,15 +122,13 @@ bool UI::VCard::PhonesModel::dropPrefered()
|
|||||||
return dropped;
|
return dropped;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UI::VCard::PhonesModel::getPhones(std::deque<Shared::VCard::Phone>& phones) const
|
void Models::Phones::getPhones(std::deque<Shared::VCard::Phone>& phones) const {
|
||||||
{
|
|
||||||
for (const Shared::VCard::Phone& my : deque) {
|
for (const Shared::VCard::Phone& my : deque) {
|
||||||
phones.emplace_back(my);
|
phones.emplace_back(my);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool UI::VCard::PhonesModel::isPreferred(quint32 row) const
|
bool Models::Phones::isPreferred(quint32 row) const {
|
||||||
{
|
|
||||||
if (row < deque.size()) {
|
if (row < deque.size()) {
|
||||||
return deque[row].prefered;
|
return deque[row].prefered;
|
||||||
} else {
|
} else {
|
||||||
@ -141,8 +136,7 @@ bool UI::VCard::PhonesModel::isPreferred(quint32 row) const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UI::VCard::PhonesModel::removeLines(quint32 index, quint32 count)
|
void Models::Phones::removeLines(quint32 index, quint32 count) {
|
||||||
{
|
|
||||||
if (index < deque.size()) {
|
if (index < deque.size()) {
|
||||||
quint32 maxCount = deque.size() - index;
|
quint32 maxCount = deque.size() - index;
|
||||||
if (count > maxCount) {
|
if (count > maxCount) {
|
||||||
@ -159,13 +153,7 @@ void UI::VCard::PhonesModel::removeLines(quint32 index, quint32 count)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UI::VCard::PhonesModel::revertPreferred(quint32 row)
|
bool Models::Phones::setData(const QModelIndex& index, const QVariant& value, int role) {
|
||||||
{
|
|
||||||
setData(createIndex(row, 3), !isPreferred(row));
|
|
||||||
}
|
|
||||||
|
|
||||||
bool UI::VCard::PhonesModel::setData(const QModelIndex& index, const QVariant& value, int role)
|
|
||||||
{
|
|
||||||
if (role == Qt::EditRole && checkIndex(index)) {
|
if (role == Qt::EditRole && checkIndex(index)) {
|
||||||
Shared::VCard::Phone& item = deque[index.row()];
|
Shared::VCard::Phone& item = deque[index.row()];
|
||||||
switch (index.column()) {
|
switch (index.column()) {
|
||||||
@ -204,8 +192,7 @@ bool UI::VCard::PhonesModel::setData(const QModelIndex& index, const QVariant& v
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void UI::VCard::PhonesModel::setPhones(const std::deque<Shared::VCard::Phone>& phones)
|
void Models::Phones::setPhones(const std::deque<Shared::VCard::Phone>& phones) {
|
||||||
{
|
|
||||||
if (deque.size() > 0) {
|
if (deque.size() > 0) {
|
||||||
removeLines(0, deque.size());
|
removeLines(0, deque.size());
|
||||||
}
|
}
|
||||||
@ -218,8 +205,3 @@ void UI::VCard::PhonesModel::setPhones(const std::deque<Shared::VCard::Phone>& p
|
|||||||
endInsertRows();
|
endInsertRows();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QString UI::VCard::PhonesModel::getPhone(quint32 row) const
|
|
||||||
{
|
|
||||||
return deque[row].number;
|
|
||||||
}
|
|
@ -16,25 +16,19 @@
|
|||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef UI_VCARD_PHONESMODEL_H
|
#ifndef MODELS_PHONES_H
|
||||||
#define UI_VCARD_PHONESMODEL_H
|
#define MODELS_PHONES_H
|
||||||
|
|
||||||
#include <QAbstractTableModel>
|
#include <QAbstractTableModel>
|
||||||
#include <QIcon>
|
#include <QIcon>
|
||||||
|
|
||||||
#include "shared/vcard.h"
|
#include "shared/vcard.h"
|
||||||
|
|
||||||
namespace UI {
|
namespace Models {
|
||||||
namespace VCard {
|
class Phones : public QAbstractTableModel {
|
||||||
|
|
||||||
/**
|
|
||||||
* @todo write docs
|
|
||||||
*/
|
|
||||||
class PhonesModel : public QAbstractTableModel
|
|
||||||
{
|
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
public:
|
public:
|
||||||
PhonesModel(bool edit = false, QObject *parent = nullptr);
|
Phones(bool edit = false, QObject *parent = nullptr);
|
||||||
|
|
||||||
QVariant data(const QModelIndex& index, int role) const override;
|
QVariant data(const QModelIndex& index, int role) const override;
|
||||||
int columnCount(const QModelIndex& parent) const override;
|
int columnCount(const QModelIndex& parent) const override;
|
||||||
@ -60,6 +54,6 @@ private:
|
|||||||
bool dropPrefered();
|
bool dropPrefered();
|
||||||
};
|
};
|
||||||
|
|
||||||
}}
|
}
|
||||||
|
|
||||||
#endif // UI_VCARD_PHONESMODEL_H
|
#endif // MODELS_PHONES_H
|
@ -18,6 +18,7 @@ target_sources(squawk PRIVATE
|
|||||||
)
|
)
|
||||||
|
|
||||||
add_subdirectory(vcard)
|
add_subdirectory(vcard)
|
||||||
|
add_subdirectory(info)
|
||||||
add_subdirectory(messageline)
|
add_subdirectory(messageline)
|
||||||
add_subdirectory(settings)
|
add_subdirectory(settings)
|
||||||
add_subdirectory(accounts)
|
add_subdirectory(accounts)
|
||||||
|
27
ui/widgets/info/CMakeLists.txt
Normal file
27
ui/widgets/info/CMakeLists.txt
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
set(SOURCE_FILES
|
||||||
|
info.cpp
|
||||||
|
contactgeneral.cpp
|
||||||
|
contactcontacts.cpp
|
||||||
|
)
|
||||||
|
|
||||||
|
set(UI_FILES
|
||||||
|
info.ui
|
||||||
|
contactgeneral.ui
|
||||||
|
contactcontacts.ui
|
||||||
|
)
|
||||||
|
|
||||||
|
set(HEADER_FILES
|
||||||
|
info.h
|
||||||
|
contactgeneral.h
|
||||||
|
contactcontacts.h
|
||||||
|
)
|
||||||
|
|
||||||
|
target_sources(squawk PRIVATE
|
||||||
|
${SOURCE_FILES}
|
||||||
|
${UI_FILES}
|
||||||
|
${HEADER_FILES}
|
||||||
|
)
|
||||||
|
|
||||||
|
if (WITH_OMEMO)
|
||||||
|
add_subdirectory(omemo)
|
||||||
|
endif()
|
31
ui/widgets/info/contactcontacts.cpp
Normal file
31
ui/widgets/info/contactcontacts.cpp
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
// 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 "contactcontacts.h"
|
||||||
|
#include "ui_contactcontacts.h"
|
||||||
|
|
||||||
|
UI::ContactContacts::ContactContacts(const QString& jid, QWidget* parent):
|
||||||
|
QWidget(parent),
|
||||||
|
m_ui(new Ui::ContactContacts)
|
||||||
|
{
|
||||||
|
m_ui->setupUi(this);
|
||||||
|
|
||||||
|
m_ui->jabberID->setText(jid);
|
||||||
|
m_ui->jabberID->setReadOnly(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
UI::ContactContacts::~ContactContacts() {
|
||||||
|
}
|
41
ui/widgets/info/contactcontacts.h
Normal file
41
ui/widgets/info/contactcontacts.h
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
// 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 UI_WIDGETS_CONTACTCONTACTS_H
|
||||||
|
#define UI_WIDGETS_CONTACTCONTACTS_H
|
||||||
|
|
||||||
|
#include <QWidget>
|
||||||
|
#include <QScopedPointer>
|
||||||
|
|
||||||
|
namespace UI {
|
||||||
|
namespace Ui
|
||||||
|
{
|
||||||
|
class ContactContacts;
|
||||||
|
}
|
||||||
|
|
||||||
|
class ContactContacts : public QWidget {
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
ContactContacts(const QString& jid, QWidget* parent = nullptr);
|
||||||
|
~ContactContacts();
|
||||||
|
|
||||||
|
private:
|
||||||
|
QScopedPointer<Ui::ContactContacts> m_ui;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // UI_WIDGETS_CONTACTCONTACTS_H
|
282
ui/widgets/info/contactcontacts.ui
Normal file
282
ui/widgets/info/contactcontacts.ui
Normal file
@ -0,0 +1,282 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>UI::ContactContacts</class>
|
||||||
|
<widget class="QWidget" name="Contacts">
|
||||||
|
<attribute name="title">
|
||||||
|
<string>Contacts</string>
|
||||||
|
</attribute>
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout_7">
|
||||||
|
<property name="spacing">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>6</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="contactHeading">
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">font: 600 24pt ;</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Contact</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QScrollArea" name="scrollArea">
|
||||||
|
<property name="frameShape">
|
||||||
|
<enum>QFrame::NoFrame</enum>
|
||||||
|
</property>
|
||||||
|
<property name="frameShadow">
|
||||||
|
<enum>QFrame::Plain</enum>
|
||||||
|
</property>
|
||||||
|
<property name="lineWidth">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="widgetResizable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<widget class="QWidget" name="contactScrollArea">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>545</width>
|
||||||
|
<height>544</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="gridLayout_3" columnstretch="1,3,1">
|
||||||
|
<item row="7" column="1">
|
||||||
|
<widget class="Line" name="phonesLine">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="1">
|
||||||
|
<widget class="QTableView" name="emailsView">
|
||||||
|
<property name="selectionMode">
|
||||||
|
<enum>QAbstractItemView::ExtendedSelection</enum>
|
||||||
|
</property>
|
||||||
|
<property name="selectionBehavior">
|
||||||
|
<enum>QAbstractItemView::SelectRows</enum>
|
||||||
|
</property>
|
||||||
|
<property name="showGrid">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<attribute name="horizontalHeaderVisible">
|
||||||
|
<bool>false</bool>
|
||||||
|
</attribute>
|
||||||
|
<attribute name="verticalHeaderVisible">
|
||||||
|
<bool>false</bool>
|
||||||
|
</attribute>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="10" column="1">
|
||||||
|
<widget class="Line" name="addressesLine">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="0" rowspan="12">
|
||||||
|
<spacer name="contactLeftSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="Line" name="contactFormLine">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="4" column="1">
|
||||||
|
<widget class="Line" name="emailsLine">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="11" column="1">
|
||||||
|
<spacer name="contactBottomSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item row="8" column="1">
|
||||||
|
<widget class="QLabel" name="addressesHeading">
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">font: 600 16pt;</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Addresses</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="6" column="1">
|
||||||
|
<widget class="QTableView" name="phonesView">
|
||||||
|
<property name="selectionBehavior">
|
||||||
|
<enum>QAbstractItemView::SelectRows</enum>
|
||||||
|
</property>
|
||||||
|
<property name="showGrid">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<attribute name="horizontalHeaderVisible">
|
||||||
|
<bool>false</bool>
|
||||||
|
</attribute>
|
||||||
|
<attribute name="verticalHeaderVisible">
|
||||||
|
<bool>false</bool>
|
||||||
|
</attribute>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="1">
|
||||||
|
<widget class="QLabel" name="emailsHeading">
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">font: 600 16pt;</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>E-Mail addresses</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<layout class="QFormLayout" name="contactForm">
|
||||||
|
<property name="formAlignment">
|
||||||
|
<set>Qt::AlignHCenter|Qt::AlignTop</set>
|
||||||
|
</property>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QLineEdit" name="jabberID">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>150</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>300</width>
|
||||||
|
<height>16777215</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QLabel" name="jabberIDLabel">
|
||||||
|
<property name="text">
|
||||||
|
<string>Jabber ID</string>
|
||||||
|
</property>
|
||||||
|
<property name="buddy">
|
||||||
|
<cstring>jabberID</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QLineEdit" name="url">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>150</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>300</width>
|
||||||
|
<height>16777215</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QLabel" name="urlLabel">
|
||||||
|
<property name="text">
|
||||||
|
<string>Web site</string>
|
||||||
|
</property>
|
||||||
|
<property name="buddy">
|
||||||
|
<cstring>url</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="2" rowspan="12">
|
||||||
|
<spacer name="contactRightSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item row="5" column="1">
|
||||||
|
<widget class="QLabel" name="phenesHeading">
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">font: 600 16pt;</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Phone numbers</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="9" column="1">
|
||||||
|
<widget class="QTableView" name="addressesView">
|
||||||
|
<property name="selectionBehavior">
|
||||||
|
<enum>QAbstractItemView::SelectRows</enum>
|
||||||
|
</property>
|
||||||
|
<property name="showGrid">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<attribute name="horizontalHeaderVisible">
|
||||||
|
<bool>false</bool>
|
||||||
|
</attribute>
|
||||||
|
<attribute name="verticalHeaderVisible">
|
||||||
|
<bool>false</bool>
|
||||||
|
</attribute>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<resources/>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
28
ui/widgets/info/contactgeneral.cpp
Normal file
28
ui/widgets/info/contactgeneral.cpp
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
// 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 "contactgeneral.h"
|
||||||
|
#include "ui_contactgeneral.h"
|
||||||
|
|
||||||
|
UI::ContactGeneral::ContactGeneral(QWidget* parent):
|
||||||
|
QWidget(parent),
|
||||||
|
m_ui(new Ui::ContactGeneral)
|
||||||
|
{
|
||||||
|
m_ui->setupUi(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
UI::ContactGeneral::~ContactGeneral()
|
||||||
|
{}
|
41
ui/widgets/info/contactgeneral.h
Normal file
41
ui/widgets/info/contactgeneral.h
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
// 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 UI_WIDGETS_CONTACTGENERAL_H
|
||||||
|
#define UI_WIDGETS_CONTACTGENERAL_H
|
||||||
|
|
||||||
|
#include <QWidget>
|
||||||
|
#include <QScopedPointer>
|
||||||
|
|
||||||
|
namespace UI {
|
||||||
|
namespace Ui
|
||||||
|
{
|
||||||
|
class ContactGeneral;
|
||||||
|
}
|
||||||
|
|
||||||
|
class ContactGeneral : public QWidget{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
ContactGeneral(QWidget* parent = nullptr);
|
||||||
|
~ContactGeneral();
|
||||||
|
|
||||||
|
private:
|
||||||
|
QScopedPointer<Ui::ContactGeneral> m_ui;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // UI_WIDGETS_CONTACTGENERAL_H
|
448
ui/widgets/info/contactgeneral.ui
Normal file
448
ui/widgets/info/contactgeneral.ui
Normal file
@ -0,0 +1,448 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>UI::ContactGeneral</class>
|
||||||
|
<widget class="QWidget" name="General">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>340</width>
|
||||||
|
<height>625</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="gridLayout_2" columnstretch="1,2,2,1">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>6</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="horizontalSpacing">
|
||||||
|
<number>6</number>
|
||||||
|
</property>
|
||||||
|
<item row="6" column="1" colspan="2">
|
||||||
|
<widget class="QLabel" name="organizationHeading">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">font: 600 16pt;</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Organization</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="1">
|
||||||
|
<layout class="QFormLayout" name="personalForm">
|
||||||
|
<property name="sizeConstraint">
|
||||||
|
<enum>QLayout::SetDefaultConstraint</enum>
|
||||||
|
</property>
|
||||||
|
<property name="formAlignment">
|
||||||
|
<set>Qt::AlignHCenter|Qt::AlignTop</set>
|
||||||
|
</property>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QLineEdit" name="middleName">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>200</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>350</width>
|
||||||
|
<height>16777215</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QLineEdit" name="firstName">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>200</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>350</width>
|
||||||
|
<height>16777215</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QLabel" name="middleNameLabel">
|
||||||
|
<property name="text">
|
||||||
|
<string>Middle name</string>
|
||||||
|
</property>
|
||||||
|
<property name="buddy">
|
||||||
|
<cstring>middleName</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QLabel" name="firstNameLabel">
|
||||||
|
<property name="text">
|
||||||
|
<string>First name</string>
|
||||||
|
</property>
|
||||||
|
<property name="buddy">
|
||||||
|
<cstring>firstName</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="0">
|
||||||
|
<widget class="QLabel" name="lastNameLabel">
|
||||||
|
<property name="text">
|
||||||
|
<string>Last name</string>
|
||||||
|
</property>
|
||||||
|
<property name="buddy">
|
||||||
|
<cstring>lastName</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="1">
|
||||||
|
<widget class="QLineEdit" name="lastName">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>200</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>350</width>
|
||||||
|
<height>16777215</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="0">
|
||||||
|
<widget class="QLabel" name="nickNameLabel">
|
||||||
|
<property name="text">
|
||||||
|
<string>Nick name</string>
|
||||||
|
</property>
|
||||||
|
<property name="buddy">
|
||||||
|
<cstring>nickName</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="1">
|
||||||
|
<widget class="QLineEdit" name="nickName">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>200</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>350</width>
|
||||||
|
<height>16777215</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="4" column="0">
|
||||||
|
<widget class="QLabel" name="birthdayLabel">
|
||||||
|
<property name="text">
|
||||||
|
<string>Birthday</string>
|
||||||
|
</property>
|
||||||
|
<property name="buddy">
|
||||||
|
<cstring>birthday</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="4" column="1">
|
||||||
|
<widget class="QDateEdit" name="birthday"/>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item row="7" column="1" colspan="2">
|
||||||
|
<layout class="QFormLayout" name="organizationForm">
|
||||||
|
<property name="formAlignment">
|
||||||
|
<set>Qt::AlignHCenter|Qt::AlignTop</set>
|
||||||
|
</property>
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QLabel" name="organizationNameLabel">
|
||||||
|
<property name="text">
|
||||||
|
<string>Organization name</string>
|
||||||
|
</property>
|
||||||
|
<property name="buddy">
|
||||||
|
<cstring>organizationName</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QLineEdit" name="organizationName">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>200</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>350</width>
|
||||||
|
<height>16777215</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QLabel" name="organizationDepartmentLabel">
|
||||||
|
<property name="text">
|
||||||
|
<string>Unit / Department</string>
|
||||||
|
</property>
|
||||||
|
<property name="buddy">
|
||||||
|
<cstring>organizationDepartment</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1">
|
||||||
|
<widget class="QLineEdit" name="organizationDepartment">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>200</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>350</width>
|
||||||
|
<height>16777215</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="0">
|
||||||
|
<widget class="QLabel" name="roleLabel">
|
||||||
|
<property name="text">
|
||||||
|
<string>Role / Profession</string>
|
||||||
|
</property>
|
||||||
|
<property name="buddy">
|
||||||
|
<cstring>organizationRole</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="1">
|
||||||
|
<widget class="QLineEdit" name="organizationRole">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>200</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>350</width>
|
||||||
|
<height>16777215</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="0">
|
||||||
|
<widget class="QLabel" name="organizationTitleLabel">
|
||||||
|
<property name="text">
|
||||||
|
<string>Job title</string>
|
||||||
|
</property>
|
||||||
|
<property name="buddy">
|
||||||
|
<cstring>organizationTitle</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="1">
|
||||||
|
<widget class="QLineEdit" name="organizationTitle">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>200</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>350</width>
|
||||||
|
<height>16777215</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item row="8" column="1" colspan="2">
|
||||||
|
<widget class="Line" name="organizationLine">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="2" column="1" colspan="2">
|
||||||
|
<layout class="QFormLayout" name="commonForm">
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QLineEdit" name="fullName"/>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QLabel" name="fullNameLabel">
|
||||||
|
<property name="text">
|
||||||
|
<string>Full name</string>
|
||||||
|
</property>
|
||||||
|
<property name="buddy">
|
||||||
|
<cstring>fullName</cstring>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="0" rowspan="7">
|
||||||
|
<spacer name="generalLeftHSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item row="4" column="1" colspan="2">
|
||||||
|
<widget class="Line" name="personalLine">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="0" column="0" colspan="4">
|
||||||
|
<widget class="QLabel" name="generalHeading">
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">font: 600 24pt ;</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>General</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="3" rowspan="7">
|
||||||
|
<spacer name="generalRightHSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="1" colspan="2">
|
||||||
|
<widget class="QLabel" name="personalHeading">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">font: 600 16pt;</string>
|
||||||
|
</property>
|
||||||
|
<property name="frameShape">
|
||||||
|
<enum>QFrame::NoFrame</enum>
|
||||||
|
</property>
|
||||||
|
<property name="frameShadow">
|
||||||
|
<enum>QFrame::Plain</enum>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Personal information</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="3" column="2">
|
||||||
|
<widget class="QToolButton" name="avatarButton">
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset theme="user">
|
||||||
|
<normaloff>:/images/fallback/dark/big/user.svg</normaloff>:/images/fallback/dark/big/user.svg</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="iconSize">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="popupMode">
|
||||||
|
<enum>QToolButton::InstantPopup</enum>
|
||||||
|
</property>
|
||||||
|
<property name="toolButtonStyle">
|
||||||
|
<enum>Qt::ToolButtonIconOnly</enum>
|
||||||
|
</property>
|
||||||
|
<property name="arrowType">
|
||||||
|
<enum>Qt::NoArrow</enum>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="9" column="1" colspan="2">
|
||||||
|
<spacer name="verticalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>20</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<tabstops>
|
||||||
|
<tabstop>fullName</tabstop>
|
||||||
|
<tabstop>firstName</tabstop>
|
||||||
|
<tabstop>middleName</tabstop>
|
||||||
|
<tabstop>lastName</tabstop>
|
||||||
|
<tabstop>nickName</tabstop>
|
||||||
|
<tabstop>birthday</tabstop>
|
||||||
|
<tabstop>avatarButton</tabstop>
|
||||||
|
<tabstop>organizationName</tabstop>
|
||||||
|
<tabstop>organizationDepartment</tabstop>
|
||||||
|
<tabstop>organizationRole</tabstop>
|
||||||
|
<tabstop>organizationTitle</tabstop>
|
||||||
|
</tabstops>
|
||||||
|
<resources>
|
||||||
|
<include location="../../../resources/resources.qrc"/>
|
||||||
|
</resources>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
30
ui/widgets/info/info.cpp
Normal file
30
ui/widgets/info/info.cpp
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
// 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"
|
||||||
|
#include "ui_info.h"
|
||||||
|
|
||||||
|
UI::Info::Info(const Shared::Info& info, QWidget* parent):
|
||||||
|
QWidget(parent),
|
||||||
|
m_ui(new Ui::Info())
|
||||||
|
{
|
||||||
|
m_ui->setupUi(this);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
UI::Info::~Info()
|
||||||
|
{}
|
45
ui/widgets/info/info.h
Normal file
45
ui/widgets/info/info.h
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
// 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 UI_WIDGETS_INFO_H
|
||||||
|
#define UI_WIDGETS_INFO_H
|
||||||
|
|
||||||
|
#include <QWidget>
|
||||||
|
#include <QScopedPointer>
|
||||||
|
|
||||||
|
#include <shared/info.h>
|
||||||
|
|
||||||
|
#include "contactgeneral.h"
|
||||||
|
|
||||||
|
namespace UI {
|
||||||
|
namespace Ui
|
||||||
|
{
|
||||||
|
class Info;
|
||||||
|
}
|
||||||
|
|
||||||
|
class Info : public QWidget {
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
Info(const Shared::Info& info, QWidget* parent = nullptr);
|
||||||
|
~Info();
|
||||||
|
|
||||||
|
private:
|
||||||
|
QScopedPointer<Ui::Info> m_ui;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // UI_WIDGETS_INFO_H
|
137
ui/widgets/info/info.ui
Normal file
137
ui/widgets/info/info.ui
Normal file
@ -0,0 +1,137 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>UI::Info</class>
|
||||||
|
<widget class="QWidget" name="UI::Info">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>400</width>
|
||||||
|
<height>300</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
|
||||||
|
<layout class="QVBoxLayout" name="verticalLayout">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>6</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>6</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>6</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>6</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="title">
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">font: 16pt </string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string notr="true">Contact john@dow.org card</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QLabel" name="receivingTimeLabel">
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">font: italic 8pt;</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Received 12.07.2007 at 17.35</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QTabWidget" name="tabWidget">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="focusPolicy">
|
||||||
|
<enum>Qt::TabFocus</enum>
|
||||||
|
</property>
|
||||||
|
<property name="tabPosition">
|
||||||
|
<enum>QTabWidget::North</enum>
|
||||||
|
</property>
|
||||||
|
<property name="tabShape">
|
||||||
|
<enum>QTabWidget::Rounded</enum>
|
||||||
|
</property>
|
||||||
|
<property name="currentIndex">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<property name="elideMode">
|
||||||
|
<enum>Qt::ElideNone</enum>
|
||||||
|
</property>
|
||||||
|
<property name="documentMode">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="tabBarAutoHide">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<widget class="QWidget" name="Description">
|
||||||
|
<attribute name="title">
|
||||||
|
<string>Description</string>
|
||||||
|
</attribute>
|
||||||
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>6</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="horizontalSpacing">
|
||||||
|
<number>6</number>
|
||||||
|
</property>
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QLabel" name="descriptionHeading">
|
||||||
|
<property name="styleSheet">
|
||||||
|
<string notr="true">font: 600 24pt ;</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Description</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item row="1" column="0">
|
||||||
|
<widget class="QTextEdit" name="description">
|
||||||
|
<property name="frameShape">
|
||||||
|
<enum>QFrame::StyledPanel</enum>
|
||||||
|
</property>
|
||||||
|
<property name="textInteractionFlags">
|
||||||
|
<set>Qt::LinksAccessibleByMouse|Qt::TextEditable|Qt::TextEditorInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QDialogButtonBox" name="buttonBox">
|
||||||
|
<property name="standardButtons">
|
||||||
|
<set>QDialogButtonBox::Close|QDialogButtonBox::Save</set>
|
||||||
|
</property>
|
||||||
|
<property name="centerButtons">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<resources/>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
@ -2,8 +2,6 @@ target_sources(squawk PRIVATE
|
|||||||
omemo.cpp
|
omemo.cpp
|
||||||
omemo.h
|
omemo.h
|
||||||
omemo.ui
|
omemo.ui
|
||||||
keysmodel.cpp
|
|
||||||
keysmodel.h
|
|
||||||
keydelegate.cpp
|
keydelegate.cpp
|
||||||
keydelegate.h
|
keydelegate.h
|
||||||
)
|
)
|
@ -18,7 +18,7 @@
|
|||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
|
||||||
#include "keysmodel.h"
|
#include "ui/models/info/omemo/keys.h"
|
||||||
#include <shared/global.h>
|
#include <shared/global.h>
|
||||||
|
|
||||||
constexpr uint8_t margin = 10;
|
constexpr uint8_t margin = 10;
|
||||||
@ -56,7 +56,7 @@ void UI::KeyDelegate::paint(QPainter* painter, const QStyleOptionViewItem& optio
|
|||||||
painter->restore();
|
painter->restore();
|
||||||
}
|
}
|
||||||
|
|
||||||
QVariant dirtyV = index.data(UI::KeysModel::Dirty);
|
QVariant dirtyV = index.data(Models::Keys::Dirty);
|
||||||
if (dirtyV.isValid() && dirtyV.toBool()) {
|
if (dirtyV.isValid() && dirtyV.toBool()) {
|
||||||
painter->save();
|
painter->save();
|
||||||
rect.setWidth(margin / 2);
|
rect.setWidth(margin / 2);
|
||||||
@ -66,7 +66,7 @@ void UI::KeyDelegate::paint(QPainter* painter, const QStyleOptionViewItem& optio
|
|||||||
}
|
}
|
||||||
|
|
||||||
rect.adjust(margin, margin, -margin, -margin);
|
rect.adjust(margin, margin, -margin, -margin);
|
||||||
QVariant labelV = index.data(UI::KeysModel::Label);
|
QVariant labelV = index.data(Models::Keys::Label);
|
||||||
if (labelV.isValid()) {
|
if (labelV.isValid()) {
|
||||||
QString label = labelV.toString();
|
QString label = labelV.toString();
|
||||||
if (label.size() > 0) {
|
if (label.size() > 0) {
|
||||||
@ -80,7 +80,7 @@ void UI::KeyDelegate::paint(QPainter* painter, const QStyleOptionViewItem& optio
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QVariant fingerPrintV = index.data(UI::KeysModel::FingerPrint);
|
QVariant fingerPrintV = index.data(Models::Keys::FingerPrint);
|
||||||
if (fingerPrintV.isValid()) {
|
if (fingerPrintV.isValid()) {
|
||||||
painter->save();
|
painter->save();
|
||||||
painter->setFont(fingerPrintFont);
|
painter->setFont(fingerPrintFont);
|
||||||
@ -111,7 +111,7 @@ void UI::KeyDelegate::paint(QPainter* painter, const QStyleOptionViewItem& optio
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
QVariant lastV = index.data(UI::KeysModel::LastInteraction);
|
QVariant lastV = index.data(Models::Keys::LastInteraction);
|
||||||
if (lastV.isValid()) {
|
if (lastV.isValid()) {
|
||||||
QDateTime last = lastV.toDateTime();
|
QDateTime last = lastV.toDateTime();
|
||||||
if (last.isValid()) {
|
if (last.isValid()) {
|
||||||
@ -125,7 +125,7 @@ void UI::KeyDelegate::paint(QPainter* painter, const QStyleOptionViewItem& optio
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QVariant levelV = index.data(UI::KeysModel::TrustLevel);
|
QVariant levelV = index.data(Models::Keys::TrustLevel);
|
||||||
if (levelV.isValid()) {
|
if (levelV.isValid()) {
|
||||||
Shared::TrustLevel level = static_cast<Shared::TrustLevel>(levelV.toUInt());
|
Shared::TrustLevel level = static_cast<Shared::TrustLevel>(levelV.toUInt());
|
||||||
QString levelName = Shared::Global::getName(level);
|
QString levelName = Shared::Global::getName(level);
|
||||||
@ -150,7 +150,7 @@ QSize UI::KeyDelegate::sizeHint(const QStyleOptionViewItem& option, const QModel
|
|||||||
int mw = margin * 2;
|
int mw = margin * 2;
|
||||||
int width = 0;
|
int width = 0;
|
||||||
|
|
||||||
QVariant labelV = index.data(UI::KeysModel::Label);
|
QVariant labelV = index.data(Models::Keys::Label);
|
||||||
if (labelV.isValid()) {
|
if (labelV.isValid()) {
|
||||||
QString label = labelV.toString();
|
QString label = labelV.toString();
|
||||||
if (label.size() > 0) {
|
if (label.size() > 0) {
|
||||||
@ -159,7 +159,7 @@ QSize UI::KeyDelegate::sizeHint(const QStyleOptionViewItem& option, const QModel
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QVariant fingerPrintV = index.data(UI::KeysModel::FingerPrint);
|
QVariant fingerPrintV = index.data(Models::Keys::FingerPrint);
|
||||||
if (fingerPrintV.isValid()) {
|
if (fingerPrintV.isValid()) {
|
||||||
QString hex = fingerPrintV.toByteArray().toHex();
|
QString hex = fingerPrintV.toByteArray().toHex();
|
||||||
uint8_t parts = hex.size() / partSize;
|
uint8_t parts = hex.size() / partSize;
|
||||||
@ -177,7 +177,7 @@ QSize UI::KeyDelegate::sizeHint(const QStyleOptionViewItem& option, const QModel
|
|||||||
width = std::max(width, firstLine * fingerPrintMetrics.horizontalAdvance(hex, partSize) + (firstLine - 1) * spaceWidth);
|
width = std::max(width, firstLine * fingerPrintMetrics.horizontalAdvance(hex, partSize) + (firstLine - 1) * spaceWidth);
|
||||||
width += 1; //there is a mistake somewhere, this the cheapest way to compensate it
|
width += 1; //there is a mistake somewhere, this the cheapest way to compensate it
|
||||||
}
|
}
|
||||||
QVariant lastV = index.data(UI::KeysModel::LastInteraction);
|
QVariant lastV = index.data(Models::Keys::LastInteraction);
|
||||||
if (lastV.isValid()) {
|
if (lastV.isValid()) {
|
||||||
QDateTime last = lastV.toDateTime();
|
QDateTime last = lastV.toDateTime();
|
||||||
if (last.isValid()) {
|
if (last.isValid()) {
|
||||||
@ -187,7 +187,7 @@ QSize UI::KeyDelegate::sizeHint(const QStyleOptionViewItem& option, const QModel
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QVariant levelV = index.data(UI::KeysModel::TrustLevel);
|
QVariant levelV = index.data(Models::Keys::TrustLevel);
|
||||||
if (levelV.isValid()) {
|
if (levelV.isValid()) {
|
||||||
Shared::TrustLevel level = static_cast<Shared::TrustLevel>(levelV.toUInt());
|
Shared::TrustLevel level = static_cast<Shared::TrustLevel>(levelV.toUInt());
|
||||||
QString levelName = Shared::Global::getName(level);
|
QString levelName = Shared::Global::getName(level);
|
@ -71,13 +71,13 @@ void Omemo::onActiveKeysContextMenu(const QPoint& pos) {
|
|||||||
contextMenu->clear();
|
contextMenu->clear();
|
||||||
QModelIndex index = m_ui->keysView->indexAt(pos);
|
QModelIndex index = m_ui->keysView->indexAt(pos);
|
||||||
if (index.isValid()) {
|
if (index.isValid()) {
|
||||||
QVariant dirtyV = index.data(UI::KeysModel::Dirty);
|
QVariant dirtyV = index.data(Models::Keys::Dirty);
|
||||||
if (dirtyV.isValid() && dirtyV.toBool()) {
|
if (dirtyV.isValid() && dirtyV.toBool()) {
|
||||||
QAction* rev = contextMenu->addAction(Shared::icon("clean"), tr("Revert changes"));
|
QAction* rev = contextMenu->addAction(Shared::icon("clean"), tr("Revert changes"));
|
||||||
connect(rev, &QAction::triggered, std::bind(&UI::KeysModel::revertKey, &keysModel, index.row()));
|
connect(rev, &QAction::triggered, std::bind(&Models::Keys::revertKey, &keysModel, index.row()));
|
||||||
}
|
}
|
||||||
|
|
||||||
QVariant levelV = index.data(UI::KeysModel::TrustLevel);
|
QVariant levelV = index.data(Models::Keys::TrustLevel);
|
||||||
if (levelV.isValid()) {
|
if (levelV.isValid()) {
|
||||||
Shared::TrustLevel level = static_cast<Shared::TrustLevel>(levelV.toUInt());
|
Shared::TrustLevel level = static_cast<Shared::TrustLevel>(levelV.toUInt());
|
||||||
if (level == Shared::TrustLevel::undecided ||
|
if (level == Shared::TrustLevel::undecided ||
|
||||||
@ -86,7 +86,7 @@ void Omemo::onActiveKeysContextMenu(const QPoint& pos) {
|
|||||||
) {
|
) {
|
||||||
QAction* rev = contextMenu->addAction(Shared::icon("favorite"), tr("Trust"));
|
QAction* rev = contextMenu->addAction(Shared::icon("favorite"), tr("Trust"));
|
||||||
connect(rev, &QAction::triggered,
|
connect(rev, &QAction::triggered,
|
||||||
std::bind(&UI::KeysModel::setTrustLevel, &keysModel,
|
std::bind(&Models::Keys::setTrustLevel, &keysModel,
|
||||||
index.row(), Shared::TrustLevel::manuallyTrusted
|
index.row(), Shared::TrustLevel::manuallyTrusted
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
@ -99,7 +99,7 @@ void Omemo::onActiveKeysContextMenu(const QPoint& pos) {
|
|||||||
) {
|
) {
|
||||||
QAction* rev = contextMenu->addAction(Shared::icon("unfavorite"), tr("Distrust"));
|
QAction* rev = contextMenu->addAction(Shared::icon("unfavorite"), tr("Distrust"));
|
||||||
connect(rev, &QAction::triggered,
|
connect(rev, &QAction::triggered,
|
||||||
std::bind(&UI::KeysModel::setTrustLevel, &keysModel,
|
std::bind(&Models::Keys::setTrustLevel, &keysModel,
|
||||||
index.row(), Shared::TrustLevel::manuallyDistrusted
|
index.row(), Shared::TrustLevel::manuallyDistrusted
|
||||||
)
|
)
|
||||||
);
|
);
|
@ -21,7 +21,7 @@
|
|||||||
#include <QScopedPointer>
|
#include <QScopedPointer>
|
||||||
#include <QMenu>
|
#include <QMenu>
|
||||||
|
|
||||||
#include "keysmodel.h"
|
#include "ui/models/info/omemo/keys.h"
|
||||||
#include "keydelegate.h"
|
#include "keydelegate.h"
|
||||||
#include "shared/icons.h"
|
#include "shared/icons.h"
|
||||||
|
|
||||||
@ -46,8 +46,8 @@ private:
|
|||||||
QScopedPointer<Ui::Omemo> m_ui;
|
QScopedPointer<Ui::Omemo> m_ui;
|
||||||
UI::KeyDelegate keysDelegate;
|
UI::KeyDelegate keysDelegate;
|
||||||
UI::KeyDelegate unusedKeysDelegate;
|
UI::KeyDelegate unusedKeysDelegate;
|
||||||
UI::KeysModel keysModel;
|
Models::Keys keysModel;
|
||||||
UI::KeysModel unusedKeysModel;
|
Models::Keys unusedKeysModel;
|
||||||
QMenu* contextMenu;
|
QMenu* contextMenu;
|
||||||
};
|
};
|
||||||
|
|
@ -20,7 +20,7 @@
|
|||||||
#define ROOM_H
|
#define ROOM_H
|
||||||
|
|
||||||
#include "conversation.h"
|
#include "conversation.h"
|
||||||
#include "../models/room.h"
|
#include "ui/models/room.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @todo write docs
|
* @todo write docs
|
||||||
|
@ -1,13 +1,5 @@
|
|||||||
target_sources(squawk PRIVATE
|
target_sources(squawk PRIVATE
|
||||||
emailsmodel.cpp
|
|
||||||
emailsmodel.h
|
|
||||||
phonesmodel.cpp
|
|
||||||
phonesmodel.h
|
|
||||||
vcard.cpp
|
vcard.cpp
|
||||||
vcard.h
|
vcard.h
|
||||||
vcard.ui
|
vcard.ui
|
||||||
)
|
)
|
||||||
|
|
||||||
if (WITH_OMEMO)
|
|
||||||
add_subdirectory(omemo)
|
|
||||||
endif()
|
|
||||||
|
@ -235,10 +235,10 @@ void VCard::onContextMenu(const QPoint& point) {
|
|||||||
int row = sm->selectedRows().at(0).row();
|
int row = sm->selectedRows().at(0).row();
|
||||||
if (emails.isPreferred(row)) {
|
if (emails.isPreferred(row)) {
|
||||||
QAction* rev = contextMenu->addAction(Shared::icon("unfavorite"), tr("Unset this email as preferred"));
|
QAction* rev = contextMenu->addAction(Shared::icon("unfavorite"), tr("Unset this email as preferred"));
|
||||||
connect(rev, &QAction::triggered, std::bind(&UI::VCard::EMailsModel::revertPreferred, &emails, row));
|
connect(rev, &QAction::triggered, std::bind(&Models::EMails::revertPreferred, &emails, row));
|
||||||
} else {
|
} else {
|
||||||
QAction* rev = contextMenu->addAction(Shared::icon("favorite"), tr("Set this email as preferred"));
|
QAction* rev = contextMenu->addAction(Shared::icon("favorite"), tr("Set this email as preferred"));
|
||||||
connect(rev, &QAction::triggered, std::bind(&UI::VCard::EMailsModel::revertPreferred, &emails, row));
|
connect(rev, &QAction::triggered, std::bind(&Models::EMails::revertPreferred, &emails, row));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -263,10 +263,10 @@ void VCard::onContextMenu(const QPoint& point) {
|
|||||||
int row = sm->selectedRows().at(0).row();
|
int row = sm->selectedRows().at(0).row();
|
||||||
if (phones.isPreferred(row)) {
|
if (phones.isPreferred(row)) {
|
||||||
QAction* rev = contextMenu->addAction(Shared::icon("view-media-favorite"), tr("Unset this phone as preferred"));
|
QAction* rev = contextMenu->addAction(Shared::icon("view-media-favorite"), tr("Unset this phone as preferred"));
|
||||||
connect(rev, &QAction::triggered, std::bind(&UI::VCard::PhonesModel::revertPreferred, &phones, row));
|
connect(rev, &QAction::triggered, std::bind(&Models::Phones::revertPreferred, &phones, row));
|
||||||
} else {
|
} else {
|
||||||
QAction* rev = contextMenu->addAction(Shared::icon("favorite"), tr("Set this phone as preferred"));
|
QAction* rev = contextMenu->addAction(Shared::icon("favorite"), tr("Set this phone as preferred"));
|
||||||
connect(rev, &QAction::triggered, std::bind(&UI::VCard::PhonesModel::revertPreferred, &phones, row));
|
connect(rev, &QAction::triggered, std::bind(&Models::Phones::revertPreferred, &phones, row));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -37,13 +37,13 @@
|
|||||||
#include <set>
|
#include <set>
|
||||||
|
|
||||||
#include "shared/vcard.h"
|
#include "shared/vcard.h"
|
||||||
#include "emailsmodel.h"
|
#include "ui/models/info/emails.h"
|
||||||
#include "phonesmodel.h"
|
#include "ui/models/info/phones.h"
|
||||||
#include "ui/utils/progress.h"
|
#include "ui/utils/progress.h"
|
||||||
#include "ui/utils/comboboxdelegate.h"
|
#include "ui/utils/comboboxdelegate.h"
|
||||||
|
|
||||||
#ifdef WITH_OMEMO
|
#ifdef WITH_OMEMO
|
||||||
#include "omemo/omemo.h"
|
#include "ui/widgets/info/omemo/omemo.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace Ui
|
namespace Ui
|
||||||
@ -92,8 +92,8 @@ private:
|
|||||||
QLabel* progressLabel;
|
QLabel* progressLabel;
|
||||||
QWidget* overlay;
|
QWidget* overlay;
|
||||||
QMenu* contextMenu;
|
QMenu* contextMenu;
|
||||||
UI::VCard::EMailsModel emails;
|
Models::EMails emails;
|
||||||
UI::VCard::PhonesModel phones;
|
Models::Phones phones;
|
||||||
ComboboxDelegate* roleDelegate;
|
ComboboxDelegate* roleDelegate;
|
||||||
ComboboxDelegate* phoneTypeDelegate;
|
ComboboxDelegate* phoneTypeDelegate;
|
||||||
#ifdef WITH_OMEMO
|
#ifdef WITH_OMEMO
|
||||||
|
Loading…
Reference in New Issue
Block a user