swift
eventfilter.cpp
1 // SPDX-FileCopyrightText: Copyright (C) 2019 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
4 #include "eventfilter.h"
5 
6 #include <QKeyEvent>
7 #include <QPlainTextEdit>
8 
9 #include "misc/stringutils.h"
10 
11 namespace swift::gui
12 {
13  bool CUpperCaseEventFilter::eventFilter(QObject *object, QEvent *event)
14  {
15  if (event->type() == QEvent::KeyPress)
16  {
17  if (QKeyEvent *e = dynamic_cast<QKeyEvent *>(event))
18  {
19  // If QKeyEvent::text() returns an empty QString then let normal
20  // processing proceed as it may be a control (e.g. cursor movement)
21  // key. Otherwise convert the text to upper case and insert it at
22  // the current cursor position.
23  QPlainTextEdit *pte = qobject_cast<QPlainTextEdit *>(object);
24  if (!pte) { return false; }
25  if (pte->isReadOnly()) { return false; }
26 
27  if (e->text().length() == 1)
28  {
29  const QChar c = e->text().front();
30  if (c.isLetter())
31  {
32  const ushort unicode = c.unicode();
33  if (unicode > 127) { return true; }
34 
35  pte->insertPlainText(e->text().toUpper());
36  // return true to prevent further processing
37  return true;
38  }
39  // all codes like backspace etc.
40  return false;
41  } // length
42  } // key event
43  }
44  return false;
45  }
46 } // namespace swift::gui
bool eventFilter(QObject *object, QEvent *event)
Filter.
Definition: eventfilter.cpp:13
GUI related classes.