1 /* 2 * Copyright (C) 2017 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License 15 */ 16 17 package com.android.car.settings.datetime; 18 19 import android.content.Context; 20 import android.provider.Settings; 21 22 import androidx.car.widget.TextListItem; 23 24 import com.android.car.settings.R; 25 import com.android.car.settings.common.BaseFragment; 26 import com.android.car.settings.common.BaseFragment.FragmentController; 27 import com.android.settingslib.datetime.ZoneGetter; 28 29 import java.util.Calendar; 30 31 /** 32 * A LineItem that displays and sets time zone. 33 */ 34 class SetTimeZoneLineItem extends TextListItem 35 implements DatetimeSettingsFragment.ListRefreshObserver { 36 37 private final Context mContext; 38 private final FragmentController mFragmentController; 39 SetTimeZoneLineItem(Context context, BaseFragment.FragmentController fragmentController)40 public SetTimeZoneLineItem(Context context, BaseFragment.FragmentController fragmentController) { 41 super(context); 42 mContext = context; 43 mFragmentController = fragmentController; 44 setTitle(context.getString(R.string.date_time_set_timezone)); 45 setBody(getDesc()); 46 updateLineItemData(); 47 } 48 49 @Override onPreRefresh()50 public void onPreRefresh() { 51 updateLineItemData(); 52 } 53 updateLineItemData()54 private void updateLineItemData() { 55 if (isEnabled()) { 56 setSupplementalIcon(R.drawable.ic_chevron_right, /* showDivider= */ false); 57 setOnClickListener(v -> 58 mFragmentController.launchFragment(TimeZonePickerFragment.getInstance())); 59 } else { 60 setSupplementalIcon(null, /* showDivider= */ false); 61 setOnClickListener(null); 62 } 63 } 64 getDesc()65 private String getDesc() { 66 Calendar now = Calendar.getInstance(); 67 return ZoneGetter.getTimeZoneOffsetAndName(mContext, now.getTimeZone(), now.getTime()) 68 .toString(); 69 } 70 isEnabled()71 private boolean isEnabled() { 72 return Settings.Global.getInt(mContext.getContentResolver(), 73 Settings.Global.AUTO_TIME_ZONE, 0) <= 0; 74 } 75 } 76