summaryrefslogtreecommitdiff
path: root/src/main-view/DictTableDelegate.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/main-view/DictTableDelegate.h')
-rw-r--r--src/main-view/DictTableDelegate.h44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/main-view/DictTableDelegate.h b/src/main-view/DictTableDelegate.h
new file mode 100644
index 0000000..cf43fc5
--- /dev/null
+++ b/src/main-view/DictTableDelegate.h
@@ -0,0 +1,44 @@
+#ifndef DICT_TABLE_DELEGATE_H
+#define DICT_TABLE_DELEGATE_H
+
+#include <QtWidgets>
+
+#include "RecordEditor.h"
+
+class DictTableDelegate: public QStyledItemDelegate
+{
+Q_OBJECT
+
+public:
+ DictTableDelegate(QObject* parent):
+ QStyledItemDelegate(parent), editor(NULL) {}
+ QWidget* createEditor(QWidget* parent, const QStyleOptionViewItem& option,
+ const QModelIndex& index) const;
+ void updateEditorGeometry(QWidget* editor, const QStyleOptionViewItem& option,
+ const QModelIndex& index) const;
+ bool eventFilter(QObject *object, QEvent *event);
+ void setEditorData(QWidget* editor, const QModelIndex& index) const;
+ void setModelData(QWidget* editor, QAbstractItemModel* model,
+ const QModelIndex& index) const;
+ void paint(QPainter* painter, const QStyleOptionViewItem& option,
+ const QModelIndex& index) const;
+ int getCursorPos() const;
+ void setCursorPos(int pos);
+ void insertImageIntoEditor(int cursorPos, const QString& filePath);
+ QWidget* getEditor() const { return editor; }
+
+private:
+ QString getDisplayText(const QModelIndex& index) const;
+ QRect getMarginRect(const QStyleOptionViewItem& option) const;
+ bool indexIsLastCell(const QModelIndex& index, QAbstractItemModel* model) const;
+
+signals:
+ void editorCreated() const;
+ void editorDestroyed() const;
+
+private:
+ mutable RecordEditor* editor;
+};
+
+#endif
+