From 0bfc5c312fb2af4ece8eb9c51ef06216c4e03913 Mon Sep 17 00:00:00 2001 From: Adam Dobrowolski Date: Thu, 9 Jan 2020 11:42:58 +0100 Subject: [PATCH] [EGD-2475] [WIP] SMS options connected sms, call, add contact callbacks --- .../windows/OptionsMessages.cpp | 6 ++- .../windows/OptionsWindow.cpp | 2 +- .../windows/ThreadViewWindow.cpp | 14 ++++-- .../application-messages/windows/UiCommon.cpp | 43 ++++++++++++++++--- .../application-messages/windows/UiCommon.hpp | 6 ++- 5 files changed, 58 insertions(+), 13 deletions(-) diff --git a/module-apps/application-messages/windows/OptionsMessages.cpp b/module-apps/application-messages/windows/OptionsMessages.cpp index 96b9f58b1..360a5414e 100644 --- a/module-apps/application-messages/windows/OptionsMessages.cpp +++ b/module-apps/application-messages/windows/OptionsMessages.cpp @@ -7,6 +7,8 @@ gui::HBox *newCombo(app::ApplicationMessages *app, const UTF8 &text) { + auto dummy = ContactRecord(); + auto box = new gui::HBox(nullptr, 0, 0, style::window_width, style::window::label::big_h); box->setPenWidth(0); box->setPenFocusWidth(0); @@ -26,16 +28,18 @@ gui::HBox *newCombo(app::ApplicationMessages *app, const UTF8 &text) p("phonebook_phone_ringing", [=](gui::Item &) -> bool { LOG_INFO("Call: %s", text.c_str()); - return true; + return call(app, dummy); }); p("mail", [=](gui::Item &) -> bool { LOG_INFO("SMS to: %s", text.c_str()); + sms(app, dummy); return true; }); p("cross", [=](gui::Item &) -> bool { LOG_INFO("Add contact: %s", text.c_str()); + addContact(app, dummy); return true; }); diff --git a/module-apps/application-messages/windows/OptionsWindow.cpp b/module-apps/application-messages/windows/OptionsWindow.cpp index e40386520..d3071b682 100644 --- a/module-apps/application-messages/windows/OptionsWindow.cpp +++ b/module-apps/application-messages/windows/OptionsWindow.cpp @@ -11,7 +11,7 @@ std::list threadWindowOptions(app::ApplicationMessages *app, const ContactRecord contact = record ? DBServiceAPI::ContactGetByID(app, record->contactID)->front() : ContactRecord(); return { - callOption(app, contact, record != nullptr), + callOption(app, contact, true), contactDetails(app, contact), {utils::localize.get("sms_delete_conversation"), [=](gui::Item &item) { diff --git a/module-apps/application-messages/windows/ThreadViewWindow.cpp b/module-apps/application-messages/windows/ThreadViewWindow.cpp index f262d63a7..af8088720 100644 --- a/module-apps/application-messages/windows/ThreadViewWindow.cpp +++ b/module-apps/application-messages/windows/ThreadViewWindow.cpp @@ -191,9 +191,17 @@ namespace gui LOG_INFO("Phonebook sms send request!"); // TODO agree what should be used and how. Now Request have only contact, // maybe it should have additional info - which nr to use and how to show it - LOG_DEBUG("SEND SMS TO: %s %s %s %s %s", pdata->contact->number.c_str(), pdata->contact->numbers[0].numberE164.c_str(), - pdata->contact->numbers[0].numberUser.c_str(), pdata->contact->primaryName.c_str(), pdata->contact->alternativeName.c_str()); - setTitle(pdata->contact->numbers[0].numberUser); + if (pdata->contact->numbers.size() != 0) + { + LOG_DEBUG("SEND SMS TO: %s %s %s %s %s", pdata->contact->number.c_str(), pdata->contact->numbers[0].numberE164.c_str(), + pdata->contact->numbers[0].numberUser.c_str(), pdata->contact->primaryName.c_str(), pdata->contact->alternativeName.c_str()); + setTitle(pdata->contact->numbers[0].numberUser); + } + else + { + // TODO handle error better + setTitle("NO CONTACT"); + } } } { diff --git a/module-apps/application-messages/windows/UiCommon.cpp b/module-apps/application-messages/windows/UiCommon.cpp index 5cadbac1f..23cc538ee 100644 --- a/module-apps/application-messages/windows/UiCommon.cpp +++ b/module-apps/application-messages/windows/UiCommon.cpp @@ -4,17 +4,32 @@ #include "service-appmgr/ApplicationManager.hpp" #include -gui::Option callOption(app::ApplicationMessages *app, ContactRecord &contact, bool active) +bool call(app::ApplicationMessages *app, const ContactRecord contact) { - return {UTF8(utils::localize.get("sms_call_text")) + contact.primaryName, [=](gui::Item &item) { - if (!active) + if (contact.numbers.size() != 0) + { + std::unique_ptr data = std::make_unique(contact.numbers[0].numberE164.c_str()); + return sapm::ApplicationManager::messageSwitchApplication(app, app::name_call, "CallWindow", std::move(data)); + } + else + { + LOG_ERROR("No contact numbers!"); + return false; + } +} + +gui::Option callOption(app::ApplicationMessages *app, const ContactRecord contact, bool active) +{ + return {UTF8(utils::localize.get("sms_call_text")) + contact.primaryName, [app, contact, active](gui::Item &item) { + if (active) { - return false; + LOG_DEBUG("Try call!"); + return call(app, contact); } else { - std::unique_ptr data = std::make_unique(contact.numbers[0].numberE164.c_str()); - return sapm::ApplicationManager::messageSwitchApplication(app, app::name_call, "CallWindow", std::move(data)); + LOG_ERROR("Inactive call option"); + return false; } }}; } @@ -25,10 +40,24 @@ gui::Option callOption(app::ApplicationMessages *app, ContactRecord &contact, bo gui::Option contactDetails(app::ApplicationMessages *app, ContactRecord &contact) { - auto foo = [=](gui::Item &item) { return sapm::ApplicationManager::messageSwitchApplication( app, app::name_phonebook, "Contact", std::make_unique(std::shared_ptr(new ContactRecord(contact)))); }; return {utils::localize.get("sms_contact_details"), foo}; } + +#include "../data/SMSdata.hpp" +#include "ThreadViewWindow.hpp" + +bool sms(app::ApplicationMessages *app, const ContactRecord contact) +{ + // TODO return to current application doesn't change application window >_> + auto param = std::shared_ptr(new ContactRecord(contact)); + return app->switchWindow(gui::name::window::thread_view, std::make_unique(param)); +} + +bool addContact(app::ApplicationMessages *app, const ContactRecord contact) +{ + return sapm::ApplicationManager::messageSwitchApplication(app, app::name_phonebook, "New", nullptr); +} diff --git a/module-apps/application-messages/windows/UiCommon.hpp b/module-apps/application-messages/windows/UiCommon.hpp index b1aab03ba..c9d852a2c 100644 --- a/module-apps/application-messages/windows/UiCommon.hpp +++ b/module-apps/application-messages/windows/UiCommon.hpp @@ -4,5 +4,9 @@ #include #include -gui::Option callOption(app::ApplicationMessages *app, ContactRecord &contact, bool active); +bool call(app::ApplicationMessages *app, const ContactRecord contact); +bool sms(app::ApplicationMessages *app, const ContactRecord contact); +// TODO use contact here +bool addContact(app::ApplicationMessages *app, const ContactRecord contact); +gui::Option callOption(app::ApplicationMessages *app, ContactRecord contact, bool active); gui::Option contactDetails(app::ApplicationMessages *app, ContactRecord &contact);