1 #ifndef FOREIGNKEYDELEGATE_H
2 #define FOREIGNKEYDELEGATE_H
3 
4 #include <QStyledItemDelegate>
5 #include <unordered_map>
6 #include <vector>
7 #include <string>
8 
9 class DBBrowserDB;
10 
11 namespace sqlb
12 {
13 class Table;
14 }
15 
16 class ForeignKeyEditorDelegate : public QStyledItemDelegate
17 {
18     Q_OBJECT
19 
20 public:
21     explicit ForeignKeyEditorDelegate(const DBBrowserDB& db, sqlb::Table& table, QObject* parent = nullptr);
22 
23     QWidget* createEditor(QWidget* parent, const QStyleOptionViewItem& option, const QModelIndex& index) const override;
24     void setEditorData(QWidget* editor, const QModelIndex& index) const override;
25     void setModelData(QWidget* editor, QAbstractItemModel* model, const QModelIndex& index) const override;
26     void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const override;
27 
28 private:
29     const DBBrowserDB& m_db;
30     sqlb::Table& m_table;
31     mutable std::unordered_map<std::string, std::vector<std::string>> m_tablesIds;
32 };
33 
34 #endif // FOREIGNKEYDELEGATE_H
35