M image/assets/lang/English.json => image/assets/lang/English.json +2 -2
@@ 284,8 284,8 @@
"app_call_speaker_on": "SPEAKER ON",
"app_call_bluetooth": "BLUETOOTH",
"app_call_no_sim": "No SIM.\n\nTo make a call,\nplease insert a SIM card.",
- "app_call_offline": "You're offline.\n\nTo make a call\n switch to the Connected mode.",
- "app_sms_offline": "You're offline.\n\nTo send a SMS\n switch to the Connected mode.",
+ "app_call_offline": "You're Offline.\n\nTo make a call,\n switch the mode.",
+ "app_sms_offline": "You're Offline.\n\nTo send message,\n switch the mode.",
"app_call_emergency_text": "Emergency call",
"app_call_wrong_emergency": "Can't make a call.\n$NUMBER is not an emergency number.",
"app_messages_title_main": "Messages",
M image/assets/lang/Francais.json => image/assets/lang/Francais.json +2 -2
@@ 276,7 276,7 @@
"app_call_call_ended": "appel terminé",
"app_call_call_rejected": "appel rejeté",
"app_call_contact": "CONTACT",
- "app_call_mute": "METTRE EN SOURDINE",
+ "app_call_mute": "MUET",
"app_call_muted": "SILENCIEUX",
"app_call_speaker": "HAUT-PARLEUR",
"app_call_speaker_on": "HAUT-PARLEUR ACTIVÉ",
@@ 504,7 504,7 @@
"app_phonebook_options_delete_notification": "Ce contact a été supprimé\navec succès.",
"app_phonebook_options_forward_namecard": "Transférer la carte de visite",
"app_phonebook_options_send_sms": "Envoyer via SMS",
- "app_phonebook_new_contact_first_name": "Pénom",
+ "app_phonebook_new_contact_first_name": "Prénom",
"app_phonebook_new_contact_last_name": "Nom",
"app_phonebook_new_contact_number": "Numéro",
"app_phonebook_new_contact_second_number": "Second numéro",
M image/user/db/settings_bell_002.sql => image/user/db/settings_bell_002.sql +1 -1
@@ 35,7 35,7 @@ INSERT OR IGNORE INTO settings_tab (path, value) VALUES
('snooze_length','10'),
('snooze_interval','1'),
('snooze_tone','Gentle Chime'),
- ('snooze_volume','10'),
+ ('snooze_volume','5'),
('prewake_up_duration', '10'),
('prewake_up_tone','Joyful Awakening'),
('prewake_up_volume','5'),
M module-apps/application-music-player/windows/MusicPlayerMainWindow.cpp => module-apps/application-music-player/windows/MusicPlayerMainWindow.cpp +2 -2
@@ 343,7 343,7 @@ namespace gui
descriptionText->setAlignment(Alignment(Alignment::Horizontal::Left, Alignment::Vertical::Center));
descriptionText->setTextType(TextType::SingleLine);
descriptionText->setEditMode(EditMode::Browse);
- descriptionText->setFont(style::window::font::verysmall);
+ descriptionText->setFont(style::window::font::small);
}
void MusicPlayerMainWindow::destroyInterface()
@@ 519,7 519,7 @@ namespace gui
}
auto secsToStr = [&](int secs) {
- if (secs < 3600) {
+ if (secs < utils::time::secondsInHour) {
snprintf(timeToDisplay,
maxTimeToDisplaySize,
"%d:%02d",
M module-db/Interface/ContactRecord.cpp => module-db/Interface/ContactRecord.cpp +5 -5
@@ 170,7 170,7 @@ auto ContactRecordInterface::Update(const ContactRecord &rec) -> bool
bool ret = false;
bool recordExists = [&]() {
auto record = contactDB->contacts.getById(contact.ID);
- return record.ID != DB_ID_NONE;
+ return record.isValid();
}();
if (recordExists) {
ret = contactDB->contacts.update(row);
@@ 651,10 651,13 @@ auto ContactRecordInterface::splitNumberIDs(const std::string &numberIDs) -> con
auto ContactRecordInterface::joinNumberIDs(const std::vector<std::uint32_t> &numberIDs) -> std::string
{
+ if (numberIDs.empty()) {
+ return {};
+ }
+
std::ostringstream outStream;
std::ostream_iterator<std::uint32_t> outIterator(outStream, " ");
std::copy(std::begin(numberIDs), std::end(numberIDs), outIterator);
-
return outStream.str();
}
@@ 678,9 681,6 @@ auto ContactRecordInterface::unbindNumber(std::uint32_t contactId, std::uint32_t
// unbind number from contact
auto numberIDs = splitNumberIDs(contactRecord.numbersID);
numberIDs.erase(std::remove(std::begin(numberIDs), std::end(numberIDs), numberId), std::end(numberIDs));
- if (numberIDs.empty()) {
- return contactDB->contacts.removeById(contactId);
- }
contactRecord.numbersID = joinNumberIDs(numberIDs);
return contactDB->contacts.update(contactRecord);
}
M module-db/tests/ContactsRecord_tests.cpp => module-db/tests/ContactsRecord_tests.cpp +11 -7
@@ 380,20 380,24 @@ TEST_CASE("Contact record numbers update")
REQUIRE(contactDB.number.count() == 4);
auto validationRecord = records.GetByIdWithTemporary(1);
- REQUIRE(validationRecord.ID == DB_ID_NONE);
+ REQUIRE(validationRecord.ID != DB_ID_NONE);
+ REQUIRE(validationRecord.numbers[0].number.getEntered() == numbers[2]);
+ REQUIRE(validationRecord.numbers[1].number.getEntered() == numbers[3]);
validationRecord = records.GetByIdWithTemporary(2);
REQUIRE(validationRecord.ID != DB_ID_NONE);
- REQUIRE(validationRecord.numbers[0].number.getEntered() == numbers[0]);
+ // numbers[3] was previously assigned to it, but it's re-assigned to recordID=2 above.
+ REQUIRE(validationRecord.numbers.empty());
+ // A temporary contact for number[0] (which was previously assigned to recordID=1) has been created.
validationRecord = records.GetByIdWithTemporary(3);
REQUIRE(validationRecord.ID != DB_ID_NONE);
- REQUIRE(validationRecord.numbers[0].number.getEntered() == numbers[1]);
+ REQUIRE(validationRecord.numbers[0].number.getEntered() == numbers[0]);
- validationRecord = records.GetByID(4);
- REQUIRE(validationRecord.numbers.size() == 2);
- REQUIRE(validationRecord.numbers[0].number.getEntered() == numbers[2]);
- REQUIRE(validationRecord.numbers[1].number.getEntered() == numbers[3]);
+ // A temporary contact for number[1] (which was previously assigned to recordID=1) has been created.
+ validationRecord = records.GetByIdWithTemporary(4);
+ REQUIRE(validationRecord.ID != DB_ID_NONE);
+ REQUIRE(validationRecord.numbers[0].number.getEntered() == numbers[1]);
}
Database::deinitialize();
M module-gui/gui/widgets/NavBar.cpp => module-gui/gui/widgets/NavBar.cpp +2 -2
@@ 49,7 49,7 @@ namespace gui::nav_bar
left->setEdges(RectangleEdge::None);
center = new Label(centerBox);
- center->setAlignment(Alignment(gui::Alignment::Horizontal::Center, gui::Alignment::Vertical::Center));
+ center->setAlignment(Alignment(gui::Alignment::Horizontal::Center, gui::Alignment::Vertical::Bottom));
center->setPadding({0, 0, 0, style::nav_bar::bottom_padding});
center->setMinimumHeight(widgetArea.h);
center->setMaximumWidth(widgetArea.w);
@@ 59,7 59,7 @@ namespace gui::nav_bar
center->setEdges(RectangleEdge::None);
right = new Label(lastBox);
- right->setAlignment(Alignment(Alignment::Horizontal::Right, gui::Alignment::Vertical::Center));
+ right->setAlignment(Alignment(Alignment::Horizontal::Right, gui::Alignment::Vertical::Bottom));
right->setPadding({0, 0, 0, style::nav_bar::bottom_padding});
right->setMinimumHeight(widgetArea.h);
right->setFont(style::nav_bar::font::medium);
M module-services/service-desktop/ServiceDesktop.cpp => module-services/service-desktop/ServiceDesktop.cpp +1 -0
@@ 228,6 228,7 @@ sys::ReturnCodes ServiceDesktop::DeinitHandler()
if (initialized) {
settings->deinit();
desktopWorker->deinit();
+ initialized = false;
}
return sys::ReturnCodes::Success;
}
M products/BellHybrid/services/appmgr/include/appmgr/IdleHandler.hpp => products/BellHybrid/services/appmgr/include/appmgr/IdleHandler.hpp +1 -1
@@ 11,7 11,7 @@
namespace app::manager
{
- constexpr auto idleReturnTimeout = std::chrono::seconds{30};
+ constexpr auto idleReturnTimeout = std::chrono::minutes{3};
using connectFunction = std::function<bool(const std::type_info &, sys::MessageHandler)>;
class IdleHandler