diff options
Diffstat (limited to 'java')
30 files changed, 171 insertions, 164 deletions
diff --git a/java/res/layout-land/setup_steps_screen.xml b/java/res/layout-land/setup_steps_screen.xml index 0b4a096cc..cf8c42475 100644 --- a/java/res/layout-land/setup_steps_screen.xml +++ b/java/res/layout-land/setup_steps_screen.xml @@ -27,7 +27,9 @@ android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="@integer/setup_title_weight_in_screen" - android:orientation="vertical"> + android:orientation="vertical" + android:layout_marginEnd="@dimen/setup_title_end_margin" + android:layout_marginRight="@dimen/setup_title_end_margin"> <include layout="@layout/setup_steps_title" /> </LinearLayout> <LinearLayout diff --git a/java/res/layout-land/setup_welcome_screen.xml b/java/res/layout-land/setup_welcome_screen.xml index 8b162e27f..38aea2c4f 100644 --- a/java/res/layout-land/setup_welcome_screen.xml +++ b/java/res/layout-land/setup_welcome_screen.xml @@ -27,7 +27,9 @@ android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="@integer/setup_title_weight_in_screen" - android:orientation="vertical"> + android:orientation="vertical" + android:layout_marginEnd="@dimen/setup_title_end_margin" + android:layout_marginRight="@dimen/setup_title_end_margin"> <include layout="@layout/setup_welcome_title" /> </LinearLayout> <LinearLayout diff --git a/java/res/layout/setup_welcome_video.xml b/java/res/layout/setup_welcome_video.xml index 8c04e637e..c39411e3d 100644 --- a/java/res/layout/setup_welcome_video.xml +++ b/java/res/layout/setup_welcome_video.xml @@ -25,24 +25,27 @@ android:orientation="horizontal" android:paddingTop="@dimen/setup_welcome_video_vertical_margin" android:paddingBottom="@dimen/setup_welcome_video_vertical_margin"> - <View - android:layout_weight="@integer/setup_welcome_video_left_padding_weight_in_screen" - android:layout_width="0dp" - android:layout_height="0dp" /> - <VideoView - android:id="@+id/setup_welcome_video" - android:background="@color/setup_background" - android:layout_weight="@integer/setup_welcome_video_weight_in_screen" - android:layout_width="0dp" - android:layout_height="wrap_content" /> - <ImageView - android:id="@+id/setup_welcome_image" - android:visibility="gone" + <LinearLayout + android:id="@+id/setup_welcome_video_frame" android:layout_weight="@integer/setup_welcome_video_weight_in_screen" android:layout_width="0dp" - android:layout_height="wrap_content" /> + android:layout_height="wrap_content" + android:orientation="horizontal" + android:padding="1dp" + android:background="@color/setup_welcome_video_margin_color" > + <VideoView + android:id="@+id/setup_welcome_video" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="@color/setup_background" /> + <ImageView + android:id="@+id/setup_welcome_image" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:visibility="gone" /> + </LinearLayout> <View - android:layout_weight="@integer/setup_welcome_video_right_padding_weight_in_screen" + android:layout_weight="@integer/setup_welcome_video_end_padding_weight_in_screen" android:layout_width="0dp" android:layout_height="0dp" /> </LinearLayout> diff --git a/java/res/raw/setup_welcome_image.png b/java/res/raw/setup_welcome_image.png Binary files differindex 17e31111f..db5dc344f 100644 --- a/java/res/raw/setup_welcome_image.png +++ b/java/res/raw/setup_welcome_image.png diff --git a/java/res/raw/setup_welcome_video.mp4 b/java/res/raw/setup_welcome_video.mp4 Binary files differindex 09357d8de..820852531 100644 --- a/java/res/raw/setup_welcome_video.mp4 +++ b/java/res/raw/setup_welcome_video.mp4 diff --git a/java/res/values-h1200dp-port/setup-dimens-large-tablet-port.xml b/java/res/values-h1200dp-port/setup-dimens-large-tablet-port.xml index ad61c1a3a..d1df81e01 100644 --- a/java/res/values-h1200dp-port/setup-dimens-large-tablet-port.xml +++ b/java/res/values-h1200dp-port/setup-dimens-large-tablet-port.xml @@ -33,8 +33,8 @@ <dimen name="setup_step_horizontal_line_height">2dp</dimen> <integer name="setup_title_weight_in_screen">40</integer> <integer name="setup_body_weight_in_screen">60</integer> + <dimen name="setup_title_end_margin">24dp</dimen> <dimen name="setup_welcome_video_vertical_margin">24dp</dimen> - <integer name="setup_welcome_video_weight_in_screen">50</integer> - <integer name="setup_welcome_video_left_padding_weight_in_screen">25</integer> - <integer name="setup_welcome_video_right_padding_weight_in_screen">25</integer> + <integer name="setup_welcome_video_weight_in_screen">70</integer> + <integer name="setup_welcome_video_end_padding_weight_in_screen">30</integer> </resources> diff --git a/java/res/values-h330dp-land/setup-dimens-large-phone-land.xml b/java/res/values-h330dp-land/setup-dimens-large-phone-land.xml index 69a8a7ad5..babc05bf2 100644 --- a/java/res/values-h330dp-land/setup-dimens-large-phone-land.xml +++ b/java/res/values-h330dp-land/setup-dimens-large-phone-land.xml @@ -33,8 +33,8 @@ <dimen name="setup_step_horizontal_line_height">2dp</dimen> <integer name="setup_title_weight_in_screen">40</integer> <integer name="setup_body_weight_in_screen">60</integer> + <dimen name="setup_title_end_margin">24dp</dimen> <dimen name="setup_welcome_video_vertical_margin">24dp</dimen> - <integer name="setup_welcome_video_weight_in_screen">80</integer> - <integer name="setup_welcome_video_left_padding_weight_in_screen">10</integer> - <integer name="setup_welcome_video_right_padding_weight_in_screen">10</integer> + <integer name="setup_welcome_video_weight_in_screen">70</integer> + <integer name="setup_welcome_video_end_padding_weight_in_screen">30</integer> </resources> diff --git a/java/res/values-h520dp-land/setup-dimens-small-tablet-land.xml b/java/res/values-h520dp-land/setup-dimens-small-tablet-land.xml index 6a14d5918..772587491 100644 --- a/java/res/values-h520dp-land/setup-dimens-small-tablet-land.xml +++ b/java/res/values-h520dp-land/setup-dimens-small-tablet-land.xml @@ -33,8 +33,8 @@ <dimen name="setup_step_horizontal_line_height">2dp</dimen> <integer name="setup_title_weight_in_screen">40</integer> <integer name="setup_body_weight_in_screen">60</integer> + <dimen name="setup_title_end_margin">24dp</dimen> <dimen name="setup_welcome_video_vertical_margin">24dp</dimen> <integer name="setup_welcome_video_weight_in_screen">60</integer> - <integer name="setup_welcome_video_left_padding_weight_in_screen">20</integer> - <integer name="setup_welcome_video_right_padding_weight_in_screen">20</integer> + <integer name="setup_welcome_video_end_padding_weight_in_screen">40</integer> </resources> diff --git a/java/res/values-h540dp-port/setup-dimens-large-phone-port.xml b/java/res/values-h540dp-port/setup-dimens-large-phone-port.xml index b8dd33df4..42d2284f5 100644 --- a/java/res/values-h540dp-port/setup-dimens-large-phone-port.xml +++ b/java/res/values-h540dp-port/setup-dimens-large-phone-port.xml @@ -33,8 +33,8 @@ <dimen name="setup_step_horizontal_line_height">2dp</dimen> <integer name="setup_title_weight_in_screen">40</integer> <integer name="setup_body_weight_in_screen">60</integer> + <dimen name="setup_title_end_margin">24dp</dimen> <dimen name="setup_welcome_video_vertical_margin">24dp</dimen> - <integer name="setup_welcome_video_weight_in_screen">80</integer> - <integer name="setup_welcome_video_left_padding_weight_in_screen">10</integer> - <integer name="setup_welcome_video_right_padding_weight_in_screen">10</integer> + <integer name="setup_welcome_video_weight_in_screen">70</integer> + <integer name="setup_welcome_video_end_padding_weight_in_screen">30</integer> </resources> diff --git a/java/res/values-h720dp-land/setup-dimens-large-tablet-land.xml b/java/res/values-h720dp-land/setup-dimens-large-tablet-land.xml index 0004a3c85..b5f0e5cea 100644 --- a/java/res/values-h720dp-land/setup-dimens-large-tablet-land.xml +++ b/java/res/values-h720dp-land/setup-dimens-large-tablet-land.xml @@ -33,8 +33,8 @@ <dimen name="setup_step_horizontal_line_height">2dp</dimen> <integer name="setup_title_weight_in_screen">40</integer> <integer name="setup_body_weight_in_screen">60</integer> + <dimen name="setup_title_end_margin">24dp</dimen> <dimen name="setup_welcome_video_vertical_margin">24dp</dimen> - <integer name="setup_welcome_video_weight_in_screen">50</integer> - <integer name="setup_welcome_video_left_padding_weight_in_screen">25</integer> - <integer name="setup_welcome_video_right_padding_weight_in_screen">25</integer> + <integer name="setup_welcome_video_weight_in_screen">70</integer> + <integer name="setup_welcome_video_end_padding_weight_in_screen">30</integer> </resources> diff --git a/java/res/values-h800dp-port/setup-dimens-small-tablet-port.xml b/java/res/values-h800dp-port/setup-dimens-small-tablet-port.xml index 87c991c4d..770b4e825 100644 --- a/java/res/values-h800dp-port/setup-dimens-small-tablet-port.xml +++ b/java/res/values-h800dp-port/setup-dimens-small-tablet-port.xml @@ -33,8 +33,8 @@ <dimen name="setup_step_horizontal_line_height">2dp</dimen> <integer name="setup_title_weight_in_screen">40</integer> <integer name="setup_body_weight_in_screen">60</integer> + <dimen name="setup_title_end_margin">24dp</dimen> <dimen name="setup_welcome_video_vertical_margin">24dp</dimen> <integer name="setup_welcome_video_weight_in_screen">60</integer> - <integer name="setup_welcome_video_left_padding_weight_in_screen">20</integer> - <integer name="setup_welcome_video_right_padding_weight_in_screen">20</integer> + <integer name="setup_welcome_video_end_padding_weight_in_screen">40</integer> </resources> diff --git a/java/res/values-land/setup-dimens-small-phone-land.xml b/java/res/values-land/setup-dimens-small-phone-land.xml index 63f4661d1..e6dbaa71c 100644 --- a/java/res/values-land/setup-dimens-small-phone-land.xml +++ b/java/res/values-land/setup-dimens-small-phone-land.xml @@ -33,8 +33,8 @@ <dimen name="setup_step_horizontal_line_height">2dp</dimen> <integer name="setup_title_weight_in_screen">40</integer> <integer name="setup_body_weight_in_screen">60</integer> - <dimen name="setup_welcome_video_vertical_margin">24dp</dimen> - <integer name="setup_welcome_video_weight_in_screen">80</integer> - <integer name="setup_welcome_video_left_padding_weight_in_screen">10</integer> - <integer name="setup_welcome_video_right_padding_weight_in_screen">10</integer> + <dimen name="setup_title_end_margin">12dp</dimen> + <dimen name="setup_welcome_video_vertical_margin">12dp</dimen> + <integer name="setup_welcome_video_weight_in_screen">60</integer> + <integer name="setup_welcome_video_end_padding_weight_in_screen">40</integer> </resources> diff --git a/java/res/values-ms/strings-appname.xml b/java/res/values-ms/strings-appname.xml index 1f9501a7b..76d1d294c 100644 --- a/java/res/values-ms/strings-appname.xml +++ b/java/res/values-ms/strings-appname.xml @@ -20,7 +20,7 @@ <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="english_ime_name" msgid="5940510615957428904">"Papan kekunci Android (AOSP)"</string> + <string name="english_ime_name" msgid="5940510615957428904">"Papan Kekunci Android (AOSP)"</string> <string name="spell_checker_service_name" msgid="1254221805440242662">"Penyemak Ejaan Android (AOSP)"</string> <string name="english_ime_settings" msgid="5760361067176802794">"Tetapan Papan Kekunci Android (AOSP)"</string> <string name="android_spell_checker_settings" msgid="6123949487832861885">"Tetapan Penyemak Ejaan Android (AOSP)"</string> diff --git a/java/res/values-ms/strings.xml b/java/res/values-ms/strings.xml index fe1a3cd0d..bb001efe9 100644 --- a/java/res/values-ms/strings.xml +++ b/java/res/values-ms/strings.xml @@ -177,7 +177,7 @@ <string name="setup_steps_title" msgid="6400373034871816182">"Menyediakan <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string> <string name="setup_step1_title" msgid="3147967630253462315">"Dayakan <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string> <string name="setup_step1_instruction" msgid="2578631936624637241">"Sila semak \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" dlm ttpn Bhs & input. Ini mbnarkn apl djlnkn pd pranti anda."</string> - <string name="setup_step1_finished_instruction" msgid="10761482004957994">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> sudah didayakan dlm ttpn Bahasa & input anda, jd langkah ini tlh selesai. Beralih ke langkah seterusnya!"</string> + <string name="setup_step1_finished_instruction" msgid="10761482004957994">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> sudah didayakan dalam tetapan Bahasa & input anda, jadi langkah ini telah selesai. Beralih ke langkah seterusnya!"</string> <string name="setup_step1_action" msgid="4366513534999901728">"Dayakan dalam Tetapan"</string> <string name="setup_step2_title" msgid="6860725447906690594">"Beralih ke <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string> <string name="setup_step2_instruction" msgid="9141481964870023336">"Seterusnya, pilih \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" sebagai kaedah input teks aktif anda."</string> @@ -233,7 +233,7 @@ <string name="user_dict_settings_edit_dialog_title" msgid="3765774633869590352">"Edit perkataan"</string> <string name="user_dict_settings_context_menu_edit_title" msgid="6812255903472456302">"Edit"</string> <string name="user_dict_settings_context_menu_delete_title" msgid="8142932447689461181">"Padam"</string> - <string name="user_dict_settings_empty_text" msgid="558499587532668203">"Anda tidak mempunyai sebarang perkataan dalam kamus pengguna. Tambah perkataan dengan menyentuh butang Tambah (+)."</string> + <string name="user_dict_settings_empty_text" msgid="558499587532668203">"Anda tidak mempunyai sebarang perkataan dalam kamus pengguna. Tambahkan perkataan dengan menyentuh butang Tambah (+)."</string> <string name="user_dict_settings_all_languages" msgid="8276126583216298886">"Untuk semua bahasa"</string> <string name="user_dict_settings_more_languages" msgid="7131268499685180461">"Lebih banyak bahasa..."</string> <string name="user_dict_settings_delete" msgid="110413335187193859">"Padam"</string> diff --git a/java/res/values-port/setup-dimens-small-phone-port.xml b/java/res/values-port/setup-dimens-small-phone-port.xml index 34f4d9240..a3b18afbc 100644 --- a/java/res/values-port/setup-dimens-small-phone-port.xml +++ b/java/res/values-port/setup-dimens-small-phone-port.xml @@ -33,8 +33,8 @@ <dimen name="setup_step_horizontal_line_height">2dp</dimen> <integer name="setup_title_weight_in_screen">40</integer> <integer name="setup_body_weight_in_screen">60</integer> + <dimen name="setup_title_end_margin">16dp</dimen> <dimen name="setup_welcome_video_vertical_margin">16dp</dimen> - <integer name="setup_welcome_video_weight_in_screen">80</integer> - <integer name="setup_welcome_video_left_padding_weight_in_screen">10</integer> - <integer name="setup_welcome_video_right_padding_weight_in_screen">10</integer> + <integer name="setup_welcome_video_weight_in_screen">70</integer> + <integer name="setup_welcome_video_end_padding_weight_in_screen">30</integer> </resources> diff --git a/java/res/values-pt/strings.xml b/java/res/values-pt/strings.xml index 25592b1dc..907eee838 100644 --- a/java/res/values-pt/strings.xml +++ b/java/res/values-pt/strings.xml @@ -177,7 +177,7 @@ <string name="setup_steps_title" msgid="6400373034871816182">"Configurando o <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string> <string name="setup_step1_title" msgid="3147967630253462315">"Ative o <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string> <string name="setup_step1_instruction" msgid="2578631936624637241">"Marque \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" em \"Configurações de idioma e entrada\" para autorizar a execução."</string> - <string name="setup_step1_finished_instruction" msgid="10761482004957994">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> já está ativado em suas configurações de idioma e entrada. Esta estapa está concluída. Vamos avançar para a próxima!"</string> + <string name="setup_step1_finished_instruction" msgid="10761482004957994">"<xliff:g id="APPLICATION_NAME">%s</xliff:g> já está ativado em suas configurações de idioma e entrada. Esta etapa está concluída. Vamos avançar para a próxima!"</string> <string name="setup_step1_action" msgid="4366513534999901728">"Ativar em \"Configurações\""</string> <string name="setup_step2_title" msgid="6860725447906690594">"Abra o <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string> <string name="setup_step2_instruction" msgid="9141481964870023336">"Em seguida, selecione \"<xliff:g id="APPLICATION_NAME">%s</xliff:g>\" como o método de entrada de texto ativo."</string> diff --git a/java/res/values/colors.xml b/java/res/values/colors.xml index 8a8049f1f..daa167c8a 100644 --- a/java/res/values/colors.xml +++ b/java/res/values/colors.xml @@ -58,4 +58,5 @@ <color name="setup_text_dark">#FF707070</color> <color name="setup_text_action">@android:color/holo_blue_light</color> <color name="setup_step_background">@android:color/background_light</color> + <color name="setup_welcome_video_margin_color">#FFCCCCCC</color> </resources> diff --git a/java/res/values/config.xml b/java/res/values/config.xml index 742860bf2..d3a21f2aa 100644 --- a/java/res/values/config.xml +++ b/java/res/values/config.xml @@ -31,7 +31,7 @@ <bool name="config_default_next_word_prediction">true</bool> <bool name="config_default_sound_enabled">false</bool> <bool name="config_default_vibration_enabled">true</bool> - <integer name="config_max_vibration_duration">250</integer> <!-- milliseconds --> + <integer name="config_max_vibration_duration">100</integer> <!-- milliseconds --> <integer name="config_delay_update_suggestions">100</integer> <integer name="config_delay_update_old_suggestions">300</integer> <integer name="config_delay_update_shift_state">100</integer> diff --git a/java/res/values/dimens.xml b/java/res/values/dimens.xml index b6413b3f3..98ae76cb1 100644 --- a/java/res/values/dimens.xml +++ b/java/res/values/dimens.xml @@ -102,7 +102,7 @@ <!-- Gesture trail parameters --> <!-- Minimum distance between gesture trail sampling points. --> - <dimen name="gesture_trail_min_sampling_distance">6.4dp</dimen> + <dimen name="gesture_trail_min_sampling_distance">9.6dp</dimen> <!-- Maximum angular threshold between gesture trails interpolation segments in degree. --> <integer name="gesture_trail_max_interpolation_angular_threshold">15</integer> <!-- Maximum distance threshold between gesture trails interpolation segments. --> diff --git a/java/res/values/keypress-vibration-durations.xml b/java/res/values/keypress-vibration-durations.xml index ac502f5b0..9ce5051d2 100644 --- a/java/res/values/keypress-vibration-durations.xml +++ b/java/res/values/keypress-vibration-durations.xml @@ -42,7 +42,7 @@ <!-- LG Optimus G --> <item>MODEL=LG-E97[013]|LS970|L-01E:MANUFACTURER=LGE,15</item> <!-- HTC One X --> - <item>MODEL=HTC One X:MANUFACTURER=HTC,15</item> + <item>MODEL=HTC One X:MANUFACTURER=HTC,20</item> <!-- Motorola Razor M --> <item>MODEL=XT907:MANUFACTURER=motorola,30</item> <!-- Sony Xperia Z --> diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardActionListener.java b/java/src/com/android/inputmethod/keyboard/KeyboardActionListener.java index 60d09d6fd..9eeee5baf 100644 --- a/java/src/com/android/inputmethod/keyboard/KeyboardActionListener.java +++ b/java/src/com/android/inputmethod/keyboard/KeyboardActionListener.java @@ -27,8 +27,9 @@ public interface KeyboardActionListener { * * @param primaryCode the unicode of the key being pressed. If the touch is not on a valid key, * the value will be zero. + * @param isSinglePointer true if pressing has occurred while no other key is being pressed. */ - public void onPressKey(int primaryCode); + public void onPressKey(int primaryCode, boolean isSinglePointer); /** * Called when the user releases a key. This is sent after the {@link #onCodeInput} is called. @@ -88,6 +89,11 @@ public interface KeyboardActionListener { public void onCancelInput(); /** + * Called when user finished sliding key input. + */ + public void onFinishSlidingInput(); + + /** * Send a non-"code input" custom request to the listener. * @return true if the request has been consumed, false otherwise. */ @@ -97,7 +103,7 @@ public interface KeyboardActionListener { public static final Adapter EMPTY_LISTENER = new Adapter(); @Override - public void onPressKey(int primaryCode) {} + public void onPressKey(int primaryCode, boolean isSinglePointer) {} @Override public void onReleaseKey(int primaryCode, boolean withSliding) {} @Override @@ -115,6 +121,8 @@ public interface KeyboardActionListener { @Override public void onCancelInput() {} @Override + public void onFinishSlidingInput() {} + @Override public boolean onCustomRequest(int requestCode) { return false; } diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java index 39afe9072..ad08d6477 100644 --- a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java +++ b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java @@ -216,19 +216,19 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions { mState.onResetKeyboardStateToAlphabet(); } - public void onPressKey(final int code) { + public void onPressKey(final int code, final boolean isSinglePointer) { if (isVibrateAndSoundFeedbackRequired()) { mFeedbackManager.hapticAndAudioFeedback(code, mKeyboardView); } - mState.onPressKey(code, isSinglePointer(), mLatinIME.getCurrentAutoCapsState()); + mState.onPressKey(code, isSinglePointer, mLatinIME.getCurrentAutoCapsState()); } public void onReleaseKey(final int code, final boolean withSliding) { mState.onReleaseKey(code, withSliding); } - public void onCancelInput() { - mState.onCancelInput(isSinglePointer()); + public void onFinishSlidingInput() { + mState.onFinishSlidingInput(); } // Implements {@link KeyboardState.SwitchActions}. @@ -346,15 +346,11 @@ public final class KeyboardSwitcher implements KeyboardState.SwitchActions { return mKeyboardView != null && !mKeyboardView.isInSlidingKeyInput(); } - private boolean isSinglePointer() { - return mKeyboardView != null && mKeyboardView.getPointerCount() == 1; - } - /** * Updates state machine to figure out when to automatically switch back to the previous mode. */ public void onCodeInput(final int code) { - mState.onCodeInput(code, isSinglePointer(), mLatinIME.getCurrentAutoCapsState()); + mState.onCodeInput(code, mLatinIME.getCurrentAutoCapsState()); } public MainKeyboardView getMainKeyboardView() { diff --git a/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java b/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java index 3201d2e5b..6c6fc6157 100644 --- a/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java +++ b/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java @@ -1100,10 +1100,6 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack return false; } - public int getPointerCount() { - return mOldPointerCount; - } - @Override public boolean dispatchTouchEvent(MotionEvent event) { if (AccessibilityUtils.getInstance().isTouchExplorationEnabled()) { diff --git a/java/src/com/android/inputmethod/keyboard/PointerTracker.java b/java/src/com/android/inputmethod/keyboard/PointerTracker.java index 5a2af8015..174239325 100644 --- a/java/src/com/android/inputmethod/keyboard/PointerTracker.java +++ b/java/src/com/android/inputmethod/keyboard/PointerTracker.java @@ -459,7 +459,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element { return false; } if (key.isEnabled()) { - mListener.onPressKey(key.mCode); + mListener.onPressKey(key.mCode, getActivePointerTrackerCount() == 1); final boolean keyboardLayoutHasBeenChanged = mKeyboardLayoutHasBeenChanged; mKeyboardLayoutHasBeenChanged = false; mTimerProxy.startTypingStateTimer(key); @@ -527,6 +527,13 @@ public final class PointerTracker implements PointerTrackerQueue.Element { } } + private void callListenerOnFinishSlidingInput() { + if (DEBUG_LISTENER) { + Log.d(TAG, String.format("[%d] onFinishSlidingInput", mPointerId)); + } + mListener.onFinishSlidingInput(); + } + private void callListenerOnCancelInput() { if (DEBUG_LISTENER) { Log.d(TAG, String.format("[%d] onCancelInput", mPointerId)); @@ -1036,7 +1043,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element { private void processSildeOutFromOldKey(final Key oldKey) { setReleasedKeyGraphics(oldKey); - callListenerOnRelease(oldKey, oldKey.mCode, true); + callListenerOnRelease(oldKey, oldKey.mCode, true /* withSliding */); startSlidingKeyInput(oldKey); mTimerProxy.cancelKeyTimers(); } @@ -1168,6 +1175,8 @@ public final class PointerTracker implements PointerTrackerQueue.Element { private void onUpEventInternal(final int x, final int y, final long eventTime) { mTimerProxy.cancelKeyTimers(); + final boolean isInSlidingKeyInput = mIsInSlidingKeyInput; + final boolean isInSlidingKeyInputFromModifier = mIsInSlidingKeyInputFromModifier; resetSlidingKeyInput(); mIsDetectingGesture = false; final Key currentKey = mCurrentKey; @@ -1188,7 +1197,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element { if (sInGesture) { if (currentKey != null) { - callListenerOnRelease(currentKey, currentKey.mCode, true); + callListenerOnRelease(currentKey, currentKey.mCode, true /* withSliding */); } mayEndBatchInput(eventTime); return; @@ -1197,8 +1206,13 @@ public final class PointerTracker implements PointerTrackerQueue.Element { if (mIsTrackingForActionDisabled) { return; } - if (currentKey != null && !currentKey.isRepeatable()) { - detectAndSendKey(currentKey, mKeyX, mKeyY, eventTime); + if (currentKey != null && currentKey.isRepeatable() && !isInSlidingKeyInput) { + // Repeatable key has been registered in {@link #onDownEventInternal(int,int,long)}. + return; + } + detectAndSendKey(currentKey, mKeyX, mKeyY, eventTime); + if (isInSlidingKeyInputFromModifier) { + callListenerOnFinishSlidingInput(); } } @@ -1251,7 +1265,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element { if (key == null) return; if (!key.isRepeatable()) return; // Don't start key repeat when we are in sliding input mode. - if (mIsInSlidingKeyInputFromModifier) return; + if (mIsInSlidingKeyInput) return; onRegisterKey(key); mTimerProxy.startKeyRepeatTimer(this); } @@ -1313,7 +1327,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element { // doesn't have its more keys. (e.g. spacebar, globe key) // We always need to start the long press timer if the key has its more keys regardless of // whether or not we are in the sliding input mode. - if (mIsInSlidingKeyInputFromModifier && key.mMoreKeys == null) return; + if (mIsInSlidingKeyInput && key.mMoreKeys == null) return; mTimerProxy.startLongPressTimer(this); } @@ -1325,7 +1339,7 @@ public final class PointerTracker implements PointerTrackerQueue.Element { final int code = key.mCode; callListenerOnCodeInput(key, code, x, y, eventTime); - callListenerOnRelease(key, code, false); + callListenerOnRelease(key, code, false /* withSliding */); } private void printTouchEvent(final String title, final int x, final int y, diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java index 962bde91e..6af1bd75f 100644 --- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java +++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardState.java @@ -28,9 +28,9 @@ import com.android.inputmethod.latin.RecapitalizeStatus; * This class contains all keyboard state transition logic. * * The input events are {@link #onLoadKeyboard()}, {@link #onSaveKeyboardState()}, - * {@link #onPressKey(int, boolean, int)}, {@link #onReleaseKey(int, boolean)}, - * {@link #onCodeInput(int, boolean, int)}, {@link #onCancelInput(boolean)}, - * {@link #onUpdateShiftState(int, int)}, {@link #onLongPressTimeout(int)}. + * {@link #onPressKey(int,boolean,int)}, {@link #onReleaseKey(int,boolean)}, + * {@link #onCodeInput(int,int)}, {@link #onFinishSlidingInput()}, {@link #onCancelInput()}, + * {@link #onUpdateShiftState(int,int)}, {@link #onLongPressTimeout(int)}. * * The actions are {@link SwitchActions}'s methods. */ @@ -74,6 +74,7 @@ public final class KeyboardState { private static final int SWITCH_STATE_SYMBOL = 2; private static final int SWITCH_STATE_MOMENTARY_ALPHA_AND_SYMBOL = 3; private static final int SWITCH_STATE_MOMENTARY_SYMBOL_AND_MORE = 4; + private static final int SWITCH_STATE_MOMENTARY_ALPHA_SHIFT = 5; private int mSwitchState = SWITCH_STATE_ALPHA; private boolean mIsAlphabetMode; @@ -525,6 +526,9 @@ public final class KeyboardState { } else if (mAlphabetShiftState.isShiftLockShifted() && withSliding) { // In shift locked state, shift has been pressed and slid out to other key. setShiftLocked(true); + } else if (mAlphabetShiftState.isManualShifted() && withSliding) { + // Shift has been pressed and slid out to other key. + mSwitchState = SWITCH_STATE_MOMENTARY_ALPHA_SHIFT; } else if (isShiftLocked && !mAlphabetShiftState.isShiftLockShifted() && (mShiftKeyState.isPressing() || mShiftKeyState.isPressingOnShifted()) && !withSliding) { @@ -554,17 +558,21 @@ public final class KeyboardState { mShiftKeyState.onRelease(); } - public void onCancelInput(final boolean isSinglePointer) { + public void onFinishSlidingInput() { if (DEBUG_EVENT) { - Log.d(TAG, "onCancelInput: single=" + isSinglePointer + " " + this); + Log.d(TAG, "onFinishSlidingInput: " + this); } // Switch back to the previous keyboard mode if the user cancels sliding input. - if (isSinglePointer) { - if (mSwitchState == SWITCH_STATE_MOMENTARY_ALPHA_AND_SYMBOL) { - toggleAlphabetAndSymbols(); - } else if (mSwitchState == SWITCH_STATE_MOMENTARY_SYMBOL_AND_MORE) { - toggleShiftInSymbols(); - } + switch (mSwitchState) { + case SWITCH_STATE_MOMENTARY_ALPHA_AND_SYMBOL: + toggleAlphabetAndSymbols(); + break; + case SWITCH_STATE_MOMENTARY_SYMBOL_AND_MORE: + toggleShiftInSymbols(); + break; + case SWITCH_STATE_MOMENTARY_ALPHA_SHIFT: + setAlphabetKeyboard(); + break; } } @@ -577,10 +585,9 @@ public final class KeyboardState { return c == Constants.CODE_SPACE || c == Constants.CODE_ENTER; } - public void onCodeInput(final int code, final boolean isSinglePointer, final int autoCaps) { + public void onCodeInput(final int code, final int autoCaps) { if (DEBUG_EVENT) { Log.d(TAG, "onCodeInput: code=" + Constants.printableCode(code) - + " single=" + isSinglePointer + " autoCaps=" + autoCaps + " " + this); } @@ -593,23 +600,12 @@ public final class KeyboardState { } else { mSwitchState = SWITCH_STATE_SYMBOL_BEGIN; } - } else if (isSinglePointer) { - // Switch back to the previous keyboard mode if the user pressed the mode change key - // and slid to other key, then released the finger. - // If the user cancels the sliding input, switching back to the previous keyboard - // mode is handled by {@link #onCancelInput}. - toggleAlphabetAndSymbols(); } break; case SWITCH_STATE_MOMENTARY_SYMBOL_AND_MORE: if (code == Constants.CODE_SHIFT) { // Detected only the shift key has been pressed on symbol layout, and then released. mSwitchState = SWITCH_STATE_SYMBOL_BEGIN; - } else if (isSinglePointer) { - // Switch back to the previous keyboard mode if the user pressed the shift key on - // symbol mode and slid to other key, then released the finger. - toggleShiftInSymbols(); - mSwitchState = SWITCH_STATE_SYMBOL; } break; case SWITCH_STATE_SYMBOL_BEGIN: @@ -650,6 +646,7 @@ public final class KeyboardState { case SWITCH_STATE_SYMBOL: return "SYMBOL"; case SWITCH_STATE_MOMENTARY_ALPHA_AND_SYMBOL: return "MOMENTARY-ALPHA-SYMBOL"; case SWITCH_STATE_MOMENTARY_SYMBOL_AND_MORE: return "MOMENTARY-SYMBOL-MORE"; + case SWITCH_STATE_MOMENTARY_ALPHA_SHIFT: return "MOMENTARY-ALPHA_SHIFT"; default: return null; } } diff --git a/java/src/com/android/inputmethod/keyboard/internal/PointerTrackerQueue.java b/java/src/com/android/inputmethod/keyboard/internal/PointerTrackerQueue.java index 8901f99b7..31ef3cd8f 100644 --- a/java/src/com/android/inputmethod/keyboard/internal/PointerTrackerQueue.java +++ b/java/src/com/android/inputmethod/keyboard/internal/PointerTrackerQueue.java @@ -48,6 +48,9 @@ public final class PointerTrackerQueue { public void add(final Element pointer) { synchronized (mExpandableArrayOfActivePointers) { + if (DEBUG) { + Log.d(TAG, "add: " + pointer + " " + this); + } final ArrayList<Element> expandableArray = mExpandableArrayOfActivePointers; final int arraySize = mArraySize; if (arraySize < expandableArray.size()) { @@ -61,24 +64,27 @@ public final class PointerTrackerQueue { public void remove(final Element pointer) { synchronized (mExpandableArrayOfActivePointers) { + if (DEBUG) { + Log.d(TAG, "remove: " + pointer + " " + this); + } final ArrayList<Element> expandableArray = mExpandableArrayOfActivePointers; final int arraySize = mArraySize; - int newSize = 0; + int newIndex = 0; for (int index = 0; index < arraySize; index++) { final Element element = expandableArray.get(index); if (element == pointer) { - if (newSize != index) { + if (newIndex != index) { Log.w(TAG, "Found duplicated element in remove: " + pointer); } continue; // Remove this element from the expandableArray. } - if (newSize != index) { + if (newIndex != index) { // Shift this element toward the beginning of the expandableArray. - expandableArray.set(newSize, element); + expandableArray.set(newIndex, element); } - newSize++; + newIndex++; } - mArraySize = newSize; + mArraySize = newIndex; } } @@ -95,8 +101,8 @@ public final class PointerTrackerQueue { } final ArrayList<Element> expandableArray = mExpandableArrayOfActivePointers; final int arraySize = mArraySize; - int newSize, index; - for (newSize = index = 0; index < arraySize; index++) { + int newIndex, index; + for (newIndex = index = 0; index < arraySize; index++) { final Element element = expandableArray.get(index); if (element == pointer) { break; // Stop releasing elements. @@ -105,29 +111,30 @@ public final class PointerTrackerQueue { element.onPhantomUpEvent(eventTime); continue; // Remove this element from the expandableArray. } - if (newSize != index) { + if (newIndex != index) { // Shift this element toward the beginning of the expandableArray. - expandableArray.set(newSize, element); + expandableArray.set(newIndex, element); } - newSize++; + newIndex++; } // Shift rest of the expandableArray. int count = 0; for (; index < arraySize; index++) { final Element element = expandableArray.get(index); if (element == pointer) { - if (count > 0) { + count++; + if (count > 1) { Log.w(TAG, "Found duplicated element in releaseAllPointersOlderThan: " + pointer); } - count++; } - if (newSize != index) { - expandableArray.set(newSize, expandableArray.get(index)); - newSize++; + if (newIndex != index) { + // Shift this element toward the beginning of the expandableArray. + expandableArray.set(newIndex, expandableArray.get(index)); } + newIndex++; } - mArraySize = newSize; + mArraySize = newIndex; } } @@ -146,26 +153,26 @@ public final class PointerTrackerQueue { } final ArrayList<Element> expandableArray = mExpandableArrayOfActivePointers; final int arraySize = mArraySize; - int newSize = 0, count = 0; + int newIndex = 0, count = 0; for (int index = 0; index < arraySize; index++) { final Element element = expandableArray.get(index); if (element == pointer) { - if (count > 0) { + count++; + if (count > 1) { Log.w(TAG, "Found duplicated element in releaseAllPointersExcept: " + pointer); } - count++; } else { element.onPhantomUpEvent(eventTime); continue; // Remove this element from the expandableArray. } - if (newSize != index) { + if (newIndex != index) { // Shift this element toward the beginning of the expandableArray. - expandableArray.set(newSize, element); + expandableArray.set(newIndex, element); } - newSize++; + newIndex++; } - mArraySize = newSize; + mArraySize = newIndex; } } @@ -202,6 +209,9 @@ public final class PointerTrackerQueue { public void cancelAllPointerTracker() { synchronized (mExpandableArrayOfActivePointers) { + if (DEBUG) { + Log.d(TAG, "cancelAllPointerTracker: " + this); + } final ArrayList<Element> expandableArray = mExpandableArrayOfActivePointers; final int arraySize = mArraySize; for (int index = 0; index < arraySize; index++) { diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java index fdd470cf1..9caec5592 100644 --- a/java/src/com/android/inputmethod/latin/LatinIME.java +++ b/java/src/com/android/inputmethod/latin/LatinIME.java @@ -1752,9 +1752,16 @@ public final class LatinIME extends InputMethodService implements KeyboardAction // Called from PointerTracker through the KeyboardActionListener interface @Override + public void onFinishSlidingInput() { + // User finished sliding input. + mKeyboardSwitcher.onFinishSlidingInput(); + } + + // Called from PointerTracker through the KeyboardActionListener interface + @Override public void onCancelInput() { // User released a finger outside any key - mKeyboardSwitcher.onCancelInput(); + // Nothing to do so far. } @Override @@ -2612,8 +2619,8 @@ public final class LatinIME extends InputMethodService implements KeyboardAction // Callback called by PointerTracker through the KeyboardActionListener. This is called when a // key is depressed; release matching call is onReleaseKey below. @Override - public void onPressKey(final int primaryCode) { - mKeyboardSwitcher.onPressKey(primaryCode); + public void onPressKey(final int primaryCode, final boolean isSinglePointer) { + mKeyboardSwitcher.onPressKey(primaryCode, isSinglePointer); } // Callback by PointerTracker through the KeyboardActionListener. This is called when a key diff --git a/java/src/com/android/inputmethod/latin/SeekBarDialogPreference.java b/java/src/com/android/inputmethod/latin/SeekBarDialogPreference.java index 9819a02ef..7c4156c48 100644 --- a/java/src/com/android/inputmethod/latin/SeekBarDialogPreference.java +++ b/java/src/com/android/inputmethod/latin/SeekBarDialogPreference.java @@ -59,7 +59,7 @@ public final class SeekBarDialogPreference extends DialogPreference public void setInterface(final ValueProxy proxy) { mValueProxy = proxy; - setSummary(getValueText(proxy.readValue(getKey()))); + setSummary(getValueText(clipValue(proxy.readValue(getKey())))); } private String getValueText(final int value) { diff --git a/java/src/com/android/inputmethod/latin/setup/SetupWizardActivity.java b/java/src/com/android/inputmethod/latin/setup/SetupWizardActivity.java index 3406ecf34..0d25bc338 100644 --- a/java/src/com/android/inputmethod/latin/setup/SetupWizardActivity.java +++ b/java/src/com/android/inputmethod/latin/setup/SetupWizardActivity.java @@ -27,6 +27,7 @@ import android.os.Message; import android.provider.Settings; import android.util.Log; import android.view.View; +import android.view.ViewGroup; import android.view.inputmethod.InputMethodInfo; import android.widget.ImageView; import android.widget.TextView; @@ -199,6 +200,11 @@ public final class SetupWizardActivity extends Activity implements View.OnClickL welcomeVideoView.setVisibility(View.GONE); welcomeImageView.setImageResource(R.raw.setup_welcome_image); welcomeImageView.setVisibility(View.VISIBLE); + // Remove unnecessary light gray background around still image. + final ViewGroup videoFrame = (ViewGroup)findViewById( + R.id.setup_welcome_video_frame); + videoFrame.setBackgroundColor(getResources().getColor(R.color.setup_background)); + videoFrame.requestLayout(); return true; } }); diff --git a/java/src/com/android/inputmethod/research/ResearchLogger.java b/java/src/com/android/inputmethod/research/ResearchLogger.java index b3c0faf29..8b8ea21e9 100644 --- a/java/src/com/android/inputmethod/research/ResearchLogger.java +++ b/java/src/com/android/inputmethod/research/ResearchLogger.java @@ -156,11 +156,6 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang // LogUnits are queued in the LogBuffers and published to the ResearchLogs when words are // complete. /* package for test */ MainLogBuffer mMainLogBuffer; // always non-null after init() is called - // TODO: Remove the feedback log. The feedback log continuously captured user data in case the - // user wanted to submit it. We now use the mUserRecordingLogBuffer to allow the user to - // explicitly reproduce a problem. - private ResearchLog mFeedbackLog; - private LogBuffer mFeedbackLogBuffer; /* package */ ResearchLog mUserRecordingLog; /* package */ LogBuffer mUserRecordingLogBuffer; private File mUserRecordingFile = null; @@ -200,15 +195,6 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang private long mSavedDownEventTime; private Bundle mFeedbackDialogBundle = null; private boolean mInFeedbackDialog = false; - // The feedback dialog causes stop() to be called for the keyboard connected to the original - // window. This is because the feedback dialog must present its own EditText box that displays - // a keyboard. stop() normally causes mFeedbackLogBuffer, which contains the user's data, to be - // cleared, and causes mFeedbackLog, which is ready to collect information in case the user - // wants to upload, to be closed. This is good because we don't need to log information about - // what the user is typing in the feedback dialog, but bad because this data must be uploaded. - // Here we save the LogBuffer and Log so the feedback dialog can later access their data. - private LogBuffer mSavedFeedbackLogBuffer; - private ResearchLog mSavedFeedbackLog; private Handler mUserRecordingTimeoutHandler; private static final long USER_RECORDING_TIMEOUT_MS = 30L * DateUtils.SECOND_IN_MILLIS; @@ -280,10 +266,6 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang publishLogUnits(logUnits, mMainResearchLog, canIncludePrivateData); } }; - - mFeedbackLog = new ResearchLog(mResearchLogDirectory.getLogFilePath( - System.currentTimeMillis(), System.nanoTime()), mLatinIME); - mFeedbackLogBuffer = new FixedLogBuffer(FEEDBACK_WORD_BUFFER_SIZE); } private void cleanLogDirectoryIfNeeded(final ResearchLogDirectory researchLogDirectory, @@ -436,7 +418,6 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang Log.w(TAG, "IOException when publishing LogBuffer", e); } mMainResearchLog.blockingClose(RESEARCHLOG_CLOSE_TIMEOUT_IN_MS); - mFeedbackLog.blockingClose(RESEARCHLOG_CLOSE_TIMEOUT_IN_MS); resetLogBuffers(); } @@ -447,8 +428,6 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang } mMainLogBuffer.clear(); mMainResearchLog.blockingAbort(RESEARCHLOG_ABORT_TIMEOUT_IN_MS); - mFeedbackLogBuffer.clear(); - mFeedbackLog.blockingAbort(RESEARCHLOG_ABORT_TIMEOUT_IN_MS); resetLogBuffers(); } @@ -482,12 +461,6 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang saveRecording(); } mInFeedbackDialog = true; - mSavedFeedbackLogBuffer = mFeedbackLogBuffer; - mSavedFeedbackLog = mFeedbackLog; - // Set the non-saved versions to null so that the stop() caused by switching to the - // Feedback dialog will not close them. - mFeedbackLogBuffer = null; - mFeedbackLog = null; final Intent intent = new Intent(); intent.setClass(mLatinIME, FeedbackActivity.class); @@ -645,12 +618,6 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang new LogStatement("UserFeedback", false, false, "contents", "accountName", "recording"); public void sendFeedback(final String feedbackContents, final boolean includeHistory, final boolean isIncludingAccountName, final boolean isIncludingRecording) { - if (mSavedFeedbackLogBuffer == null) { - return; - } - if (!includeHistory) { - mSavedFeedbackLogBuffer.clear(); - } String recording = ""; if (isIncludingRecording) { // Try to read recording from recently written json file @@ -682,9 +649,13 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang final String accountName = isIncludingAccountName ? getAccountName() : ""; feedbackLogUnit.addLogStatement(LOGSTATEMENT_FEEDBACK, SystemClock.uptimeMillis(), feedbackContents, accountName, recording); - mFeedbackLogBuffer.shiftIn(feedbackLogUnit); - publishLogBuffer(mFeedbackLogBuffer, mSavedFeedbackLog, true /* isIncludingPrivateData */); - mSavedFeedbackLog.blockingClose(RESEARCHLOG_CLOSE_TIMEOUT_IN_MS); + + final ResearchLog feedbackLog = new ResearchLog(mResearchLogDirectory.getLogFilePath( + System.currentTimeMillis(), System.nanoTime()), mLatinIME); + final LogBuffer feedbackLogBuffer = new LogBuffer(); + feedbackLogBuffer.shiftIn(feedbackLogUnit); + publishLogBuffer(feedbackLogBuffer, feedbackLog, true /* isIncludingPrivateData */); + feedbackLog.blockingClose(RESEARCHLOG_CLOSE_TIMEOUT_IN_MS); uploadNow(); if (isIncludingRecording && DEBUG_REPLAY_AFTER_FEEDBACK) { @@ -836,9 +807,6 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang } if (!mCurrentLogUnit.isEmpty()) { mMainLogBuffer.shiftIn(mCurrentLogUnit); - if (mFeedbackLogBuffer != null) { - mFeedbackLogBuffer.shiftIn(mCurrentLogUnit); - } if (mUserRecordingLogBuffer != null) { mUserRecordingLogBuffer.shiftIn(mCurrentLogUnit); } @@ -884,9 +852,6 @@ public class ResearchLogger implements SharedPreferences.OnSharedPreferenceChang } else { mCurrentLogUnit = oldLogUnit; } - if (mFeedbackLogBuffer != null) { - mFeedbackLogBuffer.unshiftIn(); - } enqueueEvent(LOGSTATEMENT_UNCOMMIT_CURRENT_LOGUNIT); if (DEBUG) { Log.d(TAG, "uncommitCurrentLogUnit (dump=" + dumpCurrentLogUnit + ") back to " |