Loading java/AndroidManifest.xml +6 −0 Original line number Diff line number Diff line Loading @@ -95,6 +95,12 @@ </intent-filter> </receiver> <receiver android:name=".DictionaryPackInstallBroadcastReceiver"> <intent-filter> <action android:name="com.android.inputmethod.dictionarypack.UNKNOWN_CLIENT" /> </intent-filter> </receiver> <provider android:name="com.android.inputmethod.dictionarypack.DictionaryProvider" android:grantUriPermissions="true" android:exported="false" Loading java/src/com/android/inputmethod/dictionarypack/DictionaryPackConstants.java +21 −3 Original line number Diff line number Diff line Loading @@ -24,17 +24,35 @@ package com.android.inputmethod.dictionarypack; * is needed in particular to cleanly compile regression tests. */ public class DictionaryPackConstants { /** * The root domain for the dictionary pack, upon which authorities and actions will append * their own distinctive strings. */ private static final String DICTIONARY_DOMAIN = "com.android.inputmethod.dictionarypack"; /** * Authority for the ContentProvider protocol. */ // TODO: find some way to factorize this string with the one in the resources public static final String AUTHORITY = "com.android.inputmethod.dictionarypack.aosp"; public static final String AUTHORITY = DICTIONARY_DOMAIN + ".aosp"; /** * The action of the intent for publishing that new dictionary data is available. */ // TODO: make this different across different packages. A suggested course of action is // to use the package name inside this string. public static final String NEW_DICTIONARY_INTENT_ACTION = "com.android.inputmethod.dictionarypack.newdict"; // NOTE: The appended string should be uppercase like all other actions, but it's not for // historical reasons. public static final String NEW_DICTIONARY_INTENT_ACTION = DICTIONARY_DOMAIN + ".newdict"; /** * The action of the intent sent by the dictionary pack to ask for a client to make * itself known. This is used when the settings activity is brought up for a client the * dictionary pack does not know about. */ public static final String UNKNOWN_DICTIONARY_PROVIDER_CLIENT = DICTIONARY_DOMAIN + ".UNKNOWN_CLIENT"; // In the above intents, the name of the string extra that contains the name of the client // we want information about. public static final String DICTIONARY_PROVIDER_CLIENT_EXTRA = "client"; } java/src/com/android/inputmethod/dictionarypack/DictionaryProvider.java +5 −0 Original line number Diff line number Diff line Loading @@ -509,6 +509,11 @@ public final class DictionaryProvider extends ContentProvider { } catch (final BadFormatException e) { Log.w(TAG, "Not enough information to insert this dictionary " + values, e); } // We just received new information about the list of dictionary for this client. // For all intents and purposes, this is new metadata, so we should publish it // so that any listeners (like the Settings interface for example) can update // themselves. UpdateHandler.publishUpdateMetadataCompleted(getContext(), true); break; case DICTIONARY_V1_WHOLE_LIST: case DICTIONARY_V1_DICT_INFO: Loading java/src/com/android/inputmethod/dictionarypack/DictionarySettingsFragment.java +15 −1 Original line number Diff line number Diff line Loading @@ -110,6 +110,15 @@ public final class DictionarySettingsFragment extends PreferenceFragment super.onResume(); mChangedSettings = false; UpdateHandler.registerUpdateEventListener(this); final Activity activity = getActivity(); if (!MetadataDbHelper.isClientKnown(activity, mClientId)) { Log.i(TAG, "Unknown dictionary pack client: " + mClientId + ". Requesting info."); final Intent unknownClientBroadcast = new Intent(DictionaryPackConstants.UNKNOWN_DICTIONARY_PROVIDER_CLIENT); unknownClientBroadcast.putExtra( DictionaryPackConstants.DICTIONARY_PROVIDER_CLIENT_EXTRA, mClientId); activity.sendBroadcast(unknownClientBroadcast); } final IntentFilter filter = new IntentFilter(); filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); getActivity().registerReceiver(mConnectivityChangedReceiver, filter); Loading Loading @@ -363,8 +372,13 @@ public final class DictionarySettingsFragment extends PreferenceFragment getActivity(), android.R.anim.fade_out)); preferenceView.startAnimation(AnimationUtils.loadAnimation( getActivity(), android.R.anim.fade_in)); // The menu is created by the framework asynchronously after the activity, // which means it's possible to have the activity running but the menu not // created yet - hence the necessity for a null check here. if (null != mUpdateNowMenu) { mUpdateNowMenu.setTitle(R.string.check_for_updates_now); } } }); } } java/src/com/android/inputmethod/dictionarypack/EventHandler.java +0 −4 Original line number Diff line number Diff line Loading @@ -16,13 +16,9 @@ package com.android.inputmethod.dictionarypack; import com.android.inputmethod.latin.LatinIME; import com.android.inputmethod.latin.R; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; public final class EventHandler extends BroadcastReceiver { private static final String TAG = EventHandler.class.getName(); Loading Loading
java/AndroidManifest.xml +6 −0 Original line number Diff line number Diff line Loading @@ -95,6 +95,12 @@ </intent-filter> </receiver> <receiver android:name=".DictionaryPackInstallBroadcastReceiver"> <intent-filter> <action android:name="com.android.inputmethod.dictionarypack.UNKNOWN_CLIENT" /> </intent-filter> </receiver> <provider android:name="com.android.inputmethod.dictionarypack.DictionaryProvider" android:grantUriPermissions="true" android:exported="false" Loading
java/src/com/android/inputmethod/dictionarypack/DictionaryPackConstants.java +21 −3 Original line number Diff line number Diff line Loading @@ -24,17 +24,35 @@ package com.android.inputmethod.dictionarypack; * is needed in particular to cleanly compile regression tests. */ public class DictionaryPackConstants { /** * The root domain for the dictionary pack, upon which authorities and actions will append * their own distinctive strings. */ private static final String DICTIONARY_DOMAIN = "com.android.inputmethod.dictionarypack"; /** * Authority for the ContentProvider protocol. */ // TODO: find some way to factorize this string with the one in the resources public static final String AUTHORITY = "com.android.inputmethod.dictionarypack.aosp"; public static final String AUTHORITY = DICTIONARY_DOMAIN + ".aosp"; /** * The action of the intent for publishing that new dictionary data is available. */ // TODO: make this different across different packages. A suggested course of action is // to use the package name inside this string. public static final String NEW_DICTIONARY_INTENT_ACTION = "com.android.inputmethod.dictionarypack.newdict"; // NOTE: The appended string should be uppercase like all other actions, but it's not for // historical reasons. public static final String NEW_DICTIONARY_INTENT_ACTION = DICTIONARY_DOMAIN + ".newdict"; /** * The action of the intent sent by the dictionary pack to ask for a client to make * itself known. This is used when the settings activity is brought up for a client the * dictionary pack does not know about. */ public static final String UNKNOWN_DICTIONARY_PROVIDER_CLIENT = DICTIONARY_DOMAIN + ".UNKNOWN_CLIENT"; // In the above intents, the name of the string extra that contains the name of the client // we want information about. public static final String DICTIONARY_PROVIDER_CLIENT_EXTRA = "client"; }
java/src/com/android/inputmethod/dictionarypack/DictionaryProvider.java +5 −0 Original line number Diff line number Diff line Loading @@ -509,6 +509,11 @@ public final class DictionaryProvider extends ContentProvider { } catch (final BadFormatException e) { Log.w(TAG, "Not enough information to insert this dictionary " + values, e); } // We just received new information about the list of dictionary for this client. // For all intents and purposes, this is new metadata, so we should publish it // so that any listeners (like the Settings interface for example) can update // themselves. UpdateHandler.publishUpdateMetadataCompleted(getContext(), true); break; case DICTIONARY_V1_WHOLE_LIST: case DICTIONARY_V1_DICT_INFO: Loading
java/src/com/android/inputmethod/dictionarypack/DictionarySettingsFragment.java +15 −1 Original line number Diff line number Diff line Loading @@ -110,6 +110,15 @@ public final class DictionarySettingsFragment extends PreferenceFragment super.onResume(); mChangedSettings = false; UpdateHandler.registerUpdateEventListener(this); final Activity activity = getActivity(); if (!MetadataDbHelper.isClientKnown(activity, mClientId)) { Log.i(TAG, "Unknown dictionary pack client: " + mClientId + ". Requesting info."); final Intent unknownClientBroadcast = new Intent(DictionaryPackConstants.UNKNOWN_DICTIONARY_PROVIDER_CLIENT); unknownClientBroadcast.putExtra( DictionaryPackConstants.DICTIONARY_PROVIDER_CLIENT_EXTRA, mClientId); activity.sendBroadcast(unknownClientBroadcast); } final IntentFilter filter = new IntentFilter(); filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); getActivity().registerReceiver(mConnectivityChangedReceiver, filter); Loading Loading @@ -363,8 +372,13 @@ public final class DictionarySettingsFragment extends PreferenceFragment getActivity(), android.R.anim.fade_out)); preferenceView.startAnimation(AnimationUtils.loadAnimation( getActivity(), android.R.anim.fade_in)); // The menu is created by the framework asynchronously after the activity, // which means it's possible to have the activity running but the menu not // created yet - hence the necessity for a null check here. if (null != mUpdateNowMenu) { mUpdateNowMenu.setTitle(R.string.check_for_updates_now); } } }); } }
java/src/com/android/inputmethod/dictionarypack/EventHandler.java +0 −4 Original line number Diff line number Diff line Loading @@ -16,13 +16,9 @@ package com.android.inputmethod.dictionarypack; import com.android.inputmethod.latin.LatinIME; import com.android.inputmethod.latin.R; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; public final class EventHandler extends BroadcastReceiver { private static final String TAG = EventHandler.class.getName(); Loading