diff options
Diffstat (limited to 'src/designer/src/lib/shared/signalslotdialog.cpp')
-rw-r--r-- | src/designer/src/lib/shared/signalslotdialog.cpp | 101 |
1 files changed, 55 insertions, 46 deletions
diff --git a/src/designer/src/lib/shared/signalslotdialog.cpp b/src/designer/src/lib/shared/signalslotdialog.cpp index 65297030d..28cf2703e 100644 --- a/src/designer/src/lib/shared/signalslotdialog.cpp +++ b/src/designer/src/lib/shared/signalslotdialog.cpp @@ -58,14 +58,14 @@ QT_BEGIN_NAMESPACE static const char *signatureRegExp = "^[\\w+_]+\\(([\\w+:]\\*?,?)*\\)$"; static const char *methodNameRegExp = "^[\\w+_]+$"; -static QStandardItem *createEditableItem(const QString &text) +static QStandardItem *createEditableItem(const QString &text) { QStandardItem *rc = new QStandardItem(text); rc->setFlags(Qt::ItemIsEnabled|Qt::ItemIsEditable|Qt::ItemIsSelectable); return rc; } -static QStandardItem *createDisabledItem(const QString &text) +static QStandardItem *createDisabledItem(const QString &text) { QStandardItem *rc = new QStandardItem(text); Qt::ItemFlags flags = rc->flags(); @@ -73,48 +73,6 @@ static QStandardItem *createDisabledItem(const QString &text) return rc; } -static void fakeMethodsFromMetaDataBase(QDesignerFormEditorInterface *core, QObject *o, QStringList &slotList, QStringList &signalList) -{ - slotList.clear(); - signalList.clear(); - if (qdesigner_internal::MetaDataBase *metaDataBase = qobject_cast<qdesigner_internal::MetaDataBase *>(core->metaDataBase())) - if (const qdesigner_internal::MetaDataBaseItem *item = metaDataBase->metaDataBaseItem(o)) { - slotList = item->fakeSlots(); - signalList = item->fakeSignals(); - } -} - -static void fakeMethodsToMetaDataBase(QDesignerFormEditorInterface *core, QObject *o, const QStringList &slotList, const QStringList &signalList) -{ - if (qdesigner_internal::MetaDataBase *metaDataBase = qobject_cast<qdesigner_internal::MetaDataBase *>(core->metaDataBase())) { - qdesigner_internal::MetaDataBaseItem *item = metaDataBase->metaDataBaseItem(o); - Q_ASSERT(item); - item->setFakeSlots(slotList); - item->setFakeSignals(signalList); - } -} - -static void existingMethodsFromMemberSheet(QDesignerFormEditorInterface *core, - QObject *o, - QStringList &slotList, QStringList &signalList) -{ - slotList.clear(); - signalList.clear(); - - QDesignerMemberSheetExtension *msheet = qt_extension<QDesignerMemberSheetExtension*>(core->extensionManager(), o); - if (!msheet) - return; - - for (int i = 0, count = msheet->count(); i < count; ++i) - if (msheet->isVisible(i)) { - if (msheet->isSlot(i)) - slotList += msheet->signature(i); - else - if (msheet->isSignal(i)) - signalList += msheet->signature(i); - } -} - namespace { // Internal helper class: A Delegate that validates using RegExps and additionally checks // on closing (adds missing parentheses). @@ -175,9 +133,15 @@ namespace { const QStringList &newFakeSlots, const QStringList &newFakeSignals); void undo() override - { fakeMethodsToMetaDataBase(core(), m_object, m_oldFakeSlots, m_oldFakeSignals); } + { + qdesigner_internal::SignalSlotDialog::fakeMethodsToMetaDataBase(core(), m_object, + m_oldFakeSlots, m_oldFakeSignals); + } void redo() override - { fakeMethodsToMetaDataBase(core(), m_object, m_newFakeSlots, m_newFakeSignals); } + { + qdesigner_internal::SignalSlotDialog::fakeMethodsToMetaDataBase(core(), m_object, + m_newFakeSlots, m_newFakeSignals); + } private: QObject *m_object; @@ -512,6 +476,51 @@ bool SignalSlotDialog::editPromotedClass(QDesignerFormEditorInterface *core, con return true; } +void SignalSlotDialog::fakeMethodsFromMetaDataBase(QDesignerFormEditorInterface *core, QObject *o, + QStringList &slotList, QStringList &signalList) +{ + slotList.clear(); + signalList.clear(); + if (auto *metaDB = qobject_cast<qdesigner_internal::MetaDataBase *>(core->metaDataBase())) { + if (const auto *item = metaDB->metaDataBaseItem(o)) { + slotList = item->fakeSlots(); + signalList = item->fakeSignals(); + } + } +} + +void SignalSlotDialog::fakeMethodsToMetaDataBase(QDesignerFormEditorInterface *core, QObject *o, + const QStringList &slotList, + const QStringList &signalList) +{ + if (auto *metaDB = qobject_cast<qdesigner_internal::MetaDataBase *>(core->metaDataBase())) { + if (auto *item = metaDB->metaDataBaseItem(o)) { + item->setFakeSlots(slotList); + item->setFakeSignals(signalList); + } + } +} + +void SignalSlotDialog::existingMethodsFromMemberSheet(QDesignerFormEditorInterface *core, QObject *o, + QStringList &slotList, QStringList &signalList) +{ + slotList.clear(); + signalList.clear(); + + auto *msheet = qt_extension<QDesignerMemberSheetExtension*>(core->extensionManager(), o); + if (!msheet) + return; + + for (qsizetype i = 0, count = msheet->count(); i < count; ++i) { + if (msheet->isVisible(i)) { + if (msheet->isSlot(i)) + slotList += msheet->signature(i); + else if (msheet->isSignal(i)) + signalList += msheet->signature(i); + } + } +} + } QT_END_NAMESPACE |