12 #include <QAbstractItemModel> 13 #include <QStringList> 26 QAbstractItemModel *SourceModel_ =
nullptr;
31 QMultiHash<QPersistentModelIndex, FlatTreeItem_ptr>
Items_;
35 int columnCount (
const QModelIndex& = {})
const override;
36 QVariant data (
const QModelIndex&,
int = Qt::DisplayRole)
const override;
37 QVariant headerData (
int, Qt::Orientation,
int)
const override;
38 Qt::ItemFlags flags (
const QModelIndex&)
const override;
39 QModelIndex index (
int,
int,
const QModelIndex& = {})
const override;
40 QModelIndex parent (
const QModelIndex&)
const override;
41 int rowCount (
const QModelIndex& = {})
const override;
43 Qt::DropActions supportedDropActions ()
const override;
44 QStringList mimeTypes ()
const override;
45 QMimeData* mimeData (
const QModelIndexList& indexes)
const override;
46 bool dropMimeData (
const QMimeData *data, Qt::DropAction action,
int row,
int column,
const QModelIndex& parent)
override;
48 void SetSourceModel (QAbstractItemModel*);
49 QAbstractItemModel* GetSourceModel ()
const;
50 QModelIndex MapToSource (
const QModelIndex&)
const;
53 bool IsFolder (
const QModelIndex&)
const;
55 QList<QVariant> GetChildrenData (
const QModelIndex& index,
int role)
const;
61 for (
const auto& var : GetChildrenData (index, role))
62 result.push_back (var.value<T> ());
66 const FlatTreeItem& ToFlatOrRoot (
const QModelIndex&)
const;
68 void HandleRowInserted (
int);
69 void HandleRowRemoved (
int);
70 void AddForTag (
const QString&,
const QPersistentModelIndex&);
71 void RemoveFromTag (
const QString&,
const QPersistentModelIndex&);
72 void HandleChanged (
const QModelIndex&);
77 void HandleDataChanged (
const QModelIndex&,
const QModelIndex&);
78 void HandleModelReset ();
79 void HandleRowsInserted (
const QModelIndex&,
int,
int);
80 void HandleRowsAboutToBeRemoved (
const QModelIndex&,
int,
int);
QMultiMap< QDateTime, QString > Items_
QList< T > GetChildrenData(const QModelIndex &index, int role) const
std::shared_ptr< FlatTreeItem > FlatTreeItem_ptr