~aleteoryx/muditaos

8002476400010d9d11e00f0bf4f56f57b2a41bc7 — Lefucjusz 2 years ago cf6c377
[MOS-1029] Fix missing 'Copy' option on 'New message' window

Fix of the issue that copy to clipboard option
was missing from the menu on 'New message' window.
M module-apps/application-messages/windows/OptionsMessages.cpp => module-apps/application-messages/windows/OptionsMessages.cpp +32 -18
@@ 17,13 17,13 @@
namespace gui
{

    SmsWindowOptions::SmsWindowOptions(app::ApplicationCommon *app, std::string windowName)
    SmsWindowOptions::SmsWindowOptions(app::ApplicationCommon *app, const std::string &windowName)
        : OptionWindow(app, windowName)
    {}

    void SmsWindowOptions::onBeforeShow(gui::ShowMode mode, gui::SwitchData *data)
    void SmsWindowOptions::onBeforeShow([[maybe_unused]] gui::ShowMode mode, gui::SwitchData *data)
    {
        if (auto message = dynamic_cast<SMSSwitchData *>(data)) {
        if (const auto message = dynamic_cast<SMSSwitchData *>(data)) {
            record = message->getRecord();
        }



@@ 43,10 43,10 @@ namespace gui

    gui::option::OptionRecordValidity SmsWindowOptions::getRecordValid()
    {
        auto contact = DBServiceAPI::MatchContactByPhoneNumber(application, record.number);
        return contact == nullptr ? gui::option::OptionRecordValidity::Invalid
                                  : (contact->isTemporary() ? gui::option::OptionRecordValidity::Invalid
                                                            : gui::option::OptionRecordValidity::Valid);
        const auto contact = DBServiceAPI::MatchContactByPhoneNumber(application, record.number);
        return (contact == nullptr) ? gui::option::OptionRecordValidity::Invalid
                                    : (contact->isTemporary() ? gui::option::OptionRecordValidity::Invalid
                                                              : gui::option::OptionRecordValidity::Valid);
    }

    std::list<Option> SmsWindowOptions::smsWindowOptions(app::ApplicationMessages *app, const SMSRecord &record)


@@ 59,7 59,7 @@ namespace gui

        std::list<gui::Option> options;
        if (record.type == SMSType::FAILED) {
            options.emplace_back(utils::translate("sms_resend_failed"), [=, &record](gui::Item &item) {
            options.emplace_back(utils::translate("sms_resend_failed"), [=, &record]([[maybe_unused]] gui::Item &item) {
                app->resendSms(record);
                app->returnToPreviousWindow();
                return true;


@@ 81,20 81,20 @@ namespace gui
                std::make_unique<gui::option::Contact>(app, gui::option::ContactOperation::Details, *contact)});
        }

        options.emplace_back(UTF8(utils::translate("sms_forward_message")), [=](gui::Item &item) {
        options.emplace_back(UTF8(utils::translate("sms_forward_message")), [=]([[maybe_unused]] gui::Item &item) {
            std::unique_ptr<gui::SwitchData> data = std::make_unique<SMSTextData>(record.body);
            app->switchWindow(gui::name::window::new_sms, std::move(data));
            return true;
        });

        options.emplace_back(UTF8(utils::translate("sms_copy")), [=](gui::Item &item) {
        options.emplace_back(UTF8(utils::translate("sms_copy")), [=]([[maybe_unused]] gui::Item &item) {
            Clipboard::getInstance().copy(record.body);
            app->returnToPreviousWindow();
            return true;
        });

        options.emplace_back(UTF8(utils::translate("sms_delete_message")),
                             [=](gui::Item &item) { return app->removeSms(record); });
                             [=]([[maybe_unused]] gui::Item &item) { return app->removeSms(record); });

        return options;
    }


@@ 107,15 107,29 @@ std::list<gui::Option> newMessageWindowOptions(app::ApplicationMessages *app,
{
    std::list<gui::Option> options;

    options.emplace_back(UTF8(utils::translate("sms_use_template")), [=](gui::Item &item) {
        std::unique_ptr<gui::SwitchData> data = std::make_unique<SMSTemplateRequest>(requestingWindow);
        app->switchWindow(gui::name::window::sms_templates, std::move(data));
        return true;
    });
    options.emplace_back(UTF8(utils::translate("sms_use_template")),
                         [app, requestingWindow]([[maybe_unused]] gui::Item &item) {
                             auto data = std::make_unique<SMSTemplateRequest>(requestingWindow);
                             app->switchWindow(gui::name::window::sms_templates, std::move(data));
                             return true;
                         });

    if (text != nullptr) {
        const auto &messageContent = text->getText();
        if (!messageContent.empty()) {
            options.emplace_back(utils::translate("sms_copy"), [app, messageContent]([[maybe_unused]] gui::Item &item) {
                Clipboard::getInstance().copy(messageContent);
                app->returnToPreviousWindow();
                return true;
            });
        }
    }

    if (Clipboard::getInstance().hasData()) {
        options.emplace_back(utils::translate("sms_paste"), [=](gui::Item &item) {
            text->addText(Clipboard::getInstance().paste(), gui::AdditionType::perBlock);
        options.emplace_back(utils::translate("sms_paste"), [app, text]([[maybe_unused]] gui::Item &item) {
            if (text != nullptr) {
                text->addText(Clipboard::getInstance().paste(), gui::AdditionType::perBlock);
            }
            app->returnToPreviousWindow();
            return true;
        });

M module-apps/application-messages/windows/OptionsMessages.hpp => module-apps/application-messages/windows/OptionsMessages.hpp +2 -4
@@ 1,4 1,4 @@
// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#pragma once


@@ 11,11 11,10 @@

namespace gui
{

    class SmsWindowOptions : public OptionWindow
    {
      public:
        explicit SmsWindowOptions(app::ApplicationCommon *app, std::string windowName);
        SmsWindowOptions(app::ApplicationCommon *app, const std::string &windowName);
        void onBeforeShow(ShowMode mode, SwitchData *data) override;

      private:


@@ 25,7 24,6 @@ namespace gui
        std::list<gui::Option> smsWindowOptions(app::ApplicationMessages *app, const SMSRecord &record);
        gui::option::OptionRecordValidity getRecordValid();
    };

} // namespace gui

/// @brief options for New Message Window

M pure_changelog.md => pure_changelog.md +1 -0
@@ 36,6 36,7 @@
* Fixed passcode behavior when blocked from Mudita Center
* Fixed missing tethering icon on "Tethering is on" window
* Fixed showing "Copy text" option in empty note
* Fixed "Copy" option missing from the options list in "New message" window

## [1.7.2 2023-07-28]