File indexing completed on 2024-04-28 05:38:03
0001 /*************************************************************************** 0002 * Copyright (C) 2009 by Renaud Guezennec * 0003 * https://rolisteam.org/contact * 0004 * * 0005 * Rolisteam is free software; you can redistribute it and/or modify * 0006 * it under the terms of the GNU General Public License as published by * 0007 * the Free Software Foundation; either version 2 of the License, or * 0008 * (at your option) any later version. * 0009 * * 0010 * This program is distributed in the hope that it will be useful, * 0011 * but WITHOUT ANY WARRANTY; without even the implied warranty of * 0012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * 0013 * GNU General Public License for more details. * 0014 * * 0015 * You should have received a copy of the GNU General Public License * 0016 * along with this program; if not, write to the * 0017 * Free Software Foundation, Inc., * 0018 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * 0019 ***************************************************************************/ 0020 #include "campaigndock.h" 0021 0022 #include <QCloseEvent> 0023 #include <QDebug> 0024 #include <QFileSystemModel> 0025 #include <QHBoxLayout> 0026 #include <QHeaderView> 0027 #include <QLineEdit> 0028 #include <QTreeView> 0029 0030 #include "data/campaign.h" 0031 #include "data/campaigneditor.h" 0032 #include "model/mediamodel.h" 0033 0034 #include "ui_campaigndock.h" 0035 0036 namespace campaign 0037 { 0038 CampaignDock::CampaignDock(CampaignEditor* ctrl, QWidget* parent) 0039 : QDockWidget(parent) 0040 , m_ui(new Ui::CampaignDock) 0041 , m_campaignEditor(ctrl) 0042 , m_model(new MediaModel(ctrl ? ctrl->campaign() : nullptr)) 0043 , m_filteredModel(new MediaFilteredModel) 0044 { 0045 m_ui->setupUi(this); 0046 setObjectName("CampaignDock"); 0047 m_ui->m_view->setCampaign(ctrl->campaign()); 0048 0049 setWindowTitle(tr("Campaign Content")); 0050 0051 m_ui->m_typeCombobox->addItem(tr("All"), QVariant::fromValue(Core::MediaType::Unknown)); 0052 m_ui->m_typeCombobox->addItem(tr("AudioFile"), QVariant::fromValue(Core::MediaType::AudioFile)); 0053 m_ui->m_typeCombobox->addItem(tr("CharacterSheet"), QVariant::fromValue(Core::MediaType::CharacterSheetFile)); 0054 m_ui->m_typeCombobox->addItem(tr("Image"), QVariant::fromValue(Core::MediaType::ImageFile)); 0055 m_ui->m_typeCombobox->addItem(tr("Map"), QVariant::fromValue(Core::MediaType::MapFile)); 0056 m_ui->m_typeCombobox->addItem(tr("Mindmap"), QVariant::fromValue(Core::MediaType::MindmapFile)); 0057 m_ui->m_typeCombobox->addItem(tr("PDF"), QVariant::fromValue(Core::MediaType::PdfFile)); 0058 m_ui->m_typeCombobox->addItem(tr("PlayList"), QVariant::fromValue(Core::MediaType::PlayListFile)); 0059 m_ui->m_typeCombobox->addItem(tr("Text"), QVariant::fromValue(Core::MediaType::TextFile)); 0060 m_ui->m_typeCombobox->addItem(tr("Token"), QVariant::fromValue(Core::MediaType::TokenFile)); 0061 m_ui->m_typeCombobox->addItem(tr("WebPage"), QVariant::fromValue(Core::MediaType::WebpageFile)); 0062 0063 connect(this, &CampaignDock::campaignChanged, this, 0064 [this]() { m_model->setCampaign(m_campaignEditor->campaign()); }); 0065 connect(m_ui->m_view, &CampaignView::openAs, this, &CampaignDock::openResource); 0066 connect(m_ui->m_view, &CampaignView::removeSelection, this, &CampaignDock::removeFile); 0067 0068 m_filteredModel->setSourceModel(m_model.get()); 0069 m_ui->m_view->setModel(m_filteredModel.get()); 0070 0071 connect(m_ui->m_patternEdit, &QLineEdit::textEdited, this, 0072 [this]() { m_filteredModel->setPattern(m_ui->m_patternEdit->text()); }); 0073 0074 connect(m_ui->m_typeCombobox, QOverload<int>::of(&QComboBox::currentIndexChanged), this, 0075 [this]() { m_filteredModel->setType(m_ui->m_typeCombobox->currentData().value<Core::MediaType>()); }); 0076 0077 connect(m_model.get(), &MediaModel::performCommand, m_campaignEditor, &CampaignEditor::doCommand); 0078 0079 m_ui->m_view->setDragEnabled(true); 0080 m_ui->m_view->setAcceptDrops(true); 0081 m_ui->m_view->setDropIndicatorShown(true); 0082 m_ui->m_view->setDefaultDropAction(Qt::MoveAction); 0083 m_ui->m_view->setSelectionMode(QAbstractItemView::ExtendedSelection); 0084 m_ui->m_view->setAlternatingRowColors(true); 0085 } 0086 CampaignDock::~CampaignDock() {} 0087 0088 void CampaignDock::setCampaign(CampaignEditor* campaign) 0089 { 0090 if(m_campaignEditor == campaign) 0091 return; 0092 m_campaignEditor= campaign; 0093 emit campaignChanged(); 0094 } 0095 void CampaignDock::closeEvent(QCloseEvent* event) 0096 { 0097 QWidget::closeEvent(event); 0098 if(event->isAccepted()) 0099 { 0100 // emit changeVisibility(false); 0101 } 0102 } 0103 } // namespace campaign