@@ -0,0 +1,218 @@
|
||||
/*
|
||||
* Copyright (C) 2017 The OmniROM Project
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
package com.cherish.settings.fragments;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.ResolveInfo;
|
||||
import android.database.Cursor;
|
||||
import android.net.Uri;
|
||||
import android.os.Bundle;
|
||||
import androidx.preference.ListPreference;
|
||||
import androidx.preference.Preference;
|
||||
import androidx.preference.PreferenceCategory;
|
||||
import androidx.preference.PreferenceScreen;
|
||||
import android.provider.SearchIndexableResource;
|
||||
import android.provider.Settings;
|
||||
import android.util.Log;
|
||||
|
||||
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.SettingsPreferenceFragment;
|
||||
import com.android.settings.Utils;
|
||||
import com.android.settings.search.BaseSearchIndexProvider;
|
||||
import com.android.settingslib.search.SearchIndexable;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Arrays;
|
||||
import java.util.ArrayList;
|
||||
|
||||
@SearchIndexable
|
||||
public class OmniJawsSettings extends SettingsPreferenceFragment implements
|
||||
Preference.OnPreferenceChangeListener {
|
||||
private static final String TAG = "OmniJawsSettings";
|
||||
private static final String CATEGORY_WEATHER = "weather_category";
|
||||
private static final String WEATHER_ICON_PACK = "weather_icon_pack";
|
||||
private static final String DEFAULT_WEATHER_ICON_PACKAGE = "org.omnirom.omnijaws";
|
||||
private static final String DEFAULT_WEATHER_ICON_PREFIX = "outline";
|
||||
private static final String WEATHER_SERVICE_PACKAGE = "org.omnirom.omnijaws";
|
||||
private static final String CHRONUS_ICON_PACK_INTENT = "com.dvtonder.chronus.ICON_PACK";
|
||||
private static final String LOCK_WEATHER_TEMP_FONTS = "lock_weather_temp_fonts";
|
||||
private static final String LOCK_WEATHER_CITY_FONTS = "lock_weather_city_fonts";
|
||||
|
||||
private PreferenceCategory mWeatherCategory;
|
||||
private ListPreference mWeatherIconPack;
|
||||
ListPreference mLockTempFonts;
|
||||
ListPreference mLockCityFonts;
|
||||
|
||||
@Override
|
||||
public int getMetricsCategory() {
|
||||
return MetricsEvent.CHERISH_SETTINGS;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
addPreferencesFromResource(R.xml.omnijaws_settings);
|
||||
final PreferenceScreen prefScreen = getPreferenceScreen();
|
||||
|
||||
mWeatherCategory = (PreferenceCategory) prefScreen.findPreference(CATEGORY_WEATHER);
|
||||
if (mWeatherCategory != null) {
|
||||
prefScreen.removePreference(mWeatherCategory);
|
||||
} else {
|
||||
String settingHeaderPackage = Settings.System.getString(getContentResolver(),
|
||||
Settings.System.OMNIJAWS_WEATHER_ICON_PACK);
|
||||
if (settingHeaderPackage == null) {
|
||||
settingHeaderPackage = DEFAULT_WEATHER_ICON_PACKAGE + "." + DEFAULT_WEATHER_ICON_PREFIX;
|
||||
}
|
||||
mWeatherIconPack = (ListPreference) findPreference(WEATHER_ICON_PACK);
|
||||
|
||||
List<String> entries = new ArrayList<String>();
|
||||
List<String> values = new ArrayList<String>();
|
||||
getAvailableWeatherIconPacks(entries, values);
|
||||
mWeatherIconPack.setEntries(entries.toArray(new String[entries.size()]));
|
||||
mWeatherIconPack.setEntryValues(values.toArray(new String[values.size()]));
|
||||
|
||||
int valueIndex = mWeatherIconPack.findIndexOfValue(settingHeaderPackage);
|
||||
if (valueIndex == -1) {
|
||||
// no longer found
|
||||
settingHeaderPackage = DEFAULT_WEATHER_ICON_PACKAGE + "." + DEFAULT_WEATHER_ICON_PREFIX;
|
||||
Settings.System.putString(getContentResolver(),
|
||||
Settings.System.OMNIJAWS_WEATHER_ICON_PACK, settingHeaderPackage);
|
||||
valueIndex = mWeatherIconPack.findIndexOfValue(settingHeaderPackage);
|
||||
}
|
||||
mWeatherIconPack.setValueIndex(valueIndex >= 0 ? valueIndex : 0);
|
||||
mWeatherIconPack.setSummary(mWeatherIconPack.getEntry());
|
||||
mWeatherIconPack.setOnPreferenceChangeListener(this);
|
||||
}
|
||||
|
||||
// Lockscren Weather Temp Fonts
|
||||
mLockTempFonts = (ListPreference) findPreference(LOCK_WEATHER_TEMP_FONTS);
|
||||
mLockTempFonts.setValue(String.valueOf(Settings.System.getInt(
|
||||
getContentResolver(), Settings.System.LOCK_WEATHER_TEMP_FONTS, 27)));
|
||||
mLockTempFonts.setSummary(mLockTempFonts.getEntry());
|
||||
mLockTempFonts.setOnPreferenceChangeListener(this);
|
||||
|
||||
// Lockscren Weather City Fonts
|
||||
mLockCityFonts = (ListPreference) findPreference(LOCK_WEATHER_CITY_FONTS);
|
||||
mLockCityFonts.setValue(String.valueOf(Settings.System.getInt(
|
||||
getContentResolver(), Settings.System.LOCK_WEATHER_CITY_FONTS, 27)));
|
||||
mLockCityFonts.setSummary(mLockCityFonts.getEntry());
|
||||
mLockCityFonts.setOnPreferenceChangeListener(this);
|
||||
}
|
||||
|
||||
public boolean onPreferenceChange(Preference preference, Object objValue) {
|
||||
if (preference == mWeatherIconPack) {
|
||||
String value = (String) objValue;
|
||||
Settings.System.putString(getContentResolver(),
|
||||
Settings.System.OMNIJAWS_WEATHER_ICON_PACK, value);
|
||||
int valueIndex = mWeatherIconPack.findIndexOfValue(value);
|
||||
mWeatherIconPack.setSummary(mWeatherIconPack.getEntries()[valueIndex]);
|
||||
return true;
|
||||
} else if (preference == mLockTempFonts) {
|
||||
Settings.System.putInt(getContentResolver(), Settings.System.LOCK_WEATHER_TEMP_FONTS,
|
||||
Integer.valueOf((String) objValue));
|
||||
mLockTempFonts.setValue(String.valueOf(objValue));
|
||||
mLockTempFonts.setSummary(mLockTempFonts.getEntry());
|
||||
return true;
|
||||
} else if (preference == mLockCityFonts) {
|
||||
Settings.System.putInt(getContentResolver(), Settings.System.LOCK_WEATHER_CITY_FONTS,
|
||||
Integer.valueOf((String) objValue));
|
||||
mLockCityFonts.setValue(String.valueOf(objValue));
|
||||
mLockCityFonts.setSummary(mLockCityFonts.getEntry());
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
private void getAvailableWeatherIconPacks(List<String> entries, List<String> values) {
|
||||
Intent i = new Intent();
|
||||
PackageManager packageManager = getPackageManager();
|
||||
i.setAction("org.omnirom.WeatherIconPack");
|
||||
for (ResolveInfo r : packageManager.queryIntentActivities(i, 0)) {
|
||||
String packageName = r.activityInfo.packageName;
|
||||
if (packageName.equals(DEFAULT_WEATHER_ICON_PACKAGE)) {
|
||||
values.add(0, r.activityInfo.name);
|
||||
} else {
|
||||
values.add(r.activityInfo.name);
|
||||
}
|
||||
String label = r.activityInfo.loadLabel(getPackageManager()).toString();
|
||||
if (label == null) {
|
||||
label = r.activityInfo.packageName;
|
||||
}
|
||||
if (packageName.equals(DEFAULT_WEATHER_ICON_PACKAGE)) {
|
||||
entries.add(0, label);
|
||||
} else {
|
||||
entries.add(label);
|
||||
}
|
||||
}
|
||||
i = new Intent(Intent.ACTION_MAIN);
|
||||
i.addCategory(CHRONUS_ICON_PACK_INTENT);
|
||||
for (ResolveInfo r : packageManager.queryIntentActivities(i, 0)) {
|
||||
String packageName = r.activityInfo.packageName;
|
||||
values.add(packageName + ".weather");
|
||||
String label = r.activityInfo.loadLabel(getPackageManager()).toString();
|
||||
if (label == null) {
|
||||
label = r.activityInfo.packageName;
|
||||
}
|
||||
entries.add(label);
|
||||
}
|
||||
}
|
||||
|
||||
private boolean isOmniJawsEnabled() {
|
||||
final Uri SETTINGS_URI
|
||||
= Uri.parse("content://org.omnirom.omnijaws.provider/settings");
|
||||
|
||||
final String[] SETTINGS_PROJECTION = new String[] {
|
||||
"enabled"
|
||||
};
|
||||
|
||||
final Cursor c = getContentResolver().query(SETTINGS_URI, SETTINGS_PROJECTION,
|
||||
null, null, null);
|
||||
if (c != null) {
|
||||
int count = c.getCount();
|
||||
if (count == 1) {
|
||||
c.moveToPosition(0);
|
||||
boolean enabled = c.getInt(0) == 1;
|
||||
return enabled;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
|
||||
new BaseSearchIndexProvider() {
|
||||
|
||||
@Override
|
||||
public List<SearchIndexableResource> getXmlResourcesToIndex(
|
||||
Context context, boolean enabled) {
|
||||
final SearchIndexableResource sir = new SearchIndexableResource(context);
|
||||
sir.xmlResId = R.xml.omnijaws_settings;
|
||||
return Arrays.asList(sir);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getNonIndexableKeys(Context context) {
|
||||
ArrayList<String> result = new ArrayList<String>();
|
||||
return result;
|
||||
}
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user