Loading AndroidManifest.xml +6 −0 Original line number Diff line number Diff line Loading @@ -1777,6 +1777,12 @@ </intent-filter> </activity> <activity android:name=".cyanogenmod.ChangeLog" android:label="@string/changelog_title"> <intent-filter> <action android:name="android.intent.action.MAIN"/> </intent-filter> </activity> <receiver android:name=".widget.SettingsAppWidgetProvider" android:label="@string/gadget_title" android:exported="false" Loading res/values/strings.xml +12 −0 Original line number Diff line number Diff line Loading @@ -4992,5 +4992,17 @@ <!-- Themes settings --> <string name="themes_settings_title">Themes</string> <!-- Change Log strings --> <string name="changelog_title">View changelog</string> <string name="changelog_dialog">Changelog</string> <string name="changelog_loading">Loading changelog...</string> <string name="changelog_error">Unable to load changelog</string> <string name="changelog_unknown">Unknown</string> <string name="changelog_version">Version</string> <!-- CM Updater --> <string name="cmupdate_settings_title">CyanogenMod updates</string> <string name="cmupdate_settings_summary">Check for, view or install available updates</string> <!-- **** CYANOGENMOD ADDITIONS END **** --> </resources> res/xml/device_info_settings.xml +19 −3 Original line number Diff line number Diff line Loading @@ -18,12 +18,11 @@ android:title="@string/about_settings"> <!-- System update settings - launches activity --> <PreferenceScreen android:key="system_update_settings" <!-- <PreferenceScreen android:key="system_update_settings" android:title="@string/system_update_settings_list_item_title" android:summary="@string/system_update_settings_list_item_summary"> <intent android:action="android.settings.SYSTEM_UPDATE_SETTINGS" /> </PreferenceScreen> </PreferenceScreen> --> <PreferenceScreen android:key="additional_system_update_settings" android:title="@string/additional_system_update_settings_list_item_title"> Loading @@ -41,6 +40,15 @@ android:targetClass="com.android.settings.deviceinfo.Status" /> </PreferenceScreen> <!-- CyanogenMod Updates --> <PreferenceScreen android:key="cm_updates" android:title="@string/cmupdate_settings_title" android:summary="@string/cmupdate_settings_summary"> <intent android:action="android.intent.action.MAIN" android:targetPackage="com.cyanogenmod.updater" android:targetClass="com.cyanogenmod.updater.UpdatesSettings" /> </PreferenceScreen> <!-- Anonymous statistics - (CMStats) --> <PreferenceScreen android:key="cmstats" Loading @@ -49,6 +57,14 @@ android:fragment="com.android.settings.cmstats.AnonymousStats" > </PreferenceScreen> <!-- Change Log --> <PreferenceScreen android:key="changelog" android:title="@string/changelog_title"> <intent android:action="android.intent.action.MAIN" android:targetPackage="com.android.settings" android:targetClass="com.android.settings.cyanogenmod.ChangeLog" /> </PreferenceScreen> <!-- Legal Information --> <PreferenceScreen android:key="container" Loading src/com/android/settings/DeviceInfoSettings.java +28 −3 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.settings; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager.NameNotFoundException; import android.os.Build; import android.os.Bundle; import android.os.SELinux; Loading @@ -32,10 +33,8 @@ import android.util.Log; import android.widget.Toast; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.regex.Matcher; import java.util.regex.Pattern; Loading Loading @@ -71,9 +70,9 @@ public class DeviceInfoSettings extends RestrictedSettingsFragment { private static final String KEY_MOD_BUILD_DATE = "build_date"; private static final String KEY_DEVICE_CPU = "device_cpu"; private static final String KEY_DEVICE_MEMORY = "device_memory"; private static final String KEY_CM_UPDATES = "cm_updates"; static final int TAPS_TO_BE_A_DEVELOPER = 7; long[] mHits = new long[3]; int mDevHitCountdown; Toast mDevHitToast; Loading Loading @@ -102,6 +101,7 @@ public class DeviceInfoSettings extends RestrictedSettingsFragment { findPreference(KEY_BUILD_NUMBER).setEnabled(true); findPreference(KEY_KERNEL_VERSION).setSummary(getFormattedKernelVersion()); setValueSummary(KEY_MOD_VERSION, "ro.cm.version"); findPreference(KEY_MOD_VERSION).setEnabled(true); setValueSummary(KEY_MOD_BUILD_DATE, "ro.build.date"); if (!SELinux.isSELinuxEnabled()) { Loading @@ -119,6 +119,13 @@ public class DeviceInfoSettings extends RestrictedSettingsFragment { String cpuInfo = getCPUInfo(); String memInfo = getMemInfo(); // Only the owner should see the Updater settings, if it exists if (UserHandle.myUserId() == UserHandle.USER_OWNER) { removePreferenceIfPackageNotInstalled(findPreference(KEY_CM_UPDATES)); } else { getPreferenceScreen().removePreference(findPreference(KEY_CM_UPDATES)); } if (cpuInfo != null) { setStringSummary(KEY_DEVICE_CPU, cpuInfo); } else { Loading Loading @@ -406,4 +413,22 @@ public class DeviceInfoSettings extends RestrictedSettingsFragment { return result; } private boolean removePreferenceIfPackageNotInstalled(Preference preference) { String intentUri=((PreferenceScreen) preference).getIntent().toUri(1); Pattern pattern = Pattern.compile("component=([^/]+)/"); Matcher matcher = pattern.matcher(intentUri); String packageName=matcher.find()?matcher.group(1):null; if(packageName != null) { try { getPackageManager().getPackageInfo(packageName, 0); } catch (NameNotFoundException e) { Log.e(LOG_TAG,"package "+packageName+" not installed, hiding preference."); getPreferenceScreen().removePreference(preference); return true; } } return false; } } src/com/android/settings/cyanogenmod/ChangeLog.java 0 → 100644 +97 −0 Original line number Diff line number Diff line /* * Copyright (C) 2012 The CyanogenMod Project * * 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.android.settings.cyanogenmod; import com.android.settings.R; import android.os.Bundle; import android.text.TextUtils; import android.util.Config; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.Toast; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.io.InputStreamReader; import com.android.internal.app.AlertActivity; import com.android.internal.app.AlertController; public class ChangeLog extends AlertActivity { private static final String CHANGELOG_PATH = "/system/etc/CHANGELOG-CM.txt"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); InputStreamReader inputReader = null; StringBuilder data = null; try { data = new StringBuilder(2048); char tmp[] = new char[2048]; int numRead; inputReader = new FileReader(CHANGELOG_PATH); while ((numRead = inputReader.read(tmp)) >= 0) { data.append(tmp, 0, numRead); } } catch (IOException e) { showErrorAndFinish(); return; } finally { try { if (inputReader != null) { inputReader.close(); } } catch (IOException e) { } } if (TextUtils.isEmpty(data)) { showErrorAndFinish(); return; } WebView webView = new WebView(this); // Begin the loading. This will be done in a separate thread in WebView. webView.loadDataWithBaseURL(null, data.toString(), "text/plain", "utf-8", null); webView.setWebViewClient(new WebViewClient() { @Override public void onPageFinished(WebView view, String url) { // Change from 'Loading...' to the real title mAlert.setTitle(getString(R.string.changelog_dialog)); } }); final AlertController.AlertParams p = mAlertParams; p.mTitle = getString(R.string.changelog_loading); p.mView = webView; p.mForceInverseBackground = true; setupAlert(); } private void showErrorAndFinish() { Toast.makeText(this, R.string.changelog_error, Toast.LENGTH_LONG) .show(); finish(); } } Loading
AndroidManifest.xml +6 −0 Original line number Diff line number Diff line Loading @@ -1777,6 +1777,12 @@ </intent-filter> </activity> <activity android:name=".cyanogenmod.ChangeLog" android:label="@string/changelog_title"> <intent-filter> <action android:name="android.intent.action.MAIN"/> </intent-filter> </activity> <receiver android:name=".widget.SettingsAppWidgetProvider" android:label="@string/gadget_title" android:exported="false" Loading
res/values/strings.xml +12 −0 Original line number Diff line number Diff line Loading @@ -4992,5 +4992,17 @@ <!-- Themes settings --> <string name="themes_settings_title">Themes</string> <!-- Change Log strings --> <string name="changelog_title">View changelog</string> <string name="changelog_dialog">Changelog</string> <string name="changelog_loading">Loading changelog...</string> <string name="changelog_error">Unable to load changelog</string> <string name="changelog_unknown">Unknown</string> <string name="changelog_version">Version</string> <!-- CM Updater --> <string name="cmupdate_settings_title">CyanogenMod updates</string> <string name="cmupdate_settings_summary">Check for, view or install available updates</string> <!-- **** CYANOGENMOD ADDITIONS END **** --> </resources>
res/xml/device_info_settings.xml +19 −3 Original line number Diff line number Diff line Loading @@ -18,12 +18,11 @@ android:title="@string/about_settings"> <!-- System update settings - launches activity --> <PreferenceScreen android:key="system_update_settings" <!-- <PreferenceScreen android:key="system_update_settings" android:title="@string/system_update_settings_list_item_title" android:summary="@string/system_update_settings_list_item_summary"> <intent android:action="android.settings.SYSTEM_UPDATE_SETTINGS" /> </PreferenceScreen> </PreferenceScreen> --> <PreferenceScreen android:key="additional_system_update_settings" android:title="@string/additional_system_update_settings_list_item_title"> Loading @@ -41,6 +40,15 @@ android:targetClass="com.android.settings.deviceinfo.Status" /> </PreferenceScreen> <!-- CyanogenMod Updates --> <PreferenceScreen android:key="cm_updates" android:title="@string/cmupdate_settings_title" android:summary="@string/cmupdate_settings_summary"> <intent android:action="android.intent.action.MAIN" android:targetPackage="com.cyanogenmod.updater" android:targetClass="com.cyanogenmod.updater.UpdatesSettings" /> </PreferenceScreen> <!-- Anonymous statistics - (CMStats) --> <PreferenceScreen android:key="cmstats" Loading @@ -49,6 +57,14 @@ android:fragment="com.android.settings.cmstats.AnonymousStats" > </PreferenceScreen> <!-- Change Log --> <PreferenceScreen android:key="changelog" android:title="@string/changelog_title"> <intent android:action="android.intent.action.MAIN" android:targetPackage="com.android.settings" android:targetClass="com.android.settings.cyanogenmod.ChangeLog" /> </PreferenceScreen> <!-- Legal Information --> <PreferenceScreen android:key="container" Loading
src/com/android/settings/DeviceInfoSettings.java +28 −3 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.settings; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager.NameNotFoundException; import android.os.Build; import android.os.Bundle; import android.os.SELinux; Loading @@ -32,10 +33,8 @@ import android.util.Log; import android.widget.Toast; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.regex.Matcher; import java.util.regex.Pattern; Loading Loading @@ -71,9 +70,9 @@ public class DeviceInfoSettings extends RestrictedSettingsFragment { private static final String KEY_MOD_BUILD_DATE = "build_date"; private static final String KEY_DEVICE_CPU = "device_cpu"; private static final String KEY_DEVICE_MEMORY = "device_memory"; private static final String KEY_CM_UPDATES = "cm_updates"; static final int TAPS_TO_BE_A_DEVELOPER = 7; long[] mHits = new long[3]; int mDevHitCountdown; Toast mDevHitToast; Loading Loading @@ -102,6 +101,7 @@ public class DeviceInfoSettings extends RestrictedSettingsFragment { findPreference(KEY_BUILD_NUMBER).setEnabled(true); findPreference(KEY_KERNEL_VERSION).setSummary(getFormattedKernelVersion()); setValueSummary(KEY_MOD_VERSION, "ro.cm.version"); findPreference(KEY_MOD_VERSION).setEnabled(true); setValueSummary(KEY_MOD_BUILD_DATE, "ro.build.date"); if (!SELinux.isSELinuxEnabled()) { Loading @@ -119,6 +119,13 @@ public class DeviceInfoSettings extends RestrictedSettingsFragment { String cpuInfo = getCPUInfo(); String memInfo = getMemInfo(); // Only the owner should see the Updater settings, if it exists if (UserHandle.myUserId() == UserHandle.USER_OWNER) { removePreferenceIfPackageNotInstalled(findPreference(KEY_CM_UPDATES)); } else { getPreferenceScreen().removePreference(findPreference(KEY_CM_UPDATES)); } if (cpuInfo != null) { setStringSummary(KEY_DEVICE_CPU, cpuInfo); } else { Loading Loading @@ -406,4 +413,22 @@ public class DeviceInfoSettings extends RestrictedSettingsFragment { return result; } private boolean removePreferenceIfPackageNotInstalled(Preference preference) { String intentUri=((PreferenceScreen) preference).getIntent().toUri(1); Pattern pattern = Pattern.compile("component=([^/]+)/"); Matcher matcher = pattern.matcher(intentUri); String packageName=matcher.find()?matcher.group(1):null; if(packageName != null) { try { getPackageManager().getPackageInfo(packageName, 0); } catch (NameNotFoundException e) { Log.e(LOG_TAG,"package "+packageName+" not installed, hiding preference."); getPreferenceScreen().removePreference(preference); return true; } } return false; } }
src/com/android/settings/cyanogenmod/ChangeLog.java 0 → 100644 +97 −0 Original line number Diff line number Diff line /* * Copyright (C) 2012 The CyanogenMod Project * * 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.android.settings.cyanogenmod; import com.android.settings.R; import android.os.Bundle; import android.text.TextUtils; import android.util.Config; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.Toast; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.io.InputStreamReader; import com.android.internal.app.AlertActivity; import com.android.internal.app.AlertController; public class ChangeLog extends AlertActivity { private static final String CHANGELOG_PATH = "/system/etc/CHANGELOG-CM.txt"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); InputStreamReader inputReader = null; StringBuilder data = null; try { data = new StringBuilder(2048); char tmp[] = new char[2048]; int numRead; inputReader = new FileReader(CHANGELOG_PATH); while ((numRead = inputReader.read(tmp)) >= 0) { data.append(tmp, 0, numRead); } } catch (IOException e) { showErrorAndFinish(); return; } finally { try { if (inputReader != null) { inputReader.close(); } } catch (IOException e) { } } if (TextUtils.isEmpty(data)) { showErrorAndFinish(); return; } WebView webView = new WebView(this); // Begin the loading. This will be done in a separate thread in WebView. webView.loadDataWithBaseURL(null, data.toString(), "text/plain", "utf-8", null); webView.setWebViewClient(new WebViewClient() { @Override public void onPageFinished(WebView view, String url) { // Change from 'Loading...' to the real title mAlert.setTitle(getString(R.string.changelog_dialog)); } }); final AlertController.AlertParams p = mAlertParams; p.mTitle = getString(R.string.changelog_loading); p.mView = webView; p.mForceInverseBackground = true; setupAlert(); } private void showErrorAndFinish() { Toast.makeText(this, R.string.changelog_error, Toast.LENGTH_LONG) .show(); finish(); } }