File indexing completed on 2024-04-14 03:54:10

0001 /*
0002     This file is part of KNewStuffQuick.
0003     SPDX-FileCopyrightText: 2016 Dan Leinir Turthra Jensen <admin@leinir.dk>
0004 
0005     SPDX-License-Identifier: LGPL-2.1-or-later
0006 */
0007 
0008 #include "quickquestionlistener.h"
0009 
0010 #include "core/question.h"
0011 
0012 #include <QCoreApplication>
0013 #include <QPointer>
0014 
0015 using namespace KNewStuffQuick;
0016 
0017 Q_GLOBAL_STATIC(QuickQuestionListener, s_quickQuestionListener)
0018 QuickQuestionListener *QuickQuestionListener::instance()
0019 {
0020     return s_quickQuestionListener;
0021 }
0022 
0023 QuickQuestionListener::~QuickQuestionListener()
0024 {
0025     if (m_question) {
0026         m_question->setResponse(KNSCore::Question::CancelResponse);
0027     }
0028 }
0029 
0030 void QuickQuestionListener::askQuestion(KNSCore::Question *question)
0031 {
0032     switch (question->questionType()) {
0033     case KNSCore::Question::SelectFromListQuestion:
0034         Q_EMIT askListQuestion(question->title(), question->question(), question->list());
0035         break;
0036     case KNSCore::Question::ContinueCancelQuestion:
0037         Q_EMIT askContinueCancelQuestion(question->title(), question->question());
0038         break;
0039     case KNSCore::Question::InputTextQuestion:
0040         Q_EMIT askTextInputQuestion(question->title(), question->question());
0041         break;
0042     case KNSCore::Question::PasswordQuestion:
0043         Q_EMIT askPasswordQuestion(question->title(), question->question());
0044         break;
0045     case KNSCore::Question::YesNoQuestion:
0046     default:
0047         Q_EMIT askYesNoQuestion(question->title(), question->question());
0048         break;
0049     }
0050     m_question = question;
0051 }
0052 
0053 void KNewStuffQuick::QuickQuestionListener::passResponse(bool responseIsContinue, QString input)
0054 {
0055     if (m_question) {
0056         if (responseIsContinue) {
0057             m_question->setResponse(input);
0058             switch (m_question->questionType()) {
0059             case KNSCore::Question::ContinueCancelQuestion:
0060                 m_question->setResponse(KNSCore::Question::ContinueResponse);
0061                 break;
0062             case KNSCore::Question::YesNoQuestion:
0063                 m_question->setResponse(KNSCore::Question::YesResponse);
0064                 break;
0065             case KNSCore::Question::SelectFromListQuestion:
0066             case KNSCore::Question::InputTextQuestion:
0067             case KNSCore::Question::PasswordQuestion:
0068             default:
0069                 m_question->setResponse(KNSCore::Question::OKResponse);
0070                 break;
0071             }
0072         } else {
0073             switch (m_question->questionType()) {
0074             case KNSCore::Question::YesNoQuestion:
0075                 m_question->setResponse(KNSCore::Question::NoResponse);
0076                 break;
0077             case KNSCore::Question::SelectFromListQuestion:
0078             case KNSCore::Question::InputTextQuestion:
0079             case KNSCore::Question::PasswordQuestion:
0080             case KNSCore::Question::ContinueCancelQuestion:
0081             default:
0082                 m_question->setResponse(KNSCore::Question::CancelResponse);
0083                 break;
0084             }
0085         }
0086         m_question.clear();
0087     }
0088 }
0089 
0090 #include "moc_quickquestionlistener.cpp"