diff options
| author | 2017-09-02 20:09:04 -0400 | |
|---|---|---|
| committer | 2017-09-02 20:09:04 -0400 | |
| commit | 20efc5d86287af0708bc26a7eb6c5f6d7f32178c (patch) | |
| tree | ca3ea1037eb0220d66986b0171481f48cd8efdd1 /src | |
| parent | style.css: remove the Dreaded Dark Slate Gray Colour from Hell (diff) | |
| download | KVIrc-20efc5d86287af0708bc26a7eb6c5f6d7f32178c.tar.gz KVIrc-20efc5d86287af0708bc26a7eb6c5f6d7f32178c.tar.bz2 KVIrc-20efc5d86287af0708bc26a7eb6c5f6d7f32178c.zip | |
KviKvsPopupMenu: Code cleanup
* Fixes #2295
Diffstat (limited to 'src')
| -rw-r--r-- | src/kvirc/kvs/KviKvsPopupMenu.cpp | 219 | ||||
| -rw-r--r-- | src/kvirc/kvs/KviKvsPopupMenu.h | 150 |
2 files changed, 150 insertions, 219 deletions
diff --git a/src/kvirc/kvs/KviKvsPopupMenu.cpp b/src/kvirc/kvs/KviKvsPopupMenu.cpp index 2cf8b1e64..77a673b4e 100644 --- a/src/kvirc/kvs/KviKvsPopupMenu.cpp +++ b/src/kvirc/kvs/KviKvsPopupMenu.cpp @@ -44,35 +44,20 @@ // rootname.labelX : child labels KviKvsPopupMenuItem::KviKvsPopupMenuItem(Type t, const QString & szItemName, const QString & szCondition) + : m_szItemName{szItemName}, m_eType{t} { - m_szItemName = szItemName; - m_eType = t; - if(szCondition.isEmpty()) + if(!szCondition.isEmpty()) { - // true by default - m_pKvsCondition = nullptr; - } - else - { - QString szName = "condition callback for "; - szName += szItemName; + QString szName = QStringLiteral("condition callback for ") + szItemName; m_pKvsCondition = new KviKvsScript(szName, szCondition, KviKvsScript::Expression); } } KviKvsPopupMenuItem::KviKvsPopupMenuItem(Type t, const QString & szItemName, const KviKvsScript * pCondition) + : m_szItemName{szItemName}, m_eType{t} { - m_szItemName = szItemName; - m_eType = t; - if(!pCondition) - { - // true by default - m_pKvsCondition = nullptr; - } - else - { + if(pCondition) m_pKvsCondition = new KviKvsScript(*pCondition); - } } KviKvsPopupMenuItem::~KviKvsPopupMenuItem() @@ -85,17 +70,17 @@ void KviKvsPopupMenuItem::clear() { } -KviKvsScript * KviKvsPopupMenuItem::kvsIcon() +KviKvsScript * KviKvsPopupMenuItem::kvsIcon() const { return nullptr; } -KviKvsScript * KviKvsPopupMenuItem::kvsText() +KviKvsScript * KviKvsPopupMenuItem::kvsText() const { return nullptr; } -KviKvsScript * KviKvsPopupMenuItem::kvsCode() +KviKvsScript * KviKvsPopupMenuItem::kvsCode() const { return nullptr; } @@ -136,7 +121,7 @@ void KviKvsPopupMenuItemSeparator::fill(KviKvsPopupMenu * pMenu, KviKvsPopupMenu { if(!evaluateCondition(pData)) return; - ((QMenu *)pMenu)->addSeparator(); + static_cast<QMenu *>(pMenu)->addSeparator(); } KviKvsPopupMenuItem * KviKvsPopupMenuItemSeparator::clone() const @@ -147,18 +132,12 @@ KviKvsPopupMenuItem * KviKvsPopupMenuItemSeparator::clone() const KviKvsPopupMenuItemWithTextAndIcon::KviKvsPopupMenuItemWithTextAndIcon(KviKvsPopupMenuItem::Type t, const QString & szItemName, const QString & szText, const QString & szIcon, const QString & szCondition) : KviKvsPopupMenuItem(t, szItemName, szCondition) { - QString szName = "text callback for "; - szName += szItemName; + QString szName = QStringLiteral("text callback for ") + szItemName; m_pKvsText = new KviKvsScript(szName, szText, KviKvsScript::Parameter); - if(szIcon.isEmpty()) + if(!szIcon.isEmpty()) { - m_pKvsIcon = nullptr; - } - else - { - szName = "icon callback for "; - szName += szItemName; + szName = QStringLiteral("icon callback for ") + szItemName; m_pKvsIcon = new KviKvsScript(szName, szIcon, KviKvsScript::Parameter); } } @@ -167,25 +146,16 @@ KviKvsPopupMenuItemWithTextAndIcon::KviKvsPopupMenuItemWithTextAndIcon(KviKvsPop : KviKvsPopupMenuItem(t, szItemName, pCondition) { if(pText) - { m_pKvsText = new KviKvsScript(*pText); - } else { // hum.. this should never happen anyway - QString szName = "text callback for "; - szName += szItemName; + QString szName = QStringLiteral("text callback for ") + szItemName; m_pKvsText = new KviKvsScript(szName, "", KviKvsScript::Parameter); } - if(!pIcon) - { - m_pKvsIcon = nullptr; - } - else - { + if(pIcon) m_pKvsIcon = new KviKvsScript(*pIcon); - } } KviKvsPopupMenuItemWithTextAndIcon::~KviKvsPopupMenuItemWithTextAndIcon() @@ -195,12 +165,12 @@ KviKvsPopupMenuItemWithTextAndIcon::~KviKvsPopupMenuItemWithTextAndIcon() delete m_pKvsIcon; } -KviKvsScript * KviKvsPopupMenuItemWithTextAndIcon::kvsIcon() +KviKvsScript * KviKvsPopupMenuItemWithTextAndIcon::kvsIcon() const { return m_pKvsIcon; } -KviKvsScript * KviKvsPopupMenuItemWithTextAndIcon::kvsText() +KviKvsScript * KviKvsPopupMenuItemWithTextAndIcon::kvsText() const { return m_pKvsText; } @@ -235,9 +205,8 @@ QPixmap * KviKvsPopupMenuItemWithTextAndIcon::evaluateIcon(KviKvsPopupMenuTopLev QString KviKvsPopupMenuItemWithTextAndIcon::evaluateText(KviKvsPopupMenuTopLevelData * pData) { - QString szRet; if(!m_pKvsText) - return szRet; + return {}; KviKvsVariant vRet; if(!m_pKvsText->run(pData->window(), pData->parameters(), @@ -247,16 +216,16 @@ QString KviKvsPopupMenuItemWithTextAndIcon::evaluateText(KviKvsPopupMenuTopLevel { // broken text pData->window()->output(KVI_OUT_PARSERWARNING, __tr2qs_ctx("Broken text parameter: assuming empty string", "kvs")); - return szRet; + return {}; } + QString szRet; vRet.asString(szRet); return szRet; } KviKvsPopupMenuItemLabelHelper::KviKvsPopupMenuItemLabelHelper(KviKvsPopupMenuItemLabel * pItem) - : QObject() + : QObject(), m_pItem{pItem} { - m_pItem = pItem; } KviKvsPopupMenuItemLabelHelper::~KviKvsPopupMenuItemLabelHelper() @@ -270,14 +239,12 @@ void KviKvsPopupMenuItemLabelHelper::labelDestroyed() KviKvsPopupMenuItemLabel::KviKvsPopupMenuItemLabel(const QString & szItemName, const QString & szText, const QString & szIcon, const QString & szCondition) : KviKvsPopupMenuItemWithTextAndIcon(KviKvsPopupMenuItem::Label, szItemName, szText, szIcon, szCondition) { - m_pLabel = nullptr; m_pSignalRelay = new KviKvsPopupMenuItemLabelHelper(this); } KviKvsPopupMenuItemLabel::KviKvsPopupMenuItemLabel(const QString & szItemName, const KviKvsScript * pText, const KviKvsScript * pIcon, const KviKvsScript * pCondition) : KviKvsPopupMenuItemWithTextAndIcon(KviKvsPopupMenuItem::Label, szItemName, pText, pIcon, pCondition) { - m_pLabel = nullptr; m_pSignalRelay = new KviKvsPopupMenuItemLabelHelper(this); } @@ -325,9 +292,6 @@ void KviKvsPopupMenuItemLabel::fill(KviKvsPopupMenu * pMenu, KviKvsPopupMenuTopL m_pLabel = new QLabel(szText, pMenu); QObject::connect(m_pLabel, SIGNAL(destroyed()), m_pSignalRelay, SLOT(labelDestroyed())); -//QPalette p; -//m_pLabel->setStyleSheet("background-color: " + p.color(QPalette::Normal, QPalette::Mid).name()); - #ifdef COMPILE_ON_MAC m_pLabel->setIndent(16); m_pLabel->setMargin(2); @@ -346,8 +310,7 @@ void KviKvsPopupMenuItemLabel::fill(KviKvsPopupMenu * pMenu, KviKvsPopupMenuTopL KviKvsPopupMenuItemItem::KviKvsPopupMenuItemItem(const QString & szItemName, const QString & szCode, const QString & szText, const QString & szIcon, const QString & szCondition) : KviKvsPopupMenuItemWithTextAndIcon(KviKvsPopupMenuItem::Item, szItemName, szText, szIcon, szCondition) { - QString szName = "click callback for "; - szName += szItemName; + QString szName = QStringLiteral("click callback for ") + szItemName; m_pKvsCode = new KviKvsScript(szName, szCode); } @@ -381,21 +344,19 @@ KviKvsPopupMenuItem * KviKvsPopupMenuItemItem::clone() const return new KviKvsPopupMenuItemItem(m_szItemName, m_pKvsCode, m_pKvsText, m_pKvsIcon, m_pKvsCondition); } -KviKvsScript * KviKvsPopupMenuItemItem::kvsCode() +KviKvsScript * KviKvsPopupMenuItemItem::kvsCode() const { return m_pKvsCode; } KviKvsPopupMenuItemMenu::KviKvsPopupMenuItemMenu(const QString & szItemName, KviKvsPopupMenu * pMenu, const QString & szText, const QString & szIcon, const QString & szCondition) - : KviKvsPopupMenuItemWithTextAndIcon(KviKvsPopupMenuItem::Menu, szItemName, szText, szIcon, szCondition) + : KviKvsPopupMenuItemWithTextAndIcon(KviKvsPopupMenuItem::Menu, szItemName, szText, szIcon, szCondition), m_pMenu{pMenu} { - m_pMenu = pMenu; } KviKvsPopupMenuItemMenu::KviKvsPopupMenuItemMenu(const QString & szItemName, KviKvsPopupMenu * pMenu, const KviKvsScript * pText, const KviKvsScript * pIcon, const KviKvsScript * pCondition) - : KviKvsPopupMenuItemWithTextAndIcon(KviKvsPopupMenuItem::Menu, szItemName, pText, pIcon, pCondition) + : KviKvsPopupMenuItemWithTextAndIcon(KviKvsPopupMenuItem::Menu, szItemName, pText, pIcon, pCondition), m_pMenu{pMenu} { - m_pMenu = pMenu; } KviKvsPopupMenuItemMenu::~KviKvsPopupMenuItemMenu() @@ -416,8 +377,8 @@ void KviKvsPopupMenuItemMenu::fill(KviKvsPopupMenu * pMenu, KviKvsPopupMenuTopLe return; QString szText = evaluateText(pData); QPixmap * pPix = evaluateIcon(pData); - QAction * pAction; m_pMenu->setParentPopup(pMenu); + QAction * pAction; if(pPix) pAction = pMenu->addAction(*pPix, szText); else @@ -432,33 +393,28 @@ void KviKvsPopupMenuItemMenu::clear() } KviKvsPopupMenuItemExtMenu::KviKvsPopupMenuItemExtMenu(const QString & szItemName, const QString & szMenuName, const QString & szText, const QString & szIcon, const QString & szCondition) - : KviKvsPopupMenuItemWithTextAndIcon(KviKvsPopupMenuItem::ExtMenu, szItemName, szText, szIcon, szCondition) + : KviKvsPopupMenuItemWithTextAndIcon(KviKvsPopupMenuItem::ExtMenu, szItemName, szText, szIcon, szCondition), m_szMenuName{szMenuName} { - m_szMenuName = szMenuName; - if(m_szMenuName[0] == '"' && m_szMenuName[(int)(m_szMenuName.length() - 1)] == '"') + if(m_szMenuName[0] == '"' && m_szMenuName[m_szMenuName.length() - 1] == '"') { m_szMenuName.remove(0, 1); m_szMenuName.remove(m_szMenuName.length() - 1, 1); } - m_pMenu = nullptr; } KviKvsPopupMenuItemExtMenu::KviKvsPopupMenuItemExtMenu(const QString & szItemName, const QString & szMenuName, const KviKvsScript * pText, const KviKvsScript * pIcon, const KviKvsScript * pCondition) - : KviKvsPopupMenuItemWithTextAndIcon(KviKvsPopupMenuItem::ExtMenu, szItemName, pText, pIcon, pCondition) + : KviKvsPopupMenuItemWithTextAndIcon(KviKvsPopupMenuItem::ExtMenu, szItemName, pText, pIcon, pCondition), m_szMenuName{szMenuName} { - m_szMenuName = szMenuName; - if(m_szMenuName[0] == '"' && m_szMenuName[(int)(m_szMenuName.length() - 1)] == '"') + if(m_szMenuName[0] == '"' && m_szMenuName[m_szMenuName.length() - 1] == '"') { m_szMenuName.remove(0, 1); m_szMenuName.remove(m_szMenuName.length() - 1, 1); } - m_pMenu = nullptr; } KviKvsPopupMenuItemExtMenu::~KviKvsPopupMenuItemExtMenu() { - if(m_pMenu) - delete m_pMenu; + clear(); } void KviKvsPopupMenuItemExtMenu::clear() @@ -491,8 +447,7 @@ void KviKvsPopupMenuItemExtMenu::fill(KviKvsPopupMenu * pMenu, KviKvsPopupMenuTo return; } QString tmp = QString("%1.%2").arg(pMenu->popupName(), m_szMenuName); - if(m_pMenu) - delete m_pMenu; + clear(); m_pMenu = new KviKvsPopupMenu(tmp); m_pMenu->copyFrom(source); m_pMenu->setParentPopup(pMenu); @@ -506,18 +461,13 @@ void KviKvsPopupMenuItemExtMenu::fill(KviKvsPopupMenu * pMenu, KviKvsPopupMenuTo pAction->setData(iIdx); } else - { pData->window()->output(KVI_OUT_PARSERWARNING, __tr2qs_ctx("Can't find the external popup '%Q': ignoring", "kvs"), &m_szMenuName); - } } KviKvsPopupMenuTopLevelData::KviKvsPopupMenuTopLevelData(KviKvsVariantList * pParameters, KviWindow * pWindow) + : m_pParameters{pParameters}, m_pWindow{pWindow} { m_pExtendedRunTimeData = new KviKvsExtendedRunTimeData(new KviKvsHash(), true); - m_pParameters = pParameters; - m_pWindow = pWindow; - m_bTestMode = false; - m_eLocked = Unlocked; } KviKvsPopupMenuTopLevelData::~KviKvsPopupMenuTopLevelData() @@ -527,19 +477,14 @@ KviKvsPopupMenuTopLevelData::~KviKvsPopupMenuTopLevelData() } KviKvsPopupMenu::KviKvsPopupMenu(const QString & szName) - : QMenu(szName, nullptr) + : QMenu(szName, nullptr), m_szName{szName} { - m_szName = szName; m_pItemList = new KviPointerList<KviKvsPopupMenuItem>; m_pItemList->setAutoDelete(true); m_pPrologues = new KviPointerList<KviKvsScript>; m_pPrologues->setAutoDelete(true); m_pEpilogues = new KviPointerList<KviKvsScript>; m_pEpilogues->setAutoDelete(true); - m_pParentPopup = nullptr; - m_pTopLevelData = nullptr; - m_pTempTopLevelData = nullptr; - m_bSetupDone = false; connect(this, SIGNAL(triggered(QAction *)), this, SLOT(itemClicked(QAction *))); connect(this, SIGNAL(aboutToShow()), this, SLOT(setupMenuContents())); } @@ -561,19 +506,13 @@ void KviKvsPopupMenu::copyFrom(const KviKvsPopupMenu * src) doClear(); for(KviKvsScript * se = src->m_pEpilogues->first(); se; se = src->m_pEpilogues->next()) - { m_pEpilogues->append(new KviKvsScript(*se)); - } for(KviKvsScript * sp = src->m_pPrologues->first(); sp; sp = src->m_pPrologues->next()) - { m_pPrologues->append(new KviKvsScript(*sp)); - } for(const KviKvsPopupMenuItem * it = src->m_pItemList->first(); it; it = src->m_pItemList->next()) - { addItemInternal(it->clone()); - } } void KviKvsPopupMenu::addPrologue(const QString & szItemName, const QString & szCode) @@ -619,49 +558,36 @@ KviKvsPopupMenu * KviKvsPopupMenu::findChildPopupByName(const QString & szItemNa bool KviKvsPopupMenu::removeItemByName(const QString & szItemName, bool bRecursive) { - KviKvsScript * se; - - for(se = m_pEpilogues->first(); se; se = m_pEpilogues->next()) - { + for(auto se = m_pEpilogues->first(); se; se = m_pEpilogues->next()) if(KviQString::equalCI(szItemName, se->name())) { m_pEpilogues->removeRef(se); return true; } - } - for(se = m_pPrologues->first(); se; se = m_pPrologues->next()) - { + for(auto se = m_pPrologues->first(); se; se = m_pPrologues->next()) if(KviQString::equalCI(szItemName, se->name())) { m_pPrologues->removeRef(se); return true; } - } - for(KviKvsPopupMenuItem * it = m_pItemList->first(); it; it = m_pItemList->next()) - { + for(auto * it = m_pItemList->first(); it; it = m_pItemList->next()) if(KviQString::equalCI(szItemName, it->name())) { m_pItemList->removeRef(it); // bye :) return true; } - } if(bRecursive) { - for(KviKvsPopupMenuItem * ii = m_pItemList->first(); ii; ii = m_pItemList->next()) - { - if(ii->isMenu()) + for(auto * ii = m_pItemList->first(); ii; ii = m_pItemList->next()) + if(ii->isMenu() && static_cast<KviKvsPopupMenuItemMenu *>(ii)->menu()) { - if(((KviKvsPopupMenuItemMenu *)ii)->menu()) - { - bool bRet = ((KviKvsPopupMenuItemMenu *)ii)->menu()->removeItemByName(szItemName, true); - if(bRet) - return true; - } + bool bRet = static_cast<KviKvsPopupMenuItemMenu *>(ii)->menu()->removeItemByName(szItemName, true); + if(bRet) + return true; } - } } return false; @@ -757,9 +683,7 @@ void KviKvsPopupMenu::clearMenuContents() clear(); for(KviKvsPopupMenuItem * it = m_pItemList->first(); it; it = m_pItemList->next()) - { it->clear(); - } if(m_pTopLevelData) { @@ -795,7 +719,7 @@ void KviKvsPopupMenu::doClear() void KviKvsPopupMenu::lock(KviKvsPopupMenuTopLevelData::LockStatus eLock) { - KviKvsPopupMenuTopLevelData * d = topLevelData(); + auto * d = topLevelData(); if(!d) return; d->setLocked(eLock); @@ -804,9 +728,9 @@ void KviKvsPopupMenu::lock(KviKvsPopupMenuTopLevelData::LockStatus eLock) void KviKvsPopupMenu::setupMenuContents() { // This might be a compat problem later :(((( - if(parentPopup() == nullptr) + if(!parentPopup()) { - if(m_pTempTopLevelData == nullptr) + if(!m_pTempTopLevelData) { // We have been called by a KviMenuBar! // m_bSetupDone is not valid here @@ -946,17 +870,13 @@ void KviKvsPopupMenu::load(const QString & prefix, KviConfigurationFile * cfg) { doClear(); - int cnt; - int idx; + QString tmp = prefix + QStringLiteral("_PrologueCount"); - QString tmp = prefix; - tmp.append("_PrologueCount"); - - cnt = cfg->readIntEntry(tmp, 0); + int cnt = cfg->readIntEntry(tmp, 0); if(cnt > 0) { - for(idx = 0; idx < cnt; idx++) + for(int idx = 0; idx < cnt; idx++) { tmp = QString("%1_Prologue%2").arg(prefix).arg(idx); QString pr = cfg->readEntry(tmp, ""); @@ -980,7 +900,7 @@ void KviKvsPopupMenu::load(const QString & prefix, KviConfigurationFile * cfg) if(cnt > 0) { - for(idx = 0; idx < cnt; idx++) + for(int idx = 0; idx < cnt; idx++) { tmp = QString("%1_Epilogue%2").arg(prefix).arg(idx); QString ep = cfg->readEntry(tmp, ""); @@ -1003,7 +923,7 @@ void KviKvsPopupMenu::load(const QString & prefix, KviConfigurationFile * cfg) cnt = cfg->readIntEntry(tmp, 0); - for(idx = 0; idx < cnt; idx++) + for(int idx = 0; idx < cnt; idx++) { QString pre = QString("%1_%2").arg(prefix).arg(idx); @@ -1085,16 +1005,11 @@ void KviKvsPopupMenu::load(const QString & prefix, KviConfigurationFile * cfg) void KviKvsPopupMenu::save(const QString & prefix, KviConfigurationFile * cfg) { - int idx; - - KviKvsScript * s; - QString tmp; - - tmp = QString("%1_PrologueCount").arg(prefix); + QString tmp = QString("%1_PrologueCount").arg(prefix); cfg->writeEntry(tmp, m_pPrologues->count()); - idx = 0; - for(s = m_pPrologues->first(); s; s = m_pPrologues->next()) + int idx = 0; + for(auto s = m_pPrologues->first(); s; s = m_pPrologues->next()) { tmp = QString("%1_Prologue%2").arg(prefix).arg(idx); cfg->writeEntry(tmp, s->code()); @@ -1107,7 +1022,7 @@ void KviKvsPopupMenu::save(const QString & prefix, KviConfigurationFile * cfg) cfg->writeEntry(tmp, m_pEpilogues->count()); idx = 0; - for(s = m_pEpilogues->first(); s; s = m_pEpilogues->next()) + for(auto s = m_pEpilogues->first(); s; s = m_pEpilogues->next()) { tmp = QString("%1_Epilogue%2").arg(prefix).arg(idx); cfg->writeEntry(tmp, s->code()); @@ -1149,7 +1064,7 @@ void KviKvsPopupMenu::save(const QString & prefix, KviConfigurationFile * cfg) tmp = QString("%1_Id").arg(pre); cfg->writeEntry(tmp, it->name()); - s = it->kvsCondition(); + auto s = it->kvsCondition(); if(s) { tmp = QString("%1_Expr").arg(pre); @@ -1200,7 +1115,7 @@ void KviKvsPopupMenu::generateDefPopupCore(QString & buffer) KviKvsScript * s; - for(s = m_pPrologues->first(); s; s = m_pPrologues->next()) + for(auto s = m_pPrologues->first(); s; s = m_pPrologues->next()) { buffer.append("prologue\n"); tmp = s->code().trimmed(); @@ -1215,7 +1130,11 @@ void KviKvsPopupMenu::generateDefPopupCore(QString & buffer) { case KviKvsPopupMenuItem::Item: if(it->kvsIcon()) - KviQString::appendFormatted(buffer, "item(%Q,%Q)", &(it->kvsText()->code()), &(it->kvsIcon()->code())); + { + QString szIcon = it->kvsIcon()->code(); + KviQString::escapeKvs(&szIcon, KviQString::EscapeSpace | KviQString::EscapeParenthesis); + KviQString::appendFormatted(buffer, "item(%Q,%Q)", &(it->kvsText()->code()), &szIcon); + } else KviQString::appendFormatted(buffer, "item(%Q)", &(it->kvsText()->code())); if(it->kvsCondition()) @@ -1228,7 +1147,11 @@ void KviKvsPopupMenu::generateDefPopupCore(QString & buffer) break; case KviKvsPopupMenuItem::Menu: if(it->kvsIcon()) - KviQString::appendFormatted(buffer, "popup(%Q,%Q)", &(it->kvsText()->code()), &(it->kvsIcon()->code())); + { + QString szIcon = it->kvsIcon()->code(); + KviQString::escapeKvs(&szIcon, KviQString::EscapeSpace | KviQString::EscapeParenthesis); + KviQString::appendFormatted(buffer, "popup(%Q,%Q)", &(it->kvsText()->code()), &szIcon); + } else KviQString::appendFormatted(buffer, "popup(%Q)", &(it->kvsText()->code())); if(it->kvsCondition()) @@ -1247,7 +1170,11 @@ void KviKvsPopupMenu::generateDefPopupCore(QString & buffer) break; case KviKvsPopupMenuItem::Label: if(it->kvsIcon()) - KviQString::appendFormatted(buffer, "label(%Q,%Q)", &(it->kvsText()->code()), &(it->kvsIcon()->code())); + { + QString szIcon = it->kvsIcon()->code(); + KviQString::escapeKvs(&szIcon, KviQString::EscapeSpace | KviQString::EscapeParenthesis); + KviQString::appendFormatted(buffer, "label(%Q,%Q)", &(it->kvsText()->code()), &szIcon); + } else KviQString::appendFormatted(buffer, "label(%Q)", &(it->kvsText()->code())); if(it->kvsCondition()) @@ -1256,7 +1183,11 @@ void KviKvsPopupMenu::generateDefPopupCore(QString & buffer) break; case KviKvsPopupMenuItem::ExtMenu: if(it->kvsIcon()) - KviQString::appendFormatted(buffer, "extpopup(%Q,%Q,%Q)", &(it->kvsText()->code()), &(((KviKvsPopupMenuItemExtMenu *)it)->extName()), &(it->kvsIcon()->code())); + { + QString szIcon = it->kvsIcon()->code(); + KviQString::escapeKvs(&szIcon, KviQString::EscapeSpace | KviQString::EscapeParenthesis); + KviQString::appendFormatted(buffer, "extpopup(%Q,%Q,%Q)", &(it->kvsText()->code()), &(((KviKvsPopupMenuItemExtMenu *)it)->extName()), &szIcon); + } else KviQString::appendFormatted(buffer, "extpopup(%Q)", &(it->kvsText()->code())); if(it->kvsCondition()) diff --git a/src/kvirc/kvs/KviKvsPopupMenu.h b/src/kvirc/kvs/KviKvsPopupMenu.h index f9c4d8261..5f4e2383b 100644 --- a/src/kvirc/kvs/KviKvsPopupMenu.h +++ b/src/kvirc/kvs/KviKvsPopupMenu.h @@ -53,23 +53,22 @@ public: }; protected: - KviKvsExtendedRunTimeData * m_pExtendedRunTimeData; - KviKvsVariantList * m_pParameters; - KviWindow * m_pWindow; - LockStatus m_eLocked; - bool m_bTestMode; + KviKvsExtendedRunTimeData * m_pExtendedRunTimeData = nullptr; + KviKvsVariantList * m_pParameters = nullptr; + KviWindow * m_pWindow = nullptr; + LockStatus m_eLocked = Unlocked; + bool m_bTestMode = false; public: - KviKvsExtendedRunTimeData * extendedRunTimeData() { return m_pExtendedRunTimeData; }; - //KviKvsHash * extScopeVariables(){ return m_pExtScopeVariables; }; - KviKvsVariantList * parameters() { return m_pParameters; }; - bool isSoftLocked() { return m_eLocked != Unlocked; }; - bool isHardLocked() { return m_eLocked == HardLocked; }; - void setLocked(LockStatus eLocked) { m_eLocked = eLocked; }; - KviWindow * window() { return m_pWindow; }; - void setWindow(KviWindow * pWindow) { m_pWindow = pWindow; }; - bool testMode() { return m_bTestMode; }; - void setTestMode(bool bTestMode) { m_bTestMode = bTestMode; }; + KviKvsExtendedRunTimeData * extendedRunTimeData() const { return m_pExtendedRunTimeData; } + KviKvsVariantList * parameters() const { return m_pParameters; } + bool isSoftLocked() const { return m_eLocked != Unlocked; } + bool isHardLocked() const { return m_eLocked == HardLocked; } + void setLocked(LockStatus eLocked) { m_eLocked = eLocked; } + KviWindow * window() const { return m_pWindow; } + void setWindow(KviWindow * pWindow) { m_pWindow = pWindow; } + bool testMode() const { return m_bTestMode; } + void setTestMode(bool bTestMode) { m_bTestMode = bTestMode; } }; class KVIRC_API KviKvsPopupMenuItem @@ -96,26 +95,26 @@ public: protected: QString m_szItemName; Type m_eType; - KviKvsScript * m_pKvsCondition; + KviKvsScript * m_pKvsCondition = nullptr; public: // this doesn't trigger errors, only warnings bool evaluateCondition(KviKvsPopupMenuTopLevelData * pData); - KviKvsPopupMenuItem::Type type() { return m_eType; }; + KviKvsPopupMenuItem::Type type() const { return m_eType; } - const QString & name() { return m_szItemName; }; + const QString & name() const { return m_szItemName; } - bool isItem() { return m_eType == Item; }; - bool isSeparator() { return m_eType == Separator; }; - bool isLabel() { return m_eType == Label; }; - bool isExtMenu() { return m_eType == ExtMenu; }; - bool isMenu() { return m_eType == Menu; }; + bool isItem() const { return m_eType == Item; } + bool isSeparator() const { return m_eType == Separator; } + bool isLabel() const { return m_eType == Label; } + bool isExtMenu() const { return m_eType == ExtMenu; } + bool isMenu() const { return m_eType == Menu; } - KviKvsScript * kvsCondition() { return m_pKvsCondition; }; - virtual KviKvsScript * kvsIcon(); - virtual KviKvsScript * kvsText(); - virtual KviKvsScript * kvsCode(); + KviKvsScript * kvsCondition() const { return m_pKvsCondition; } + virtual KviKvsScript * kvsIcon() const; + virtual KviKvsScript * kvsText() const; + virtual KviKvsScript * kvsCode() const; virtual void fill(KviKvsPopupMenu * pMenu, KviKvsPopupMenuTopLevelData * pData, int iIdx) = 0; virtual void clear(); @@ -131,11 +130,11 @@ protected: KviKvsPopupMenuItemSeparator(const QString & szItemName, const KviKvsScript * pCondition); public: - virtual ~KviKvsPopupMenuItemSeparator(); + ~KviKvsPopupMenuItemSeparator(); public: - virtual void fill(KviKvsPopupMenu * pMenu, KviKvsPopupMenuTopLevelData * pData, int iIdx); - virtual KviKvsPopupMenuItem * clone() const; + void fill(KviKvsPopupMenu * pMenu, KviKvsPopupMenuTopLevelData * pData, int iIdx) override; + KviKvsPopupMenuItem * clone() const override; }; class KVIRC_API KviKvsPopupMenuItemWithTextAndIcon : public KviKvsPopupMenuItem @@ -145,15 +144,15 @@ protected: KviKvsPopupMenuItemWithTextAndIcon(KviKvsPopupMenuItem::Type t, const QString & szItemName, const KviKvsScript * pText, const KviKvsScript * pIcon, const KviKvsScript * pCondition); public: - virtual ~KviKvsPopupMenuItemWithTextAndIcon(); + ~KviKvsPopupMenuItemWithTextAndIcon(); protected: - KviKvsScript * m_pKvsText; - KviKvsScript * m_pKvsIcon; + KviKvsScript * m_pKvsText = nullptr; + KviKvsScript * m_pKvsIcon = nullptr; public: - virtual KviKvsScript * kvsIcon(); - virtual KviKvsScript * kvsText(); + KviKvsScript * kvsIcon() const override; + KviKvsScript * kvsText() const override; // this just returns a string, eventually empty QString evaluateText(KviKvsPopupMenuTopLevelData * pData); // this just returns the icon, eventually @@ -173,7 +172,7 @@ protected: ~KviKvsPopupMenuItemLabelHelper(); protected: - KviKvsPopupMenuItemLabel * m_pItem; + KviKvsPopupMenuItemLabel * m_pItem = nullptr; protected slots: void labelDestroyed(); }; @@ -188,16 +187,16 @@ protected: KviKvsPopupMenuItemLabel(const QString & szItemName, const KviKvsScript * pText, const KviKvsScript * pIcon, const KviKvsScript * pCondition); public: - virtual ~KviKvsPopupMenuItemLabel(); + ~KviKvsPopupMenuItemLabel(); protected: - QLabel * m_pLabel; - KviKvsPopupMenuItemLabelHelper * m_pSignalRelay; + QLabel * m_pLabel = nullptr; + KviKvsPopupMenuItemLabelHelper * m_pSignalRelay = nullptr; public: - virtual void fill(KviKvsPopupMenu * pMenu, KviKvsPopupMenuTopLevelData * pData, int iIdx); - virtual KviKvsPopupMenuItem * clone() const; - virtual void clear(); + void fill(KviKvsPopupMenu * pMenu, KviKvsPopupMenuTopLevelData * pData, int iIdx) override; + KviKvsPopupMenuItem * clone() const override; + void clear() override; protected: void labelDestroyed(); @@ -212,17 +211,17 @@ protected: KviKvsPopupMenuItemItem(const QString & szItemName, const KviKvsScript * pCode, const KviKvsScript * pText, const KviKvsScript * pIcon, const KviKvsScript * pCondition); public: - virtual ~KviKvsPopupMenuItemItem(); + ~KviKvsPopupMenuItemItem(); protected: - KviKvsScript * m_pKvsCode; + KviKvsScript * m_pKvsCode = nullptr; protected: - virtual KviKvsScript * kvsCode(); + KviKvsScript * kvsCode() const override; public: - virtual void fill(KviKvsPopupMenu * pMenu, KviKvsPopupMenuTopLevelData * pData, int iIdx); - virtual KviKvsPopupMenuItem * clone() const; + void fill(KviKvsPopupMenu * pMenu, KviKvsPopupMenuTopLevelData * pData, int iIdx) override; + KviKvsPopupMenuItem * clone() const override; }; class KVIRC_API KviKvsPopupMenuItemMenu : public KviKvsPopupMenuItemWithTextAndIcon @@ -234,16 +233,16 @@ protected: KviKvsPopupMenuItemMenu(const QString & szItemName, KviKvsPopupMenu * pMenu, const KviKvsScript * pText, const KviKvsScript * pIcon, const KviKvsScript * pCondition); public: - virtual ~KviKvsPopupMenuItemMenu(); + ~KviKvsPopupMenuItemMenu(); protected: - KviKvsPopupMenu * m_pMenu; + KviKvsPopupMenu * m_pMenu = nullptr; public: - KviKvsPopupMenu * menu() { return m_pMenu; }; - virtual void fill(KviKvsPopupMenu * pMenu, KviKvsPopupMenuTopLevelData * pData, int iIdx); - virtual void clear(); - virtual KviKvsPopupMenuItem * clone() const; + KviKvsPopupMenu * menu() const { return m_pMenu; } + void fill(KviKvsPopupMenu * pMenu, KviKvsPopupMenuTopLevelData * pData, int iIdx) override; + void clear() override; + KviKvsPopupMenuItem * clone() const override; }; class KVIRC_API KviKvsPopupMenuItemExtMenu : public KviKvsPopupMenuItemWithTextAndIcon @@ -255,48 +254,49 @@ protected: KviKvsPopupMenuItemExtMenu(const QString & szItemName, const QString & szMenuName, const KviKvsScript * pText, const KviKvsScript * pIcon, const KviKvsScript * pCondition); public: - virtual ~KviKvsPopupMenuItemExtMenu(); + ~KviKvsPopupMenuItemExtMenu(); protected: QString m_szMenuName; - KviKvsPopupMenu * m_pMenu; // owned! + KviKvsPopupMenu * m_pMenu = nullptr; // owned! public: - const QString & extName() { return m_szMenuName; }; - virtual void fill(KviKvsPopupMenu * pMenu, KviKvsPopupMenuTopLevelData * pData, int iIdx); - virtual void clear(); - virtual KviKvsPopupMenuItem * clone() const; + const QString & extName() const { return m_szMenuName; } + void fill(KviKvsPopupMenu * pMenu, KviKvsPopupMenuTopLevelData * pData, int iIdx) override; + void clear() override; + KviKvsPopupMenuItem * clone() const override; }; class KVIRC_API KviKvsPopupMenu : public QMenu { + Q_OBJECT friend class KviKvsPopupMenuItemMenu; friend class KviKvsPopupManager; friend class KviSinglePopupEditor; - Q_OBJECT + public: KviKvsPopupMenu(const QString & szName); ~KviKvsPopupMenu(); protected: - KviPointerList<KviKvsPopupMenuItem> * m_pItemList; + KviPointerList<KviKvsPopupMenuItem> * m_pItemList = nullptr; private: QString m_szName; - KviKvsPopupMenu * m_pParentPopup; - KviPointerList<KviKvsScript> * m_pPrologues; - KviPointerList<KviKvsScript> * m_pEpilogues; - KviKvsPopupMenuTopLevelData * m_pTopLevelData; + KviKvsPopupMenu * m_pParentPopup = nullptr; + KviPointerList<KviKvsScript> * m_pPrologues = nullptr; + KviPointerList<KviKvsScript> * m_pEpilogues = nullptr; + KviKvsPopupMenuTopLevelData * m_pTopLevelData = nullptr; // this is a temporary used to hack-in the activation from KviMenuBar - KviKvsPopupMenuTopLevelData * m_pTempTopLevelData; - bool m_bSetupDone; + KviKvsPopupMenuTopLevelData * m_pTempTopLevelData = nullptr; + bool m_bSetupDone = false; public: - const QString & popupName() { return m_szName; }; - void setPopupName(const QString & szName) { m_szName = szName; }; + const QString & popupName() const { return m_szName; } + void setPopupName(const QString & szName) { m_szName = szName; } void copyFrom(const KviKvsPopupMenu * src); KviKvsPopupMenuTopLevelData * topLevelData(); KviKvsPopupMenu * topLevelPopup(); - KviPointerList<KviKvsPopupMenuItem> * itemList() { return m_pItemList; }; + KviPointerList<KviKvsPopupMenuItem> * itemList() const { return m_pItemList; } bool isSoftLocked(); bool isHardLocked(); void lock(KviKvsPopupMenuTopLevelData::LockStatus eLock); @@ -306,17 +306,17 @@ public: void addItem(const QString & szItemName, const QString & szCode, const QString & szText, const QString & szIcon, const QString & szCondition); void addExtPopup(const QString & szItemName, const QString & szPopupName, const QString & szText, const QString & szIcon, const QString & szCondition); void doPopup(const QPoint & pnt, KviWindow * wnd, KviKvsVariantList * pParams, bool bTestMode = false); - bool isEmpty() { return m_pItemList->isEmpty() && m_pPrologues->isEmpty() && m_pEpilogues->isEmpty(); }; + bool isEmpty() const { return m_pItemList->isEmpty() && m_pPrologues->isEmpty() && m_pEpilogues->isEmpty(); } void doClear(); void addPrologue(const QString & szItemName, const QString & szCode); void addEpilogue(const QString & szItemName, const QString & szCode); bool removeItemByName(const QString & szItemName, bool bRecursive); KviKvsPopupMenu * findChildPopupByName(const QString & szItemName); - KviPointerList<KviKvsScript> * epilogues() { return m_pEpilogues; }; - KviPointerList<KviKvsScript> * prologues() { return m_pPrologues; }; - KviKvsPopupMenu * parentPopup() { return m_pParentPopup; }; + KviPointerList<KviKvsScript> * epilogues() const { return m_pEpilogues; } + KviPointerList<KviKvsScript> * prologues() const { return m_pPrologues; } + KviKvsPopupMenu * parentPopup() const { return m_pParentPopup; } void generateDefPopup(QString & buffer); - void setParentPopup(KviKvsPopupMenu * par) { m_pParentPopup = par; }; + void setParentPopup(KviKvsPopupMenu * par) { m_pParentPopup = par; } void generateDefPopupCore(QString & buffer); protected: |
