summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKent Hansen <kent.hansen@nokia.com>2012-04-24 23:57:42 +0200
committerQt by Nokia <qt-info@nokia.com>2012-05-15 04:57:37 +0200
commitf544d7189ec8fc5096015a1a649ee2e317efd893 (patch)
treec6a44e8600f7ebc0be539dacb6721cf77c1d82ab
parent57c755fef00c8269b083817228f046e4d950a580 (diff)
Remove const char *-based connectNotify() API
This completes the transition from connectNotify(const char *) and disconnectNotify(const char *) to the new QMetaMethod-based functions. Removed the old connectNotify autotests and renamed the connectNotifyMethodXXX autotests to connectNotify, since there is no longer any ambiguity about which overload is being tested. Change-Id: Icf108a80177155f21bb73c165fb8ab5d4e997bc2 Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
-rw-r--r--dist/changes-5.0.05
-rw-r--r--src/corelib/kernel/qobject.cpp37
-rw-r--r--src/corelib/kernel/qobject.h3
-rw-r--r--tests/auto/corelib/kernel/qobject/tst_qobject.cpp134
4 files changed, 28 insertions, 151 deletions
diff --git a/dist/changes-5.0.0 b/dist/changes-5.0.0
index 3b37473d75..4d429d2c23 100644
--- a/dist/changes-5.0.0
+++ b/dist/changes-5.0.0
@@ -12,6 +12,11 @@ information about a particular change.
****************************************************************************
+- QObject
+ * The signatures of the connectNotify() and disconnectNotify() functions
+ have changed. The functions now get passed a QMetaMethod that identifies
+ the signal, rather than a const char *.
+
- QSslCertificate::subjectInfo() and QSslCertificate::issuerInfo() now
return a QStringList instead of a QString
diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp
index 9dbc92d32f..29a4767d28 100644
--- a/src/corelib/kernel/qobject.cpp
+++ b/src/corelib/kernel/qobject.cpp
@@ -2509,8 +2509,6 @@ QMetaObject::Connection QObject::connect(const QObject *sender, const char *sign
#endif
QMetaObject::Connection handle = QMetaObject::Connection(QMetaObjectPrivate::connect(
sender, signal_index, smeta, receiver, method_index_relative, rmeta ,type, types));
- if (handle)
- const_cast<QObject*>(sender)->connectNotify(signal - 1);
return handle;
}
@@ -2552,12 +2550,6 @@ QMetaObject::Connection QObject::connect(const QObject *sender, const QMetaMetho
return QMetaObject::Connection(0);
}
- // Reconstructing SIGNAL() macro result for signal.methodSignature() string
- QByteArray signalSignature;
- signalSignature.reserve(signal.methodSignature().size()+1);
- signalSignature.append((char)(QSIGNAL_CODE + '0'));
- signalSignature.append(signal.methodSignature());
-
int signal_index;
int method_index;
{
@@ -2597,8 +2589,6 @@ QMetaObject::Connection QObject::connect(const QObject *sender, const QMetaMetho
#endif
QMetaObject::Connection handle = QMetaObject::Connection(QMetaObjectPrivate::connect(
sender, signal_index, signal.enclosingMetaObject(), receiver, method_index, 0, type, types));
- if (handle)
- const_cast<QObject*>(sender)->connectNotify(signalSignature.constData());
return handle;
}
@@ -2782,7 +2772,6 @@ bool QObject::disconnect(const QObject *sender, const char *signal,
if (res) {
if (!signal)
const_cast<QObject*>(sender)->disconnectNotify(QMetaMethod());
- const_cast<QObject*>(sender)->disconnectNotify(signal ? (signal - 1) : 0);
}
return res;
}
@@ -2878,7 +2867,6 @@ bool QObject::disconnect(const QObject *sender, const QMetaMethod &signal,
// QMetaMethod as argument, as documented.
const_cast<QObject*>(sender)->disconnectNotify(signal);
}
- const_cast<QObject*>(sender)->disconnectNotify(method.mobj ? signalSignature.constData() : 0);
return true;
}
@@ -2907,22 +2895,6 @@ bool QObject::disconnect(const QObject *sender, const QMetaMethod &signal,
/*!
- \fn void QObject::connectNotify(const char *signal)
- \obsolete
-*/
-void QObject::connectNotify(const char *)
-{
-}
-
-/*!
- \fn void QObject::disconnectNotify(const char *signal)
- \obsolete
-*/
-void QObject::disconnectNotify(const char *)
-{
-}
-
-/*!
\since 5.0
This virtual function is called when something has been connected
@@ -4238,15 +4210,6 @@ QMetaObject::Connection QObject::connectImpl(const QObject *sender, void **signa
Q_ASSERT(method.isValid());
s->connectNotify(method);
- // reconstruct the signature to call connectNotify
- const char *sig;
- QByteArray tmp_sig = method.methodSignature();
- sig = tmp_sig.constData();
- QVarLengthArray<char> signalSignature(qstrlen(sig) + 2);
- signalSignature.data()[0] = char(QSIGNAL_CODE + '0');
- strcpy(signalSignature.data() + 1 , sig);
- s->connectNotify(signalSignature.data());
-
return ret;
}
diff --git a/src/corelib/kernel/qobject.h b/src/corelib/kernel/qobject.h
index 5e969d67f6..f69a4395f9 100644
--- a/src/corelib/kernel/qobject.h
+++ b/src/corelib/kernel/qobject.h
@@ -373,9 +373,6 @@ protected:
virtual void connectNotify(const QMetaMethod &signal);
virtual void disconnectNotify(const QMetaMethod &signal);
- // Deprecated; to be removed before Qt 5.0
- virtual void connectNotify(const char *signal);
- virtual void disconnectNotify(const char *signal);
protected:
QObject(QObjectPrivate &dd, QObject *parent = 0);
diff --git a/tests/auto/corelib/kernel/qobject/tst_qobject.cpp b/tests/auto/corelib/kernel/qobject/tst_qobject.cpp
index e5da03c890..0cdce500fa 100644
--- a/tests/auto/corelib/kernel/qobject/tst_qobject.cpp
+++ b/tests/auto/corelib/kernel/qobject/tst_qobject.cpp
@@ -76,13 +76,10 @@ private slots:
void findChildren();
void connectDisconnectNotify_data();
void connectDisconnectNotify();
- void connectNotifyPtr();
- void connectDisconnectNotifyMethod_data();
- void connectDisconnectNotifyMethod();
- void connectDisconnectNotifyMethodPMF();
- void disconnectNotifyMethod_receiverDestroyed();
- void connectNotifyMethod_connectSlotsByName();
- void connectDisconnectNotifyMethod_shadowing();
+ void connectDisconnectNotifyPMF();
+ void disconnectNotify_receiverDestroyed();
+ void connectNotify_connectSlotsByName();
+ void connectDisconnectNotify_shadowing();
void emitInDefinedOrder();
void customTypes();
void streamCustomTypes();
@@ -807,20 +804,18 @@ public:
NotifyObject() : SenderObject(), ReceiverObject()
{}
- QString org_signal;
- QString nw_signal;
-
-protected:
- void connectNotify( const char *signal )
- {
- org_signal = signal;
- nw_signal = QMetaObject::normalizedSignature(signal);
- };
- void disconnectNotify( const char *signal )
+ QList<QMetaMethod> connectedSignals;
+ QList<QMetaMethod> disconnectedSignals;
+ void clearNotifications()
{
- org_signal = signal;
- nw_signal = QMetaObject::normalizedSignature(signal);
- };
+ connectedSignals.clear();
+ disconnectedSignals.clear();
+ }
+protected:
+ void connectNotify(const QMetaMethod &signal)
+ { connectedSignals.append(signal); }
+ void disconnectNotify(const QMetaMethod &signal)
+ { disconnectedSignals.append(signal); }
};
void tst_QObject::connectDisconnectNotify_data()
@@ -845,89 +840,6 @@ void tst_QObject::connectDisconnectNotify()
QFETCH(QString, a_signal);
QFETCH(QString, a_slot);
- // Test connectNotify
- connect( (SenderObject*)s, a_signal.toLatin1(), (ReceiverObject*)r, a_slot.toLatin1() );
- QCOMPARE( s->org_signal, s->nw_signal );
- QCOMPARE( s->org_signal.toLatin1(), QMetaObject::normalizedSignature(a_signal.toLatin1().constData()) );
-
- // Test disconnectNotify
- QObject::disconnect( (SenderObject*)s, a_signal.toLatin1(), (ReceiverObject*)r, a_slot.toLatin1() );
- QCOMPARE( s->org_signal, s->nw_signal );
- QCOMPARE( s->org_signal.toLatin1(), QMetaObject::normalizedSignature(a_signal.toLatin1().constData()) );
-
- // Reconnect
- connect( (SenderObject*)s, a_signal.toLatin1(), (ReceiverObject*)r, a_slot.toLatin1() );
- // Test disconnectNotify for a complete disconnect
- ((SenderObject*)s)->disconnect((ReceiverObject*)r);
-
- // Obtaining meta methods
- int signalIndx = ((SenderObject*)s)->metaObject()->indexOfSignal(
- QMetaObject::normalizedSignature(a_signal.toLatin1().constData()+1).constData());
- int methodIndx = ((ReceiverObject*)r)->metaObject()->indexOfMethod(
- QMetaObject::normalizedSignature(a_slot.toLatin1().constData()+1).constData());
- QMetaMethod signal = ((SenderObject*)s)->metaObject()->method(signalIndx);
- QMetaMethod method = ((ReceiverObject*)r)->metaObject()->method(methodIndx);
-
- // Test connectNotify when connecting by QMetaMethod
- connect( (SenderObject*)s, signal, (ReceiverObject*)r, method );
- QCOMPARE( s->org_signal, s->nw_signal );
- QCOMPARE( s->org_signal.toLatin1(), QMetaObject::normalizedSignature(a_signal.toLatin1().constData()) );
-
- // Test disconnectNotify when disconnecting by QMetaMethod
- QObject::disconnect( (SenderObject*)s, signal, (ReceiverObject*)r, method );
- QCOMPARE( s->org_signal, s->nw_signal );
- QCOMPARE( s->org_signal.toLatin1(), QMetaObject::normalizedSignature(a_signal.toLatin1().constData()) );
-
- delete s;
- delete r;
-}
-
-void tst_QObject::connectNotifyPtr()
-{
- NotifyObject *s = new NotifyObject;
- NotifyObject *r = new NotifyObject;
-
- connect( (SenderObject*)s, &SenderObject::signal1, (ReceiverObject*)r, &ReceiverObject::slot1 );
- QCOMPARE( s->org_signal, s->nw_signal );
- QCOMPARE( s->org_signal.toLatin1(), QMetaObject::normalizedSignature(SIGNAL(signal1())));
-
- delete s;
- delete r;
-}
-
-class NotifyMethodObject : public SenderObject, public ReceiverObject
-{
-public:
- NotifyMethodObject() : SenderObject(), ReceiverObject()
- {}
-
- QList<QMetaMethod> connectedSignals;
- QList<QMetaMethod> disconnectedSignals;
- void clearNotifications()
- {
- connectedSignals.clear();
- disconnectedSignals.clear();
- }
-protected:
- void connectNotify(const QMetaMethod &signal)
- { connectedSignals.append(signal); }
- void disconnectNotify(const QMetaMethod &signal)
- { disconnectedSignals.append(signal); }
-};
-
-void tst_QObject::connectDisconnectNotifyMethod_data()
-{
- tst_QObject::connectDisconnectNotify_data();
-}
-
-void tst_QObject::connectDisconnectNotifyMethod()
-{
- NotifyMethodObject *s = new NotifyMethodObject;
- NotifyMethodObject *r = new NotifyMethodObject;
-
- QFETCH(QString, a_signal);
- QFETCH(QString, a_slot);
-
// Obtaining meta methods
int signalIndx = ((SenderObject*)s)->metaObject()->indexOfSignal(
QMetaObject::normalizedSignature(a_signal.toLatin1().constData()+1).constData());
@@ -1005,10 +917,10 @@ void tst_QObject::connectDisconnectNotifyMethod()
static void connectDisconnectNotifyTestSlot() {}
-void tst_QObject::connectDisconnectNotifyMethodPMF()
+void tst_QObject::connectDisconnectNotifyPMF()
{
- NotifyMethodObject *s = new NotifyMethodObject;
- NotifyMethodObject *r = new NotifyMethodObject;
+ NotifyObject *s = new NotifyObject;
+ NotifyObject *r = new NotifyObject;
QMetaMethod signal = QMetaMethod::fromSignal(&SenderObject::signal1);
@@ -1058,10 +970,10 @@ void tst_QObject::connectDisconnectNotifyMethodPMF()
delete r;
}
-void tst_QObject::disconnectNotifyMethod_receiverDestroyed()
+void tst_QObject::disconnectNotify_receiverDestroyed()
{
- NotifyMethodObject *s = new NotifyMethodObject;
- NotifyMethodObject *r = new NotifyMethodObject;
+ NotifyObject *s = new NotifyObject;
+ NotifyObject *r = new NotifyObject;
QVERIFY(QObject::connect((SenderObject*)s, SIGNAL(signal1()), (ReceiverObject*)r, SLOT(slot1())));
@@ -1115,7 +1027,7 @@ public Q_SLOTS:
void on_baz_signal1() {}
};
-void tst_QObject::connectNotifyMethod_connectSlotsByName()
+void tst_QObject::connectNotify_connectSlotsByName()
{
ConnectByNameNotifyReceiverObject testObject;
QList<ConnectByNameNotifySenderObject *> senders =
@@ -1146,7 +1058,7 @@ Q_SIGNALS:
void signal1();
};
-void tst_QObject::connectDisconnectNotifyMethod_shadowing()
+void tst_QObject::connectDisconnectNotify_shadowing()
{
ConnectDisconnectNotifyShadowObject s;
// Obtain QMetaMethods