some initial classes for keys form

This commit is contained in:
Blue 2023-01-03 18:27:03 +03:00
parent b45a73b723
commit 5aa0f4bca9
Signed by untrusted user: blue
GPG key ID: 9B203B252A63EE38
11 changed files with 361 additions and 159 deletions

View file

@ -2,4 +2,6 @@ target_sources(squawk PRIVATE
omemo.cpp
omemo.h
omemo.ui
keysmodel.cpp
keysmodel.h
)

View file

@ -0,0 +1,71 @@
// 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 "keysmodel.h"
const QHash<int, QByteArray> UI::KeysModel::roles = {
{Label, "label"},
{FingerPrint, "fingerPrint"},
{TrustLevel, "trustLevel"}
};
UI::KeysModel::KeysModel(QObject* parent):
QAbstractListModel(parent),
keys()
{
}
UI::KeysModel::~KeysModel() {
}
void UI::KeysModel::addKey(const Shared::KeyInfo& info) {
beginInsertRows(QModelIndex(), keys.size(), keys.size());
keys.push_back(new Shared::KeyInfo(info));
endInsertRows();
}
QVariant UI::KeysModel::data(const QModelIndex& index, int role) const {
int i = index.row();
QVariant answer;
switch (role) {
case Qt::DisplayRole:
answer = keys[i]->label;
break;
}
return answer;
}
int UI::KeysModel::rowCount(const QModelIndex& parent) const {
return keys.size();
}
QHash<int, QByteArray> UI::KeysModel::roleNames() const {return roles;}
QModelIndex UI::KeysModel::index(int row, int column, const QModelIndex& parent) const {
if (!hasIndex(row, column, parent)) {
return QModelIndex();
}
return createIndex(row, column, keys[row]);
}

View file

@ -0,0 +1,58 @@
// 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_KEYSMODEL_H
#define UI_KEYSMODEL_H
#include <QAbstractListModel>
#include <shared/keyinfo.h>
namespace UI {
/**
* @todo write docs
*/
class KeysModel : public QAbstractListModel
{
public:
KeysModel(QObject *parent = nullptr);
~KeysModel();
void addKey(const Shared::KeyInfo& info);
QVariant data(const QModelIndex & index, int role = Qt::DisplayRole) const override;
int rowCount(const QModelIndex& parent = QModelIndex()) const override;
QHash<int, QByteArray> roleNames() const override;
QModelIndex index(int row, int column, const QModelIndex & parent) const override;
enum Roles {
Label = Qt::UserRole + 1,
FingerPrint,
TrustLevel
};
private:
std::deque<Shared::KeyInfo*> keys;
private:
static const QHash<int, QByteArray> roles;
};
}
#endif // UI_KEYSMODEL_H

View file

@ -17,4 +17,31 @@
#include "omemo.h"
#include "ui_omemo.h"
using namespace Ui;
Omemo::Omemo(QWidget* parent):
QWidget(parent),
m_ui(new Ui::Omemo()),
keysModel(),
unusedKeysModel()
{
m_ui->setupUi(this);
generateMockData();
m_ui->keysView->setModel(&keysModel);
m_ui->unusedKeysView->setModel(&unusedKeysModel);
}
Omemo::~Omemo()
{
}
void Omemo::generateMockData()
{
for (int i = 0; i < 5; ++i) {
Shared::KeyInfo info;
info.id = i;
info.label = QString("test_") + std::to_string(i).c_str();
keysModel.addKey(info);
}
}

View file

@ -14,30 +14,32 @@
// 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_OMEMO_H
#define UI_OMEMO_H
#ifndef VCARD_OMEMO_H
#define VCARD_OMEMO_H
#include <qwidget.h>
#include <QScopedPointer>
namespace Ui {
#include "keysmodel.h"
namespace Ui
{
class Omemo;
}
/**
* @todo write docs
*/
class Omemo : public QWidget
{
class Omemo : public QWidget {
Q_OBJECT
public:
Omemo(QWidget* parent = nullptr);
~Omemo();
private:
void generateMockData();
private:
QScopedPointer<Ui::Omemo> m_ui;
UI::KeysModel keysModel;
UI::KeysModel unusedKeysModel;
};
}
#endif // UI_OMEMO_H
#endif // VCARD_OMEMO_H

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Ui::Omemo</class>
<widget class="QWidget" name="Ui::Omemo">
<class>Omemo</class>
<widget class="QWidget" name="Omemo">
<property name="geometry">
<rect>
<x>0</x>