QInputDialog: simplify signalForMember()

Instead of playing clever tricks with the index variable, simply
scan through the list of argument-carrying signals and, if nothing
fits there, fall explicitly back to accepted().

Change-Id: I1be49ce601edb854cc1bab5be994b2c09fe31b3c
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
This commit is contained in:
Marc Mutz 2014-04-07 10:05:37 +02:00
parent c2cc74f862
commit 46a0a87b2a

View File

@ -64,7 +64,6 @@ enum CandidateSignal {
TextValueSelectedSignal, TextValueSelectedSignal,
IntValueSelectedSignal, IntValueSelectedSignal,
DoubleValueSelectedSignal, DoubleValueSelectedSignal,
AcceptedSignal,
NumCandidateSignals NumCandidateSignals
}; };
@ -75,7 +74,6 @@ static const char *candidateSignal(int which)
case TextValueSelectedSignal: return SIGNAL(textValueSelected(QString)); case TextValueSelectedSignal: return SIGNAL(textValueSelected(QString));
case IntValueSelectedSignal: return SIGNAL(intValueSelected(int)); case IntValueSelectedSignal: return SIGNAL(intValueSelected(int));
case DoubleValueSelectedSignal: return SIGNAL(doubleValueSelected(double)); case DoubleValueSelectedSignal: return SIGNAL(doubleValueSelected(double));
case AcceptedSignal: return SIGNAL(accepted());
case NumCandidateSignals: ; // fall through case NumCandidateSignals: ; // fall through
}; };
@ -87,13 +85,12 @@ static const char *signalForMember(const char *member)
{ {
QByteArray normalizedMember(QMetaObject::normalizedSignature(member)); QByteArray normalizedMember(QMetaObject::normalizedSignature(member));
int i = 0; for (int i = 0; i < NumCandidateSignals; ++i)
while (i < NumCandidateSignals - 1) { // sic
if (QMetaObject::checkConnectArgs(candidateSignal(i), normalizedMember)) if (QMetaObject::checkConnectArgs(candidateSignal(i), normalizedMember))
break; return candidateSignal(i);
++i;
} // otherwise, use fit-all accepted signal:
return candidateSignal(i); return SIGNAL(accepted());
} }
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE