Files
MuditaOS/module-apps/application-messages/windows/SearchStart.cpp
T
pholat 23df384c55 EGD-3087 SMS Search implemented (#374)
* EGD-3087 WIP adding SMS Querry

* EGD-3087 Added query virtual interface on Service top layer

Service shouldn't implement query logic and should be proxying that.

additionally:
- small fixes in includes
- shared service db name same way as apps and event manager

* EGD-3087 Query - want to work on interface not on db

* EGD-3087 Query gluecode works fine. Our query in SMS search calls getBySMSQuery

Changes cut off before any potential orm interface layer

* EGD-3087 WIP Interface in use

* EGD-3087 Query for SMS search works as designed

* EGD-3087 Query results should be on screen

* EGD-3087 BUG workaround - need to deep refresh display to show data

* EGD-3087 Searching for text from input works fine

* EGD-3087 Showing results / or empty results depending on query

* EGD-3087 Pre PR fixups

* EGD-3087 Empty search - getting back to prewious window ignore current

* EGD-3087 PR applied

* EGD-3087 PR - style fixed

* EGD-3087 Review - DB ListView handling moved to separate function

* EGD-3087 Workaround: crash on use after free fix

* EGD-3087 PR stylistic changes

* EGD-3087 PR cleanup applied

* EGD-3087 Added test for Query interface

* EGD-3087 renamed getByQuery to getQuery & finished tests

* EGD-3087 Post rebase fixup

* EGD-3087 PR - moved ListView request part to separate function

* EGD-3087 PR Fixups

* EGD-3087 Post rebase style fix

* EGD-3087 Added variable for DB service stack & const to getter function
2020-05-27 13:49:50 +02:00

46 lines
1.7 KiB
C++

#include "SearchStart.hpp"
#include "../ApplicationMessages.hpp"
#include <i18/i18.hpp>
#include <widgets/SearchBox.hpp>
#include <cassert>
namespace gui
{
SMSSearch::SMSSearch(app::Application *app) : AppWindow(app, name::window::thread_sms_search)
{
buildInterface();
setTitle(utils::localize.get("app_messages_title_main"));
bottomBar->setActive(BottomBar::Side::CENTER, true);
bottomBar->setActive(BottomBar::Side::RIGHT, true);
bottomBar->setText(BottomBar::Side::CENTER, utils::localize.get(style::strings::common::search));
bottomBar->setText(BottomBar::Side::RIGHT, utils::localize.get(style::strings::common::back));
body = new gui::Item();
body->setBoundingBox(bodySize());
addWidget(body);
auto text = searchBox(this, utils::localize.get("common_search_uc"), "search");
inputCallback = [=](Item &, const InputEvent &inputEvent) -> bool {
auto app = dynamic_cast<app::ApplicationMessages *>(application);
assert(app);
if (inputEvent.state != InputEvent::State::keyReleasedShort) {
return false;
}
if (inputEvent.keyCode == KeyCode::KEY_ENTER) {
auto search_text = text->getText();
app->showSearchResults(utils::localize.get("common_search_results") + ": " + std::string(search_text),
search_text);
}
return false;
};
setFocusItem(text);
}
bool SMSSearch::onInput(const InputEvent &inputEvent)
{
return AppWindow::onInput(inputEvent) || (inputCallback && inputCallback(*this, inputEvent));
}
} // namespace gui