summaryrefslogtreecommitdiff
path: root/src/copyeventfilter.h
diff options
context:
space:
mode:
authorMikaƫl Capelle <capelle.mikael@gmail.com>2021-01-10 10:25:37 +0100
committerGitHub <noreply@github.com>2021-01-10 10:25:37 +0100
commit80e44a9e3ade61695b4807a3a900d2866138ecac (patch)
tree1ef9904664d8d34dba6692bbf5325aea8c199d08 /src/copyeventfilter.h
parenteaec140f7c823012c09536175d8917dddcacdb7c (diff)
parent4a0ce804ea486744e5f6140a0ce4538d99e21ce3 (diff)
Merge pull request #1338 from Holt59/collapsible-separators
Collapsible separators (and refactoring).
Diffstat (limited to 'src/copyeventfilter.h')
-rw-r--r--src/copyeventfilter.h43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/copyeventfilter.h b/src/copyeventfilter.h
new file mode 100644
index 00000000..a9d0a1c1
--- /dev/null
+++ b/src/copyeventfilter.h
@@ -0,0 +1,43 @@
+#ifndef COPY_EVENT_FILTER_H
+#define COPY_EVENT_FILTER_H
+
+#include <functional>
+
+#include <QAbstractItemView>
+#include <QModelIndex>
+#include <QObject>
+
+// this small class provides copy on Ctrl+C and also
+// exposes a method to actual copy the selection
+//
+// the way the selection is copied can be customized by
+// passing a functor to format each index, by default
+// it only extracts the display role
+//
+// only works for view that selects whole row since it only
+// considers the first cell in each row
+//
+class CopyEventFilter : public QObject
+{
+ Q_OBJECT
+
+public:
+
+ CopyEventFilter(QAbstractItemView* view, int role = Qt::DisplayRole);
+ CopyEventFilter(QAbstractItemView* view, std::function<QString(const QModelIndex&)> format);
+
+ // copy the selection of the view associated with this
+ // event filter into the clipboard
+ //
+ void copySelection() const;
+
+ bool eventFilter(QObject* sender, QEvent* event) override;
+
+private:
+
+ QAbstractItemView* m_view;
+ std::function<QString(const QModelIndex&)> m_format;
+
+};
+
+#endif