// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "NumberWithIconsWidget.hpp"
#include "application-phonebook/data/PhonebookStyle.hpp"
#include <BottomBar.hpp>
#include <application-call/data/CallSwitchData.hpp>
#include <service-appmgr/Controller.hpp>
#include <module-apps/application-messages/data/SMSdata.hpp>
namespace gui
{
NumberWithIconsWidget::NumberWithIconsWidget(app::Application *app,
const utils::PhoneNumber::View &number,
const std::string &font,
Item *parent)
: HBox(parent, 0, 0, 0, 0)
{
setReverseOrder(true);
setMinimumSize(phonebookStyle::informationWidget::w, phonebookStyle::numbersWithIconsWidget::h);
setEdges(gui::RectangleEdge::None);
setAlignment(Alignment(gui::Alignment::Horizontal::Right, gui::Alignment::Vertical::Center));
smsImage = new ImageBox(this,
0,
0,
phonebookStyle::numbersWithIconsWidget::sms_image_w,
phonebookStyle::numbersWithIconsWidget::sms_image_h,
new Image("mail"));
smsImage->inputCallback = [=](Item &item, const InputEvent &input) {
if (input.keyCode == KeyCode::KEY_ENTER && input.state == InputEvent::State::keyReleasedShort) {
LOG_INFO("SMS operation started");
auto data = std::make_unique<SMSSendRequest>(number, std::string{});
data->ignoreCurrentWindowOnStack = true;
return app::manager::Controller::sendAction(app,
app::manager::actions::CreateSms,
std::move(data),
app::manager::OnSwitchBehaviour::RunInBackground);
}
return false;
};
phoneImage = new ImageBox(this,
0,
0,
phonebookStyle::numbersWithIconsWidget::phone_image_w,
phonebookStyle::numbersWithIconsWidget::phone_image_h,
new Image("phonebook_phone_ringing"));
phoneImage->setMargins(Margins(phonebookStyle::numbersWithIconsWidget::phone_image_margin_left,
0,
phonebookStyle::numbersWithIconsWidget::phone_image_margin_right,
0));
phoneImage->inputCallback = [=](Item &item, const InputEvent &input) {
if (input.keyCode == KeyCode::KEY_ENTER && input.state == InputEvent::State::keyReleasedShort) {
app::manager::Controller::sendAction(app,
app::manager::actions::Dial,
std::make_unique<app::ExecuteCallData>(number),
app::manager::OnSwitchBehaviour::RunInBackground);
LOG_INFO("Call operation started");
}
return false;
};
numberText = new TextFixedSize(this, 0, 0, 0, 0);
numberText->setUnderline(false);
numberText->setMaximumSize(phonebookStyle::informationWidget::w,
phonebookStyle::numbersWithIconsWidget::number_text_h);
numberText->setFont(font);
numberText->setEdges(gui::RectangleEdge::None);
numberText->setEditMode(EditMode::Browse);
numberText->setAlignment(Alignment(gui::Alignment::Horizontal::Left, gui::Alignment::Vertical::Center));
numberText->setText(number.getFormatted());
numberText->activeItem = false;
focusChangedCallback = [&](Item &item) {
setFocusItem(focus ? phoneImage : nullptr);
return true;
};
phoneImage->focusChangedCallback = [&, app](Item &item) {
if (phoneImage->focus) {
phoneImage->setEdges(RectangleEdge::Bottom | RectangleEdge::Top);
app->getCurrentWindow()->bottomBarTemporaryMode(
utils::localize.get(style::strings::common::call), BottomBar::Side::CENTER, false);
}
else {
phoneImage->setEdges(RectangleEdge::None);
}
return true;
};
smsImage->focusChangedCallback = [&, app](Item &item) {
if (smsImage->focus) {
smsImage->setEdges(RectangleEdge::Bottom | RectangleEdge::Top);
app->getCurrentWindow()->bottomBarTemporaryMode(
utils::localize.get(style::strings::common::send), BottomBar::Side::CENTER, false);
}
else {
smsImage->setEdges(RectangleEdge::None);
}
return true;
};
}
} /* namespace gui */