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

Commit d937fd31 authored by DvTonder's avatar DvTonder Committed by Ricardo Cerqueira
Browse files

Settings: Add Updater and Changelog

Change-Id: I8cf09962d9ba667bcdba78d7214fd6b5bb0feedc

Conflicts:
	AndroidManifest.xml
	res/values/strings.xml
parent 5801049a
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -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"
+12 −0
Original line number Diff line number Diff line
@@ -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>
+19 −3
Original line number Diff line number Diff line
@@ -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">
@@ -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"
@@ -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"
+28 −3
Original line number Diff line number Diff line
@@ -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;
@@ -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;

@@ -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;
@@ -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()) {
@@ -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 {
@@ -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;
    }
}
+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();
    }

}