forked from blue/squawk
Own omemo key display, a bit of CMake clean up
This commit is contained in:
parent
19835af3cf
commit
00af582287
16 changed files with 443 additions and 360 deletions
|
@ -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 "info.h"
|
||||
#include "ui_info.h"
|
||||
|
|
|
@ -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 UI_WIDGETS_INFO_H
|
||||
#define UI_WIDGETS_INFO_H
|
||||
#pragma once
|
||||
|
||||
#include <list>
|
||||
|
||||
|
@ -88,5 +89,3 @@ private:
|
|||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // UI_WIDGETS_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 "keydelegate.h"
|
||||
#include <QPainter>
|
||||
|
|
|
@ -1,35 +1,37 @@
|
|||
// 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 UI_KEYDELEGATE_H
|
||||
#define UI_KEYDELEGATE_H
|
||||
#pragma once
|
||||
|
||||
#include <QStyledItemDelegate>
|
||||
#include <QString>
|
||||
|
||||
#include <vector>
|
||||
|
||||
namespace UI {
|
||||
|
||||
class KeyDelegate : public QStyledItemDelegate
|
||||
{
|
||||
class KeyDelegate : public QStyledItemDelegate {
|
||||
Q_OBJECT
|
||||
public:
|
||||
KeyDelegate(QObject *parent = nullptr);
|
||||
KeyDelegate(QObject* parent = nullptr);
|
||||
~KeyDelegate();
|
||||
|
||||
QSize sizeHint(const QStyleOptionViewItem & option, const QModelIndex & index) const override;
|
||||
QSize sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const override;
|
||||
void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const override;
|
||||
|
||||
private:
|
||||
|
@ -46,5 +48,3 @@ private:
|
|||
};
|
||||
|
||||
}
|
||||
|
||||
#endif // UI_KEYDELEGATE_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 "omemo.h"
|
||||
#include "ui_omemo.h"
|
||||
|
@ -23,25 +25,31 @@ constexpr uint8_t fingerprintLength = 32;
|
|||
UI::Omemo::Omemo(QWidget* parent):
|
||||
QWidget(parent),
|
||||
m_ui(new Ui::Omemo()),
|
||||
deviceKeyDelegate(),
|
||||
keysDelegate(),
|
||||
unusedKeysDelegate(),
|
||||
deviceKeyModel(),
|
||||
keysModel(),
|
||||
unusedKeysModel(),
|
||||
contextMenu(new QMenu())
|
||||
{
|
||||
m_ui->setupUi(this);
|
||||
|
||||
m_ui->deviceKeyView->setItemDelegate(&deviceKeyDelegate);
|
||||
m_ui->deviceKeyView->setModel(&deviceKeyModel);
|
||||
m_ui->keysView->setItemDelegate(&keysDelegate);
|
||||
m_ui->keysView->setModel(&keysModel);
|
||||
m_ui->unusedKeysView->setItemDelegate(&unusedKeysDelegate);
|
||||
m_ui->unusedKeysView->setModel(&unusedKeysModel);
|
||||
|
||||
unusedVisibility(false);
|
||||
deviceKeyVisibility(false);
|
||||
|
||||
m_ui->keysView->setContextMenuPolicy(Qt::CustomContextMenu);
|
||||
connect(m_ui->keysView, &QWidget::customContextMenuRequested, this, &Omemo::onActiveKeysContextMenu);
|
||||
}
|
||||
|
||||
UI::Omemo::~Omemo()
|
||||
{
|
||||
UI::Omemo::~Omemo() {
|
||||
contextMenu->deleteLater();
|
||||
}
|
||||
|
||||
|
@ -50,9 +58,9 @@ void UI::Omemo::generateMockData() {
|
|||
std::uniform_int_distribution<char> dist(CHAR_MIN, CHAR_MAX);
|
||||
for (int i = 0; i < 5; ++i) {
|
||||
QByteArray fp(fingerprintLength, 0);
|
||||
for (int i = 0; i < fingerprintLength; ++i) {
|
||||
for (int i = 0; i < fingerprintLength; ++i)
|
||||
fp[i] = dist(rd);
|
||||
}
|
||||
|
||||
Shared::KeyInfo info;
|
||||
info.id = i;
|
||||
if (i % 3 == 0)
|
||||
|
@ -68,14 +76,21 @@ void UI::Omemo::generateMockData() {
|
|||
void UI::Omemo::setData(const std::list<Shared::KeyInfo>& keys) {
|
||||
keysModel.clear();
|
||||
unusedKeysModel.clear();
|
||||
deviceKeyModel.clear();
|
||||
for (const Shared::KeyInfo& key : keys) {
|
||||
keysModel.addKey(key);
|
||||
if (key.currentDevice)
|
||||
deviceKeyModel.addKey(key);
|
||||
else
|
||||
keysModel.addKey(key);
|
||||
}
|
||||
|
||||
unusedVisibility(unusedKeysModel.rowCount() > 0);
|
||||
deviceKeyVisibility(deviceKeyModel.rowCount() > 0);
|
||||
}
|
||||
|
||||
const QString UI::Omemo::title() const {
|
||||
return m_ui->OMEMOHeading->text();}
|
||||
|
||||
return m_ui->OMEMOHeading->text();
|
||||
}
|
||||
|
||||
void UI::Omemo::onActiveKeysContextMenu(const QPoint& pos) {
|
||||
contextMenu->clear();
|
||||
|
@ -119,3 +134,15 @@ void UI::Omemo::onActiveKeysContextMenu(const QPoint& pos) {
|
|||
|
||||
contextMenu->popup(m_ui->keysView->viewport()->mapToGlobal(pos));
|
||||
}
|
||||
|
||||
void UI::Omemo::deviceKeyVisibility(bool visible) {
|
||||
m_ui->deviceKeyHeading->setVisible(visible);
|
||||
m_ui->deviceKeyline->setVisible(visible);
|
||||
m_ui->deviceKeyView->setVisible(visible);
|
||||
}
|
||||
|
||||
void UI::Omemo::unusedVisibility(bool visible) {
|
||||
m_ui->unusedKeysView->setVisible(visible);
|
||||
m_ui->unusedKeysHeading->setVisible(visible);
|
||||
m_ui->line->setVisible(visible);
|
||||
}
|
||||
|
|
|
@ -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 VCARD_OMEMO_H
|
||||
#define VCARD_OMEMO_H
|
||||
#pragma once
|
||||
|
||||
#include <list>
|
||||
|
||||
|
@ -29,8 +30,7 @@
|
|||
#include "shared/keyinfo.h"
|
||||
|
||||
namespace UI {
|
||||
namespace Ui
|
||||
{
|
||||
namespace Ui {
|
||||
class Omemo;
|
||||
}
|
||||
|
||||
|
@ -48,14 +48,17 @@ private slots:
|
|||
|
||||
private:
|
||||
void generateMockData();
|
||||
void unusedVisibility(bool visible);
|
||||
void deviceKeyVisibility(bool visible);
|
||||
|
||||
private:
|
||||
QScopedPointer<Ui::Omemo> m_ui;
|
||||
UI::KeyDelegate deviceKeyDelegate;
|
||||
UI::KeyDelegate keysDelegate;
|
||||
UI::KeyDelegate unusedKeysDelegate;
|
||||
Models::Keys deviceKeyModel;
|
||||
Models::Keys keysModel;
|
||||
Models::Keys unusedKeysModel;
|
||||
QMenu* contextMenu;
|
||||
};
|
||||
}
|
||||
#endif // VCARD_OMEMO_H
|
||||
|
|
|
@ -64,7 +64,28 @@
|
|||
</rect>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout" columnstretch="1,3,1">
|
||||
<item row="1" column="1">
|
||||
<item row="7" column="1">
|
||||
<widget class="QLabel" name="unusedKeysHeading">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>16</pointsize>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Unused keys</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="6" column="1">
|
||||
<widget class="Line" name="line">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="1">
|
||||
<widget class="ExpandingList" name="keysView">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
|
||||
|
@ -89,42 +110,7 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="Line" name="line">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QLabel" name="keysHeading">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>16</pointsize>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Active keys</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="1">
|
||||
<widget class="QLabel" name="unusedKeysHeading">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>16</pointsize>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Unused keys</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="1">
|
||||
<item row="8" column="1">
|
||||
<widget class="ExpandingList" name="unusedKeysView">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
|
||||
|
@ -149,8 +135,68 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0" rowspan="6">
|
||||
<spacer name="spacerLeft">
|
||||
<item row="0" column="1">
|
||||
<widget class="QLabel" name="deviceKeyHeading">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>16</pointsize>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Device key</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QLabel" name="keysHeading">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>16</pointsize>
|
||||
<weight>75</weight>
|
||||
<bold>true</bold>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Active keys</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="ExpandingList" name="deviceKeyView">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="sizeAdjustPolicy">
|
||||
<enum>QAbstractScrollArea::AdjustToContents</enum>
|
||||
</property>
|
||||
<property name="showDropIndicator" stdset="0">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="verticalScrollMode">
|
||||
<enum>QAbstractItemView::ScrollPerPixel</enum>
|
||||
</property>
|
||||
<property name="horizontalScrollMode">
|
||||
<enum>QAbstractItemView::ScrollPerPixel</enum>
|
||||
</property>
|
||||
<property name="uniformItemSizes">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="Line" name="deviceKeyline">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="2" rowspan="9">
|
||||
<spacer name="spacerRight">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
|
@ -162,8 +208,8 @@
|
|||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="0" column="2" rowspan="6">
|
||||
<spacer name="spacerRight">
|
||||
<item row="0" column="0" rowspan="9">
|
||||
<spacer name="spacerLeft">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue