diff options
author | Andrei Karas <akaras@inbox.ru> | 2018-03-08 06:07:15 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2018-03-08 06:07:15 +0300 |
commit | fc1ca42ed5a1b2d83a1dc8f94709a057b8e28e9d (patch) | |
tree | f7f8af4849bc214a27ea8205410568b76ce5ec30 /src/pincodemanager.cpp | |
parent | 6b3b81988ea37207eeeb2994761e307c6b6fb340 (diff) | |
download | plus-fc1ca42ed5a1b2d83a1dc8f94709a057b8e28e9d.tar.gz plus-fc1ca42ed5a1b2d83a1dc8f94709a057b8e28e9d.tar.bz2 plus-fc1ca42ed5a1b2d83a1dc8f94709a057b8e28e9d.tar.xz plus-fc1ca42ed5a1b2d83a1dc8f94709a057b8e28e9d.zip |
Add support for change pin code by server request.
Diffstat (limited to 'src/pincodemanager.cpp')
-rw-r--r-- | src/pincodemanager.cpp | 80 |
1 files changed, 79 insertions, 1 deletions
diff --git a/src/pincodemanager.cpp b/src/pincodemanager.cpp index d8f2cea5a..67b14f2bf 100644 --- a/src/pincodemanager.cpp +++ b/src/pincodemanager.cpp @@ -27,6 +27,7 @@ #include "gui/widgets/createwidget.h" +#include "listeners/changepincodelistener.h" #include "listeners/newpincodelistener.h" #include "listeners/newpincoderetrylistener.h" #include "listeners/pincodelistener.h" @@ -40,6 +41,7 @@ PincodeManager pincodeManager; PincodeManager::PincodeManager() : + mOldPincode(), mNewPincode(), mSeed(0U), mAccountId(BeingId_zero), @@ -57,6 +59,7 @@ void PincodeManager::init() mSeed = 0; mAccountId = BeingId_zero; mState = PincodeState::None; + mNewPincode.clear(); } void PincodeManager::clearDialog(const PincodeDialog *const PincodeDialog) @@ -82,11 +85,12 @@ void PincodeManager::updateState() mDialog->addActionListener(&pincodeListener); break; case PincodeState::Create: + mNewPincode.clear(); CREATEWIDGETV(mDialog, PincodeDialog, // TRANSLATORS: dialog caption _("New pincode"), // TRANSLATORS: dialog label - _("Set new pincode"), + _("Enter new pincode"), mSeed, nullptr); mDialog->requestFocus(); @@ -94,6 +98,19 @@ void PincodeManager::updateState() mDialog->addActionListener(&newPincodeListener); break; case PincodeState::Change: + mOldPincode.clear(); + mNewPincode.clear(); + CREATEWIDGETV(mDialog, PincodeDialog, + // TRANSLATORS: dialog caption + _("Change pincode"), + // TRANSLATORS: dialog label + _("Enter old pincode"), + mSeed, + nullptr); + mDialog->requestFocus(); + mDialog->setActionEventId("ok"); + mDialog->addActionListener(&changePincodeListener); + break; case PincodeState::None: default: break; @@ -144,6 +161,67 @@ void PincodeManager::setNewPincode(const std::string &pincode) } } +void PincodeManager::changePincode(const std::string &pincode) +{ + if (mOldPincode.empty()) + { // set old pincode + mOldPincode = pincode; + CREATEWIDGETV(mDialog, PincodeDialog, + // TRANSLATORS: dialog caption + _("Change pincode"), + // TRANSLATORS: dialog label + _("Enter new pincode"), + mSeed, + nullptr); + mDialog->requestFocus(); + mDialog->setActionEventId("ok"); + mDialog->addActionListener(&changePincodeListener); + } + else if (mNewPincode.empty()) + { // set first new pincode + mNewPincode = pincode; + CREATEWIDGETV(mDialog, PincodeDialog, + // TRANSLATORS: dialog caption + _("Change pincode"), + // TRANSLATORS: dialog label + _("Confirm new pincode"), + mSeed, + nullptr); + mDialog->requestFocus(); + mDialog->setActionEventId("ok"); + mDialog->addActionListener(&changePincodeListener); + } + else + { // new pincode confirmation + if (mNewPincode != pincode) + { + mOldPincode.clear(); + mNewPincode.clear(); + CREATEWIDGETV(mDialog, OkDialog, + // TRANSLATORS: error header + _("Pincode"), + // TRANSLATORS: error message + _("Wrong pincode confirmation!"), + // TRANSLATORS: ok dialog button + _("OK"), + DialogType::ERROR, + Modal_true, + ShowCenter_true, + nullptr, + 260); + mDialog->addActionListener(&newPincodeRetryListener); + } + else + { + charServerHandler->changePincode(mAccountId, + mOldPincode, + mNewPincode); + mOldPincode.clear(); + mNewPincode.clear(); + } + } +} + void PincodeManager::sendPincode(const std::string &pincode) { charServerHandler->sendCheckPincode(mAccountId, |