forked from blue/squawk
some thoughts about fonts, lastInteraction and label into keyDelegate
This commit is contained in:
parent
2aed8a1209
commit
15fb4bbd62
@ -22,6 +22,7 @@ Shared::KeyInfo::KeyInfo(
|
|||||||
uint32_t p_id,
|
uint32_t p_id,
|
||||||
const QByteArray& p_fingerPrint,
|
const QByteArray& p_fingerPrint,
|
||||||
const QString& p_label,
|
const QString& p_label,
|
||||||
|
const QDateTime& p_lastInteraction,
|
||||||
Shared::TrustLevel p_trustLevel,
|
Shared::TrustLevel p_trustLevel,
|
||||||
Shared::EncryptionProtocol p_protocol,
|
Shared::EncryptionProtocol p_protocol,
|
||||||
bool p_currentDevice
|
bool p_currentDevice
|
||||||
@ -29,6 +30,7 @@ Shared::KeyInfo::KeyInfo(
|
|||||||
id(p_id),
|
id(p_id),
|
||||||
fingerPrint(p_fingerPrint),
|
fingerPrint(p_fingerPrint),
|
||||||
label(p_label),
|
label(p_label),
|
||||||
|
lastInteraction(p_lastInteraction),
|
||||||
trustLevel(p_trustLevel),
|
trustLevel(p_trustLevel),
|
||||||
protocol(p_protocol),
|
protocol(p_protocol),
|
||||||
currentDevice(p_currentDevice)
|
currentDevice(p_currentDevice)
|
||||||
@ -39,6 +41,7 @@ Shared::KeyInfo::KeyInfo():
|
|||||||
id(0),
|
id(0),
|
||||||
fingerPrint(),
|
fingerPrint(),
|
||||||
label(),
|
label(),
|
||||||
|
lastInteraction(),
|
||||||
trustLevel(TrustLevel::undecided),
|
trustLevel(TrustLevel::undecided),
|
||||||
protocol(EncryptionProtocol::omemo),
|
protocol(EncryptionProtocol::omemo),
|
||||||
currentDevice(false)
|
currentDevice(false)
|
||||||
@ -49,6 +52,7 @@ Shared::KeyInfo::KeyInfo(const Shared::KeyInfo& other):
|
|||||||
id(other.id),
|
id(other.id),
|
||||||
fingerPrint(other.fingerPrint),
|
fingerPrint(other.fingerPrint),
|
||||||
label(other.label),
|
label(other.label),
|
||||||
|
lastInteraction(other.lastInteraction),
|
||||||
trustLevel(other.trustLevel),
|
trustLevel(other.trustLevel),
|
||||||
protocol(other.protocol),
|
protocol(other.protocol),
|
||||||
currentDevice(other.currentDevice)
|
currentDevice(other.currentDevice)
|
||||||
@ -59,6 +63,7 @@ Shared::KeyInfo & Shared::KeyInfo::operator=(const Shared::KeyInfo& other) {
|
|||||||
id = other.id;
|
id = other.id;
|
||||||
fingerPrint = other.fingerPrint;
|
fingerPrint = other.fingerPrint;
|
||||||
label = other.label;
|
label = other.label;
|
||||||
|
lastInteraction = other.lastInteraction;
|
||||||
trustLevel = other.trustLevel;
|
trustLevel = other.trustLevel;
|
||||||
protocol = other.protocol;
|
protocol = other.protocol;
|
||||||
currentDevice = other.currentDevice;
|
currentDevice = other.currentDevice;
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
|
|
||||||
#include <QString>
|
#include <QString>
|
||||||
#include <QByteArray>
|
#include <QByteArray>
|
||||||
|
#include <QDateTime>
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
@ -31,9 +32,9 @@ class KeyInfo
|
|||||||
public:
|
public:
|
||||||
KeyInfo(
|
KeyInfo(
|
||||||
uint32_t id,
|
uint32_t id,
|
||||||
const QByteArray&
|
const QByteArray& fingerPrint,
|
||||||
fingerPrint,
|
|
||||||
const QString& label,
|
const QString& label,
|
||||||
|
const QDateTime& lastInteraction,
|
||||||
TrustLevel trustLevel,
|
TrustLevel trustLevel,
|
||||||
EncryptionProtocol protocol = EncryptionProtocol::omemo,
|
EncryptionProtocol protocol = EncryptionProtocol::omemo,
|
||||||
bool currentDevice = false
|
bool currentDevice = false
|
||||||
@ -47,6 +48,7 @@ public:
|
|||||||
uint32_t id;
|
uint32_t id;
|
||||||
QByteArray fingerPrint;
|
QByteArray fingerPrint;
|
||||||
QString label;
|
QString label;
|
||||||
|
QDateTime lastInteraction;
|
||||||
TrustLevel trustLevel;
|
TrustLevel trustLevel;
|
||||||
EncryptionProtocol protocol;
|
EncryptionProtocol protocol;
|
||||||
bool currentDevice;
|
bool currentDevice;
|
||||||
|
@ -68,7 +68,6 @@ Conversation::Conversation(bool muc, Models::Account* acc, Models::Element* el,
|
|||||||
feed->setItemDelegate(delegate);
|
feed->setItemDelegate(delegate);
|
||||||
feed->setFrameShape(QFrame::NoFrame);
|
feed->setFrameShape(QFrame::NoFrame);
|
||||||
feed->setContextMenuPolicy(Qt::CustomContextMenu);
|
feed->setContextMenuPolicy(Qt::CustomContextMenu);
|
||||||
delegate->initializeFonts(feed->getFont());
|
|
||||||
feed->setModel(el->feed);
|
feed->setModel(el->feed);
|
||||||
el->feed->incrementObservers();
|
el->feed->incrementObservers();
|
||||||
m_ui->widget->layout()->addWidget(feed);
|
m_ui->widget->layout()->addWidget(feed);
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
#include <QClipboard>
|
#include <QClipboard>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
#include <QFontDatabase>
|
||||||
|
|
||||||
#include "messagedelegate.h"
|
#include "messagedelegate.h"
|
||||||
#include "messagefeed.h"
|
#include "messagefeed.h"
|
||||||
@ -40,6 +41,8 @@ const std::set<int> FeedView::geometryChangingRoles = {
|
|||||||
Models::MessageFeed::Error,
|
Models::MessageFeed::Error,
|
||||||
Models::MessageFeed::Date
|
Models::MessageFeed::Date
|
||||||
};
|
};
|
||||||
|
QFont FeedView::dividerFont = QFontDatabase::systemFont(QFontDatabase::TitleFont);
|
||||||
|
QFontMetrics FeedView::dividerMetrics = QFontMetrics(dividerFont);
|
||||||
|
|
||||||
FeedView::FeedView(QWidget* parent):
|
FeedView::FeedView(QWidget* parent):
|
||||||
QAbstractItemView(parent),
|
QAbstractItemView(parent),
|
||||||
@ -51,8 +54,6 @@ FeedView::FeedView(QWidget* parent):
|
|||||||
clearWidgetsMode(false),
|
clearWidgetsMode(false),
|
||||||
modelState(Models::MessageFeed::complete),
|
modelState(Models::MessageFeed::complete),
|
||||||
progress(),
|
progress(),
|
||||||
dividerFont(),
|
|
||||||
dividerMetrics(dividerFont),
|
|
||||||
mousePressed(false),
|
mousePressed(false),
|
||||||
dragging(false),
|
dragging(false),
|
||||||
hovered(Shared::Hover::nothing),
|
hovered(Shared::Hover::nothing),
|
||||||
@ -68,23 +69,11 @@ FeedView::FeedView(QWidget* parent):
|
|||||||
|
|
||||||
progress.setParent(viewport());
|
progress.setParent(viewport());
|
||||||
progress.resize(progressSize, progressSize);
|
progress.resize(progressSize, progressSize);
|
||||||
|
|
||||||
dividerFont = getFont();
|
|
||||||
dividerFont.setBold(true);
|
|
||||||
float ndps = dividerFont.pointSizeF();
|
|
||||||
if (ndps != -1) {
|
|
||||||
dividerFont.setPointSizeF(ndps * 1.2);
|
|
||||||
} else {
|
|
||||||
dividerFont.setPointSize(dividerFont.pointSize() + 2);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
FeedView::~FeedView()
|
FeedView::~FeedView() {}
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
QModelIndex FeedView::indexAt(const QPoint& point) const
|
QModelIndex FeedView::indexAt(const QPoint& point) const {
|
||||||
{
|
|
||||||
int32_t vh = viewport()->height();
|
int32_t vh = viewport()->height();
|
||||||
uint32_t y = vh - point.y() + vo;
|
uint32_t y = vh - point.y() + vo;
|
||||||
|
|
||||||
@ -102,12 +91,8 @@ QModelIndex FeedView::indexAt(const QPoint& point) const
|
|||||||
return QModelIndex();
|
return QModelIndex();
|
||||||
}
|
}
|
||||||
|
|
||||||
void FeedView::scrollTo(const QModelIndex& index, QAbstractItemView::ScrollHint hint)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
QRect FeedView::visualRect(const QModelIndex& index) const
|
QRect FeedView::visualRect(const QModelIndex& index) const {
|
||||||
{
|
|
||||||
unsigned int row = index.row();
|
unsigned int row = index.row();
|
||||||
if (!index.isValid() || row >= hints.size()) {
|
if (!index.isValid() || row >= hints.size()) {
|
||||||
qDebug() << "visualRect for" << row;
|
qDebug() << "visualRect for" << row;
|
||||||
@ -119,44 +104,24 @@ QRect FeedView::visualRect(const QModelIndex& index) const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int FeedView::horizontalOffset() const
|
QString FeedView::getSelectedText() const{return selectedText;}
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool FeedView::isIndexHidden(const QModelIndex& index) const
|
//TODO!!!
|
||||||
{
|
void FeedView::scrollTo(const QModelIndex& index, QAbstractItemView::ScrollHint hint) {}
|
||||||
return false;
|
int FeedView::horizontalOffset() const {return 0;}
|
||||||
}
|
bool FeedView::isIndexHidden(const QModelIndex& index) const{return false;}
|
||||||
|
QModelIndex FeedView::moveCursor(QAbstractItemView::CursorAction cursorAction, Qt::KeyboardModifiers modifiers) {return QModelIndex();}
|
||||||
|
void FeedView::setSelection(const QRect& rect, QItemSelectionModel::SelectionFlags command) {}
|
||||||
|
int FeedView::verticalOffset() const {return vo;}
|
||||||
|
QRegion FeedView::visualRegionForSelection(const QItemSelection& selection) const {return QRegion();}
|
||||||
|
|
||||||
QModelIndex FeedView::moveCursor(QAbstractItemView::CursorAction cursorAction, Qt::KeyboardModifiers modifiers)
|
void FeedView::rowsInserted(const QModelIndex& parent, int start, int end){
|
||||||
{
|
|
||||||
return QModelIndex();
|
|
||||||
}
|
|
||||||
|
|
||||||
void FeedView::setSelection(const QRect& rect, QItemSelectionModel::SelectionFlags command)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
int FeedView::verticalOffset() const
|
|
||||||
{
|
|
||||||
return vo;
|
|
||||||
}
|
|
||||||
|
|
||||||
QRegion FeedView::visualRegionForSelection(const QItemSelection& selection) const
|
|
||||||
{
|
|
||||||
return QRegion();
|
|
||||||
}
|
|
||||||
|
|
||||||
void FeedView::rowsInserted(const QModelIndex& parent, int start, int end)
|
|
||||||
{
|
|
||||||
QAbstractItemView::rowsInserted(parent, start, end);
|
QAbstractItemView::rowsInserted(parent, start, end);
|
||||||
|
|
||||||
scheduleDelayedItemsLayout();
|
scheduleDelayedItemsLayout();
|
||||||
}
|
}
|
||||||
|
|
||||||
void FeedView::dataChanged(const QModelIndex& topLeft, const QModelIndex& bottomRight, const QVector<int>& roles)
|
void FeedView::dataChanged(const QModelIndex& topLeft, const QModelIndex& bottomRight, const QVector<int>& roles) {
|
||||||
{
|
|
||||||
if (specialDelegate) {
|
if (specialDelegate) {
|
||||||
for (int role : roles) {
|
for (int role : roles) {
|
||||||
if (geometryChangingRoles.count(role) != 0) {
|
if (geometryChangingRoles.count(role) != 0) {
|
||||||
@ -168,8 +133,7 @@ void FeedView::dataChanged(const QModelIndex& topLeft, const QModelIndex& bottom
|
|||||||
QAbstractItemView::dataChanged(topLeft, bottomRight, roles);
|
QAbstractItemView::dataChanged(topLeft, bottomRight, roles);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FeedView::updateGeometries()
|
void FeedView::updateGeometries() {
|
||||||
{
|
|
||||||
//qDebug() << "updateGeometries";
|
//qDebug() << "updateGeometries";
|
||||||
QScrollBar* bar = verticalScrollBar();
|
QScrollBar* bar = verticalScrollBar();
|
||||||
|
|
||||||
@ -260,8 +224,7 @@ void FeedView::updateGeometries()
|
|||||||
QAbstractItemView::updateGeometries();
|
QAbstractItemView::updateGeometries();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool FeedView::tryToCalculateGeometriesWithNoScrollbars(const QStyleOptionViewItem& option, const QAbstractItemModel* m, uint32_t totalHeight)
|
bool FeedView::tryToCalculateGeometriesWithNoScrollbars(const QStyleOptionViewItem& option, const QAbstractItemModel* m, uint32_t totalHeight) {
|
||||||
{
|
|
||||||
uint32_t previousOffset = elementMargin;
|
uint32_t previousOffset = elementMargin;
|
||||||
QDateTime lastDate;
|
QDateTime lastDate;
|
||||||
for (int i = 0, size = m->rowCount(); i < size; ++i) {
|
for (int i = 0, size = m->rowCount(); i < size; ++i) {
|
||||||
@ -307,9 +270,7 @@ bool FeedView::tryToCalculateGeometriesWithNoScrollbars(const QStyleOptionViewIt
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FeedView::paintEvent(QPaintEvent* event) {
|
||||||
void FeedView::paintEvent(QPaintEvent* event)
|
|
||||||
{
|
|
||||||
//qDebug() << "paint" << event->rect();
|
//qDebug() << "paint" << event->rect();
|
||||||
const QAbstractItemModel* m = model();
|
const QAbstractItemModel* m = model();
|
||||||
QWidget* vp = viewport();
|
QWidget* vp = viewport();
|
||||||
@ -388,8 +349,7 @@ void FeedView::paintEvent(QPaintEvent* event)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void FeedView::drawDateDevider(int top, const QDateTime& date, QPainter& painter)
|
void FeedView::drawDateDevider(int top, const QDateTime& date, QPainter& painter) {
|
||||||
{
|
|
||||||
int divisionHeight = dateDeviderMargin * 2 + dividerMetrics.height();
|
int divisionHeight = dateDeviderMargin * 2 + dividerMetrics.height();
|
||||||
QRect r(QPoint(0, top), QSize(viewport()->width(), divisionHeight));
|
QRect r(QPoint(0, top), QSize(viewport()->width(), divisionHeight));
|
||||||
painter.save();
|
painter.save();
|
||||||
@ -398,8 +358,7 @@ void FeedView::drawDateDevider(int top, const QDateTime& date, QPainter& painter
|
|||||||
painter.restore();
|
painter.restore();
|
||||||
}
|
}
|
||||||
|
|
||||||
void FeedView::verticalScrollbarValueChanged(int value)
|
void FeedView::verticalScrollbarValueChanged(int value) {
|
||||||
{
|
|
||||||
vo = verticalScrollBar()->maximum() - value;
|
vo = verticalScrollBar()->maximum() - value;
|
||||||
|
|
||||||
positionProgress();
|
positionProgress();
|
||||||
@ -415,8 +374,7 @@ void FeedView::verticalScrollbarValueChanged(int value)
|
|||||||
QAbstractItemView::verticalScrollbarValueChanged(vo);
|
QAbstractItemView::verticalScrollbarValueChanged(vo);
|
||||||
}
|
}
|
||||||
|
|
||||||
void FeedView::setAnchorHovered(Shared::Hover type)
|
void FeedView::setAnchorHovered(Shared::Hover type) {
|
||||||
{
|
|
||||||
if (hovered != type) {
|
if (hovered != type) {
|
||||||
hovered = type;
|
hovered = type;
|
||||||
switch (hovered) {
|
switch (hovered) {
|
||||||
@ -433,8 +391,7 @@ void FeedView::setAnchorHovered(Shared::Hover type)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void FeedView::mouseMoveEvent(QMouseEvent* event)
|
void FeedView::mouseMoveEvent(QMouseEvent* event) {
|
||||||
{
|
|
||||||
if (!isVisible()) {
|
if (!isVisible()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -479,8 +436,7 @@ void FeedView::mouseMoveEvent(QMouseEvent* event)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void FeedView::mousePressEvent(QMouseEvent* event)
|
void FeedView::mousePressEvent(QMouseEvent* event) {
|
||||||
{
|
|
||||||
QAbstractItemView::mousePressEvent(event);
|
QAbstractItemView::mousePressEvent(event);
|
||||||
|
|
||||||
mousePressed = event->button() == Qt::LeftButton;
|
mousePressed = event->button() == Qt::LeftButton;
|
||||||
@ -500,8 +456,7 @@ void FeedView::mousePressEvent(QMouseEvent* event)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void FeedView::mouseDoubleClickEvent(QMouseEvent* event)
|
void FeedView::mouseDoubleClickEvent(QMouseEvent* event) {
|
||||||
{
|
|
||||||
QAbstractItemView::mouseDoubleClickEvent(event);
|
QAbstractItemView::mouseDoubleClickEvent(event);
|
||||||
mousePressed = event->button() == Qt::LeftButton;
|
mousePressed = event->button() == Qt::LeftButton;
|
||||||
if (mousePressed) {
|
if (mousePressed) {
|
||||||
@ -530,8 +485,7 @@ void FeedView::mouseDoubleClickEvent(QMouseEvent* event)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void FeedView::mouseReleaseEvent(QMouseEvent* event)
|
void FeedView::mouseReleaseEvent(QMouseEvent* event) {
|
||||||
{
|
|
||||||
QAbstractItemView::mouseReleaseEvent(event);
|
QAbstractItemView::mouseReleaseEvent(event);
|
||||||
|
|
||||||
if (mousePressed) {
|
if (mousePressed) {
|
||||||
@ -551,8 +505,7 @@ void FeedView::mouseReleaseEvent(QMouseEvent* event)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void FeedView::keyPressEvent(QKeyEvent* event)
|
void FeedView::keyPressEvent(QKeyEvent* event) {
|
||||||
{
|
|
||||||
QKeyEvent *key_event = static_cast<QKeyEvent*>(event);
|
QKeyEvent *key_event = static_cast<QKeyEvent*>(event);
|
||||||
if (key_event->matches(QKeySequence::Copy)) {
|
if (key_event->matches(QKeySequence::Copy)) {
|
||||||
if (selectedText.size() > 0) {
|
if (selectedText.size() > 0) {
|
||||||
@ -562,16 +515,14 @@ void FeedView::keyPressEvent(QKeyEvent* event)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void FeedView::resizeEvent(QResizeEvent* event)
|
void FeedView::resizeEvent(QResizeEvent* event) {
|
||||||
{
|
|
||||||
QAbstractItemView::resizeEvent(event);
|
QAbstractItemView::resizeEvent(event);
|
||||||
|
|
||||||
positionProgress();
|
positionProgress();
|
||||||
emit resized();
|
emit resized();
|
||||||
}
|
}
|
||||||
|
|
||||||
void FeedView::positionProgress()
|
void FeedView::positionProgress() {
|
||||||
{
|
|
||||||
QSize layoutBounds = maximumViewportSize();
|
QSize layoutBounds = maximumViewportSize();
|
||||||
int progressPosition = layoutBounds.height() - progressSize;
|
int progressPosition = layoutBounds.height() - progressSize;
|
||||||
std::deque<Hint>::size_type size = hints.size();
|
std::deque<Hint>::size_type size = hints.size();
|
||||||
@ -585,13 +536,7 @@ void FeedView::positionProgress()
|
|||||||
progress.move((width() - progressSize) / 2, progressPosition);
|
progress.move((width() - progressSize) / 2, progressPosition);
|
||||||
}
|
}
|
||||||
|
|
||||||
QFont FeedView::getFont() const
|
void FeedView::setItemDelegate(QAbstractItemDelegate* delegate) {
|
||||||
{
|
|
||||||
return viewOptions().font;
|
|
||||||
}
|
|
||||||
|
|
||||||
void FeedView::setItemDelegate(QAbstractItemDelegate* delegate)
|
|
||||||
{
|
|
||||||
if (specialDelegate) {
|
if (specialDelegate) {
|
||||||
MessageDelegate* del = static_cast<MessageDelegate*>(itemDelegate());
|
MessageDelegate* del = static_cast<MessageDelegate*>(itemDelegate());
|
||||||
disconnect(del, &MessageDelegate::buttonPushed, this, &FeedView::onMessageButtonPushed);
|
disconnect(del, &MessageDelegate::buttonPushed, this, &FeedView::onMessageButtonPushed);
|
||||||
@ -613,8 +558,7 @@ void FeedView::setItemDelegate(QAbstractItemDelegate* delegate)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void FeedView::setModel(QAbstractItemModel* p_model)
|
void FeedView::setModel(QAbstractItemModel* p_model) {
|
||||||
{
|
|
||||||
if (specialModel) {
|
if (specialModel) {
|
||||||
Models::MessageFeed* feed = static_cast<Models::MessageFeed*>(model());
|
Models::MessageFeed* feed = static_cast<Models::MessageFeed*>(model());
|
||||||
disconnect(feed, &Models::MessageFeed::syncStateChange, this, &FeedView::onModelSyncStateChange);
|
disconnect(feed, &Models::MessageFeed::syncStateChange, this, &FeedView::onModelSyncStateChange);
|
||||||
@ -633,24 +577,21 @@ void FeedView::setModel(QAbstractItemModel* p_model)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void FeedView::onMessageButtonPushed(const QString& messageId)
|
void FeedView::onMessageButtonPushed(const QString& messageId) {
|
||||||
{
|
|
||||||
if (specialModel) {
|
if (specialModel) {
|
||||||
Models::MessageFeed* feed = static_cast<Models::MessageFeed*>(model());
|
Models::MessageFeed* feed = static_cast<Models::MessageFeed*>(model());
|
||||||
feed->downloadAttachment(messageId);
|
feed->downloadAttachment(messageId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void FeedView::onMessageInvalidPath(const QString& messageId)
|
void FeedView::onMessageInvalidPath(const QString& messageId) {
|
||||||
{
|
|
||||||
if (specialModel) {
|
if (specialModel) {
|
||||||
Models::MessageFeed* feed = static_cast<Models::MessageFeed*>(model());
|
Models::MessageFeed* feed = static_cast<Models::MessageFeed*>(model());
|
||||||
feed->reportLocalPathInvalid(messageId);
|
feed->reportLocalPathInvalid(messageId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void FeedView::onModelSyncStateChange(Models::MessageFeed::SyncState state)
|
void FeedView::onModelSyncStateChange(Models::MessageFeed::SyncState state) {
|
||||||
{
|
|
||||||
bool needToUpdateGeometry = false;
|
bool needToUpdateGeometry = false;
|
||||||
if (modelState != state) {
|
if (modelState != state) {
|
||||||
if (state == Models::MessageFeed::complete || modelState == Models::MessageFeed::complete) {
|
if (state == Models::MessageFeed::complete || modelState == Models::MessageFeed::complete) {
|
||||||
@ -671,8 +612,3 @@ void FeedView::onModelSyncStateChange(Models::MessageFeed::SyncState state)
|
|||||||
scheduleDelayedItemsLayout();
|
scheduleDelayedItemsLayout();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QString FeedView::getSelectedText() const
|
|
||||||
{
|
|
||||||
return selectedText;
|
|
||||||
}
|
|
||||||
|
@ -50,7 +50,6 @@ public:
|
|||||||
void setItemDelegate(QAbstractItemDelegate* delegate);
|
void setItemDelegate(QAbstractItemDelegate* delegate);
|
||||||
void setModel(QAbstractItemModel * model) override;
|
void setModel(QAbstractItemModel * model) override;
|
||||||
|
|
||||||
QFont getFont() const;
|
|
||||||
QString getSelectedText() const;
|
QString getSelectedText() const;
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
@ -100,8 +99,8 @@ private:
|
|||||||
bool clearWidgetsMode;
|
bool clearWidgetsMode;
|
||||||
Models::MessageFeed::SyncState modelState;
|
Models::MessageFeed::SyncState modelState;
|
||||||
Progress progress;
|
Progress progress;
|
||||||
QFont dividerFont;
|
static QFont dividerFont;
|
||||||
QFontMetrics dividerMetrics;
|
static QFontMetrics dividerMetrics;
|
||||||
bool mousePressed;
|
bool mousePressed;
|
||||||
bool dragging;
|
bool dragging;
|
||||||
Shared::Hover hovered;
|
Shared::Hover hovered;
|
||||||
|
@ -24,29 +24,40 @@
|
|||||||
#include <QAbstractItemView>
|
#include <QAbstractItemView>
|
||||||
#include <QAbstractTextDocumentLayout>
|
#include <QAbstractTextDocumentLayout>
|
||||||
#include <QTextBlock>
|
#include <QTextBlock>
|
||||||
|
#include <QFontDatabase>
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
|
||||||
#include "messagedelegate.h"
|
#include "messagedelegate.h"
|
||||||
#include "messagefeed.h"
|
#include "messagefeed.h"
|
||||||
|
|
||||||
int MessageDelegate::avatarHeight(50);
|
QFont getFont (QFontDatabase::SystemFont type, bool bold, bool italic) {
|
||||||
int MessageDelegate::margin(6);
|
QFont font = QFontDatabase::systemFont(type);
|
||||||
|
if (bold)
|
||||||
|
font.setBold(true);
|
||||||
|
if (italic)
|
||||||
|
font.setItalic(true);
|
||||||
|
|
||||||
|
return font;
|
||||||
|
}
|
||||||
constexpr int textMargin = 2;
|
constexpr int textMargin = 2;
|
||||||
constexpr int statusIconSize = 16;
|
constexpr int statusIconSize = 16;
|
||||||
constexpr float nickFontMultiplier = 1.1;
|
|
||||||
constexpr float dateFontMultiplier = 0.8;
|
|
||||||
|
|
||||||
constexpr int bubbleMargin = 6;
|
constexpr int bubbleMargin = 6;
|
||||||
constexpr int bubbleBorderRadius = 3;
|
constexpr int bubbleBorderRadius = 3;
|
||||||
|
|
||||||
|
int MessageDelegate::avatarHeight(50);
|
||||||
|
int MessageDelegate::margin(6);
|
||||||
|
|
||||||
|
bool MessageDelegate::fontsInitialized(false);
|
||||||
|
QFont MessageDelegate::bodyFont;
|
||||||
|
QFont MessageDelegate::nickFont;
|
||||||
|
QFont MessageDelegate::dateFont;
|
||||||
|
QFontMetrics MessageDelegate::nickMetrics(nickFont);
|
||||||
|
QFontMetrics MessageDelegate::dateMetrics(dateFont);
|
||||||
|
|
||||||
MessageDelegate::MessageDelegate(QObject* parent):
|
MessageDelegate::MessageDelegate(QObject* parent):
|
||||||
QStyledItemDelegate(parent),
|
QStyledItemDelegate(parent),
|
||||||
bodyFont(),
|
|
||||||
nickFont(),
|
|
||||||
dateFont(),
|
|
||||||
bodyRenderer(new QTextDocument()),
|
bodyRenderer(new QTextDocument()),
|
||||||
nickMetrics(nickFont),
|
|
||||||
dateMetrics(dateFont),
|
|
||||||
buttonHeight(0),
|
buttonHeight(0),
|
||||||
buttonWidth(0),
|
buttonWidth(0),
|
||||||
barHeight(0),
|
barHeight(0),
|
||||||
@ -60,7 +71,13 @@ MessageDelegate::MessageDelegate(QObject* parent):
|
|||||||
currentId(""),
|
currentId(""),
|
||||||
selection(0, 0)
|
selection(0, 0)
|
||||||
{
|
{
|
||||||
|
if (!fontsInitialized) {
|
||||||
|
fontsInitialized = true;
|
||||||
|
initializeFonts();
|
||||||
|
}
|
||||||
|
|
||||||
bodyRenderer->setDocumentMargin(0);
|
bodyRenderer->setDocumentMargin(0);
|
||||||
|
bodyRenderer->setDefaultFont(bodyFont);
|
||||||
|
|
||||||
QPushButton btn(QCoreApplication::translate("MessageLine", "Download"));
|
QPushButton btn(QCoreApplication::translate("MessageLine", "Download"));
|
||||||
buttonHeight = btn.sizeHint().height();
|
buttonHeight = btn.sizeHint().height();
|
||||||
@ -285,7 +302,6 @@ bool MessageDelegate::needToDrawSender(const QModelIndex& index, const Models::F
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
QSize MessageDelegate::sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const
|
QSize MessageDelegate::sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const
|
||||||
{
|
{
|
||||||
QRect messageRect = option.rect.adjusted(bubbleMargin, margin / 2 + bubbleMargin, -(avatarHeight + 3 * margin + bubbleMargin), -(margin + bubbleMargin) / 2);
|
QRect messageRect = option.rect.adjusted(bubbleMargin, margin / 2 + bubbleMargin, -(avatarHeight + 3 * margin + bubbleMargin), -(margin + bubbleMargin) / 2);
|
||||||
@ -538,38 +554,6 @@ QString MessageDelegate::clearSelection()
|
|||||||
return lastSelectedId;
|
return lastSelectedId;
|
||||||
}
|
}
|
||||||
|
|
||||||
void MessageDelegate::initializeFonts(const QFont& font)
|
|
||||||
{
|
|
||||||
bodyFont = font;
|
|
||||||
nickFont = font;
|
|
||||||
dateFont = font;
|
|
||||||
|
|
||||||
nickFont.setBold(true);
|
|
||||||
|
|
||||||
float ndps = nickFont.pointSizeF();
|
|
||||||
if (ndps != -1) {
|
|
||||||
nickFont.setPointSizeF(ndps * nickFontMultiplier);
|
|
||||||
} else {
|
|
||||||
nickFont.setPointSize(nickFont.pointSize() * nickFontMultiplier);
|
|
||||||
}
|
|
||||||
|
|
||||||
dateFont.setItalic(true);
|
|
||||||
float dps = dateFont.pointSizeF();
|
|
||||||
if (dps != -1) {
|
|
||||||
dateFont.setPointSizeF(dps * dateFontMultiplier);
|
|
||||||
} else {
|
|
||||||
dateFont.setPointSize(dateFont.pointSize() * dateFontMultiplier);
|
|
||||||
}
|
|
||||||
|
|
||||||
bodyFont.setKerning(false);
|
|
||||||
nickMetrics = QFontMetrics(nickFont);
|
|
||||||
dateMetrics = QFontMetrics(dateFont);
|
|
||||||
|
|
||||||
bodyRenderer->setDefaultFont(bodyFont);
|
|
||||||
|
|
||||||
Preview::initializeFont(bodyFont);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool MessageDelegate::editorEvent(QEvent* event, QAbstractItemModel* model, const QStyleOptionViewItem& option, const QModelIndex& index)
|
bool MessageDelegate::editorEvent(QEvent* event, QAbstractItemModel* model, const QStyleOptionViewItem& option, const QModelIndex& index)
|
||||||
{
|
{
|
||||||
//qDebug() << event->type();
|
//qDebug() << event->type();
|
||||||
@ -828,3 +812,11 @@ void MessageDelegate::clearHelperWidget(const Models::FeedItem& data) const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MessageDelegate::initializeFonts () {
|
||||||
|
bodyFont = getFont(QFontDatabase::GeneralFont, false, false);
|
||||||
|
nickFont = getFont(QFontDatabase::TitleFont, true, false);
|
||||||
|
dateFont = getFont(QFontDatabase::SmallestReadableFont, false, true);
|
||||||
|
nickMetrics = QFontMetrics(nickFont);
|
||||||
|
dateMetrics = QFontMetrics(dateFont);
|
||||||
|
}
|
||||||
|
@ -53,7 +53,6 @@ public:
|
|||||||
QSize sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const override;
|
QSize sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const override;
|
||||||
//void setModelData(QWidget * editor, QAbstractItemModel * model, const QModelIndex & index) const override;
|
//void setModelData(QWidget * editor, QAbstractItemModel * model, const QModelIndex & index) const override;
|
||||||
|
|
||||||
void initializeFonts(const QFont& font);
|
|
||||||
bool editorEvent(QEvent * event, QAbstractItemModel * model, const QStyleOptionViewItem & option, const QModelIndex & index) override;
|
bool editorEvent(QEvent * event, QAbstractItemModel * model, const QStyleOptionViewItem & option, const QModelIndex & index) override;
|
||||||
void endClearWidgets();
|
void endClearWidgets();
|
||||||
void beginClearWidgets();
|
void beginClearWidgets();
|
||||||
@ -95,18 +94,22 @@ protected:
|
|||||||
protected slots:
|
protected slots:
|
||||||
void onButtonPushed() const;
|
void onButtonPushed() const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
static void initializeFonts();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
class FeedButton : public QPushButton {
|
class FeedButton : public QPushButton {
|
||||||
public:
|
public:
|
||||||
QString messageId;
|
QString messageId;
|
||||||
};
|
};
|
||||||
|
|
||||||
QFont bodyFont;
|
static bool fontsInitialized;
|
||||||
QFont nickFont;
|
static QFont bodyFont;
|
||||||
QFont dateFont;
|
static QFont nickFont;
|
||||||
|
static QFont dateFont;
|
||||||
QTextDocument* bodyRenderer;
|
QTextDocument* bodyRenderer;
|
||||||
QFontMetrics nickMetrics;
|
static QFontMetrics nickMetrics;
|
||||||
QFontMetrics dateMetrics;
|
static QFontMetrics dateMetrics;
|
||||||
|
|
||||||
int buttonHeight;
|
int buttonHeight;
|
||||||
int buttonWidth;
|
int buttonWidth;
|
||||||
|
@ -18,11 +18,18 @@
|
|||||||
|
|
||||||
#include "preview.h"
|
#include "preview.h"
|
||||||
|
|
||||||
|
#include <QFontDatabase>
|
||||||
|
|
||||||
constexpr int margin = 6;
|
constexpr int margin = 6;
|
||||||
constexpr int maxAttachmentHeight = 500;
|
constexpr int maxAttachmentHeight = 500;
|
||||||
|
|
||||||
QFont Preview::font;
|
QFont getFont () {
|
||||||
|
QFont font = QFontDatabase::systemFont(QFontDatabase::GeneralFont);
|
||||||
|
font.setBold(true);
|
||||||
|
return font;
|
||||||
|
}
|
||||||
|
|
||||||
|
QFont Preview::font = getFont();
|
||||||
QFontMetrics Preview::metrics(Preview::font);
|
QFontMetrics Preview::metrics(Preview::font);
|
||||||
|
|
||||||
Preview::Preview(const QString& pPath, const QSize& pMaxSize, const QPoint& pos, QWidget* pParent):
|
Preview::Preview(const QString& pPath, const QSize& pMaxSize, const QPoint& pos, QWidget* pParent):
|
||||||
@ -38,20 +45,12 @@ Preview::Preview(const QString& pPath, const QSize& pMaxSize, const QPoint& pos,
|
|||||||
fileReachable(true),
|
fileReachable(true),
|
||||||
actualPreview(false)
|
actualPreview(false)
|
||||||
{
|
{
|
||||||
|
|
||||||
initializeElements();
|
initializeElements();
|
||||||
if (fileReachable) {
|
if (fileReachable) {
|
||||||
positionElements();
|
positionElements();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Preview::initializeFont(const QFont& newFont)
|
|
||||||
{
|
|
||||||
font = newFont;
|
|
||||||
font.setBold(true);
|
|
||||||
metrics = QFontMetrics(font);
|
|
||||||
}
|
|
||||||
|
|
||||||
Preview::~Preview()
|
Preview::~Preview()
|
||||||
{
|
{
|
||||||
clean();
|
clean();
|
||||||
|
@ -48,7 +48,6 @@ public:
|
|||||||
bool isFileReachable() const;
|
bool isFileReachable() const;
|
||||||
QSize size() const;
|
QSize size() const;
|
||||||
|
|
||||||
static void initializeFont(const QFont& newFont);
|
|
||||||
static QSize constrainAttachSize(QSize src, QSize bounds);
|
static QSize constrainAttachSize(QSize src, QSize bounds);
|
||||||
static QSize calculateAttachSize(const QString& path, const QRect& bounds);
|
static QSize calculateAttachSize(const QString& path, const QRect& bounds);
|
||||||
static bool canVisualize(const Shared::Global::FileInfo& info);
|
static bool canVisualize(const Shared::Global::FileInfo& info);
|
||||||
|
@ -29,10 +29,11 @@ constexpr uint8_t maxSingleLineParts = 3;
|
|||||||
UI::KeyDelegate::KeyDelegate(QObject* parent):
|
UI::KeyDelegate::KeyDelegate(QObject* parent):
|
||||||
QStyledItemDelegate(parent),
|
QStyledItemDelegate(parent),
|
||||||
fingerPrintFont(QFontDatabase::systemFont(QFontDatabase::FixedFont)),
|
fingerPrintFont(QFontDatabase::systemFont(QFontDatabase::FixedFont)),
|
||||||
|
labelFont(QFontDatabase::systemFont(QFontDatabase::SmallestReadableFont)),
|
||||||
fingerPrintMetrics(fingerPrintFont),
|
fingerPrintMetrics(fingerPrintFont),
|
||||||
|
labelFontMetrics(labelFont),
|
||||||
spaceWidth(fingerPrintMetrics.horizontalAdvance(" "))
|
spaceWidth(fingerPrintMetrics.horizontalAdvance(" "))
|
||||||
{
|
{}
|
||||||
}
|
|
||||||
|
|
||||||
UI::KeyDelegate::~KeyDelegate() {}
|
UI::KeyDelegate::~KeyDelegate() {}
|
||||||
|
|
||||||
@ -48,6 +49,24 @@ void UI::KeyDelegate::paint(QPainter* painter, const QStyleOptionViewItem& optio
|
|||||||
painter->restore();
|
painter->restore();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QColor q = painter->pen().color();
|
||||||
|
q.setAlpha(180);
|
||||||
|
|
||||||
|
QRect rect = option.rect;
|
||||||
|
rect.adjust(margin, margin, 0, 0);
|
||||||
|
QVariant labelV = index.data(UI::KeysModel::Label);
|
||||||
|
if (labelV.isValid()) {
|
||||||
|
QString label = labelV.toString();
|
||||||
|
if (label.size() > 0) {
|
||||||
|
painter->save();
|
||||||
|
painter->setFont(labelFont);
|
||||||
|
painter->setPen(q);
|
||||||
|
painter->drawText(rect, Qt::AlignLeft | Qt::AlignTop, label);
|
||||||
|
rect.adjust(0, labelFontMetrics.lineSpacing(), 0, 0);
|
||||||
|
painter->restore();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
QVariant fingerPrintV = index.data(UI::KeysModel::FingerPrint);
|
QVariant fingerPrintV = index.data(UI::KeysModel::FingerPrint);
|
||||||
if (fingerPrintV.isValid()) {
|
if (fingerPrintV.isValid()) {
|
||||||
painter->save();
|
painter->save();
|
||||||
@ -55,8 +74,6 @@ void UI::KeyDelegate::paint(QPainter* painter, const QStyleOptionViewItem& optio
|
|||||||
QByteArray fingerPrint = fingerPrintV.toByteArray();
|
QByteArray fingerPrint = fingerPrintV.toByteArray();
|
||||||
std::vector<QString> parts = getParts(fingerPrint);
|
std::vector<QString> parts = getParts(fingerPrint);
|
||||||
uint8_t partsLength = parts.size();
|
uint8_t partsLength = parts.size();
|
||||||
QRect rect = option.rect;
|
|
||||||
rect.adjust(margin, margin, 0, 0);
|
|
||||||
QRect r;
|
QRect r;
|
||||||
uint8_t firstLine;
|
uint8_t firstLine;
|
||||||
if (partsLength > maxSingleLineParts)
|
if (partsLength > maxSingleLineParts)
|
||||||
@ -73,8 +90,25 @@ void UI::KeyDelegate::paint(QPainter* painter, const QStyleOptionViewItem& optio
|
|||||||
rect.adjust(r.width() + spaceWidth ,0, 0, 0);
|
rect.adjust(r.width() + spaceWidth ,0, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rect.adjust(0, r.height() + fingerPrintMetrics.leading(), 0, 0);
|
||||||
|
rect.setLeft(option.rect.left() + margin);
|
||||||
|
|
||||||
painter->restore();
|
painter->restore();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
QVariant lastV = index.data(UI::KeysModel::LastInteraction);
|
||||||
|
if (lastV.isValid()) {
|
||||||
|
QDateTime last = lastV.toDateTime();
|
||||||
|
if (last.isValid()) {
|
||||||
|
painter->save();
|
||||||
|
painter->setFont(labelFont);
|
||||||
|
painter->setPen(q);
|
||||||
|
painter->drawText(rect, Qt::AlignLeft | Qt::AlignTop, last.toString());
|
||||||
|
rect.adjust(0, labelFontMetrics.lineSpacing(), 0, 0);
|
||||||
|
painter->restore();
|
||||||
|
}
|
||||||
|
}
|
||||||
//painter->drawText(option.rect, option.displayAlignment, index.data().toString());
|
//painter->drawText(option.rect, option.displayAlignment, index.data().toString());
|
||||||
|
|
||||||
painter->restore();
|
painter->restore();
|
||||||
@ -85,6 +119,12 @@ QSize UI::KeyDelegate::sizeHint(const QStyleOptionViewItem& option, const QModel
|
|||||||
|
|
||||||
int mh = margin * 2;
|
int mh = margin * 2;
|
||||||
int mw = margin * 2;
|
int mw = margin * 2;
|
||||||
|
|
||||||
|
QVariant labelV = index.data(UI::KeysModel::Label);
|
||||||
|
if (labelV.isValid() && labelV.toString().size() > 0) {
|
||||||
|
mh += labelFontMetrics.lineSpacing();
|
||||||
|
}
|
||||||
|
|
||||||
QVariant fingerPrintV = index.data(UI::KeysModel::FingerPrint);
|
QVariant fingerPrintV = index.data(UI::KeysModel::FingerPrint);
|
||||||
if (fingerPrintV.isValid()) {
|
if (fingerPrintV.isValid()) {
|
||||||
QString hex = fingerPrintV.toByteArray().toHex();
|
QString hex = fingerPrintV.toByteArray().toHex();
|
||||||
@ -103,7 +143,10 @@ QSize UI::KeyDelegate::sizeHint(const QStyleOptionViewItem& option, const QModel
|
|||||||
|
|
||||||
mw += firstLine * partSize * spaceWidth + (firstLine - 1) * spaceWidth;
|
mw += firstLine * partSize * spaceWidth + (firstLine - 1) * spaceWidth;
|
||||||
}
|
}
|
||||||
|
QVariant lastV = index.data(UI::KeysModel::LastInteraction);
|
||||||
|
if (lastV.isValid() && lastV.toDateTime().isValid()) {
|
||||||
|
mh += labelFontMetrics.lineSpacing();
|
||||||
|
}
|
||||||
|
|
||||||
if (size.width() < mw)
|
if (size.width() < mw)
|
||||||
size.setWidth(mw);
|
size.setWidth(mw);
|
||||||
|
@ -34,7 +34,9 @@ public:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
QFont fingerPrintFont;
|
QFont fingerPrintFont;
|
||||||
|
QFont labelFont;
|
||||||
QFontMetrics fingerPrintMetrics;
|
QFontMetrics fingerPrintMetrics;
|
||||||
|
QFontMetrics labelFontMetrics;
|
||||||
int spaceWidth;
|
int spaceWidth;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -44,11 +44,21 @@ QVariant UI::KeysModel::data(const QModelIndex& index, int role) const {
|
|||||||
|
|
||||||
switch (role) {
|
switch (role) {
|
||||||
case Qt::DisplayRole:
|
case Qt::DisplayRole:
|
||||||
|
case Label:
|
||||||
answer = keys[i]->label;
|
answer = keys[i]->label;
|
||||||
break;
|
break;
|
||||||
case FingerPrint:
|
case FingerPrint:
|
||||||
answer = keys[i]->fingerPrint;
|
answer = keys[i]->fingerPrint;
|
||||||
break;
|
break;
|
||||||
|
case TrustLevel:
|
||||||
|
answer = static_cast<uint8_t>(keys[i]->trustLevel);
|
||||||
|
break;
|
||||||
|
case LastInteraction:
|
||||||
|
answer = keys[i]->lastInteraction;
|
||||||
|
break;
|
||||||
|
case Dirty:
|
||||||
|
answer = false;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return answer;
|
return answer;
|
||||||
|
@ -43,7 +43,9 @@ public:
|
|||||||
enum Roles {
|
enum Roles {
|
||||||
Label = Qt::UserRole + 1,
|
Label = Qt::UserRole + 1,
|
||||||
FingerPrint,
|
FingerPrint,
|
||||||
TrustLevel
|
TrustLevel,
|
||||||
|
LastInteraction,
|
||||||
|
Dirty
|
||||||
};
|
};
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -54,8 +54,12 @@ void Omemo::generateMockData()
|
|||||||
}
|
}
|
||||||
Shared::KeyInfo info;
|
Shared::KeyInfo info;
|
||||||
info.id = i;
|
info.id = i;
|
||||||
|
if (i % 3 == 0)
|
||||||
info.label = QString("test_") + std::to_string(i).c_str();
|
info.label = QString("test_") + std::to_string(i).c_str();
|
||||||
info.fingerPrint = fp;
|
info.fingerPrint = fp;
|
||||||
|
if (i % 2 == 0)
|
||||||
|
info.lastInteraction = QDateTime::currentDateTime();
|
||||||
|
|
||||||
keysModel.addKey(info);
|
keysModel.addKey(info);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -82,7 +82,7 @@
|
|||||||
<enum>QAbstractItemView::ScrollPerItem</enum>
|
<enum>QAbstractItemView::ScrollPerItem</enum>
|
||||||
</property>
|
</property>
|
||||||
<property name="uniformItemSizes">
|
<property name="uniformItemSizes">
|
||||||
<bool>true</bool>
|
<bool>false</bool>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
Loading…
Reference in New Issue
Block a user