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:
parent
39118e7462
commit
ce0404d757
@ -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"
|
||||
|
@ -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() {
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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) {
|
||||
|
@ -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;
|
||||
|
13
AnkiDroid/src/main/java/com/ichi2/compat/CompatV23.java
Normal file
13
AnkiDroid/src/main/java/com/ichi2/compat/CompatV23.java
Normal 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;
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user