From 923de0ef38e45450e05d1445b3ff43aa1a38a492 Mon Sep 17 00:00:00 2001
From: Brian Moran <brian@trucentive.com>
Date: Thu, 29 Sep 2022 08:39:22 -0700
Subject: [PATCH] move MessageItemDelegate to its own file

---
 CMakeLists.txt                         |  1 +
 item_delegates/MessageItemDelegate.cpp | 26 ++++++++++++++++++++++++++
 item_delegates/MessageItemDelegate.hpp | 20 ++++++++++++++++++++
 3 files changed, 47 insertions(+)
 create mode 100644 item_delegates/MessageItemDelegate.cpp
 create mode 100644 item_delegates/MessageItemDelegate.hpp

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0889c79bf..cd770c66a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -190,6 +190,7 @@ set (wsjt_qt_CXXSRCS
   widgets/FrequencyDeltaLineEdit.cpp
   item_delegates/CandidateKeyFilter.cpp
   item_delegates/ForeignKeyDelegate.cpp
+  item_delegates/MessageItemDelegate.cpp
   validators/LiveFrequencyValidator.cpp
   GetUserId.cpp
   Audio/AudioDevice.cpp
diff --git a/item_delegates/MessageItemDelegate.cpp b/item_delegates/MessageItemDelegate.cpp
new file mode 100644
index 000000000..df9953e45
--- /dev/null
+++ b/item_delegates/MessageItemDelegate.cpp
@@ -0,0 +1,26 @@
+//
+// Moved from Configuration.cpp
+//
+
+#include "MessageItemDelegate.hpp"
+
+#include <QLineEdit>
+#include <QRegExpValidator>
+
+//
+// Class MessageItemDelegate
+//
+//	Item delegate for message entry such as free text message macros.
+//
+MessageItemDelegate::MessageItemDelegate(QObject *parent): QStyledItemDelegate{parent}
+{
+}
+
+QWidget *MessageItemDelegate::createEditor(QWidget *parent, QStyleOptionViewItem const &, QModelIndex const &) const
+{
+  QRegularExpression message_alphabet{"[- @A-Za-z0-9+./?#<>;$]*"};
+  auto editor = new QLineEdit{parent};
+  editor->setFrame(false);
+  editor->setValidator(new QRegularExpressionValidator{message_alphabet, editor});
+  return editor;
+}
diff --git a/item_delegates/MessageItemDelegate.hpp b/item_delegates/MessageItemDelegate.hpp
new file mode 100644
index 000000000..eede221c1
--- /dev/null
+++ b/item_delegates/MessageItemDelegate.hpp
@@ -0,0 +1,20 @@
+//
+//
+//
+
+#ifndef WSJTX_MESSAGEITEMDELEGATE_H
+#define WSJTX_MESSAGEITEMDELEGATE_H
+
+#include <QStyledItemDelegate>
+
+class MessageItemDelegate: public QStyledItemDelegate
+        {
+    Q_OBJECT
+
+public:
+    explicit MessageItemDelegate(QObject *parent = nullptr);
+    QWidget *createEditor(QWidget *parent, QStyleOptionViewItem const & /* option*/
+            , QModelIndex const & /* index */
+    ) const override;
+};
+#endif //WSJTX_MESSAGEITEMDELEGATE_H