]> jfr.im git - irc/kvirc/KVIrc.git/commitdiff
KviTextIconWindow: Update code
authorIceN9ne <redacted>
Wed, 2 Jan 2019 03:47:28 +0000 (22:47 -0500)
committerIceN9ne <redacted>
Wed, 2 Jan 2019 03:47:28 +0000 (22:47 -0500)
src/kvirc/kernel/KviApplication.cpp
src/kvirc/ui/KviTextIconWindow.cpp
src/kvirc/ui/KviTextIconWindow.h

index 4689e619cdcda26c04bc45bdff01f56470f6f713..e3c582d50410782e2a6e2caf2c4d1a87fb524eb2 100644 (file)
@@ -90,6 +90,7 @@
 #include "KviRuntimeInfo.h"
 
 #include <QMenu>
+#include <QPainter>
 #include <algorithm>
 
 #ifndef COMPILE_NO_IPC
index 1aa861507dbd591030b55080467b0d3c05e8c175..b71443de892c7e68252ba2a935fa79f967548608 100644 (file)
 //=============================================================================
 
 #include "KviTextIconWindow.h"
-#include "KviTextIconManager.h"
 #include "KviApplication.h"
-#include "KviOptions.h"
-#include "KviInput.h"
-#include "KviTopicWidget.h"
+#include "KviCaster.h"
 #include "KviControlCodes.h"
 #include "KviIconManager.h"
-#include "KviCaster.h"
+#include "KviInput.h"
+#include "KviInputEditor.h"
+#include "KviOptions.h"
+#include "KviTextIconManager.h"
+#include "KviTopicWidget.h"
 
-#include <QPainter>
-#include <QLineEdit>
 #include <QEvent>
-#include <QKeyEvent>
 #include <QHeaderView>
-#include <QPalette>
+#include <QKeyEvent>
+#include <QLineEdit>
+#include <QPainter>
 #include <QScrollBar>
+#include <QTableWidget>
+#include <limits>
 
 KviTextIconWindow::KviTextIconWindow()
     : QWidget(nullptr, Qt::Popup)
 {
-       m_pOwner = nullptr;
-       m_bAltMode = false;
-
        setFixedSize(KVI_TEXTICON_WIN_WIDTH, KVI_TEXTICON_WIN_HEIGHT);
 
        m_pTable = new QTableWidget(this);
@@ -61,8 +60,8 @@ KviTextIconWindow::KviTextIconWindow()
 
        m_pTable->installEventFilter(this);
 
-       connect(g_pTextIconManager, SIGNAL(changed()), this, SLOT(fill()));
-       connect(m_pTable, SIGNAL(cellClicked(int, int)), this, SLOT(cellSelected(int, int)));
+       connect(g_pTextIconManager, &KviTextIconManager::changed, this, &KviTextIconWindow::fill);
+       connect(m_pTable, &QTableWidget::cellClicked, this, &KviTextIconWindow::cellSelected);
 }
 
 KviTextIconWindow::~KviTextIconWindow()
@@ -85,13 +84,12 @@ void KviTextIconWindow::fill()
        KviPointerHashTableIterator<QString, KviTextIcon> it(*pDict);
 
        int iCol = KVI_TEXTICON_COLUMNS;
