Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 07acb5af authored by rachelzhang's avatar rachelzhang
Browse files

Fix Clock RTL crash

Bug: 17158607

Change-Id: Ia0ca210124896c5133f06b72839a1d7246adc065
parent 6921831f
Loading
Loading
Loading
Loading
+26 −24
Original line number Diff line number Diff line
@@ -180,7 +180,8 @@ public class DeskClock extends Activity implements LabelDialogFragment.TimerLabe
        mFab.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                DeskClockFragment fragment = (DeskClockFragment) mTabsAdapter.getItem(mSelectedTab);
                DeskClockFragment fragment = (DeskClockFragment) mTabsAdapter.getItem(
                        getRtlPosition(mSelectedTab));
                fragment.respondClick(view);
            }
        });
@@ -514,7 +515,7 @@ public class DeskClock extends Activity implements LabelDialogFragment.TimerLabe
                mFab.setImageResource(R.drawable.ic_globe);
                mIsFirstLaunch = false;
            } else {
                DeskClockFragment f = (DeskClockFragment) getItem(position);
                DeskClockFragment f = (DeskClockFragment) getItem(getRtlPosition(position));
                f.setFabAppearance(mFab);
            }
            mPager.setCurrentItem(getRtlPosition(position));
@@ -555,28 +556,6 @@ public class DeskClock extends Activity implements LabelDialogFragment.TimerLabe
            mFragmentTags.remove(frag.getTag());
        }

        private boolean isRtl() {
            return TextUtils.getLayoutDirectionFromLocale(Locale.getDefault()) ==
                    View.LAYOUT_DIRECTION_RTL;
        }

        private int getRtlPosition(int position) {
            if (isRtl()) {
                switch (position) {
                    case TIMER_TAB_INDEX:
                        return RTL_TIMER_TAB_INDEX;
                    case CLOCK_TAB_INDEX:
                        return RTL_CLOCK_TAB_INDEX;
                    case STOPWATCH_TAB_INDEX:
                        return RTL_STOPWATCH_TAB_INDEX;
                    case ALARM_TAB_INDEX:
                        return RTL_ALARM_TAB_INDEX;
                    default:
                        break;
                }
            }
            return position;
        }
    }

    public static abstract class OnTapListener implements OnTouchListener {
@@ -670,4 +649,27 @@ public class DeskClock extends Activity implements LabelDialogFragment.TimerLabe
    public int getSelectedTab() {
        return mSelectedTab;
    }

    private boolean isRtl() {
        return TextUtils.getLayoutDirectionFromLocale(Locale.getDefault()) ==
                View.LAYOUT_DIRECTION_RTL;
    }

    private int getRtlPosition(int position) {
        if (isRtl()) {
            switch (position) {
                case TIMER_TAB_INDEX:
                    return RTL_TIMER_TAB_INDEX;
                case CLOCK_TAB_INDEX:
                    return RTL_CLOCK_TAB_INDEX;
                case STOPWATCH_TAB_INDEX:
                    return RTL_STOPWATCH_TAB_INDEX;
                case ALARM_TAB_INDEX:
                    return RTL_ALARM_TAB_INDEX;
                default:
                    break;
            }
        }
        return position;
    }
}