##// END OF EJS Templates
Updates model after an event has been created through the colored zone
Updates model after an event has been created through the colored zone

File last commit:

r1261:829045cd6b75
r1262:99c1ba5e139b
Show More
CatalogueTreeItem.cpp
95 lines | 2.7 KiB | text/x-c | CppLexer
Refactoring of catalogue: use a custom item class
r1260 #include "Catalogue/CatalogueTreeItems/CatalogueTreeItem.h"
#include <Catalogue/CatalogueExplorerHelper.h>
#include <Catalogue/CatalogueController.h>
#include <Common/MimeTypesDef.h>
#include <QIcon>
#include <QMimeData>
#include <SqpApplication.h>
#include <memory>
#include <DBCatalogue.h>
struct CatalogueTreeItem::CatalogueTreeItemPrivate {
std::shared_ptr<DBCatalogue> m_Catalogue;
QIcon m_Icon;
CatalogueTreeItemPrivate(std::shared_ptr<DBCatalogue> catalogue, const QIcon &icon)
: m_Catalogue(catalogue), m_Icon(icon)
{
}
};
CatalogueTreeItem::CatalogueTreeItem(std::shared_ptr<DBCatalogue> catalogue, const QIcon &icon,
int type)
: CatalogueAbstractTreeItem(type),
impl{spimpl::make_unique_impl<CatalogueTreeItemPrivate>(catalogue, icon)}
{
}
QVariant CatalogueTreeItem::data(int column, int role) const
{
if (column == 0) {
switch (role) {
case Qt::EditRole: // fallthrough
case Qt::DisplayRole:
return impl->m_Catalogue->getName();
case Qt::DecorationRole:
return impl->m_Icon;
default:
break;
}
}
return QVariant();
}
bool CatalogueTreeItem::setData(int column, int role, const QVariant &value)
{
bool result = false;
if (role == Qt::EditRole && column == 0) {
auto newName = value.toString();
if (newName != impl->m_Catalogue->getName()) {
impl->m_Catalogue->setName(newName);
sqpApp->catalogueController().updateCatalogue(impl->m_Catalogue);
result = true;
}
}
return result;
}
Qt::ItemFlags CatalogueTreeItem::flags(int column) const
{
if (column == 0) {
return Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsEditable
| Qt::ItemIsDropEnabled;
}
else {
return Qt::ItemIsEnabled | Qt::ItemIsSelectable;
}
}
bool CatalogueTreeItem::canDropMimeData(const QMimeData *data, Qt::DropAction action)
{
return data->hasFormat(MIME_TYPE_EVENT_LIST);
}
Drop of events on a catalogue
r1261 bool CatalogueTreeItem::dropMimeData(const QMimeData *data, Qt::DropAction action)
{
Q_ASSERT(canDropMimeData(data, action));
auto events = sqpApp->catalogueController().eventsForMimeData(data->data(MIME_TYPE_EVENT_LIST));
// impl->m_Catalogue->addEvents(events); TODO: move events in the new catalogue
// Warning: Check that the events aren't already in the catalogue
// Also check for the repository !!!
}
Refactoring of catalogue: use a custom item class
r1260 std::shared_ptr<DBCatalogue> CatalogueTreeItem::catalogue() const
{
return impl->m_Catalogue;
}