M harmony_changelog.md => harmony_changelog.md +1 -0
@@ 18,6 18,7 @@
* Fixed alarm rings when deactivated during snooze
* Fixed popup about file deletion showing in Relaxation app even if no file was deleted
* Fixed displaying the menu after deep press on main screen
+* Fixed display of "Connected" label on home screen
### Added
* Added setting onboarding year to build date year
M module-apps/apps-common/ApplicationCommon.cpp => module-apps/apps-common/ApplicationCommon.cpp +9 -5
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2024, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "ApplicationCommon.hpp"
@@ 113,9 113,13 @@ namespace app
connect(typeid(cellular::msg::notification::SimStateUpdate),
[&](sys::Message *msg) -> sys::MessagePointer { return handleSimStateUpdateMessage(msg); });
connect(typeid(sdesktop::usb::USBConnected),
- [&](sys::Message *msg) -> sys::MessagePointer { return handleUSBStatusChange(); });
- connect(typeid(sdesktop::usb::USBDisconnected),
- [&](sys::Message *msg) -> sys::MessagePointer { return handleUSBStatusChange(); });
+ [&](sys::Message *msg) -> sys::MessagePointer { return handleUsbStatusChange(); });
+ connect(typeid(sdesktop::usb::USBDisconnected), [&](sys::Message *msg) -> sys::MessagePointer {
+ if (onUsbDisconnected != nullptr) {
+ onUsbDisconnected();
+ }
+ return handleUsbStatusChange();
+ });
addActionReceiver(app::manager::actions::PhoneModeChanged, [this](auto &¶ms) {
if (params != nullptr) {
@@ 452,7 456,7 @@ namespace app
return sys::msgHandled();
}
- sys::MessagePointer ApplicationCommon::handleUSBStatusChange()
+ sys::MessagePointer ApplicationCommon::handleUsbStatusChange()
{
if ((state == State::ACTIVE_FORGROUND) && getCurrentWindow()->updateBatteryStatus()) {
refreshWindow(gui::RefreshModes::GUI_REFRESH_FAST);
M module-apps/apps-common/ApplicationCommon.hpp => module-apps/apps-common/ApplicationCommon.hpp +4 -2
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2024, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
@@ 176,6 176,8 @@ namespace app
using OnActionReceived = std::function<ActionResult(manager::actions::ActionParamsPtr &&)>;
protected:
+ std::function<void()> onUsbDisconnected;
+
virtual sys::MessagePointer handleKBDKeyEvent(sys::Message *msgl);
virtual sys::MessagePointer handleApplicationSwitch(sys::Message *msgl);
virtual sys::MessagePointer handleAppClose(sys::Message *msgl);
@@ 194,7 196,7 @@ namespace app
sys::MessagePointer handleNetworkAccessTechnologyUpdate(sys::Message *msgl);
sys::MessagePointer handleInputEvent(sys::Message *msgl);
sys::MessagePointer handleBatteryStatusChange();
- sys::MessagePointer handleUSBStatusChange();
+ sys::MessagePointer handleUsbStatusChange();
sys::MessagePointer handleSimStateUpdateMessage(sys::Message *msgl);
sys::MessagePointer handleMinuteUpdated(sys::Message *msgl);
sys::MessagePointer handleAction(sys::Message *msgl);
M products/BellHybrid/apps/application-bell-main/ApplicationBellMain.cpp => products/BellHybrid/apps/application-bell-main/ApplicationBellMain.cpp +11 -2
@@ 3,6 3,7 @@
#include "include/application-bell-main/ApplicationBellMain.hpp"
#include "models/TemperatureModel.hpp"
+#include "models/UsbStatusModel.hpp"
#include "windows/BellBatteryShutdownWindow.hpp"
#include "windows/BellHomeScreenWindow.hpp"
@@ 81,11 82,13 @@ namespace app
});
connect(typeid(sdesktop::usb::USBConfigured), [&](sys::Message *msg) -> sys::MessagePointer {
+ usbStatusModel->setUsbStatus(app::AbstractUsbStatusModel::UsbStatus::Connected);
if (getCurrentWindow()->getName() == gui::name::window::main_window) {
- homeScreenPresenter->setUSBStatusConnected();
+ homeScreenPresenter->updateUsbStatus();
}
return sys::msgHandled();
});
+
connect(typeid(AlarmDeactivated), [this](sys::Message *request) -> sys::MessagePointer {
alarmModel->turnOff();
alarmModel->activateAlarm(false);
@@ 95,6 98,10 @@ namespace app
alarmModel->activateAlarm(true);
return sys::msgHandled();
});
+
+ onUsbDisconnected = [this]() {
+ usbStatusModel->setUsbStatus(app::AbstractUsbStatusModel::UsbStatus::Disconnected);
+ };
}
sys::ReturnCodes ApplicationBellMain::InitHandler()
@@ 109,13 116,15 @@ namespace app
temperatureModel = std::make_unique<app::home_screen::TemperatureModel>(this);
userSessionModel = std::make_unique<app::UserSessionModel>(this);
batteryLevelNotificationModel = std::make_unique<app::BatteryLevelNotificationModel>();
+ usbStatusModel = std::make_unique<app::UsbStatusModel>();
homeScreenPresenter = std::make_shared<app::home_screen::HomeScreenPresenter>(this,
*alarmModel,
*batteryModel,
*temperatureModel,
*timeModel,
*userSessionModel,
- *batteryLevelNotificationModel);
+ *batteryLevelNotificationModel,
+ *usbStatusModel);
createUserInterface();
M products/BellHybrid/apps/application-bell-main/CMakeLists.txt => products/BellHybrid/apps/application-bell-main/CMakeLists.txt +2 -0
@@ 10,6 10,7 @@ target_sources(application-bell-main
windows/BellMainMenuWindow.cpp
models/TemperatureModel.cpp
+ models/UsbStatusModel.cpp
presenters/HomeScreenPresenter.cpp
presenters/StateController.cpp
@@ 19,6 20,7 @@ target_sources(application-bell-main
windows/BellMainMenuWindow.hpp
models/TemperatureModel.hpp
+ models/UsbStatusModel.hpp
presenters/StateController.hpp
M products/BellHybrid/apps/application-bell-main/include/application-bell-main/ApplicationBellMain.hpp => products/BellHybrid/apps/application-bell-main/include/application-bell-main/ApplicationBellMain.hpp +1 -0
@@ 53,6 53,7 @@ namespace app
std::unique_ptr<home_screen::AbstractTemperatureModel> temperatureModel;
std::unique_ptr<AbstractUserSessionModel> userSessionModel;
std::unique_ptr<AbstractBatteryLevelNotificationModel> batteryLevelNotificationModel;
+ std::unique_ptr<AbstractUsbStatusModel> usbStatusModel;
std::shared_ptr<app::home_screen::HomeScreenPresenter> homeScreenPresenter;
};
M products/BellHybrid/apps/application-bell-main/include/application-bell-main/presenters/HomeScreenPresenter.hpp => products/BellHybrid/apps/application-bell-main/include/application-bell-main/presenters/HomeScreenPresenter.hpp +7 -4
@@ 27,6 27,7 @@ namespace app
class AbstractBatteryLevelNotificationModel;
class ApplicationCommon;
class TemperatureModel;
+ class AbstractUsbStatusModel;
class AbstractUserSessionModel;
class ProgressTimerWithSnoozeTimer;
} // namespace app
@@ 67,7 68,7 @@ namespace app::home_screen
virtual void setTemperature(utils::temperature::Temperature newTemp) = 0;
virtual void setTextDescription(const UTF8 &desc) = 0;
virtual void setBatteryLevelState(const Store::Battery &batteryContext) = 0;
- virtual void setUSBStatusConnected() = 0;
+ virtual void updateUsbStatus(bool isConnected) = 0;
/// Various
virtual void setLayout(gui::LayoutGenerator layoutGenerator) = 0;
@@ 103,7 104,7 @@ namespace app::home_screen
virtual void switchToBatteryStatus() = 0;
virtual void switchToLowBatteryWarning() = 0;
virtual UTF8 getGreeting() = 0;
- virtual void setUSBStatusConnected() = 0;
+ virtual void updateUsbStatus() = 0;
virtual void handleLowBatteryWarning() = 0;
virtual bool isLowBatteryWarningNeeded() = 0;
virtual void updateBatteryLevelInterval() = 0;
@@ 122,7 123,8 @@ namespace app::home_screen
AbstractTemperatureModel &temperatureModel,
AbstractTimeModel &timeModel,
AbstractUserSessionModel &userSessionModel,
- AbstractBatteryLevelNotificationModel &batteryLevelNotificationModel);
+ AbstractBatteryLevelNotificationModel &batteryLevelNotificationModel,
+ AbstractUsbStatusModel &usbStatusModel);
virtual ~HomeScreenPresenter();
HomeScreenPresenter() = delete;
HomeScreenPresenter &operator=(const HomeScreenPresenter &oth) = delete;
@@ 150,7 152,7 @@ namespace app::home_screen
std::uint32_t getBatteryLvl() const override;
bool isBatteryCharging() const override;
bool isAlarmActivatedByLatch() const override;
- void setUSBStatusConnected() override;
+ void updateUsbStatus() override;
void incAlarmMinute() override;
void decAlarmMinute() override;
@@ 175,6 177,7 @@ namespace app::home_screen
AbstractTimeModel &timeModel;
AbstractUserSessionModel &userSessionModel;
AbstractBatteryLevelNotificationModel &batteryLevelNotificationModel;
+ AbstractUsbStatusModel &usbStatusModel;
std::unique_ptr<AbstractController> stateController;
std::unique_ptr<ProgressTimerWithSnoozeTimer> snoozeTimer;
std::unique_ptr<std::mt19937> rngEngine;
A products/BellHybrid/apps/application-bell-main/models/UsbStatusModel.cpp => products/BellHybrid/apps/application-bell-main/models/UsbStatusModel.cpp +17 -0
@@ 0,0 1,17 @@
+// Copyright (c) 2017-2024, Mudita Sp. z.o.o. All rights reserved.
+// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
+
+#include "UsbStatusModel.hpp"
+
+namespace app
+{
+ bool UsbStatusModel::isUsbConnected(const Store::Battery::State &state) const
+ {
+ return ((usbConnected == UsbStatus::Connected) && (state == Store::Battery::State::PluggedNotCharging));
+ }
+
+ void UsbStatusModel::setUsbStatus(UsbStatus status)
+ {
+ usbConnected = status;
+ }
+} // namespace app
A products/BellHybrid/apps/application-bell-main/models/UsbStatusModel.hpp => products/BellHybrid/apps/application-bell-main/models/UsbStatusModel.hpp +34 -0
@@ 0,0 1,34 @@
+// Copyright (c) 2017-2024, Mudita Sp. z.o.o. All rights reserved.
+// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
+
+#pragma once
+
+#include <module-utils/EventStore/EventStore.hpp>
+
+namespace app
+{
+ class AbstractUsbStatusModel
+ {
+ public:
+ enum class UsbStatus : bool
+ {
+ Disconnected,
+ Connected
+ };
+
+ virtual ~AbstractUsbStatusModel() noexcept = default;
+
+ virtual bool isUsbConnected(const Store::Battery::State &state) const = 0;
+ virtual void setUsbStatus(UsbStatus status) = 0;
+ };
+
+ class UsbStatusModel : public AbstractUsbStatusModel
+ {
+ public:
+ bool isUsbConnected(const Store::Battery::State &state) const override;
+ void setUsbStatus(UsbStatus status) override;
+
+ private:
+ UsbStatus usbConnected{UsbStatus::Disconnected};
+ };
+} // namespace app
M products/BellHybrid/apps/application-bell-main/presenters/HomeScreenPresenter.cpp => products/BellHybrid/apps/application-bell-main/presenters/HomeScreenPresenter.cpp +11 -5
@@ 4,6 4,7 @@
#include "application-bell-main/presenters/HomeScreenPresenter.hpp"
#include "StateController.hpp"
#include "models/TemperatureModel.hpp"
+#include "models/UsbStatusModel.hpp"
#include <windows/BellHomeScreenWindow.hpp>
#include <application-bell-main/ApplicationBellMain.hpp>
@@ 78,11 79,12 @@ namespace app::home_screen
AbstractTemperatureModel &temperatureModel,
AbstractTimeModel &timeModel,
AbstractUserSessionModel &userSessionModel,
- AbstractBatteryLevelNotificationModel &batteryLevelNotificationModel)
+ AbstractBatteryLevelNotificationModel &batteryLevelNotificationModel,
+ AbstractUsbStatusModel &usbStatusModel)
: app{app}, alarmModel{alarmModel}, batteryModel{batteryModel},
temperatureModel{temperatureModel}, timeModel{timeModel}, userSessionModel{userSessionModel},
- batteryLevelNotificationModel{batteryLevelNotificationModel}, rngEngine{std::make_unique<std::mt19937>(
- bsp::trng::getRandomValue())}
+ batteryLevelNotificationModel{batteryLevelNotificationModel},
+ usbStatusModel{usbStatusModel}, rngEngine{std::make_unique<std::mt19937>(bsp::trng::getRandomValue())}
{}
gui::RefreshModes HomeScreenPresenter::handleUpdateTimeEvent()
@@ 133,6 135,7 @@ namespace app::home_screen
getView()->setAlarmTimeFormat(timeModel.getTimeFormat());
getView()->setSnoozeFormat(timeModel.getTimeFormat());
getView()->setTemperature(temperatureModel.getTemperature());
+ updateUsbStatus();
}
void HomeScreenPresenter::createData()
{
@@ 221,6 224,7 @@ namespace app::home_screen
void HomeScreenPresenter::handleBatteryStatus()
{
stateController->handleBatteryStatus();
+ updateUsbStatus();
}
void HomeScreenPresenter::setLayout(gui::LayoutGenerator layoutGenerator)
@@ 273,9 277,11 @@ namespace app::home_screen
return greetingCollection[dist(*rngEngine)];
};
- void HomeScreenPresenter::setUSBStatusConnected()
+ void HomeScreenPresenter::updateUsbStatus()
{
- getView()->setUSBStatusConnected();
+ const auto batteryState = batteryModel.getLevelState().state;
+ const bool isUsbConnected = usbStatusModel.isUsbConnected(batteryState);
+ getView()->updateUsbStatus(isUsbConnected);
}
bool HomeScreenPresenter::isLowBatteryWarningNeeded()
M products/BellHybrid/apps/application-bell-main/windows/BellHomeScreenWindow.cpp => products/BellHybrid/apps/application-bell-main/windows/BellHomeScreenWindow.cpp +2 -2
@@ 182,10 182,10 @@ namespace gui
return false;
}
- void BellHomeScreenWindow::setUSBStatusConnected()
+ void BellHomeScreenWindow::updateUsbStatus(bool isConnected)
{
if (currentLayout) {
- currentLayout->setUSBStatusConnected();
+ currentLayout->updateUsbStatus(isConnected);
application->refreshWindow(gui::RefreshModes::GUI_REFRESH_FAST);
}
}
M products/BellHybrid/apps/application-bell-main/windows/BellHomeScreenWindow.hpp => products/BellHybrid/apps/application-bell-main/windows/BellHomeScreenWindow.hpp +2 -2
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2024, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
@@ 40,7 40,7 @@ namespace gui
void setAlarmTimeFormat(utils::time::Locale::TimeFormat fmt) override;
void setSnoozeFormat(utils::time::Locale::TimeFormat fmt) override;
bool updateBatteryStatus() override;
- void setUSBStatusConnected() override;
+ void updateUsbStatus(bool isConnected) override;
std::shared_ptr<app::home_screen::AbstractPresenter> presenter;
M products/BellHybrid/apps/common/include/common/layouts/BaseHomeScreenLayoutProvider.hpp => products/BellHybrid/apps/common/include/common/layouts/BaseHomeScreenLayoutProvider.hpp +1 -1
@@ 50,7 50,7 @@ namespace gui
virtual void setViewState(app::home_screen::ViewState state) = 0;
virtual void setTextDescription(const UTF8 &desc) = 0;
virtual void setBatteryLevelState(const Store::Battery &batteryContext) = 0;
- virtual void setUSBStatusConnected() = 0;
+ virtual void updateUsbStatus(bool isConnected) = 0;
virtual void setTime(std::time_t newTime) = 0;
virtual void setAlarmTimeFormat(utils::time::Locale::TimeFormat fmt) = 0;
virtual std::time_t getAlarmTime() const = 0;
M products/BellHybrid/apps/common/include/common/layouts/HomeScreenLayoutClassic.hpp => products/BellHybrid/apps/common/include/common/layouts/HomeScreenLayoutClassic.hpp +1 -1
@@ 66,7 66,7 @@ namespace gui
auto getAlarmTime() const -> std::time_t override;
auto setAlarmTime(std::time_t newTime) -> void override;
auto setSnoozeTime(std::time_t newTime) -> void override;
- auto setUSBStatusConnected() -> void override;
+ auto updateUsbStatus(bool isConnected) -> void override;
auto getSnoozeTimer() -> SnoozeTimer * override;
auto getLayout() -> Item * override;
M products/BellHybrid/apps/common/include/common/layouts/HomeScreenLayoutVertical.hpp => products/BellHybrid/apps/common/include/common/layouts/HomeScreenLayoutVertical.hpp +2 -2
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2024, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
@@ 44,7 44,7 @@ namespace gui
auto setAlarmTimeFormat(utils::time::Locale::TimeFormat fmt) -> void override;
auto getAlarmTime() const -> std::time_t override;
auto setAlarmTime(std::time_t newTime) -> void override;
- auto setUSBStatusConnected() -> void override;
+ auto updateUsbStatus(bool isConnected) -> void override;
auto getSnoozeTimer() -> SnoozeTimer * override;
auto getLayout() -> Item * override;
M products/BellHybrid/apps/common/include/common/widgets/BellConnectionStatus.hpp => products/BellHybrid/apps/common/include/common/widgets/BellConnectionStatus.hpp +1 -2
@@ 14,8 14,7 @@ namespace gui
public:
BellConnectionStatus(Item *parent);
void setFont(const UTF8 &fontName);
- void checkIfConnected(const Store::Battery::State &state);
- void setConnected();
+ void show(bool visibility);
private:
Text *statusText = nullptr;
M products/BellHybrid/apps/common/src/layouts/HomeScreenLayoutClassic.cpp => products/BellHybrid/apps/common/src/layouts/HomeScreenLayoutClassic.cpp +4 -12
@@ 299,17 299,8 @@ namespace gui
void HomeScreenLayoutClassic::setBatteryLevelState(const Store::Battery &batteryContext)
{
battery->update(batteryContext.level, isBatteryCharging(batteryContext.state));
- connectionStatus->checkIfConnected(batteryContext.state);
-
- if (isBatteryVisibilityAllowed(batteryContext)) {
- battery->setVisible(true);
- }
- else {
- battery->setVisible(false);
- }
+ battery->setVisible(isBatteryVisibilityAllowed(batteryContext));
battery->informContentChanged();
- connectionStatus->informContentChanged();
- adjustConnectionStatusPosition();
}
void HomeScreenLayoutClassic::setTime(std::time_t newTime)
@@ 359,10 350,11 @@ namespace gui
{
return this;
}
- auto HomeScreenLayoutClassic::setUSBStatusConnected() -> void
+ auto HomeScreenLayoutClassic::updateUsbStatus(bool isConnected) -> void
{
- connectionStatus->setConnected();
+ connectionStatus->show(isConnected);
connectionStatus->informContentChanged();
+ adjustConnectionStatusPosition();
}
auto HomeScreenLayoutClassic::adjustConnectionStatusPosition() -> void
M products/BellHybrid/apps/common/src/layouts/HomeScreenLayoutVertical.cpp => products/BellHybrid/apps/common/src/layouts/HomeScreenLayoutVertical.cpp +3 -11
@@ 162,16 162,8 @@ namespace gui
void HomeScreenLayoutVertical::setBatteryLevelState(const Store::Battery &batteryContext)
{
battery->update(batteryContext.level, isBatteryCharging(batteryContext.state));
- connectionStatus->checkIfConnected(batteryContext.state);
-
- if (isBatteryVisibilityAllowed(batteryContext)) {
- battery->setVisible(true);
- }
- else {
- battery->setVisible(false);
- }
+ battery->setVisible(isBatteryVisibilityAllowed(batteryContext));
battery->informContentChanged();
- connectionStatus->informContentChanged();
}
void HomeScreenLayoutVertical::setTime(std::time_t newTime)
@@ 210,9 202,9 @@ namespace gui
{
return this;
}
- auto HomeScreenLayoutVertical::setUSBStatusConnected() -> void
+ auto HomeScreenLayoutVertical::updateUsbStatus(bool isConnected) -> void
{
- connectionStatus->setConnected();
+ connectionStatus->show(isConnected);
connectionStatus->informContentChanged();
}
M products/BellHybrid/apps/common/src/widgets/BellConnectionStatus.cpp => products/BellHybrid/apps/common/src/widgets/BellConnectionStatus.cpp +3 -10
@@ 26,7 26,7 @@ namespace gui
statusText->activeItem = false;
statusText->drawUnderline(false);
statusText->setText(utils::translate(usb_connected_status));
- statusText->setVisible(true);
+ statusText->setVisible(false);
}
void BellConnectionStatus::setFont(const UTF8 &fontName)
@@ 34,15 34,8 @@ namespace gui
statusText->setFont(fontName);
}
- void BellConnectionStatus::checkIfConnected(const Store::Battery::State &state)
+ void BellConnectionStatus::show(bool visibility)
{
- if (state != Store::Battery::State::PluggedNotCharging) {
- statusText->setVisible(false);
- }
- }
-
- void BellConnectionStatus::setConnected()
- {
- statusText->setVisible(true);
+ statusText->setVisible(visibility);
}
} // namespace gui