aboutsummaryrefslogtreecommitdiff
path: root/launcher/VersionProxyModel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'launcher/VersionProxyModel.cpp')
-rw-r--r--launcher/VersionProxyModel.cpp221
1 files changed, 85 insertions, 136 deletions
diff --git a/launcher/VersionProxyModel.cpp b/launcher/VersionProxyModel.cpp
index 63a43465..6e0333e4 100644
--- a/launcher/VersionProxyModel.cpp
+++ b/launcher/VersionProxyModel.cpp
@@ -35,53 +35,48 @@
*/
#include "VersionProxyModel.h"
-#include "Application.h"
-#include <QSortFilterProxyModel>
-#include <QPixmapCache>
#include <Version.h>
#include <meta/VersionList.h>
+#include <QPixmapCache>
+#include <QSortFilterProxyModel>
+#include "Application.h"
-class VersionFilterModel : public QSortFilterProxyModel
-{
+class VersionFilterModel : public QSortFilterProxyModel {
Q_OBJECT
-public:
- VersionFilterModel(VersionProxyModel *parent) : QSortFilterProxyModel(parent)
+ public:
+ VersionFilterModel(VersionProxyModel* parent) : QSortFilterProxyModel(parent)
{
m_parent = parent;
setSortRole(BaseVersionList::SortRole);
sort(0, Qt::DescendingOrder);
}
- bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const
+ bool filterAcceptsRow(int source_row, const QModelIndex& source_parent) const
{
- const auto &filters = m_parent->filters();
- const QString &search = m_parent->search();
+ const auto& filters = m_parent->filters();
+ const QString& search = m_parent->search();
const QModelIndex idx = sourceModel()->index(source_row, 0, source_parent);
if (!search.isEmpty() && !sourceModel()->data(idx, BaseVersionList::VersionRole).toString().contains(search, Qt::CaseInsensitive))
return false;
- for (auto it = filters.begin(); it != filters.end(); ++it)
- {
+ for (auto it = filters.begin(); it != filters.end(); ++it) {
auto data = sourceModel()->data(idx, it.key());
auto match = data.toString();
- if(!it.value()->accepts(match))
- {
+ if (!it.value()->accepts(match)) {
return false;
}
}
return true;
}
- void filterChanged()
- {
- invalidateFilter();
- }
-private:
- VersionProxyModel *m_parent;
+ void filterChanged() { invalidateFilter(); }
+
+ private:
+ VersionProxyModel* m_parent;
};
-VersionProxyModel::VersionProxyModel(QObject *parent) : QAbstractProxyModel(parent)
+VersionProxyModel::VersionProxyModel(QObject* parent) : QAbstractProxyModel(parent)
{
filterModel = new VersionFilterModel(this);
connect(filterModel, &QAbstractItemModel::dataChanged, this, &VersionProxyModel::sourceDataChanged);
@@ -104,19 +99,17 @@ VersionProxyModel::VersionProxyModel(QObject *parent) : QAbstractProxyModel(pare
QVariant VersionProxyModel::headerData(int section, Qt::Orientation orientation, int role) const
{
- if(section < 0 || section >= m_columns.size())
+ if (section < 0 || section >= m_columns.size())
return QVariant();
- if(orientation != Qt::Horizontal)
+ if (orientation != Qt::Horizontal)
return QVariant();
auto column = m_columns[section];
- if(role == Qt::DisplayRole)
- {
- switch(column)
- {
+ if (role == Qt::DisplayRole) {
+ switch (column) {
case Name:
return tr("Version");
case ParentVersion:
- return tr("Minecraft"); //FIXME: this should come from metadata
+ return tr("Minecraft"); // FIXME: this should come from metadata
case Branch:
return tr("Branch");
case Type:
@@ -128,15 +121,12 @@ QVariant VersionProxyModel::headerData(int section, Qt::Orientation orientation,
case Time:
return tr("Released");
}
- }
- else if(role == Qt::ToolTipRole)
- {
- switch(column)
- {
+ } else if (role == Qt::ToolTipRole) {
+ switch (column) {
case Name:
return tr("The name of the version.");
case ParentVersion:
- return tr("Minecraft version"); //FIXME: this should come from metadata
+ return tr("Minecraft version"); // FIXME: this should come from metadata
case Branch:
return tr("The version's branch");
case Type:
@@ -152,25 +142,19 @@ QVariant VersionProxyModel::headerData(int section, Qt::Orientation orientation,
return QVariant();
}
-QVariant VersionProxyModel::data(const QModelIndex &index, int role) const
+QVariant VersionProxyModel::data(const QModelIndex& index, int role) const
{
- if(!index.isValid())
- {
+ if (!index.isValid()) {
return QVariant();
}
auto column = m_columns[index.column()];
auto parentIndex = mapToSource(index);
- switch(role)
- {
- case Qt::DisplayRole:
- {
- switch(column)
- {
- case Name:
- {
+ switch (role) {
+ case Qt::DisplayRole: {
+ switch (column) {
+ case Name: {
QString version = sourceModel()->data(parentIndex, BaseVersionList::VersionRole).toString();
- if(version == m_currentVersion)
- {
+ if (version == m_currentVersion) {
return tr("%1 (installed)").arg(version);
}
return version;
@@ -191,18 +175,14 @@ QVariant VersionProxyModel::data(const QModelIndex &index, int role) const
return QVariant();
}
}
- case Qt::ToolTipRole:
- {
- if(column == Name && hasRecommended)
- {
+ case Qt::ToolTipRole: {
+ if (column == Name && hasRecommended) {
auto value = sourceModel()->data(parentIndex, BaseVersionList::RecommendedRole);
- if(value.toBool())
- {
+ if (value.toBool()) {
return tr("Recommended");
- } else if(hasLatest) {
+ } else if (hasLatest) {
auto value = sourceModel()->data(parentIndex, BaseVersionList::LatestRole);
- if(value.toBool())
- {
+ if (value.toBool()) {
return tr("Latest");
}
}
@@ -210,32 +190,23 @@ QVariant VersionProxyModel::data(const QModelIndex &index, int role) const
return sourceModel()->data(parentIndex, BaseVersionList::VersionIdRole);
}
}
- case Qt::DecorationRole:
- {
- switch(column)
- {
- case Name:
- {
- if(hasRecommended)
- {
+ case Qt::DecorationRole: {
+ switch (column) {
+ case Name: {
+ if (hasRecommended) {
auto value = sourceModel()->data(parentIndex, BaseVersionList::RecommendedRole);
- if(value.toBool())
- {
+ if (value.toBool()) {
return APPLICATION->getThemedIcon("star");
- }
- else if(hasLatest)
- {
+ } else if (hasLatest) {
auto value = sourceModel()->data(parentIndex, BaseVersionList::LatestRole);
- if(value.toBool())
- {
+ if (value.toBool()) {
return APPLICATION->getThemedIcon("bug");
}
}
QPixmap pixmap;
QPixmapCache::find("placeholder", &pixmap);
- if(!pixmap)
- {
- QPixmap px(16,16);
+ if (!pixmap) {
+ QPixmap px(16, 16);
px.fill(Qt::transparent);
QPixmapCache::insert("placeholder", px);
return px;
@@ -243,16 +214,13 @@ QVariant VersionProxyModel::data(const QModelIndex &index, int role) const
return pixmap;
}
}
- default:
- {
+ default: {
return QVariant();
}
}
}
- default:
- {
- if(roles.contains((BaseVersionList::ModelRoles)role))
- {
+ default: {
+ if (roles.contains((BaseVersionList::ModelRoles)role)) {
return sourceModel()->data(parentIndex, role);
}
return QVariant();
@@ -260,61 +228,56 @@ QVariant VersionProxyModel::data(const QModelIndex &index, int role) const
}
}
-QModelIndex VersionProxyModel::parent(const QModelIndex &child) const
+QModelIndex VersionProxyModel::parent(const QModelIndex& child) const
{
return QModelIndex();
}
-QModelIndex VersionProxyModel::mapFromSource(const QModelIndex &sourceIndex) const
+QModelIndex VersionProxyModel::mapFromSource(const QModelIndex& sourceIndex) const
{
- if(sourceIndex.isValid())
- {
+ if (sourceIndex.isValid()) {
return index(sourceIndex.row(), 0);
}
return QModelIndex();
}
-QModelIndex VersionProxyModel::mapToSource(const QModelIndex &proxyIndex) const
+QModelIndex VersionProxyModel::mapToSource(const QModelIndex& proxyIndex) const
{
- if(proxyIndex.isValid())
- {
+ if (proxyIndex.isValid()) {
return sourceModel()->index(proxyIndex.row(), 0);
}
return QModelIndex();
}
-QModelIndex VersionProxyModel::index(int row, int column, const QModelIndex &parent) const
+QModelIndex VersionProxyModel::index(int row, int column, const QModelIndex& parent) const
{
// no trees here... shoo
- if(parent.isValid())
- {
+ if (parent.isValid()) {
return QModelIndex();
}
- if(row < 0 || row >= sourceModel()->rowCount())
+ if (row < 0 || row >= sourceModel()->rowCount())
return QModelIndex();
- if(column < 0 || column >= columnCount())
+ if (column < 0 || column >= columnCount())
return QModelIndex();
return QAbstractItemModel::createIndex(row, column);
}
-int VersionProxyModel::columnCount(const QModelIndex &parent) const
+int VersionProxyModel::columnCount(const QModelIndex& parent) const
{
return parent.isValid() ? 0 : m_columns.size();
}
-int VersionProxyModel::rowCount(const QModelIndex &parent) const
+int VersionProxyModel::rowCount(const QModelIndex& parent) const
{
- if(sourceModel())
- {
+ if (sourceModel()) {
return sourceModel()->rowCount(parent);
}
return 0;
}
-void VersionProxyModel::sourceDataChanged(const QModelIndex &source_top_left,
- const QModelIndex &source_bottom_right)
+void VersionProxyModel::sourceDataChanged(const QModelIndex& source_top_left, const QModelIndex& source_bottom_right)
{
- if(source_top_left.parent() != source_bottom_right.parent())
+ if (source_top_left.parent() != source_bottom_right.parent())
return;
// whole row is getting changed
@@ -323,22 +286,20 @@ void VersionProxyModel::sourceDataChanged(const QModelIndex &source_top_left,
emit dataChanged(topLeft, bottomRight);
}
-void VersionProxyModel::setSourceModel(QAbstractItemModel *replacingRaw)
+void VersionProxyModel::setSourceModel(QAbstractItemModel* replacingRaw)
{
- auto replacing = dynamic_cast<BaseVersionList *>(replacingRaw);
+ auto replacing = dynamic_cast<BaseVersionList*>(replacingRaw);
beginResetModel();
m_columns.clear();
- if(!replacing)
- {
+ if (!replacing) {
roles.clear();
filterModel->setSourceModel(replacing);
return;
}
roles = replacing->providesRoles();
- if(roles.contains(BaseVersionList::VersionRole))
- {
+ if (roles.contains(BaseVersionList::VersionRole)) {
m_columns.push_back(Name);
}
/*
@@ -347,32 +308,25 @@ void VersionProxyModel::setSourceModel(QAbstractItemModel *replacingRaw)
m_columns.push_back(ParentVersion);
}
*/
- if(roles.contains(BaseVersionList::ArchitectureRole))
- {
+ if (roles.contains(BaseVersionList::ArchitectureRole)) {
m_columns.push_back(Architecture);
}
- if(roles.contains(BaseVersionList::PathRole))
- {
+ if (roles.contains(BaseVersionList::PathRole)) {
m_columns.push_back(Path);
}
- if(roles.contains(Meta::VersionList::TimeRole))
- {
+ if (roles.contains(Meta::VersionList::TimeRole)) {
m_columns.push_back(Time);
}
- if(roles.contains(BaseVersionList::BranchRole))
- {
+ if (roles.contains(BaseVersionList::BranchRole)) {
m_columns.push_back(Branch);
}
- if(roles.contains(BaseVersionList::TypeRole))
- {
+ if (roles.contains(BaseVersionList::TypeRole)) {
m_columns.push_back(Type);
}
- if(roles.contains(BaseVersionList::RecommendedRole))
- {
+ if (roles.contains(BaseVersionList::RecommendedRole)) {
hasRecommended = true;
}
- if(roles.contains(BaseVersionList::LatestRole))
- {
+ if (roles.contains(BaseVersionList::LatestRole)) {
hasLatest = true;
}
filterModel->setSourceModel(replacing);
@@ -382,16 +336,13 @@ void VersionProxyModel::setSourceModel(QAbstractItemModel *replacingRaw)
QModelIndex VersionProxyModel::getRecommended() const
{
- if(!roles.contains(BaseVersionList::RecommendedRole))
- {
+ if (!roles.contains(BaseVersionList::RecommendedRole)) {
return index(0, 0);
}
int recommended = 0;
- for (int i = 0; i < rowCount(); i++)
- {
+ for (int i = 0; i < rowCount(); i++) {
auto value = sourceModel()->data(mapToSource(index(i, 0)), BaseVersionList::RecommendedRole);
- if (value.toBool())
- {
+ if (value.toBool()) {
recommended = i;
}
}
@@ -401,16 +352,13 @@ QModelIndex VersionProxyModel::getRecommended() const
QModelIndex VersionProxyModel::getVersion(const QString& version) const
{
int found = -1;
- for (int i = 0; i < rowCount(); i++)
- {
+ for (int i = 0; i < rowCount(); i++) {
auto value = sourceModel()->data(mapToSource(index(i, 0)), BaseVersionList::VersionRole);
- if (value.toString() == version)
- {
+ if (value.toString() == version) {
found = i;
}
}
- if(found == -1)
- {
+ if (found == -1) {
return QModelIndex();
}
return index(found, 0);
@@ -423,23 +371,24 @@ void VersionProxyModel::clearFilters()
filterModel->filterChanged();
}
-void VersionProxyModel::setFilter(const BaseVersionList::ModelRoles column, Filter * f)
+void VersionProxyModel::setFilter(const BaseVersionList::ModelRoles column, Filter* f)
{
m_filters[column].reset(f);
filterModel->filterChanged();
}
-void VersionProxyModel::setSearch(const QString &search) {
+void VersionProxyModel::setSearch(const QString& search)
+{
m_search = search;
filterModel->filterChanged();
}
-const VersionProxyModel::FilterMap &VersionProxyModel::filters() const
+const VersionProxyModel::FilterMap& VersionProxyModel::filters() const
{
return m_filters;
}
-const QString &VersionProxyModel::search() const
+const QString& VersionProxyModel::search() const
{
return m_search;
}
@@ -474,7 +423,7 @@ void VersionProxyModel::sourceRowsRemoved(const QModelIndex& parent, int first,
endRemoveRows();
}
-void VersionProxyModel::setCurrentVersion(const QString &version)
+void VersionProxyModel::setCurrentVersion(const QString& version)
{
m_currentVersion = version;
}