66 lines
2.4 KiB
C++
66 lines
2.4 KiB
C++
|
#include "aboutwindow.h"
|
||
|
QModelIndex LicenseModel::index(int row, int column, const QModelIndex &parent) const {
|
||
|
return createIndex(row, 0, row);
|
||
|
}
|
||
|
QModelIndex LicenseModel::parent(const QModelIndex &child) const {
|
||
|
return QModelIndex();
|
||
|
}
|
||
|
Qt::ItemFlags LicenseModel::flags(const QModelIndex &index) const {
|
||
|
return Qt::ItemFlag::ItemIsEnabled|Qt::ItemFlag::ItemIsSelectable;
|
||
|
}
|
||
|
int LicenseModel::rowCount(const QModelIndex &parent) const {
|
||
|
return parent.isValid() ? 0 : licenseData.size();
|
||
|
}
|
||
|
int LicenseModel::columnCount(const QModelIndex &parent) const {
|
||
|
return parent.isValid() ? 0 : 1;
|
||
|
}
|
||
|
QVariant LicenseModel::data(const QModelIndex &index, int role) const {
|
||
|
if ((index.row() < 0 || licenseData.size() <= index.row()) && (role == Qt::DisplayRole || role == Qt::UserRole)) {
|
||
|
return "";
|
||
|
}
|
||
|
switch (role) {
|
||
|
case Qt::DisplayRole: {
|
||
|
const LicenseData &data = licenseData[index.row()];
|
||
|
return QString::asprintf("%s (%s)", data.Project.c_str(), data.Spdx.c_str());
|
||
|
} break;
|
||
|
case Qt::UserRole: {
|
||
|
return QString(licenseData[index.row()].LicenseContents.c_str());
|
||
|
} break;
|
||
|
default: {
|
||
|
return QVariant();
|
||
|
} break;
|
||
|
}
|
||
|
}
|
||
|
LicenseModel::LicenseModel() {
|
||
|
auto tmp = get_license_data();
|
||
|
for (auto data : tmp) {
|
||
|
licenseData.push_back(data);
|
||
|
}
|
||
|
}
|
||
|
LicenseModel::~LicenseModel() {
|
||
|
|
||
|
}
|
||
|
AboutWindow::AboutWindow() {
|
||
|
license_text = new QTextBrowser();
|
||
|
license_list = new QListView();
|
||
|
license_list->setModel(new LicenseModel());
|
||
|
QObject::connect(license_list, &QListView::clicked, [=,this](const QModelIndex &idx) {
|
||
|
license_text->setText(license_list->model()->data(idx, Qt::UserRole).toString());
|
||
|
});
|
||
|
license_list->setSelectionMode(QAbstractItemView::SingleSelection);
|
||
|
license_list->setSelectionBehavior(QAbstractItemView::SelectRows);
|
||
|
QBoxLayout *mainLayout = new QBoxLayout(QBoxLayout::TopToBottom);
|
||
|
QLabel *title = new QLabel("Looper");
|
||
|
auto font = title->font();
|
||
|
font.setPointSize(24);
|
||
|
title->setFont(font);
|
||
|
mainLayout->addWidget(title);
|
||
|
QLabel *versionText = new QLabel(TAG);
|
||
|
mainLayout->addWidget(versionText);
|
||
|
QSplitter *splitter = new QSplitter(Qt::Orientation::Horizontal);
|
||
|
splitter->addWidget(license_list);
|
||
|
splitter->addWidget(license_text);
|
||
|
mainLayout->addWidget(splitter);
|
||
|
setLayout(mainLayout);
|
||
|
license_list->clicked(license_list->model()->index(0, 0));
|
||
|
}
|