/* * Copyright 2008 Ben Boeckel * * 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, either version 3 of the License, or * (at your option) any later version. * * 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 . */ // Header include #include "PokemodTree.h" // Model includes #include "models/BaseModel.h" // PokeModr includes #include "ObjectUI.h" #include "PokemodTreeModel.h" // Qt includes #include PokemodTree::PokemodTree(QWidget* parent) : QTreeView(parent) { header()->hide(); setModel(new PokemodTreeModel(this)); setRootIndex(model()->index(-1, 0, QModelIndex())); } QString PokemodTree::description(const QModelIndex& index) { return QString("%1: %2").arg(model()->data(index, BaseModel::TypeRole).toString(), model()->data(index, Qt::DisplayRole).toString()); } ObjectUI* PokemodTree::editorWidget(const QModelIndex& index) { return static_cast(model()->data(index, BaseModel::WidgetRole).value()); } KMenu* PokemodTree::contextMenu(const QModelIndex& index) { return static_cast(model()->data(index, BaseModel::ContextMenuRole).value()); } QDomDocument PokemodTree::cut(const QModelIndex& index) { // TODO: actually cut out the item return copy(index); } QDomDocument PokemodTree::copy(const QModelIndex& index) { QDomDocument xml; xml.setContent(model()->data(index, BaseModel::XmlRole).toString()); return xml; } void PokemodTree::paste(const QModelIndex& index, const QDomDocument& data) { model()->setData(index, data.toString(), BaseModel::XmlRole); } void PokemodTree::addPokemod(Pokemod* pokemod) { static_cast(model())->addPokemod(pokemod); m_pokemods[pokemod] = QPair(KUrl(), false); } void PokemodTree::addPokemod(Pokemod* pokemod, const KUrl& url) { static_cast(model())->addPokemod(pokemod); m_pokemods[pokemod] = QPair(url, false); } void PokemodTree::deletePokemod(const Pokemod* pokemod) { if (m_pokemods.contains(pokemod)) { static_cast(model())->deletePokemod(pokemod); m_pokemods.remove(pokemod); } } KUrl PokemodTree::url(const Pokemod* pokemod) const { if (m_pokemods.contains(pokemod)) return m_pokemods[pokemod].first; return KUrl(); } void PokemodTree::setUrl(const Pokemod* pokemod, const KUrl& url) { if (m_pokemods.contains(pokemod)) m_pokemods[pokemod] = QPair(url, false); } bool PokemodTree::dirty(const Pokemod* pokemod) const { if (m_pokemods.contains(pokemod)) return m_pokemods[pokemod].second; return false; } void PokemodTree::setDirty(const Pokemod* pokemod, const bool dirty) { if (m_pokemods.contains(pokemod)) m_pokemods[pokemod].second = dirty; }