// SPDX-License-Identifier: GPL-3.0-only /* * Prism Launcher - Minecraft Launcher * Copyright (c) 2022 flowln * Copyright (C) 2022 Sefa Eyeoglu * * 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, version 3. * * 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 . * * This file incorporates work covered by the following copyright and * permission notice: * * Copyright 2013-2021 MultiMC Contributors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "TexturePackFolderModel.h" #include "minecraft/mod/tasks/LocalTexturePackParseTask.h" TexturePackFolderModel::TexturePackFolderModel(const QDir& dir, BaseInstance* instance, bool isIndexed, bool createDir, QObject* parent) : ResourceFolderModel(QDir(dir), instance, isIndexed, createDir, parent) { m_columnNames = QStringList({ "Enable", "Image", "Name", "Last Modified", "Provider", "Size", "File Name" }); m_columnNamesTranslated = QStringList({ tr("Enable"), tr("Image"), tr("Name"), tr("Last Modified"), tr("Provider"), tr("Size"), tr("File Name") }); m_columnSortKeys = { SortType::Enabled, SortType::Name, SortType::Name, SortType::Date, SortType::Provider, SortType::Size, SortType::Filename }; m_columnResizeModes = { QHeaderView::Interactive, QHeaderView::Interactive, QHeaderView::Stretch, QHeaderView::Interactive, QHeaderView::Interactive, QHeaderView::Interactive, QHeaderView::Interactive }; m_columnsHideable = { false, true, false, true, true, true, true }; } Task* TexturePackFolderModel::createParseTask(Resource& resource) { return new LocalTexturePackParseTask(m_nextResolutionTicket, static_cast(resource)); } QVariant TexturePackFolderModel::data(const QModelIndex& index, int role) const { if (!validateIndex(index)) { return {}; } int row = index.row(); int column = index.column(); switch (role) { case Qt::BackgroundRole: return rowBackground(row); case Qt::DecorationRole: { if (column == ImageColumn) { return at(row).image({ 32, 32 }, Qt::AspectRatioMode::KeepAspectRatioByExpanding); } break; } case Qt::SizeHintRole: if (column == ImageColumn) { return QSize(32, 32); } break; default: break; } // map the columns to the base equivilents QModelIndex mappedIndex; switch (column) { case ActiveColumn: mappedIndex = index.siblingAtColumn(ResourceFolderModel::ActiveColumn); break; case NameColumn: mappedIndex = index.siblingAtColumn(ResourceFolderModel::NameColumn); break; case DateColumn: mappedIndex = index.siblingAtColumn(ResourceFolderModel::DateColumn); break; case ProviderColumn: mappedIndex = index.siblingAtColumn(ResourceFolderModel::ProviderColumn); break; case SizeColumn: mappedIndex = index.siblingAtColumn(ResourceFolderModel::SizeColumn); break; case FileNameColumn: mappedIndex = index.siblingAtColumn(ResourceFolderModel::FileNameColumn); break; default: break; } if (mappedIndex.isValid()) { return ResourceFolderModel::data(mappedIndex, role); } return {}; } QVariant TexturePackFolderModel::headerData(int section, [[maybe_unused]] Qt::Orientation orientation, int role) const { switch (role) { case Qt::DisplayRole: switch (section) { case ActiveColumn: case NameColumn: case DateColumn: case ImageColumn: case ProviderColumn: case SizeColumn: case FileNameColumn: return columnNames().at(section); default: return {}; } case Qt::ToolTipRole: { switch (section) { case ActiveColumn: return tr("Is the texture pack enabled?"); case NameColumn: return tr("The name of the texture pack."); case DateColumn: return tr("The date and time this texture pack was last changed (or added)."); case ProviderColumn: return tr("The source provider of the texture pack."); case SizeColumn: return tr("The size of the texture pack."); case FileNameColumn: return tr("The file name of the texture pack."); default: return {}; } } default: break; } return {}; } int TexturePackFolderModel::columnCount(const QModelIndex& parent) const { return parent.isValid() ? 0 : NumColumns; }