QtPass 1.7.0
Multi-platform GUI for pass, the standard unix password manager.
Loading...
Searching...
No Matches
storemodel.h
1// SPDX-FileCopyrightText: 2014 Anne Jan Brouwer
2// SPDX-License-Identifier: GPL-3.0-or-later
3#ifndef SRC_STOREMODEL_H_
4#define SRC_STOREMODEL_H_
5
6#include <QFileInfo>
7#include <QSortFilterProxyModel>
8
20class QFileSystemModel;
21
39
40class StoreModel : public QSortFilterProxyModel {
41 Q_OBJECT
42
43private:
44 QFileSystemModel *fs;
45 QString store;
46
47 auto parseDropData(const QMimeData *data,
48 dragAndDropInfoPasswordStore *outInfo) -> bool;
49 auto executeDropAction(const dragAndDropInfoPasswordStore &info,
50 Qt::DropAction action, const QModelIndex &parent)
51 -> bool;
52 auto handleDirDrop(const QString &cleanedSrc, const QFileInfo &destFileinfo,
53 const QFileInfo &srcFileInfo, Qt::DropAction action)
54 -> bool;
55 auto handleFileDrop(const QString &cleanedSrc, const QString &cleanedDest,
56 const QFileInfo &destFileinfo, Qt::DropAction action)
57 -> bool;
58 auto handleFileToDirDrop(const QString &cleanedSrc,
59 const QString &cleanedDest, Qt::DropAction action)
60 -> bool;
61 auto handleFileToFileDrop(const QString &cleanedSrc,
62 const QString &cleanedDest, Qt::DropAction action)
63 -> bool;
64
65public:
70
77 [[nodiscard]] auto filterAcceptsRow(int source_row,
78 const QModelIndex &source_parent) const
79 -> bool override;
80
86 [[nodiscard]] auto showThis(const QModelIndex &index) const -> bool;
87
93 void setModelAndStore(QFileSystemModel *sourceModel,
94 const QString &passStore);
95
101 void setStore(const QString &passStore);
102
109 [[nodiscard]] auto data(const QModelIndex &index, int role) const
110 -> QVariant override;
111
118 [[nodiscard]] auto lessThan(const QModelIndex &source_left,
119 const QModelIndex &source_right) const
120 -> bool override;
121
126 [[nodiscard]] auto getStore() const -> QString { return store; }
127
128 // QAbstractItemModel interface
129public:
134 [[nodiscard]] auto supportedDropActions() const -> Qt::DropActions override;
135
140 [[nodiscard]] auto supportedDragActions() const -> Qt::DropActions override;
141
147 [[nodiscard]] auto flags(const QModelIndex &index) const
148 -> Qt::ItemFlags override;
149
154 [[nodiscard]] auto mimeTypes() const -> QStringList override;
155
161 [[nodiscard]] auto mimeData(const QModelIndexList &indexes) const
162 -> QMimeData * override;
163
173 auto canDropMimeData(const QMimeData *data, Qt::DropAction action, int row,
174 int column, const QModelIndex &parent) const
175 -> bool override;
176
186 auto dropMimeData(const QMimeData *data, Qt::DropAction action, int row,
187 int column, const QModelIndex &parent) -> bool override;
188};
189
190#endif // SRC_STOREMODEL_H_
auto filterAcceptsRow(int source_row, const QModelIndex &source_parent) const -> bool override
Filter whether a row should be displayed.
auto getStore() const -> QString
Get the password store root path.
Definition storemodel.h:126
auto data(const QModelIndex &index, int role) const -> QVariant override
Get display data for index.
StoreModel()
Construct a StoreModel.
auto showThis(const QModelIndex &index) const -> bool
Check if a specific index should be shown.
auto mimeTypes() const -> QStringList override
Get supported MIME types for drag/drop.
void setModelAndStore(QFileSystemModel *sourceModel, const QString &passStore)
Initialize model with source model and store path.
auto dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) -> bool override
Handle dropped MIME data.
void setStore(const QString &passStore)
Update the store path used for filtering without changing the source model.
auto mimeData(const QModelIndexList &indexes) const -> QMimeData *override
Create MIME data from indexes.
auto supportedDragActions() const -> Qt::DropActions override
Get supported drag actions.
auto flags(const QModelIndex &index) const -> Qt::ItemFlags override
Get item flags for index.
auto canDropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) const -> bool override
Check if drop is possible.
auto lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const -> bool override
Compare two indices for sorting.
auto supportedDropActions() const -> Qt::DropActions override
Get supported drop actions.
Holds information for drag and drop operations in the password store.
Definition storemodel.h:26
ItemKind
Type of the dragged item.
Definition storemodel.h:30