Changed search method from eventFilter to textChanged-signal.
The search is also updated if one of the checkbuttons is clicked.
This commit is contained in:
parent
daefd245f0
commit
ccf31d072e
|
@ -1,6 +1,6 @@
|
|||
cmake_minimum_required (VERSION 3.2)
|
||||
project (whyblocked
|
||||
VERSION 0.14.1
|
||||
VERSION 0.14.2
|
||||
LANGUAGES CXX
|
||||
)
|
||||
|
||||
|
|
|
@ -103,7 +103,6 @@ MainWindow::MainWindow(QMainWindow *parent)
|
|||
}
|
||||
|
||||
widget_find->hide();
|
||||
text_find->installEventFilter(this);
|
||||
|
||||
reload();
|
||||
|
||||
|
@ -258,62 +257,6 @@ void MainWindow::dropEvent(QDropEvent *event)
|
|||
dialog->show();
|
||||
}
|
||||
|
||||
bool MainWindow::eventFilter(QObject *obj, QEvent *event)
|
||||
{
|
||||
wstring searchfor;
|
||||
|
||||
if (obj == text_find)
|
||||
{
|
||||
if (event->type() == QEvent::KeyRelease)
|
||||
{
|
||||
searchfor = text_find->text().toLower().toStdWString();
|
||||
}
|
||||
else if (event->type() == QEvent::Drop)
|
||||
{
|
||||
QDropEvent *drop = static_cast<QDropEvent*>(event);
|
||||
searchfor = drop->mimeData()->text().toLower().toStdWString();
|
||||
}
|
||||
else
|
||||
{
|
||||
return QObject::eventFilter(obj, event);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return QObject::eventFilter(obj, event);
|
||||
}
|
||||
|
||||
vector<Database::data> filtered_entries;
|
||||
if (!_dbdata.empty())
|
||||
{
|
||||
for (const Database::data &entry : _dbdata)
|
||||
{
|
||||
wstring searchstring;
|
||||
|
||||
std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> convert;
|
||||
|
||||
if (check_user->isChecked())
|
||||
{
|
||||
searchstring += convert.from_bytes(entry.user);
|
||||
}
|
||||
if (check_reason->isChecked())
|
||||
{
|
||||
searchstring += convert.from_bytes(entry.reason);
|
||||
}
|
||||
std::transform(searchstring.begin(), searchstring.end(),
|
||||
searchstring.begin(), ::towlower);
|
||||
if (searchstring.find(searchfor) != std::string::npos)
|
||||
{
|
||||
filtered_entries.push_back(entry);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
populate_tableview(filtered_entries);
|
||||
|
||||
return QObject::eventFilter(obj, event);
|
||||
}
|
||||
|
||||
void MainWindow::add()
|
||||
{
|
||||
DialogAdd *dialog = new DialogAdd(_database, this);
|
||||
|
@ -414,3 +357,40 @@ void MainWindow::find()
|
|||
text_find->setFocus();
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::update_search(const QString &text)
|
||||
{
|
||||
const wstring searchfor = text.toLower().toStdWString();
|
||||
|
||||
vector<Database::data> filtered_entries;
|
||||
if (!_dbdata.empty())
|
||||
{
|
||||
for (const Database::data &entry : _dbdata)
|
||||
{
|
||||
wstring searchstring;
|
||||
std::wstring_convert<std::codecvt_utf8_utf16<wchar_t>> convert;
|
||||
|
||||
if (check_user->isChecked())
|
||||
{
|
||||
searchstring += convert.from_bytes(entry.user);
|
||||
}
|
||||
if (check_reason->isChecked())
|
||||
{
|
||||
searchstring += convert.from_bytes(entry.reason);
|
||||
}
|
||||
std::transform(searchstring.begin(), searchstring.end(),
|
||||
searchstring.begin(), ::towlower);
|
||||
if (searchstring.find(searchfor) != std::string::npos)
|
||||
{
|
||||
filtered_entries.push_back(entry);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
populate_tableview(filtered_entries);
|
||||
}
|
||||
|
||||
void MainWindow::update_search()
|
||||
{
|
||||
update_search(text_find->text());
|
||||
}
|
||||
|
|
|
@ -49,7 +49,6 @@ private:
|
|||
const string urls_to_hyperlinks(const string &text);
|
||||
void dragEnterEvent(QDragEnterEvent *event);
|
||||
void dropEvent(QDropEvent *event);
|
||||
bool eventFilter(QObject *obj, QEvent *event);
|
||||
|
||||
QStandardItemModel *_model;
|
||||
xdgcfg _config;
|
||||
|
@ -65,6 +64,8 @@ private slots:
|
|||
void populate_tableview(const vector<Database::data> &entries);
|
||||
void reload();
|
||||
void find();
|
||||
void update_search(const QString &text);
|
||||
void update_search();
|
||||
|
||||
};
|
||||
|
||||
|
|
|
@ -46,7 +46,7 @@
|
|||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="clearButtonEnabled">
|
||||
<bool>false</bool>
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
@ -453,6 +453,54 @@
|
|||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>text_find</sender>
|
||||
<signal>textChanged(QString)</signal>
|
||||
<receiver>MainWindow</receiver>
|
||||
<slot>update_search(QString)</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>201</x>
|
||||
<y>83</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>299</x>
|
||||
<y>299</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>check_user</sender>
|
||||
<signal>clicked()</signal>
|
||||
<receiver>MainWindow</receiver>
|
||||
<slot>update_search()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>455</x>
|
||||
<y>82</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>299</x>
|
||||
<y>299</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
<connection>
|
||||
<sender>check_reason</sender>
|
||||
<signal>clicked()</signal>
|
||||
<receiver>MainWindow</receiver>
|
||||
<slot>update_search()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
||||
<x>553</x>
|
||||
<y>82</y>
|
||||
</hint>
|
||||
<hint type="destinationlabel">
|
||||
<x>299</x>
|
||||
<y>299</y>
|
||||
</hint>
|
||||
</hints>
|
||||
</connection>
|
||||
</connections>
|
||||
<slots>
|
||||
<slot>add()</slot>
|
||||
|
@ -463,5 +511,9 @@
|
|||
<slot>edit()</slot>
|
||||
<slot>find()</slot>
|
||||
<slot>reload()</slot>
|
||||
<slot>check_user_changed(int)</slot>
|
||||
<slot>check_reason_changed(int)</slot>
|
||||
<slot>update_search(QString)</slot>
|
||||
<slot>update_search()</slot>
|
||||
</slots>
|
||||
</ui>
|
||||
|
|
|
@ -93,7 +93,7 @@
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../src/qt/whyblocked.ui" line="59"/>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="383"/>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="326"/>
|
||||
<source>User/Instance</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -104,7 +104,7 @@
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../src/qt/whyblocked.ui" line="72"/>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="385"/>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="328"/>
|
||||
<source>Reason</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -210,7 +210,7 @@
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../src/qt/whyblocked.ui" line="285"/>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="333"/>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="276"/>
|
||||
<source>Edit entry</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -230,57 +230,57 @@
|
|||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="110"/>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="109"/>
|
||||
<source>Try dragging an account from your webbrowser into this window.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="186"/>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="185"/>
|
||||
<source>blocked</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="190"/>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="189"/>
|
||||
<source>silenced</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="211"/>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="210"/>
|
||||
<source>Nothing selected</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="212"/>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="211"/>
|
||||
<source>Please select entries to remove.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="327"/>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="270"/>
|
||||
<source>Invalid selection</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="328"/>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="271"/>
|
||||
<source>Please select only 1 entry to edit.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="346"/>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="289"/>
|
||||
<source>About Whyblocked</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="347"/>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="290"/>
|
||||
<source><p><b>Whyblocked</b> %1</p><p>Reminds you why you blocked someone.</p><p>Sourcecode: <a href="https://schlomp.space/tastytea/whyblocked">https://schlomp.space/tastytea/whyblocked</a></p><p><small>Copyright © 2018 <a href="mailto:tastytea@tastytea.de">tastytea</a>.<br>Licence GPLv3: <a href="https://www.gnu.org/licenses/gpl-3.0.html">GNU GPL version 3</a>.<br>This program comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions.</small></p></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="368"/>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="311"/>
|
||||
<source>Receipts:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="384"/>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="327"/>
|
||||
<source>Blocked/Silenced</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
|
|
@ -198,7 +198,7 @@
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../src/qt/whyblocked.ui" line="285"/>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="333"/>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="276"/>
|
||||
<source>Edit entry</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
@ -219,68 +219,68 @@
|
|||
</message>
|
||||
<message>
|
||||
<location filename="../src/qt/whyblocked.ui" line="59"/>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="383"/>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="326"/>
|
||||
<source>User/Instance</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="384"/>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="327"/>
|
||||
<source>Blocked/Silenced</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/qt/whyblocked.ui" line="72"/>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="385"/>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="328"/>
|
||||
<source>Reason</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="110"/>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="109"/>
|
||||
<source>Try dragging an account from your webbrowser into this window.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="186"/>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="185"/>
|
||||
<source>blocked</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="190"/>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="189"/>
|
||||
<source>silenced</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="327"/>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="270"/>
|
||||
<source>Invalid selection</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="328"/>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="271"/>
|
||||
<source>Please select only 1 entry to edit.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="211"/>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="210"/>
|
||||
<source>Nothing selected</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="212"/>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="211"/>
|
||||
<source>Please select entries to remove.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="346"/>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="289"/>
|
||||
<source>About Whyblocked</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="347"/>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="290"/>
|
||||
<source><p><b>Whyblocked</b> %1</p><p>Reminds you why you blocked someone.</p><p>Sourcecode: <a href="https://schlomp.space/tastytea/whyblocked">https://schlomp.space/tastytea/whyblocked</a></p><p><small>Copyright © 2018 <a href="mailto:tastytea@tastytea.de">tastytea</a>.<br>Licence GPLv3: <a href="https://www.gnu.org/licenses/gpl-3.0.html">GNU GPL version 3</a>.<br>This program comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it under certain conditions.</small></p></source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="368"/>
|
||||
<location filename="../src/qt/mainwindow.cpp" line="311"/>
|
||||
<source>Receipts:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
|
Loading…
Reference in New Issue
Block a user