From fcfa74859b26b2231abca50f0bdb8d91141ca27d Mon Sep 17 00:00:00 2001 From: beanstown106 Date: Sat, 23 Nov 2019 18:54:59 +0530 Subject: [PATCH] Cherish: Custom Carrier Label & Carrier Label Placement [2/2] Credit/Thanks to @Altaf-Mahdi @beanstown106 and @martincz Change-Id: Ia7b29f85d7a1286bd15dc4427727a683e133ab3f --- res/values/cherish_arrays.xml | 14 +++ res/values/cherish_strings.xml | 12 ++ res/xml/cherish_settings_statusbar.xml | 6 + res/xml/custom_carrier_label.xml | 34 ++++++ .../fragments/CustomCarrierLabel.java | 107 ++++++++++++++++++ 5 files changed, 173 insertions(+) create mode 100644 res/xml/custom_carrier_label.xml create mode 100644 src/com/cherish/settings/fragments/CustomCarrierLabel.java diff --git a/res/values/cherish_arrays.xml b/res/values/cherish_arrays.xml index 1d4c0e8..5e2ac6d 100644 --- a/res/values/cherish_arrays.xml +++ b/res/values/cherish_arrays.xml @@ -303,4 +303,18 @@ 300000 600000 + + + + @string/show_carrier_disabled + @string/show_carrier_keyguard + @string/show_carrier_statusbar + @string/show_carrier_enabled + + + 0 + 1 + 2 + 3 + diff --git a/res/values/cherish_strings.xml b/res/values/cherish_strings.xml index c34b133..327efe2 100644 --- a/res/values/cherish_strings.xml +++ b/res/values/cherish_strings.xml @@ -305,5 +305,17 @@ 2 minutes 5 minutes 10 minutes + + + Carrier label + Customize the carrier label + Custom carrier label + Enter a custom label. Leave blank to use your network name + Custom label currently not set + Carrier label location + Disabled + Lockscreen + Statusbar + Both diff --git a/res/xml/cherish_settings_statusbar.xml b/res/xml/cherish_settings_statusbar.xml index a4de6ad..c2ffed2 100644 --- a/res/xml/cherish_settings_statusbar.xml +++ b/res/xml/cherish_settings_statusbar.xml @@ -14,6 +14,12 @@ xmlns:android="http://schemas.android.com/apk/res/android" android:title="@string/statusbar_title" xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"> + + + + + + + + + + diff --git a/src/com/cherish/settings/fragments/CustomCarrierLabel.java b/src/com/cherish/settings/fragments/CustomCarrierLabel.java new file mode 100644 index 0000000..9956872 --- /dev/null +++ b/src/com/cherish/settings/fragments/CustomCarrierLabel.java @@ -0,0 +1,107 @@ +/* + * Copyright (C) 2020 CherishOS + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.cherish.settings.fragments; + +import android.app.AlertDialog; +import android.content.ContentResolver; +import android.content.DialogInterface; +import android.content.DialogInterface.OnCancelListener; +import android.content.Intent; +import android.os.Bundle; +import android.os.UserHandle; +import android.provider.Settings; +import android.text.Spannable; +import android.text.TextUtils; +import android.widget.EditText; +import androidx.preference.Preference; +import androidx.preference.PreferenceScreen; + +import com.android.internal.logging.nano.MetricsProto; + +import com.android.settings.R; +import com.android.settings.SettingsPreferenceFragment; + +public class CustomCarrierLabel extends SettingsPreferenceFragment + implements Preference.OnPreferenceChangeListener { + + public static final String TAG = "CarrierLabel"; + private static final String CUSTOM_CARRIER_LABEL = "custom_carrier_label"; + + private PreferenceScreen mCustomCarrierLabel; + private String mCustomCarrierLabelText; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + ContentResolver resolver = getActivity().getContentResolver(); + + addPreferencesFromResource(R.xml.custom_carrier_label); + PreferenceScreen prefSet = getPreferenceScreen(); + + mCustomCarrierLabel = (PreferenceScreen) findPreference(CUSTOM_CARRIER_LABEL); + updateCustomLabelTextSummary(); + } + + @Override + public boolean onPreferenceChange(Preference preference, Object newValue) { + return false; + } + + public boolean onPreferenceTreeClick(Preference preference) { + ContentResolver resolver = getActivity().getContentResolver(); + boolean value; + if (preference == mCustomCarrierLabel) { + AlertDialog.Builder alert = new AlertDialog.Builder(getActivity()); + alert.setTitle(R.string.custom_carrier_label_title); + alert.setMessage(R.string.custom_carrier_label_explain); + // Set an EditText view to get user input + final EditText input = new EditText(getActivity()); + input.setText(TextUtils.isEmpty(mCustomCarrierLabelText) ? "" : mCustomCarrierLabelText); + input.setSelection(input.getText().length()); + alert.setView(input); + alert.setPositiveButton(getString(android.R.string.ok), + new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int whichButton) { + String value = ((Spannable) input.getText()).toString().trim(); + Settings.System.putString(resolver, Settings.System.CUSTOM_CARRIER_LABEL, value); + updateCustomLabelTextSummary(); + Intent i = new Intent(); + i.setAction(Intent.ACTION_CUSTOM_CARRIER_LABEL_CHANGED); + getActivity().sendBroadcast(i); + } + }); + alert.setNegativeButton(getString(android.R.string.cancel), null); + alert.show(); + return true; + } + return false; + } + + private void updateCustomLabelTextSummary() { + mCustomCarrierLabelText = Settings.System.getString( + getContentResolver(), Settings.System.CUSTOM_CARRIER_LABEL); + if (TextUtils.isEmpty(mCustomCarrierLabelText)) { + mCustomCarrierLabel.setSummary(R.string.custom_carrier_label_notset); + } else { + mCustomCarrierLabel.setSummary(mCustomCarrierLabelText); + } + } + + @Override + public int getMetricsCategory() { + return MetricsProto.MetricsEvent.CHERISH_SETTINGS; + } +}