M module-apps/application-alarm-clock/ApplicationAlarmClock.cpp => module-apps/application-alarm-clock/ApplicationAlarmClock.cpp +1 -5
@@ 12,19 12,16 @@
#include "windows/AppWindow.hpp"
#include "windows/OptionWindow.hpp"
#include <service-db/DBNotificationMessage.hpp>
-#include <service-db/QueryMessage.hpp>
-#include <service-time/api/TimeSettingsApi.hpp>
#include <service-audio/AudioServiceAPI.hpp>
namespace app
{
-
ApplicationAlarmClock::ApplicationAlarmClock(std::string name,
std::string parent,
StatusIndicators statusIndicators,
uint32_t stackDepth,
sys::ServicePriority priority)
- : Application(name, parent, statusIndicators, false, stackDepth, priority),
+ : Application(std::move(name), std::move(parent), statusIndicators, false, stackDepth, priority),
soundsPlayer{std::make_shared<SoundsPlayer>(this)}
{
bus.channels.push_back(sys::BusChannel::ServiceDBNotifications);
@@ 126,5 123,4 @@ namespace app
soundsPlayer->stop(notification->token);
return sys::MessageNone{};
}
-
} /* namespace app */
M module-apps/application-alarm-clock/models/CustomRepeatModel.cpp => module-apps/application-alarm-clock/models/CustomRepeatModel.cpp +2 -2
@@ 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
#include "CustomRepeatModel.hpp"
@@ 12,7 12,7 @@ namespace app::alarmClock
{
CustomRepeatModel::CustomRepeatModel(app::ApplicationCommon *app,
std::shared_ptr<alarmClock::AlarmRRulePresenter> rRulePresenter)
- : application(app), rRulePresenter(rRulePresenter)
+ : application(app), rRulePresenter(std::move(rRulePresenter))
{}
unsigned int CustomRepeatModel::requestRecordsCount()
M module-apps/application-alarm-clock/models/NewEditAlarmModel.cpp => module-apps/application-alarm-clock/models/NewEditAlarmModel.cpp +6 -6
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2022, 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
#include "NewEditAlarmModel.hpp"
@@ 23,12 23,12 @@ namespace app::alarmClock
rRulePresenter(std::move(rRulePresenter))
{}
- unsigned int NewEditAlarmModel::requestRecordsCount()
+ unsigned NewEditAlarmModel::requestRecordsCount()
{
return internalData.size();
}
- unsigned int NewEditAlarmModel::getMinimalItemSpaceRequired() const
+ unsigned NewEditAlarmModel::getMinimalItemSpaceRequired() const
{
return style::text_spinner_label::h;
}
@@ 70,7 70,7 @@ namespace app::alarmClock
[app]() { app->getCurrentWindow()->navBarRestoreFromTemporaryMode(); });
internalData.push_back(repeatOption);
- for (auto &item : internalData) {
+ for (auto item : internalData) {
item->deleteByList = false;
}
}
@@ 88,7 88,7 @@ namespace app::alarmClock
rRulePresenter->loadRecord(record);
createData();
- for (auto &item : internalData) {
+ for (auto item : internalData) {
if (item->onLoadCallback) {
item->onLoadCallback(record);
}
@@ 106,7 106,7 @@ namespace app::alarmClock
void NewEditAlarmModel::saveData(std::shared_ptr<AlarmEventRecord> alarm, AlarmAction action)
{
- for (auto &item : internalData) {
+ for (auto item : internalData) {
if (item->onSaveCallback) {
item->onSaveCallback(alarm);
}
M module-apps/application-alarm-clock/models/NewEditAlarmModel.hpp => module-apps/application-alarm-clock/models/NewEditAlarmModel.hpp +3 -3
@@ 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
@@ 48,8 48,8 @@ namespace app::alarmClock
void clearData() override;
void createData();
- [[nodiscard]] unsigned int getMinimalItemSpaceRequired() const override;
- [[nodiscard]] unsigned int requestRecordsCount() override;
+ [[nodiscard]] unsigned getMinimalItemSpaceRequired() const override;
+ [[nodiscard]] unsigned requestRecordsCount() override;
[[nodiscard]] gui::ListItem *getItem(gui::Order order) override;
void requestRecords(uint32_t offset, uint32_t limit) override;
};
M module-apps/application-alarm-clock/presenter/AlarmClockEditWindowPresenter.cpp => module-apps/application-alarm-clock/presenter/AlarmClockEditWindowPresenter.cpp +1 -2
@@ 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
#include "AlarmClockEditWindowPresenter.hpp"
@@ 34,5 34,4 @@ namespace app::alarmClock
{
alarmFieldsProvider->clearData();
}
-
} // namespace app::alarmClock
M module-apps/application-alarm-clock/widgets/AlarmMusicOptionsItem.cpp => module-apps/application-alarm-clock/widgets/AlarmMusicOptionsItem.cpp +12 -7
@@ 2,8 2,6 @@
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "AlarmMusicOptionsItem.hpp"
-
-#include <service-audio/AudioServiceAPI.hpp>
#include <purefs/filesystem_paths.hpp>
namespace gui
@@ 20,12 18,13 @@ namespace gui
alarmSoundList = getMusicFilesList();
std::vector<UTF8> printOptions;
- for (const auto &musicFile : getMusicFilesList()) {
+ printOptions.reserve(alarmSoundList.size());
+ for (const auto &musicFile : alarmSoundList) {
printOptions.push_back(musicFile.title);
}
- optionSpinner->setData({printOptions});
+ optionSpinner->setData(printOptions);
- inputCallback = [=](gui::Item &item, const gui::InputEvent &event) {
+ inputCallback = [=]([[maybe_unused]] gui::Item &item, const gui::InputEvent &event) {
if (event.isShortRelease(gui::KeyCode::KEY_LF)) {
if (!player->previouslyPlayed(getFilePath(optionSpinner->getCurrentValue())) ||
player->isInState(SoundsPlayer::State::Stopped)) {
@@ 43,11 42,17 @@ namespace gui
}
}
- // stop preview playback when we go back
+ /* Stop preview playback when going back */
if (player->isInState(SoundsPlayer::State::Playing) && event.isShortRelease(gui::KeyCode::KEY_RF)) {
player->stop();
}
+ /* Stop preview playback when manually locking the phone */
+ if (player->isInState(SoundsPlayer::State::Playing) && event.isLongRelease(KeyCode::KEY_PND)) {
+ player->stop();
+ this->navBarTemporaryMode(utils::translate(style::strings::common::play));
+ }
+
const auto actionHandled = optionSpinner->onInput(event);
if (actionHandled && player->isInState(SoundsPlayer::State::Playing)) {
player->play(getFilePath(optionSpinner->getCurrentValue()),
@@ 56,7 61,7 @@ namespace gui
return actionHandled;
};
- focusChangedCallback = [=](Item &item) {
+ focusChangedCallback = [=]([[maybe_unused]] Item &item) {
setFocusItem(focus ? optionSpinner : nullptr);
if (focus) {
M module-apps/application-alarm-clock/widgets/AlarmMusicOptionsItem.hpp => module-apps/application-alarm-clock/widgets/AlarmMusicOptionsItem.hpp +6 -6
@@ 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
@@ 24,11 24,11 @@ namespace gui
std::vector<tags::fetcher::Tags> getMusicFilesList();
public:
- explicit AlarmMusicOptionsItem(app::ApplicationCommon *app,
- const std::string &description,
- std::shared_ptr<SoundsPlayer> player,
- std::function<void(const UTF8 &text)> navBarTemporaryMode = nullptr,
- std::function<void()> navBarRestoreFromTemporaryMode = nullptr);
+ AlarmMusicOptionsItem(app::ApplicationCommon *app,
+ const std::string &description,
+ std::shared_ptr<SoundsPlayer> player,
+ std::function<void(const UTF8 &text)> navBarTemporaryMode = nullptr,
+ std::function<void()> navBarRestoreFromTemporaryMode = nullptr);
private:
[[nodiscard]] std::string getTitle(const std::string &filePath);
M module-apps/application-alarm-clock/widgets/AlarmRRuleOptionsItem.cpp => module-apps/application-alarm-clock/widgets/AlarmRRuleOptionsItem.cpp +21 -13
@@ 18,10 18,10 @@ namespace gui
{
printOptions();
- inputCallback = [&](gui::Item &item, const gui::InputEvent &event) {
- auto ret = optionSpinner->onInput(event);
+ inputCallback = [&]([[maybe_unused]] gui::Item &item, const gui::InputEvent &event) {
+ const auto ret = optionSpinner->onInput(event);
- if (getRRuleOption(optionSpinner->getCurrentValue()) == RRule::Custom) {
+ if (isCurrentSpinnerOptionCustom()) {
this->navBarTemporaryMode(utils::translate(style::strings::common::edit));
if (event.isShortRelease(gui::KeyCode::KEY_LF)) {
this->app->switchWindow(style::alarmClock::window::name::customRepeat);
@@ 34,10 34,10 @@ namespace gui
return ret;
};
- focusChangedCallback = [&](Item &item) {
+ focusChangedCallback = [&]([[maybe_unused]] Item &item) {
setFocusItem(focus ? optionSpinner : nullptr);
- if (focus && (getRRuleOption(optionSpinner->getCurrentValue()) == RRule::Custom)) {
+ if (focus && isCurrentSpinnerOptionCustom()) {
this->navBarTemporaryMode(utils::translate(style::strings::common::edit));
}
else {
@@ 48,7 48,7 @@ namespace gui
};
onSaveCallback = [&]([[maybe_unused]] std::shared_ptr<AlarmEventRecord> alarm) {
- if (getRRuleOption(optionSpinner->getCurrentValue()) != RRule::Custom) {
+ if (!isCurrentSpinnerOptionCustom()) {
getPresenter()->setOption(getRRuleOption(optionSpinner->getCurrentValue()));
}
};
@@ 56,13 56,15 @@ namespace gui
onLoadCallback = [&]([[maybe_unused]] std::shared_ptr<AlarmEventRecord> alarm) {
checkCustomOption(getPresenter()->getDescription());
optionSpinner->setCurrentValue(getPresenter()->getDescription());
- if (optionSpinner->focus && getRRuleOption(optionSpinner->getCurrentValue()) == RRule::Custom) {
- this->navBarTemporaryMode(utils::translate(style::strings::common::edit));
- }
- else {
- this->navBarRestoreFromTemporaryMode();
- }
+ if (optionSpinner->focus) {
+ if (isCurrentSpinnerOptionCustom()) {
+ this->navBarTemporaryMode(utils::translate(style::strings::common::edit));
+ }
+ else {
+ this->navBarRestoreFromTemporaryMode();
+ }
+ }
};
}
@@ 101,9 103,15 @@ namespace gui
void AlarmRRuleOptionsItem::printOptions()
{
std::vector<UTF8> printOptions;
+ printOptions.reserve(rRuleOptions.size());
for (auto const &option : rRuleOptions) {
printOptions.push_back(option.second);
}
- optionSpinner->setData({printOptions});
+ optionSpinner->setData(printOptions);
+ }
+
+ bool AlarmRRuleOptionsItem::isCurrentSpinnerOptionCustom()
+ {
+ return (getRRuleOption(optionSpinner->getCurrentValue()) == RRule::Custom);
}
} /* namespace gui */
M module-apps/application-alarm-clock/widgets/AlarmRRuleOptionsItem.hpp => module-apps/application-alarm-clock/widgets/AlarmRRuleOptionsItem.hpp +7 -6
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2022, 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
@@ 28,12 28,13 @@ namespace gui
[[nodiscard]] RRule getRRuleOption(const std::string &selectedOption);
void checkCustomOption(const std::string &selectedOption);
void printOptions();
+ bool isCurrentSpinnerOptionCustom();
public:
- explicit AlarmRRuleOptionsItem(app::ApplicationCommon *app,
- const std::string &description,
- std::shared_ptr<app::alarmClock::AlarmRRulePresenter> presenter,
- std::function<void(const UTF8 &text)> navBarTemporaryMode = nullptr,
- std::function<void()> navBarRestoreFromTemporaryMode = nullptr);
+ AlarmRRuleOptionsItem(app::ApplicationCommon *app,
+ const std::string &description,
+ std::shared_ptr<app::alarmClock::AlarmRRulePresenter> presenter,
+ std::function<void(const UTF8 &text)> navBarTemporaryMode = nullptr,
+ std::function<void()> navBarRestoreFromTemporaryMode = nullptr);
};
} /* namespace gui */
M module-apps/application-alarm-clock/windows/CustomRepeatWindow.cpp => module-apps/application-alarm-clock/windows/CustomRepeatWindow.cpp +13 -5
@@ 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
#include "CustomRepeatWindow.hpp"
@@ 10,7 10,6 @@
namespace app::alarmClock
{
-
CustomRepeatWindow::CustomRepeatWindow(app::ApplicationCommon *app,
std::unique_ptr<CustomRepeatWindowContract::Presenter> &&windowPresenter)
: AppWindow(app, style::alarmClock::window::name::customRepeat), presenter{std::move(windowPresenter)}
@@ 36,19 35,28 @@ namespace app::alarmClock
style::alarmClock::window::listView_h,
presenter->getItemProvider(),
gui::listview::ScrollBarType::None);
+ list->setBoundaries(gui::Boundaries::Continuous);
+
setFocusItem(list);
}
void CustomRepeatWindow::onClose(gui::Window::CloseReason reason)
{
- if (reason != CloseReason::PhoneLock) {
+ switch (reason) {
+ case CloseReason::ApplicationClose:
+ case CloseReason::WindowSwitch:
presenter->eraseProviderData();
+ break;
+ default:
+ break;
}
}
- void CustomRepeatWindow::onBeforeShow(gui::ShowMode mode, gui::SwitchData *data)
+ void CustomRepeatWindow::onBeforeShow(gui::ShowMode mode, [[maybe_unused]] gui::SwitchData *data)
{
- presenter->loadData();
+ if (mode == gui::ShowMode::GUI_SHOW_INIT) {
+ presenter->loadData();
+ }
}
bool CustomRepeatWindow::onInput(const gui::InputEvent &inputEvent)
M module-apps/application-alarm-clock/windows/CustomRepeatWindow.hpp => module-apps/application-alarm-clock/windows/CustomRepeatWindow.hpp +1 -2
@@ 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
@@ 25,5 25,4 @@ namespace app::alarmClock
bool onInput(const gui::InputEvent &inputEvent) override;
void buildInterface() override;
};
-
} // namespace app::alarmClock
M module-apps/application-alarm-clock/windows/NewEditAlarmWindow.cpp => module-apps/application-alarm-clock/windows/NewEditAlarmWindow.cpp +2 -3
@@ 1,11 1,10 @@
-// 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
#include "NewEditAlarmWindow.hpp"
namespace app::alarmClock
{
-
NewEditAlarmWindow::NewEditAlarmWindow(app::ApplicationCommon *app,
std::unique_ptr<AlarmClockEditWindowContract::Presenter> &&windowPresenter)
: AppWindow(app, style::alarmClock::window::name::newEditAlarm), presenter{std::move(windowPresenter)}
@@ 45,7 44,7 @@ namespace app::alarmClock
}
if (mode == gui::ShowMode::GUI_SHOW_INIT) {
- auto rec = dynamic_cast<AlarmRecordData *>(data);
+ const auto rec = dynamic_cast<AlarmRecordData *>(data);
if (rec != nullptr) {
alarmRecord = rec->getData();
}
M pure_changelog.md => pure_changelog.md +2 -0
@@ 48,6 48,8 @@
* Fixed invalid elapsed time in music player after playing and pausing track from songs list view
* Fixed disappearing "Call" label in Phonebook app
* Fixed phone number input style unification
+* Fixed disappearing selections when setting custom alarm after popup is shown
+* Fixed alarm preview playback behavior
## [1.7.2 2023-07-28]