0
0
mirror of https://github.com/ankidroid/Anki-Android.git synced 2024-09-20 12:02:16 +02:00

WIP: Search in Card Browser for highlighted text from Review mode (#4708)

Add ACTION_PROCESS_TEXT capability to CardBrowser
This commit is contained in:
Profpatsch 2017-10-06 04:23:39 +02:00 committed by Tim Rae
parent 39118e7462
commit ce0404d757
7 changed files with 46 additions and 3 deletions

View File

@ -152,7 +152,7 @@
</activity>
<activity
android:name="com.ichi2.anki.CardBrowser"
android:exported="false"
android:exported="true"
android:configChanges="keyboardHidden|orientation|locale|screenSize"
android:label="Card Browser"
android:parentActivityName=".DeckPicker">
@ -160,6 +160,11 @@
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="com.ichi2.anki.DeckPicker" />
<intent-filter>
<action android:name="android.intent.action.PROCESS_TEXT" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
</intent-filter>
</activity>
<activity
android:name=".ModelBrowser"

View File

@ -856,6 +856,10 @@ public abstract class AbstractFlashcardViewer extends NavigationDrawerActivity {
restorePreferences();
super.onCreate(savedInstanceState);
setContentView(getContentViewAttr(mPrefFullscreenReview));
// Make ACTION_PROCESS_TEXT for in-app searching possible on > Android 4.0
getDelegate().setHandleNativeActionModesEnabled(true);
View mainView = findViewById(android.R.id.content);
initNavigationDrawer(mainView);
// Open collection asynchronously
@ -915,7 +919,6 @@ public abstract class AbstractFlashcardViewer extends NavigationDrawerActivity {
supportInvalidateOptionsMenu();
}
// Saves deck each time Reviewer activity loses focus
@Override
protected void onPause() {

View File

@ -62,6 +62,8 @@ import com.ichi2.anki.receiver.SdCardReceiver;
import com.ichi2.anki.widgets.DeckDropDownAdapter;
import com.ichi2.async.DeckTask;
import com.ichi2.async.DeckTask.TaskData;
import com.ichi2.compat.Compat;
import com.ichi2.compat.CompatHelper;
import com.ichi2.libanki.Card;
import com.ichi2.libanki.Collection;
import com.ichi2.libanki.Note;
@ -618,6 +620,19 @@ public class CardBrowser extends NavigationDrawerActivity implements
mSearchView.setQuery(mSearchTerms, false);
}
});
// Maybe we were called from ACTION_PROCESS_TEXT.
// In that case we already fill in the search.
Intent intent = getIntent();
Compat compat = CompatHelper.getCompat();
if (intent.getAction() == compat.ACTION_PROCESS_TEXT) {
CharSequence search = intent.getCharSequenceExtra(compat.EXTRA_PROCESS_TEXT);
if (search != null && search.length() != 0) {
Timber.d("CardBrowser :: Called with search intent: %s", search.toString());
mSearchView.setQuery(search, true);
}
}
return super.onCreateOptionsMenu(menu);
}

View File

@ -54,6 +54,11 @@ import io.requery.android.database.sqlite.SQLiteDatabase;
* unless the behaviour is supposed to be different there.
*/
public interface Compat {
/* Mock the Intent PROCESS_TEXT constants introduced in API 23. */
public static final String ACTION_PROCESS_TEXT = "android.intent.action.PROCESS_TEXT";
public static final String EXTRA_PROCESS_TEXT = "android.intent.extra.PROCESS_TEXT";
String detagged(String txt);
void setTtsOnUtteranceProgressListener(TextToSpeech tts);
void disableDatabaseWriteAheadLogging(SQLiteDatabase db);
@ -69,6 +74,7 @@ public interface Compat {
void flushWebViewCookies();
void setHTML5MediaAutoPlay(WebSettings settings, Boolean allow);
void setStatusBarColor(Window window, int color);
/** Returns true if the system UI currently visible during immersive mode */
boolean isImmersiveSystemUiVisible(AnkiActivity activity);
boolean deleteDatabase(File db);

View File

@ -32,6 +32,8 @@ public class CompatHelper {
if (isNookHdOrHdPlus() && getSdkVersion() == 15) {
mCompat = new CompatV15NookHdOrHdPlus();
} else if (getSdkVersion() >= 23) {
mCompat = new CompatV23();
} else if (getSdkVersion() >= 21) {
mCompat = new CompatV21();
} else if (getSdkVersion() >= 19) {

View File

@ -25,7 +25,6 @@ import com.afollestad.materialdialogs.MaterialDialog;
import com.ichi2.anki.AbstractFlashcardViewer;
import com.ichi2.anki.AnkiActivity;
import com.ichi2.anki.AnkiDroidApp;
import com.ichi2.anki.CollectionHelper;
import com.ichi2.anki.DeckPicker;
import com.ichi2.anki.Preferences;
import com.ichi2.anki.R;

View File

@ -0,0 +1,13 @@
package com.ichi2.compat;
import android.annotation.TargetApi;
import android.content.Intent;
/** Implementation of {@link Compat} for SDK level 23 */
@TargetApi(23)
public class CompatV23 extends CompatV21 implements Compat {
public static final String ACTION_PROCESS_TEXT = Intent.ACTION_PROCESS_TEXT;
public static final String EXTRA_PROCESS_TEXT = Intent.EXTRA_PROCESS_TEXT;
}