virtual size_t getTotalCount() const override;
private:
- /**
- * @brief Private destructor. Only parent class ProgressController should call it.
- */
- virtual ~ImportController() override;
-
- void createCancelPopup(Evas_Object *parent);
- bool onPopupContinue();
- bool onPopupCancel();
+ void pause();
+ void resume();
+ void showCancelPopup();
virtual void onStart() override;
virtual void onCanceled() override;
static bool onVcardParse(contacts_record_h record, void *data);
- private:
- Ui::Popup *m_CancelPopup;
+ Evas_Object *m_Parent;
std::condition_variable m_ContinueCondition;
std::string m_CurrentVcard;
std::vector<int> m_ImportedContacts;
ImportController::ImportController(Evas_Object *parent, const char *title,
size_t totalCount, Vcards vcards, Records records)
- : ProgressController(parent, title, totalCount), m_IsPaused(false),
+ : ProgressController(parent, title, totalCount),
+ m_Parent(parent), m_IsPaused(false),
m_Records(std::move(records)), m_Vcards(std::move(vcards))
{
- createCancelPopup(parent);
-}
-
-ImportController::~ImportController()
-{
- delete m_CancelPopup;
}
size_t ImportController::getTotalCount() const
return m_ImportedContacts.size();
}
-void ImportController::createCancelPopup(Evas_Object *parent)
+void ImportController::pause()
{
- m_CancelPopup = new Ui::Popup();
- m_CancelPopup->create(parent);
- m_CancelPopup->setTitle("IDS_PB_HEADER_CANCEL_IMPORTING_ABB");
-
- m_CancelPopup->setCancelCallback(std::bind(&ImportController::onPopupContinue, this));
- m_CancelPopup->addButton("IDS_PB_BUTTON_CANCEL");
- m_CancelPopup->addButton("IDS_PB_BUTTON_OK_ABB2", std::bind(&ImportController::onPopupCancel, this));
+ m_IsPaused = true;
}
-bool ImportController::onPopupContinue()
+void ImportController::resume()
{
- evas_object_hide(m_CancelPopup->getEvasObject());
m_IsPaused = false;
m_ContinueCondition.notify_one();
-
- return false;
}
-bool ImportController::onPopupCancel()
+void ImportController::showCancelPopup()
{
- cancel();
- m_IsPaused = false;
- m_ContinueCondition.notify_one();
- m_CancelPopup = nullptr;
+ auto popup = new Ui::Popup();
+ popup->create(m_Parent);
+ popup->setTitle("IDS_PB_HEADER_CANCEL_IMPORTING_ABB");
- return true;
+ char text[BUFFER_SIZE];
+ snprintf(text, sizeof(text), _("IDS_PB_POP_CONTACTS_WILL_STOP_BEING_IMPORTED_FROM_PS"), m_CurrentVcard.c_str());
+ popup->setText(text);
+
+ popup->addButton("IDS_PB_BUTTON_CANCEL");
+ popup->addButton("IDS_PB_BUTTON_OK_ABB2", [this] {
+ cancel();
+ resume();
+ return true;
+ });
+ popup->setCancelCallback([this] {
+ resume();
+ return true;
+ });
+ popup->show();
}
void ImportController::onStart()
bool ImportController::onCancel()
{
- char text[BUFFER_SIZE] = { 0, };
- snprintf(text, sizeof(text), _("IDS_PB_POP_CONTACTS_WILL_STOP_BEING_IMPORTED_FROM_PS"), m_CurrentVcard.c_str());
- m_CancelPopup->setText(text);
-
- evas_object_show(m_CancelPopup->getEvasObject());
- m_IsPaused = true;
-
+ pause();
+ showCancelPopup();
return false;
}