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-2020, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "CustomRepeatModel.hpp"
@@ 48,7 48,7 @@ namespace app::alarmClock
void CustomRepeatModel::loadData(const WeekDaysRepeatData &data)
{
- list->clear();
+ list->reset();
eraseInternalData();
createData(data);
M module-apps/application-alarm-clock/models/NewEditAlarmModel.cpp => module-apps/application-alarm-clock/models/NewEditAlarmModel.cpp +3 -3
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "NewEditAlarmModel.hpp"
@@ 71,7 71,7 @@ namespace app::alarmClock
void NewEditAlarmModel::loadData(std::shared_ptr<AlarmsRecord> record)
{
- list->clear();
+ list->reset();
eraseInternalData();
createData();
@@ 107,7 107,7 @@ namespace app::alarmClock
else {
alarmsRepository->add(*alarm, [this](bool) { application->returnToPreviousWindow(); });
}
- list->clear();
+ list->reset();
eraseInternalData();
}
} // namespace app::alarmClock
M module-apps/application-calendar/models/CustomRepeatModel.cpp => module-apps/application-calendar/models/CustomRepeatModel.cpp +2 -2
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "CustomRepeatModel.hpp"
@@ 54,7 54,7 @@ void CustomRepeatModel::createData(const std::shared_ptr<WeekDaysRepeatData> &da
void CustomRepeatModel::loadData(const std::shared_ptr<WeekDaysRepeatData> &data)
{
- list->clear();
+ list->reset();
eraseInternalData();
createData(data);
M module-apps/application-calendar/models/EventDetailModel.cpp => module-apps/application-calendar/models/EventDetailModel.cpp +2 -2
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "EventDetailModel.hpp"
@@ 45,7 45,7 @@ void EventDetailModel::createData()
void EventDetailModel::loadData(std::shared_ptr<EventsRecord> record)
{
- list->clear();
+ list->reset();
eraseInternalData();
createData();
M module-apps/application-calendar/models/NewEditEventModel.cpp => module-apps/application-calendar/models/NewEditEventModel.cpp +1 -1
@@ 221,7 221,7 @@ void NewEditEventModel::eraseTimeItems()
void NewEditEventModel::clearData()
{
- list->clear();
+ list->reset();
eraseInternalData();
startTime = nullptr;
endTime = nullptr;
M module-apps/application-calendar/windows/CalendarEventsOptionsWindow.cpp => module-apps/application-calendar/windows/CalendarEventsOptionsWindow.cpp +1 -2
@@ 49,8 49,7 @@ namespace gui
eventRecord = item->getData();
clearOptions();
- options = eventsOptionsList();
- addOptions(options);
+ addOptions(eventsOptionsList());
return true;
}
M module-apps/application-meditation/widgets/MeditationModel.cpp => module-apps/application-meditation/widgets/MeditationModel.cpp +2 -2
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "MeditationModel.hpp"
@@ 37,7 37,7 @@ auto MeditationModel::getItem(gui::Order order) -> gui::ListItem *
void MeditationModel::clearData()
{
- list->clear();
+ list->reset();
eraseInternalData();
}
M module-apps/application-music-player/models/SongsModel.cpp => module-apps/application-music-player/models/SongsModel.cpp +2 -2
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "SongsModel.hpp"
@@ 55,7 55,7 @@ void SongsModel::createData(const std::vector<audio::Tags> &songsList,
void SongsModel::clearData()
{
- list->clear();
+ list->reset();
list->rebuildList();
}
M module-apps/application-phonebook/models/ContactDetailsModel.cpp => module-apps/application-phonebook/models/ContactDetailsModel.cpp +2 -2
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "ContactDetailsModel.hpp"
@@ 16,7 16,7 @@ ContactDetailsModel::ContactDetailsModel(app::Application *app) : application(ap
void ContactDetailsModel::clearData()
{
- list->clear();
+ list->reset();
eraseInternalData();
}
M module-apps/application-phonebook/models/NewContactModel.cpp => module-apps/application-phonebook/models/NewContactModel.cpp +2 -2
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "NewContactModel.hpp"
@@ 108,7 108,7 @@ void NewContactModel::createData()
void NewContactModel::clearData()
{
- list->clear();
+ list->reset();
eraseInternalData();
M module-apps/application-phonebook/windows/PhonebookNamecardOptions.cpp => module-apps/application-phonebook/windows/PhonebookNamecardOptions.cpp +2 -3
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include <module-services/service-appmgr/service-appmgr/Controller.hpp>
@@ 15,8 15,7 @@ namespace gui
: OptionWindow(app, gui::window::name::namecard_options)
{
buildInterface();
- options = namecardOptionsList();
- addOptions(options);
+ addOptions(namecardOptionsList());
}
auto PhonebookNamecardOptions::handleSwitchData(SwitchData *data) -> bool
M module-apps/application-settings-new/models/DateAndTimeModel.cpp => module-apps/application-settings-new/models/DateAndTimeModel.cpp +1 -1
@@ 13,7 13,7 @@ DateAndTimeModel::DateAndTimeModel(app::Application *application) : app(applicat
void DateAndTimeModel::loadData(std::shared_ptr<utils::time::FromTillDate> fromTillDate)
{
- list->clear();
+ list->reset();
eraseInternalData();
createData();
M module-apps/application-settings-new/models/FromTimeToTimeModel.cpp => module-apps/application-settings-new/models/FromTimeToTimeModel.cpp +1 -1
@@ 13,7 13,7 @@ FromTimeToTimeModel::FromTimeToTimeModel(app::Application *application) : app(ap
void FromTimeToTimeModel::loadData(std::shared_ptr<utils::time::FromTillDate> fromTillDate)
{
- list->clear();
+ list->reset();
eraseInternalData();
createData();
M module-apps/application-settings-new/models/NewApnModel.cpp => module-apps/application-settings-new/models/NewApnModel.cpp +1 -1
@@ 93,7 93,7 @@ void NewApnModel::createData()
void NewApnModel::clearData()
{
- list->clear();
+ list->reset();
eraseInternalData();
M module-apps/application-settings-new/windows/AutolockWindow.cpp => module-apps/application-settings-new/windows/AutolockWindow.cpp +2 -2
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "AutolockWindow.hpp"
@@ 25,7 25,7 @@ namespace gui
time,
[=](gui::Item &item) {
selectedTime = time;
- rebuildOptionList();
+ refreshOptionsList();
return true;
},
[=](gui::Item &item) {
M module-apps/application-settings-new/windows/BaseSettingsWindow.cpp => module-apps/application-settings-new/windows/BaseSettingsWindow.cpp +3 -9
@@ 7,12 7,7 @@
namespace gui
{
BaseSettingsWindow::BaseSettingsWindow(app::Application *app, std::string name) : OptionWindow(app, name)
- {
- optionsList->prepareRebuildCallback = [this]() {
- clearOptions();
- optionsModel->createData(options);
- };
- }
+ {}
void BaseSettingsWindow::rebuild()
{
@@ 22,13 17,12 @@ namespace gui
void BaseSettingsWindow::onBeforeShow(ShowMode mode, SwitchData *data)
{
- rebuildOptionList();
+ refreshOptionsList();
}
void BaseSettingsWindow::rebuildOptionList()
{
- clearOptions();
- addOptions(buildOptionsList());
+ changeOptions(buildOptionsList());
}
void BaseSettingsWindow::refreshOptionsList()
M module-apps/application-settings-new/windows/DisplayAndKeypadWindow.cpp => module-apps/application-settings-new/windows/DisplayAndKeypadWindow.cpp +2 -3
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "DisplayAndKeypadWindow.hpp"
@@ 14,8 14,7 @@ namespace gui
DisplayAndKeypadWindow::DisplayAndKeypadWindow(app::Application *app)
: OptionWindow(app, gui::window::name::display_and_keypad)
{
- options = displayAndKeypadOptionsList();
- addOptions(options);
+ addOptions(displayAndKeypadOptionsList());
setTitle(utils::localize.get("app_settings_disp_key"));
}
M module-apps/application-settings-new/windows/KeypadLightWindow.cpp => module-apps/application-settings-new/windows/KeypadLightWindow.cpp +1 -1
@@ 38,7 38,7 @@ namespace gui
isOffSwitchOn = false;
isAlwaysOnSwitchOn = false;
toggleSwitch = !toggleSwitch;
- rebuildOptionList();
+ refreshOptionsList();
if (isAlwaysOnSwitchOn) {
keypadLightSettings->setKeypadBacklightState(bsp::keypad_backlight::State::on);
}
M module-apps/application-settings-new/windows/NetworkWindow.cpp => module-apps/application-settings-new/windows/NetworkWindow.cpp +4 -11
@@ 15,11 15,10 @@ namespace gui
app::settingsInterface::SimParams *simParams,
app::settingsInterface::OperatorsSettings *operatorsSettings)
: OptionWindow(app, gui::window::name::network), simParams(simParams), operatorsSettings(operatorsSettings)
- {}
- void NetworkWindow::onBeforeShow(ShowMode m, SwitchData *d)
{
- rebuild();
+ addOptions(netOptList());
}
+
auto NetworkWindow::netOptList() -> std::list<gui::Option>
{
std::list<gui::Option> optList;
@@ 72,7 71,7 @@ namespace gui
utils::translateI18("app_settings_network_operator_auto_select"),
[=](gui::Item &item) {
operatorsSettings->setOperatorsOn(!operatorsOn);
- rebuild();
+ refreshOptions(netOptList());
return true;
},
nullptr,
@@ 116,7 115,7 @@ namespace gui
utils::translateI18("app_settings_network_voice_over_lte"),
[=](gui::Item &item) {
operatorsSettings->setVoLTEOn(!voLteOn);
- rebuild();
+ refreshOptions(netOptList());
return true;
},
nullptr,
@@ 138,10 137,4 @@ namespace gui
return optList;
}
- void NetworkWindow::rebuild()
- {
- clearOptions();
- addOptions(netOptList());
- }
-
} // namespace gui
M module-apps/application-settings-new/windows/NetworkWindow.hpp => module-apps/application-settings-new/windows/NetworkWindow.hpp +1 -3
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#pragma once
@@ 25,13 25,11 @@ namespace gui
private:
auto netOptList() -> std::list<gui::Option>;
app::settingsInterface::SimParams *simParams;
- void rebuild() override;
app::settingsInterface::OperatorsSettings *operatorsSettings;
public:
NetworkWindow(app::Application *app,
app::settingsInterface::SimParams *simParams,
app::settingsInterface::OperatorsSettings *operatorsSettings);
- void onBeforeShow(ShowMode m, SwitchData *d) override;
};
} // namespace gui
M module-apps/application-settings-new/windows/PhoneModesWindow.cpp => module-apps/application-settings-new/windows/PhoneModesWindow.cpp +3 -10
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "PhoneModesWindow.hpp"
@@ 14,11 14,10 @@ namespace gui
app::settingsInterface::SimParams *simParams,
app::settingsInterface::OperatorsSettings *operatorsSettings)
: OptionWindow(app, gui::window::name::phone_modes), simParams(simParams), operatorsSettings(operatorsSettings)
- {}
- void PhoneModesWindow::onBeforeShow(ShowMode m, SwitchData *d)
{
- rebuild();
+ addOptions(modesOptList());
}
+
auto PhoneModesWindow::modesOptList() -> std::list<gui::Option>
{
std::list<gui::Option> optList;
@@ 70,10 69,4 @@ namespace gui
return optList;
}
- void PhoneModesWindow::rebuild()
- {
- clearOptions();
- addOptions(modesOptList());
- }
-
} // namespace gui
M module-apps/application-settings-new/windows/PhoneModesWindow.hpp => module-apps/application-settings-new/windows/PhoneModesWindow.hpp +0 -2
@@ 25,13 25,11 @@ namespace gui
private:
auto modesOptList() -> std::list<gui::Option>;
app::settingsInterface::SimParams *simParams;
- void rebuild() override;
app::settingsInterface::OperatorsSettings *operatorsSettings;
public:
PhoneModesWindow(app::Application *app,
app::settingsInterface::SimParams *simParams,
app::settingsInterface::OperatorsSettings *operatorsSettings);
- void onBeforeShow(ShowMode m, SwitchData *d) override;
};
} // namespace gui
M module-apps/application-special-input/models/SpecialInputModel.cpp => module-apps/application-special-input/models/SpecialInputModel.cpp +2 -2
@@ 1,4 1,4 @@
-// Copyright (c) 2017-2020, Mudita Sp. z.o.o. All rights reserved.
+// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md
#include "SpecialInputModel.hpp"
@@ 78,6 78,6 @@ void SpecialInputModel::createData(specialInputStyle::CharactersType type)
void SpecialInputModel::clearData()
{
- list->clear();
+ list->reset();
eraseInternalData();
}
M module-apps/windows/OptionWindow.cpp => module-apps/windows/OptionWindow.cpp +24 -19
@@ 27,8 27,12 @@ namespace gui
void OptionWindow::rebuild()
{
- clearOptions();
- addOptions(options);
+ recreateOptions();
+ }
+
+ void OptionWindow::createOptions()
+ {
+ optionsModel->createData(options);
}
void OptionWindow::refreshOptions(std::list<Option> &&optionList)
@@ 43,22 47,24 @@ namespace gui
optionsList->rebuildList(style::listview::RebuildType::OnPageElement, pageIndex);
}
- void OptionWindow::addOptions(std::list<Option> &optionList)
+ void OptionWindow::addOptions(std::list<Option> &&optionList)
{
- optionsModel->createData(optionList);
+ options = std::move(optionList);
+ createOptions();
+
optionsList->rebuildList();
}
- void OptionWindow::addOptions(std::list<Option> &&optionList)
+ void OptionWindow::changeOptions(std::list<Option> &&optionList)
{
- options = std::move(optionList);
- addOptions(options);
+ clearOptions();
+ addOptions(std::move(optionList));
}
- void OptionWindow::resetOptions(std::list<Option> &&optionList)
+ void OptionWindow::recreateOptions()
{
clearOptions();
- addOptions(std::move(optionList));
+ createOptions();
}
void OptionWindow::clearOptions()
@@ 85,27 91,26 @@ namespace gui
optionsModel,
style::listview::ScrollBarType::None);
- rebuild();
- setFocusItem(optionsList);
- }
+ optionsList->prepareRebuildCallback = [this]() { recreateOptions(); };
- void OptionWindow::destroyInterface()
- {
- erase();
- optionsList = nullptr;
+ optionsModel->createData(options);
+
+ setFocusItem(optionsList);
}
- OptionWindow::~OptionWindow()
+ void OptionWindow::onClose()
{
- destroyInterface();
+ optionsList->onClose();
}
void OptionWindow::onBeforeShow(ShowMode mode, SwitchData *data)
{
if (auto message = dynamic_cast<gui::OptionsWindowOptions *>(data)) {
LOG_DEBUG("Options load!");
- resetOptions(message->takeOptions());
+ options = message->takeOptions();
}
+
+ optionsList->rebuildList(style::listview::RebuildType::InPlace);
}
} /* namespace gui */
M module-apps/windows/OptionWindow.hpp => module-apps/windows/OptionWindow.hpp +6 -6
@@ 23,22 23,22 @@ namespace gui
std::shared_ptr<OptionsModel> optionsModel = nullptr;
ListView *optionsList = nullptr;
std::list<Option> options;
- virtual void addOptions(std::list<Option> &optionList);
+
+ void createOptions();
+ void recreateOptions();
+ void clearOptions();
void addOptions(std::list<Option> &&optionList);
- void resetOptions(std::list<Option> &&optionList);
+ void changeOptions(std::list<Option> &&optionList);
void refreshOptions(std::list<Option> &&optionList);
void refreshOptions(std::list<Option> &&optionList, unsigned int pageIndex);
public:
OptionWindow(app::Application *app, const std::string &name);
OptionWindow(app::Application *app, const std::string &name, std::list<Option> options);
- ~OptionWindow() override;
-
- void clearOptions();
void onBeforeShow(ShowMode mode, SwitchData *data) override;
+ void onClose() override;
void rebuild() override;
void buildInterface() override;
- void destroyInterface() override;
};
}; // namespace gui
M module-gui/gui/widgets/ListView.cpp => module-gui/gui/widgets/ListView.cpp +16 -8
@@ 186,7 186,7 @@ namespace gui
ListView::~ListView()
{
- clearItems();
+ clear();
}
void ListView::setElementsCount(unsigned int count)
@@ 319,6 319,14 @@ namespace gui
direction = style::listview::Direction::Bottom;
}
+ void ListView::onClose()
+ {
+ if (!body->empty()) {
+ storedFocusIndex = getFocusItemIndex();
+ }
+ clear();
+ }
+
unsigned int ListView::getFocusItemIndex()
{
auto index = body->getFocusItemIndex();
@@ 343,15 351,15 @@ namespace gui
}
}
- void ListView::clear()
+ void ListView::reset()
{
- clearItems();
+ clear();
setStartIndex();
body->setReverseOrder(false);
direction = style::listview::Direction::Bottom;
}
- void ListView::clearItems()
+ void ListView::clear()
{
body->setFocusItem(nullptr);
@@ 378,7 386,7 @@ namespace gui
return;
}
- clearItems();
+ clear();
addItemsOnPage();
@@ 529,7 537,7 @@ namespace gui
auto page = 0;
auto pageStartIndex = 0;
- clearItems();
+ clear();
while (true) {
@@ 546,10 554,10 @@ namespace gui
page += 1;
pageStartIndex += currentPageSize;
- clearItems();
+ clear();
}
- clearItems();
+ clear();
requestCompleteData = false;
requestFullListRender = false;
M module-gui/gui/widgets/ListView.hpp => module-gui/gui/widgets/ListView.hpp +3 -1
@@ 76,7 76,6 @@ namespace gui
style::listview::Direction direction = style::listview::Direction::Bottom;
style::listview::Orientation orientation = style::listview::Orientation::TopBottom;
- void clearItems();
virtual void addItemsOnPage();
bool requestCompleteData = false;
@@ 131,7 130,10 @@ namespace gui
/// Callback to be called on rebuild preparation - in example to on demand clear provider data.
std::function<void()> prepareRebuildCallback;
+ void reset();
void clear();
+ void onClose();
+
std::shared_ptr<ListItemProvider> getProvider();
void setOrientation(style::listview::Orientation value);
void setBoundaries(style::listview::Boundaries value);
M module-gui/test/test-google/test-gui-listview.cpp => module-gui/test/test-google/test-gui-listview.cpp +3 -3
@@ 134,7 134,7 @@ TEST_F(ListViewTesting, List_Clear_Test)
moveNTimes(1, style::listview::Direction::Top);
// Clear list and request same data as before -> page should refresh with same data.
- testListView->clear();
+ testListView->reset();
testProvider->refreshList();
ASSERT_EQ(6, testListView->currentPageSize) << "6 elements should fit into list.";
@@ 291,7 291,7 @@ TEST_F(ListViewTesting, Data_Deletion_Test)
auto pointerToLast = dynamic_cast<gui::TestListItem *>(testListView->body->children.back());
// Clear list
- testListView->clear();
+ testListView->reset();
ASSERT_EQ(0, testListView->body->children.size()) << "List should be empty";
testProvider->refreshList();
@@ 312,7 312,7 @@ TEST_F(ListViewTesting, Data_Deletion_Test)
pointerToLast = dynamic_cast<gui::TestListItem *>(testListView->body->children.back());
// Clear list
- testListView->clear();
+ testListView->reset();
ASSERT_EQ(0, testListView->body->children.size()) << "List should be empty";
testProvider->refreshList();