-       QLabel * newItem;
        while(KviTextIcon * pIcon = it.current())
        {
                QPixmap * pPix = pIcon->pixmap();
                if(pPix)
                {
-                       newItem = new QLabel();
+                       QLabel * newItem = new QLabel;
                        newItem->setToolTip(it.currentKey());
                        newItem->setPixmap(*pPix);
                        newItem->setAlignment(Qt::AlignCenter);
@@ -115,10 +113,10 @@ void KviTextIconWindow::popup(QWidget * pOwner, bool bAltMode)
        m_bAltMode = bAltMode;
 
        if(m_pOwner)
-               disconnect(m_pOwner, SIGNAL(destroyed()), this, SLOT(ownerDead()));
+               disconnect(m_pOwner, &QWidget::destroyed, this, &KviTextIconWindow::ownerDead);
 
        m_pOwner = pOwner;
-       connect(m_pOwner, SIGNAL(destroyed()), this, SLOT(ownerDead()));
+       connect(m_pOwner, &QWidget::destroyed, this, &KviTextIconWindow::ownerDead);
 
        show();
 
@@ -161,12 +159,12 @@ bool KviTextIconWindow::eventFilter(QObject * o, QEvent * e)
                                break;
                        default:
                                // redirect to owner
-                               if(m_pOwner->inherits("KviInputEditor"))
+                               if(KviInputEditor * pOwner = qobject_cast<KviInputEditor *>(m_pOwner); pOwner)
                                {
                                        if(e->type() == QEvent::KeyPress)
-                                               ((KviInputEditor *)m_pOwner)->keyPressEvent(ev);
+                                               pOwner->keyPressEvent(ev);
                                        else
-                                               ((KviInputEditor *)m_pOwner)->keyReleaseEvent(ev);
+                                               pOwner->keyReleaseEvent(ev);
                                        autoSelectBestMatchBasedOnOwnerText();
                                        return true;
                                }
@@ -179,10 +177,11 @@ bool KviTextIconWindow::eventFilter(QObject * o, QEvent * e)
 
 void KviTextIconWindow::autoSelectBestMatchBasedOnOwnerText()
 {
-       if(!m_pOwner->inherits("KviInputEditor"))
+       KviInputEditor * pOwner = qobject_cast<KviInputEditor *>(m_pOwner);
+       if(!pOwner)
                return;
 
-       QString szText = ((KviInputEditor *)m_pOwner)->textBeforeCursor();
+       QString szText = pOwner->textBeforeCursor();
        int idx = szText.lastIndexOf(QChar(KviControlCodes::Icon));
        if(idx < 0)
                return;
@@ -197,7 +196,7 @@ void KviTextIconWindow::autoSelectBestMatchBasedOnOwnerText()
 
        int iBestR = -1;
        int iBestC = -1;
-       int iBestLen = 999999;
+       int iBestLen = std::numeric_limits<int>::max();
 
        for(int r = 0; r < iRows; r++)
        {
@@ -211,7 +210,7 @@ void KviTextIconWindow::autoSelectBestMatchBasedOnOwnerText()
                                continue;
 
                        // good.
-                       if((iBestR == -1) || (txt.length() < iBestLen))
+                       if(txt.length() < iBestLen)
                        {
                                iBestR = r;
                                iBestC = c;
@@ -243,22 +242,22 @@ void KviTextIconWindow::cellSelected(int row, int column)
        if(!m_pTable->cellWidget(row, column))
                return;
 
-       QString szItem(m_pTable->cellWidget(row, column)->toolTip());
+       QString szItem = m_pTable->cellWidget(row, column)->toolTip();
 
        if(m_bAltMode)
                szItem.prepend(KviControlCodes::Icon);
 
-       if(m_pOwner->inherits("KviInputEditor"))
-               ((KviInputEditor *)m_pOwner)->insertIconCode(szItem);
-       else if(m_pOwner->inherits("KviInput"))
-               ((KviInput *)m_pOwner)->insertText(QString("%1 ").arg(szItem));
-       else if(m_pOwner->inherits("QLineEdit"))
+       if(KviInputEditor * pOwner = qobject_cast<KviInputEditor *>(m_pOwner); pOwner)
+               pOwner->insertIconCode(szItem);
+       else if(KviInput * pOwner = qobject_cast<KviInput *>(m_pOwner); pOwner)
+               pOwner->insertText(QString("%1 ").arg(szItem));
+       else if(QLineEdit * pOwner = qobject_cast<QLineEdit *>(m_pOwner); pOwner)
        {
                szItem.append(' ');
-               QString szTmp = ((QLineEdit *)m_pOwner)->text();
-               szTmp.insert(((QLineEdit *)m_pOwner)->cursorPosition(), szItem);
-               ((QLineEdit *)m_pOwner)->setText(szTmp);
-               ((QLineEdit *)m_pOwner)->setCursorPosition(((QLineEdit *)m_pOwner)->cursorPosition() + szItem.length());
+               QString szTmp = pOwner->text();
+               szTmp.insert(pOwner->cursorPosition(), szItem);
+               pOwner->setText(szTmp);
+               pOwner->setCursorPosition(pOwner->cursorPosition() + szItem.length());
        }
        doHide();
 }
index 232726ff6e1608778ed6d2e7a0e6793fc138b2b3..7ab8d7dda4f4702b14f7c3ef186e7d7a3d91439c 100644 (file)
 //
 //=============================================================================
 
-/**
-* \file KviTextIconWindow.h
-* \author Szymon Stefanek
-* \brief Text icon window
-*
-* \def KVI_TEXTICON_WIN_WIDTH The width of the window
-* \def KVI_TEXTICON_WIN_HEIGHT The height of the window
-*/
-
 #include "kvi_settings.h"
-#include "KviCString.h"
 #include "KviIconManager.h"
 
-#include <QPainter>
-#include <QTableWidget>
+class QTableWidget;
+
+constexpr int KVI_TEXTICON_WIN_WIDTH = 230;
+constexpr int KVI_TEXTICON_WIN_HEIGHT = 200;
+constexpr int KVI_TEXTICON_COLUMNS = 6;
 
-#define KVI_TEXTICON_WIN_WIDTH 230
-#define KVI_TEXTICON_WIN_HEIGHT 200
-#define KVI_TEXTICON_COLUMNS 6
 /**
 * \class KviTextIconWindow
 * \brief Text icon window class
@@ -51,21 +41,13 @@ class KVIRC_API KviTextIconWindow : public QWidget
 {
        Q_OBJECT
 public:
-       /**
-       * \brief Constructs the text icon window objet
-       * \return KviTextIconWindow
-       */
        KviTextIconWindow();
-
-       /**
-       * \brief Destroys the text icon window objet
-       */
        ~KviTextIconWindow();
 
 private:
-       QWidget * m_pOwner;
+       QWidget * m_pOwner = nullptr;
        QTableWidget * m_pTable;
-       bool m_bAltMode; // in alt mode the inserted string will contains also the Alt+E escape code
+       bool m_bAltMode = false; // in alt mode the inserted string will contains also the Alt+E escape code
 public:
        /**
        * \brief Shows the popup