mirror of
https://github.com/keepassxreboot/keepassxc.git
synced 2025-04-04 21:17:43 +03:00
parent
e391dd182d
commit
3c5bd0ff6b
2 changed files with 48 additions and 2 deletions
|
@ -76,6 +76,27 @@ namespace
|
||||||
QList<QSharedPointer<Item>> m_items;
|
QList<QSharedPointer<Item>> m_items;
|
||||||
bool m_anyKnownBad = false;
|
bool m_anyKnownBad = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class ReportSortProxyModel : public QSortFilterProxyModel
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
ReportSortProxyModel(QObject* parent)
|
||||||
|
: QSortFilterProxyModel(parent){};
|
||||||
|
~ReportSortProxyModel() override = default;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
bool lessThan(const QModelIndex& left, const QModelIndex& right) const override
|
||||||
|
{
|
||||||
|
// Check if the display data is a number, convert and compare if so
|
||||||
|
bool ok = false;
|
||||||
|
int leftInt = sourceModel()->data(left).toString().toInt(&ok);
|
||||||
|
if (ok) {
|
||||||
|
return leftInt < sourceModel()->data(right).toString().toInt();
|
||||||
|
}
|
||||||
|
// Otherwise use default sorting
|
||||||
|
return QSortFilterProxyModel::lessThan(left, right);
|
||||||
|
}
|
||||||
|
};
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
Health::Health(QSharedPointer<Database> db)
|
Health::Health(QSharedPointer<Database> db)
|
||||||
|
@ -121,11 +142,12 @@ ReportsWidgetHealthcheck::ReportsWidgetHealthcheck(QWidget* parent)
|
||||||
, m_ui(new Ui::ReportsWidgetHealthcheck())
|
, m_ui(new Ui::ReportsWidgetHealthcheck())
|
||||||
, m_errorIcon(Resources::instance()->icon("dialog-error"))
|
, m_errorIcon(Resources::instance()->icon("dialog-error"))
|
||||||
, m_referencesModel(new QStandardItemModel(this))
|
, m_referencesModel(new QStandardItemModel(this))
|
||||||
, m_modelProxy(new QSortFilterProxyModel(this))
|
, m_modelProxy(new ReportSortProxyModel(this))
|
||||||
{
|
{
|
||||||
m_ui->setupUi(this);
|
m_ui->setupUi(this);
|
||||||
|
|
||||||
m_modelProxy->setSourceModel(m_referencesModel.data());
|
m_modelProxy->setSourceModel(m_referencesModel.data());
|
||||||
|
m_modelProxy->setSortLocaleAware(true);
|
||||||
m_ui->healthcheckTableView->setModel(m_modelProxy.data());
|
m_ui->healthcheckTableView->setModel(m_modelProxy.data());
|
||||||
m_ui->healthcheckTableView->setSelectionMode(QAbstractItemView::NoSelection);
|
m_ui->healthcheckTableView->setSelectionMode(QAbstractItemView::NoSelection);
|
||||||
m_ui->healthcheckTableView->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
|
m_ui->healthcheckTableView->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
|
||||||
|
@ -256,6 +278,7 @@ void ReportsWidgetHealthcheck::calculateHealth()
|
||||||
} else {
|
} else {
|
||||||
m_referencesModel->setHorizontalHeaderLabels(QStringList() << tr("") << tr("Title") << tr("Path") << tr("Score")
|
m_referencesModel->setHorizontalHeaderLabels(QStringList() << tr("") << tr("Title") << tr("Path") << tr("Score")
|
||||||
<< tr("Reason"));
|
<< tr("Reason"));
|
||||||
|
m_ui->healthcheckTableView->sortByColumn(0, Qt::AscendingOrder);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_ui->healthcheckTableView->resizeRowsToContents();
|
m_ui->healthcheckTableView->resizeRowsToContents();
|
||||||
|
|
|
@ -45,17 +45,38 @@ namespace
|
||||||
return entry->customData()->contains(PasswordHealth::OPTION_KNOWN_BAD)
|
return entry->customData()->contains(PasswordHealth::OPTION_KNOWN_BAD)
|
||||||
&& entry->customData()->value(PasswordHealth::OPTION_KNOWN_BAD) == TRUE_STR;
|
&& entry->customData()->value(PasswordHealth::OPTION_KNOWN_BAD) == TRUE_STR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class ReportSortProxyModel : public QSortFilterProxyModel
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
ReportSortProxyModel(QObject* parent)
|
||||||
|
: QSortFilterProxyModel(parent){};
|
||||||
|
~ReportSortProxyModel() override = default;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
bool lessThan(const QModelIndex& left, const QModelIndex& right) const override
|
||||||
|
{
|
||||||
|
// Sort count column by user data
|
||||||
|
if (left.column() == 2) {
|
||||||
|
return sourceModel()->data(left, Qt::UserRole).toInt()
|
||||||
|
< sourceModel()->data(right, Qt::UserRole).toInt();
|
||||||
|
}
|
||||||
|
// Otherwise use default sorting
|
||||||
|
return QSortFilterProxyModel::lessThan(left, right);
|
||||||
|
}
|
||||||
|
};
|
||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
ReportsWidgetHibp::ReportsWidgetHibp(QWidget* parent)
|
ReportsWidgetHibp::ReportsWidgetHibp(QWidget* parent)
|
||||||
: QWidget(parent)
|
: QWidget(parent)
|
||||||
, m_ui(new Ui::ReportsWidgetHibp())
|
, m_ui(new Ui::ReportsWidgetHibp())
|
||||||
, m_referencesModel(new QStandardItemModel(this))
|
, m_referencesModel(new QStandardItemModel(this))
|
||||||
, m_modelProxy(new QSortFilterProxyModel(this))
|
, m_modelProxy(new ReportSortProxyModel(this))
|
||||||
{
|
{
|
||||||
m_ui->setupUi(this);
|
m_ui->setupUi(this);
|
||||||
|
|
||||||
m_modelProxy->setSourceModel(m_referencesModel.data());
|
m_modelProxy->setSourceModel(m_referencesModel.data());
|
||||||
|
m_modelProxy->setSortLocaleAware(true);
|
||||||
m_ui->hibpTableView->setModel(m_modelProxy.data());
|
m_ui->hibpTableView->setModel(m_modelProxy.data());
|
||||||
m_ui->hibpTableView->setSelectionMode(QAbstractItemView::NoSelection);
|
m_ui->hibpTableView->setSelectionMode(QAbstractItemView::NoSelection);
|
||||||
m_ui->hibpTableView->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
|
m_ui->hibpTableView->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
|
||||||
|
@ -167,6 +188,7 @@ void ReportsWidgetHibp::makeHibpTable()
|
||||||
}
|
}
|
||||||
|
|
||||||
row[2]->setForeground(red);
|
row[2]->setForeground(red);
|
||||||
|
row[2]->setData(count, Qt::UserRole);
|
||||||
m_referencesModel->appendRow(row);
|
m_referencesModel->appendRow(row);
|
||||||
|
|
||||||
// Store entry pointer per table row (used in double click handler)
|
// Store entry pointer per table row (used in double click handler)
|
||||||
|
@ -198,6 +220,7 @@ void ReportsWidgetHibp::makeHibpTable()
|
||||||
}
|
}
|
||||||
|
|
||||||
m_ui->hibpTableView->resizeRowsToContents();
|
m_ui->hibpTableView->resizeRowsToContents();
|
||||||
|
m_ui->hibpTableView->sortByColumn(2, Qt::DescendingOrder);
|
||||||
|
|
||||||
m_ui->stackedWidget->setCurrentIndex(1);
|
m_ui->stackedWidget->setCurrentIndex(1);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue