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

Commit ae905091 authored by Isaac Katzenelson's avatar Isaac Katzenelson Committed by Android (Google) Code Review
Browse files

Merge "Ensure two-digit hours to work around RTL issue" into klp-dev

parents a9b9de5c e639cf61
Loading
Loading
Loading
Loading
+21 −3
Original line number Diff line number Diff line
@@ -57,6 +57,7 @@ import java.util.Calendar;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.TimeZone;

/**
@@ -108,6 +109,9 @@ public class CitiesActivity extends Activity implements OnCheckedChangeListener,
        private static final String FORMAT_24_HOUR = "k:mm";
        private static final String FORMAT_12_HOUR = "h:mm aa";

        private static final String FORMAT_24_HOUR_RTL = "kk:mm";
        private static final String FORMAT_12_HOUR_RTL = "hh:mm aa";

        private static final String DELETED_ENTRY = "C0";

        private List<CityObj> mDisplayedCitiesList;
@@ -115,6 +119,8 @@ public class CitiesActivity extends Activity implements OnCheckedChangeListener,
        private CityObj[] mCities;
        private CityObj[] mSelectedCities;

        private int mLayoutDirection;

        private String[] mSectionHeaders;
        private Integer[] mSectionPositions;

@@ -238,6 +244,7 @@ public class CitiesActivity extends Activity implements OnCheckedChangeListener,
        }

        private void loadCities(Context c) {
            mLayoutDirection = TextUtils.getLayoutDirectionFromLocale(Locale.getDefault());
            mCities = Utils.loadCitiesFromXml(c);
            if (mCities == null) {
                return;
@@ -342,14 +349,25 @@ public class CitiesActivity extends Activity implements OnCheckedChangeListener,
                holder.selected.setTag(c);
                holder.selected.setChecked(mUserSelectedCities.containsKey(c.mCityId));
                holder.selected.setOnCheckedChangeListener(CitiesActivity.this);
                mCalendar.setTimeZone(TimeZone.getTimeZone(c.mTimeZone));
                holder.time.setText(DateFormat.format(mIs24HoursMode ? FORMAT_24_HOUR
                        : FORMAT_12_HOUR, mCalendar));
                holder.name.setText(c.mCityName, TextView.BufferType.SPANNABLE);
                holder.time.setText(getTimeCharSequence(c.mTimeZone));
            }
            return view;
        }

        // We need to ensure that hours are adjusted to be two digits in RTL due to issue involving
        // layout weights and text views with different lengths in a list view.
        private CharSequence getTimeCharSequence(String timeZone) {
            mCalendar.setTimeZone(TimeZone.getTimeZone(timeZone));
            String format;
            if (mLayoutDirection == View.LAYOUT_DIRECTION_RTL) {
                format = mIs24HoursMode ? FORMAT_24_HOUR_RTL : FORMAT_12_HOUR_RTL;
            } else {
                format = mIs24HoursMode ? FORMAT_24_HOUR : FORMAT_12_HOUR;
            }
            return DateFormat.format(format, mCalendar);
        }

        @Override
        public int getViewTypeCount() {
            return 2;