Improved options search

This commit is contained in:
M66B 2022-02-13 13:24:41 +01:00
parent 5e30f206ec
commit 1b6af01131
1 changed files with 42 additions and 40 deletions

View File

@ -348,49 +348,51 @@ public class FragmentOptions extends FragmentBase {
} }
private void suggest(String query) { private void suggest(String query) {
if (data == null && Bundle args = new Bundle();
query != null && query.length() > 0) args.putString("query", query);
new SimpleTask<SuggestData>() {
@Override
protected SuggestData onExecute(Context context, Bundle args) {
return getSuggestData(context);
}
@Override
protected void onExecuted(Bundle args, SuggestData result) {
data = result;
_suggest(query);
}
@Override
protected void onException(Bundle args, Throwable ex) {
Log.w(ex);
try {
// Fallback to UI thread (Android 5.1.1)
data = getSuggestData(getContext());
_suggest(query);
} catch (Throwable exex) {
Log.unexpectedError(getParentFragmentManager(), exex);
}
}
private SuggestData getSuggestData(Context context) {
SuggestData data = new SuggestData();
data.titles = new String[TAB_PAGES.length];
data.views = new View[TAB_PAGES.length];
LayoutInflater inflater = LayoutInflater.from(context);
for (int tab = 0; tab < TAB_PAGES.length; tab++) {
data.titles[tab] = context.getString(PAGE_TITLES[tab]);
data.views[tab] = inflater.inflate(TAB_PAGES[tab], null);
}
new SimpleTask<SuggestData>() {
@Override
protected SuggestData onExecute(Context context, Bundle args) {
if (TextUtils.isEmpty(args.getString("query")))
return data; return data;
return (data == null ? getSuggestData(context) : data);
}
@Override
protected void onExecuted(Bundle args, SuggestData result) {
data = result;
_suggest(args.getString("query"));
}
@Override
protected void onException(Bundle args, Throwable ex) {
Log.w(ex);
try {
// Fallback to UI thread (Android 5.1.1)
data = getSuggestData(getContext());
_suggest(args.getString("query"));
} catch (Throwable exex) {
Log.unexpectedError(getParentFragmentManager(), exex);
} }
}.setExecutor(executor) }
.execute(FragmentOptions.this, new Bundle(), "option:suggest");
else private SuggestData getSuggestData(Context context) {
_suggest(query); SuggestData data = new SuggestData();
data.titles = new String[TAB_PAGES.length];
data.views = new View[TAB_PAGES.length];
LayoutInflater inflater = LayoutInflater.from(context);
for (int tab = 0; tab < TAB_PAGES.length; tab++) {
data.titles[tab] = context.getString(PAGE_TITLES[tab]);
data.views[tab] = inflater.inflate(TAB_PAGES[tab], null);
}
return data;
}
}.setExecutor(executor)
.execute(FragmentOptions.this, args, "option:suggest");
} }
private void _suggest(String query) { private void _suggest(String query) {