SVN commit 1033100 by mzanetti: Make authenticationwizard behave more userfriendly and work correctly on abort() M +29 -7 authenticationwizard.cpp M +2 -1 authenticationwizard.h M +5 -0 otrlchatinterface.cpp --- trunk/KDE/kdenetwork/kopete/plugins/otr/authenticationwizard.cpp #1033099:1033100 @@ -141,6 +141,7 @@ layout->addWidget(leAnswer); page->setLayout(layout); + page->setCommitPage(true); return page; } @@ -160,6 +161,7 @@ layout->addWidget(leSecret); page->setLayout(layout); + page->setCommitPage(true); return page; } @@ -239,7 +241,7 @@ } bool AuthenticationWizard::validateCurrentPage(){ - kDebug() << "currentId:" << currentId(); + kDebug(14318) << "currentId:" << currentId(); switch(currentId()){ case 1: if(initiate){ @@ -268,7 +270,7 @@ } void AuthenticationWizard::cancelVerification(){ - kDebug() << "cancelVerification..."; + kDebug(14318) << "cancelVerification..."; if(!initiate){ OtrlChatInterface::self()->abortSMP(context, session); } @@ -282,20 +284,20 @@ } void AuthenticationWizard::finished(bool success, bool trust){ - kDebug() << "****************"; + kDebug(14318) << "authWizard finished"; if(currentId() == Page_Wait2){ - kDebug() << "Yes, in wait_page2"; + kDebug(14318) << "Yes, in wait_page2"; ((WaitPage*)currentPage())->ready(); next(); if(success){ - kDebug() << "auth succeeded"; + kDebug(14318) << "auth succeeded"; currentPage()->setTitle(i18n("Authentication successful")); if(question != NULL || rbQA->isChecked()){ if(initiate){ - kDebug() << "initiate"; + kDebug(14318) << "initiate"; lFinal->setText(i18n("The authentication with %1 was completed successfully. The conversation is now secure.", OtrlChatInterface::self()->formatContact(session->members().first()->contactId()))); } else { - kDebug() << "not initiate"; + kDebug(14318) << "not initiate"; if(trust){ lFinal->setText(i18n("The authentication with %1 was completed successfully. The conversation is now secure.", OtrlChatInterface::self()->formatContact(session->members().first()->contactId()))); } else { @@ -310,8 +312,27 @@ lFinal->setText(i18n("The authentication with %1 failed. To make sure you are not talking to an imposter, try again using the manual fingerprint verification method. Note that the conversation is now insecure.", OtrlChatInterface::self()->formatContact(session->members().first()->contactId()))); } } + + setOption(QWizard::NoCancelButton, true); + } +void AuthenticationWizard::aborted(){ + if(currentId() == Page_SharedSecret || currentId() == Page_QuestionAnswer){ + next(); + } + if(currentId() == Page_Wait1){ + next(); + } + if(currentId() == Page_Wait2){ + next(); + } + currentPage()->setTitle(i18n("Authentication aborted")); + lFinal->setText(i18n("%1 has aborted the authentication process. To make sure you are not talking to an imposter, try again using the manual fingerprint verification method.", OtrlChatInterface::self()->formatContact(session->members().first()->contactId()))); + + setOption(QWizard::NoCancelButton, true); +} + void AuthenticationWizard::updateInfoBox(){ if(rbQA->isChecked()){ infoLabel->setText(i18n("Ask %1 a question, the answer to which is known only to you and them. If the answer does not match, you may be talking to an imposter.", OtrlChatInterface::self()->formatContact(session->members().first()->contactId()))); @@ -333,5 +354,6 @@ progressBar->setMaximum(0); layout->addWidget(progressBar); layout->addStretch(); + setCommitPage(true); setLayout(layout); } --- trunk/KDE/kdenetwork/kopete/plugins/otr/authenticationwizard.h #1033099:1033100 @@ -50,7 +50,8 @@ static AuthenticationWizard *findWizard(Kopete::ChatSession *session); void nextState(); void finished(bool success, bool trust); - + void aborted(); + protected: virtual int nextId() const; --- trunk/KDE/kdenetwork/kopete/plugins/otr/otrlchatinterface.cpp #1033099:1033100 @@ -505,10 +505,15 @@ } tlv = otrl_tlv_find(tlvs, OTRL_TLV_SMP_ABORT); if (tlv) { + kDebug(14318) << "other end aborted SMP"; Kopete::Message msg( chatSession->members().first(), chatSession->account()->myself() ); msg.setHtmlBody( i18n("Authentication error.") ); msg.setDirection( Kopete::Message::Internal ); chatSession->appendMessage( msg ); + AuthenticationWizard *currentWizard = AuthenticationWizard::findWizard(chatSession); + if(currentWizard){ + currentWizard->aborted(); + } context->smstate->nextExpected = OTRL_SMP_EXPECT1; }