mirror of
https://github.com/deltachat/deltachat-android.git
synced 2025-10-03 09:49:21 +02:00
add result counter to in-chat-search
This commit is contained in:
parent
6ad435f93d
commit
06432a3f00
3 changed files with 28 additions and 3 deletions
|
@ -8,6 +8,11 @@
|
||||||
app:actionViewClass="androidx.appcompat.widget.SearchView"
|
app:actionViewClass="androidx.appcompat.widget.SearchView"
|
||||||
app:showAsAction="collapseActionView|never" />
|
app:showAsAction="collapseActionView|never" />
|
||||||
|
|
||||||
|
<item android:title="0/0"
|
||||||
|
android:id="@+id/menu_search_counter"
|
||||||
|
android:visible="false"
|
||||||
|
app:showAsAction="always"/>
|
||||||
|
|
||||||
<item android:title="@string/back"
|
<item android:title="@string/back"
|
||||||
android:id="@+id/menu_search_up"
|
android:id="@+id/menu_search_up"
|
||||||
android:icon="@drawable/ic_search_up"
|
android:icon="@drawable/ic_search_up"
|
||||||
|
|
|
@ -165,6 +165,8 @@ public abstract class BaseActionBarActivity extends AppCompatActivity {
|
||||||
int id = item.getItemId();
|
int id = item.getItemId();
|
||||||
if (id==R.id.menu_search_up || id==R.id.menu_search_down) {
|
if (id==R.id.menu_search_up || id==R.id.menu_search_down) {
|
||||||
item.setVisible(!visible);
|
item.setVisible(!visible);
|
||||||
|
} else if (id==R.id.menu_search_counter) {
|
||||||
|
item.setVisible(false);
|
||||||
} else if (item != exception) {
|
} else if (item != exception) {
|
||||||
item.setVisible(visible);
|
item.setVisible(visible);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1545,12 +1545,27 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
|
||||||
private int beforeSearchComposeVisibility = View.VISIBLE;
|
private int beforeSearchComposeVisibility = View.VISIBLE;
|
||||||
private int beforeSearchAttachVisibility = View.GONE;
|
private int beforeSearchAttachVisibility = View.GONE;
|
||||||
|
|
||||||
|
private Menu searchMenu = null;
|
||||||
private int[] searchResult = {};
|
private int[] searchResult = {};
|
||||||
private int searchResultPosition = -1;
|
private int searchResultPosition = -1;
|
||||||
|
|
||||||
private Toast lastToast = null;
|
private Toast lastToast = null;
|
||||||
|
|
||||||
|
private void updateResultCounter(int curr, int total) {
|
||||||
|
if (searchMenu!=null) {
|
||||||
|
MenuItem item = searchMenu.findItem(R.id.menu_search_counter);
|
||||||
|
if (curr!=-1) {
|
||||||
|
item.setTitle(String.format("%d/%d", total==0? 0 : curr+1, total));
|
||||||
|
item.setVisible(true);
|
||||||
|
} else {
|
||||||
|
item.setVisible(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void searchExpand(final Menu menu, final MenuItem searchItem) {
|
private void searchExpand(final Menu menu, final MenuItem searchItem) {
|
||||||
|
searchMenu = menu;
|
||||||
|
|
||||||
beforeSearchComposeVisibility = composePanel.getVisibility();
|
beforeSearchComposeVisibility = composePanel.getVisibility();
|
||||||
composePanel.setVisibility(View.GONE);
|
composePanel.setVisibility(View.GONE);
|
||||||
|
|
||||||
|
@ -1573,6 +1588,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
|
||||||
if(searchResultPosition<0) searchResultPosition = searchResult.length-1;
|
if(searchResultPosition<0) searchResultPosition = searchResult.length-1;
|
||||||
if(searchResultPosition>=searchResult.length) searchResultPosition = 0;
|
if(searchResultPosition>=searchResult.length) searchResultPosition = 0;
|
||||||
fragment.scrollToMsgId(searchResult[searchResultPosition]);
|
fragment.scrollToMsgId(searchResult[searchResultPosition]);
|
||||||
|
updateResultCounter(searchResultPosition, searchResult.length);
|
||||||
} else {
|
} else {
|
||||||
// no search, scroll to first/last message
|
// no search, scroll to first/last message
|
||||||
if(searchNext) {
|
if(searchNext) {
|
||||||
|
@ -1601,19 +1617,21 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
|
||||||
if(searchResult.length>0) {
|
if(searchResult.length>0) {
|
||||||
searchResultPosition = 0;
|
searchResultPosition = 0;
|
||||||
fragment.scrollToMsgId(searchResult[searchResultPosition]);
|
fragment.scrollToMsgId(searchResult[searchResultPosition]);
|
||||||
|
updateResultCounter(0, searchResult.length);
|
||||||
} else {
|
} else {
|
||||||
searchResultPosition = -1;
|
searchResultPosition = -1;
|
||||||
if (!normQuery.isEmpty()) {
|
if (normQuery.isEmpty()) {
|
||||||
|
updateResultCounter(-1, 0); // hide
|
||||||
|
} else {
|
||||||
String msg = getString(R.string.search_no_result_for_x, normQuery);
|
String msg = getString(R.string.search_no_result_for_x, normQuery);
|
||||||
if (lastToast != null) {
|
if (lastToast != null) {
|
||||||
lastToast.cancel();
|
lastToast.cancel();
|
||||||
}
|
}
|
||||||
lastToast = Toast.makeText(this, msg, Toast.LENGTH_SHORT);
|
lastToast = Toast.makeText(this, msg, Toast.LENGTH_SHORT);
|
||||||
lastToast.show();
|
lastToast.show();
|
||||||
|
updateResultCounter(0, 0); // show as "0/0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true; // action handled by listener
|
return true; // action handled by listener
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue