8 #include <QApplication>
14 json[
"parentId"] = (int) mParentId;
15 json[
"id"] = (int) mId;
35 if (mDirectory)
return mDirectory->
id();
36 if (mContext)
return mContext->
id();
42 if (mDirectory)
return mDirectory->
name();
43 if (mContext)
return mContext->
name();
60 return mDirectory->
name();
62 return mDirectory->
id();
74 return mContext->
id();
115 if (!parent)
return 0;
121 return mDirectory !=
nullptr;
126 return mContext !=
nullptr;
193 types <<
"contexttreemodel/item";
199 return getItemInternal(
mRootItem, directoryId,
true);
204 return getItemInternal(
mRootItem, contextId,
false);
214 if (ctxItem->
getId() ==
id && isDirectory)
216 BaseTreeItem* bti = getItemInternal(childItem,
id, isDirectory);
220 else if (ctxItem->
isContext() && !isDirectory)
222 if (ctxItem->
getId() ==
id)
232 parentItem = mCurrentDirectory;
243 mCurrentDirectory = item;
250 mDirectoryList.push_back(directory);
274 else if(mCurrentDirectory)
275 finalParent = mCurrentDirectory;
287 mContextMap.insert({context, item});
303 int row = item->
row();
306 parent->removeChild(item);
311 std::map<GraphContext *,ContextTreeItem *>::iterator it;
312 it = mContextMap.find(context);
313 mContextMap.erase(it);
320 if(item == mCurrentDirectory) {
321 mCurrentDirectory =
nullptr;
326 for (
int i = 0; i < childCopy.
length(); i++) {
347 int row = item->
row();
350 parent->removeChild(item);
353 auto it = std::find(mDirectoryList.begin(), mDirectoryList.end(), directory);
354 if (it != mDirectoryList.end()) {
355 mDirectoryList.erase(it);
370 if (
static_cast<ContextTreeItem*
>(item)->isDirectory())
return nullptr;
372 for (
auto &i : mContextMap) {
373 if (i.second == item) {
383 mContextList.clear();
384 for (
auto it = mContextMap.begin(); it != mContextMap.end(); ++it) {
385 mContextList.push_back(it->first);
392 return mDirectoryList;
398 if(currentItem ==
nullptr)
399 mCurrentDirectory =
nullptr;
404 mCurrentDirectory = currentItem;
409 return mCurrentDirectory;
414 if (!itemToMove || !newParent )
return false;
422 if (!oldParent)
return false;
424 int currentRow = itemToMove->
row();
435 void ContextTreeModel::dumpRecursion(
ContextTreeItem *parent,
int level)
const
438 for (
int i=0; i<level; i++)
442 if (
parent->isDirectory())
443 std::cerr <<
parent->directory()->name().toStdString() << std::endl;
445 std::cerr <<
"[" <<
parent->context()->name().toStdString() <<
"] " <<
parent->context()->id() << std::endl;
449 dumpRecursion(
dynamic_cast<ContextTreeItem*
>(cld), level+1);
459 std::vector<u32> ids;
465 ids.push_back(cti->
getId());
478 std::vector<u32> ids;
484 ids.push_back(cti->
getId());
(Future) Base class for all tree models related to the details widget.
virtual int getRowForChild(const BaseTreeItem *child) const
virtual QList< BaseTreeItem * > getChildren() const
virtual bool removeChild(BaseTreeItem *child)
virtual BaseTreeItem * getParent() const
virtual int getChildCount() const
virtual void appendChild(BaseTreeItem *child)
The BaseTreeModel implements generic standard functions of a tree model.
QModelIndex getIndexFromItem(BaseTreeItem *item) const
virtual QModelIndex index(int row, int column, const QModelIndex &parent=QModelIndex()) const override
virtual Qt::ItemFlags flags(const QModelIndex &index) const override
void insertChildItem(BaseTreeItem *childItem, BaseTreeItem *parentItem=nullptr, int row=-1)
BaseTreeItem * getRootItem() const
void setHeaderLabels(const QStringList &label)
BaseTreeItem * getItemFromIndex(QModelIndex index) const
void writeToFile(QJsonObject &json)
QVariant getData(int column) const override
QDateTime getTimestamp() const
ContextTreeItem(GraphContext *context)
int getColumnCount() const override
GraphContext * context() const
ContextDirectory * directory() const
void setData(QList< QVariant > data) override
void appendData(QVariant data) override
void setDataAtIndex(int index, QVariant &data) override
bool moveItem(ContextTreeItem *itemToMove, BaseTreeItem *newParent, int row=-1)
std::vector< u32 > getChildDirectoriesOf(u32 directoryId)
void removeDirectory(ContextDirectory *directory)
QStringList mimeTypes() const override
void setCurrentDirectory(ContextTreeItem *currentItem)
Qt::ItemFlags flags(const QModelIndex &index) const override
void directoryCreatedSignal(ContextTreeItem *item)
const QVector< GraphContext * > & list()
QVariant data(const QModelIndex &inddex, int role=Qt::DisplayRole) const override
std::vector< u32 > getChildContextsOf(u32 directoryId)
QModelIndex getIndexFromContext(GraphContext *context) const
BaseTreeItem * getDirectory(u32 directoryId) const
ContextTreeItem * getCurrentDirectory()
void removeContext(GraphContext *context)
ContextDirectory * addDirectory(QString name, BaseTreeItem *parentItem, u32 id)
void addContext(GraphContext *context, BaseTreeItem *parent=nullptr)
ContextTreeModel(QObject *parent=nullptr)
const QVector< ContextDirectory * > & directoryList()
BaseTreeItem * getContext(u32 contextId) const
Logical container for modules, gates, and nets.
u32 getExclusiveModuleId() const
QDateTime getTimestamp() const
QString getNameWithDirtyState() const
static SelectionDetailsIconProvider * instance()
virtual void setObject(const UserActionObject &obj)
The UserActionObject class represents a single object used in UserAction.
void beginInsertRows(const QModelIndex &parent, int first, int last)
void beginRemoveRows(const QModelIndex &parent, int first, int last)
void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector< int > &roles)
QString toString(Qt::DateFormat format) const const
void * internalPointer() const const
bool isValid() const const
const QObjectList & children() const const
QMetaObject::Connection connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
QObject * parent() const const