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

Commit 1e219778 authored by Daniel Sandler's avatar Daniel Sandler
Browse files

Pulling screen savers for now. DO NOT MERGE.

Bug: 5689684
Change-Id: Ida6f23484c91d1cde539fc4a64e467970fa1fdb3
parent a6ff69ed
Loading
Loading
Loading
Loading

res/layout/dream_picker_row.xml

deleted100644 → 0
+0 −38
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!--
/*
** Copyright 2011, The Android Open Source 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.
*/
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="?android:attr/listPreferredItemHeight"
    android:paddingLeft="2dip"
    android:gravity="center_vertical">

    <ImageView android:id="@+id/icon"
        android:layout_width="@android:dimen/app_icon_size"
        android:layout_height="@android:dimen/app_icon_size"
        android:scaleType="fitCenter" />

    <TextView android:id="@+id/title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:paddingLeft="6dip" />
        
</LinearLayout>
+0 −5
Original line number Diff line number Diff line
@@ -40,11 +40,6 @@
                android:entries="@array/screen_timeout_entries"
                android:entryValues="@array/screen_timeout_values" />

        <PreferenceScreen
                android:key="screensaver"
                android:title="@string/screensaver_settings_title"
                android:fragment="com.android.settings.DreamSettings" />

        <ListPreference
                android:key="font_size"
                android:title="@string/title_font_size"

res/xml/dream_settings.xml

deleted100644 → 0
+0 −39
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2010 The Android Open Source 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.
-->

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
        android:title="@string/screensaver_settings_title"
        xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">

    <com.android.settings.DreamComponentPreference
            android:key="screensaver_component"
            android:title="@string/screensaver_component_title"
            android:persistent="false"
            />

    <com.android.settings.DreamTesterPreference
            android:key="test"
            android:title="@string/screensaver_test"
            android:persistent="false"
            />

    <CheckBoxPreference
            android:key="activate_on_dock"
            android:persistent="false"
            android:title="@string/screensaver_activate_on_dock_title"
            android:defaultValue="true" />

</PreferenceScreen>
+0 −14
Original line number Diff line number Diff line
@@ -39,8 +39,6 @@ import android.util.Log;
import android.view.IWindowManager;
import android.view.Surface;

import com.android.settings.DreamSettings;

import java.util.ArrayList;

public class DisplaySettings extends SettingsPreferenceFragment implements
@@ -54,7 +52,6 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
    private static final String KEY_ACCELEROMETER = "accelerometer";
    private static final String KEY_FONT_SIZE = "font_size";
    private static final String KEY_NOTIFICATION_PULSE = "notification_pulse";
    private static final String KEY_SCREEN_SAVER = "screensaver";

    private CheckBoxPreference mAccelerometer;
    private ListPreference mFontSizePref;
@@ -63,7 +60,6 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
    private final Configuration mCurConfig = new Configuration();
    
    private ListPreference mScreenTimeoutPreference;
    private Preference mScreenSaverPreference;

    private ContentObserver mAccelerometerRotationObserver = new ContentObserver(new Handler()) {
        @Override
@@ -82,8 +78,6 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
        mAccelerometer = (CheckBoxPreference) findPreference(KEY_ACCELEROMETER);
        mAccelerometer.setPersistent(false);

        mScreenSaverPreference = findPreference(KEY_SCREEN_SAVER);

        mScreenTimeoutPreference = (ListPreference) findPreference(KEY_SCREEN_TIMEOUT);
        final long currentTimeout = Settings.System.getLong(resolver, SCREEN_OFF_TIMEOUT,
                FALLBACK_SCREEN_TIMEOUT_VALUE);
@@ -219,14 +213,6 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
    private void updateState() {
        updateAccelerometerRotationCheckbox();
        readFontSizePreference(mFontSizePref);
        updateScreenSaverSummary();
    }

    private void updateScreenSaverSummary() {
        mScreenSaverPreference.setSummary(
            DreamSettings.isScreenSaverEnabled(mScreenSaverPreference.getContext())
                ? R.string.screensaver_settings_summary_on
                : R.string.screensaver_settings_summary_off);
    }

    private void updateAccelerometerRotationCheckbox() {
+0 −177
Original line number Diff line number Diff line
/*
 * Copyright (C) 2011 The Android Open Source 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;

import static android.provider.Settings.Secure.SCREENSAVER_COMPONENT;

import android.app.AlertDialog;
import android.content.Context;
import android.content.ComponentName;
import android.content.ContentResolver;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.res.Resources;
import android.preference.Preference;
import android.provider.Settings;
import android.util.AttributeSet;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListAdapter;
import android.widget.TextView;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class DreamComponentPreference extends Preference {
    private static final String TAG = "DreamComponentPreference";

    private static final boolean SHOW_DOCK_APPS_TOO = true;
    
    private final PackageManager pm;
    private final ContentResolver resolver;

    public DreamComponentPreference(Context context, AttributeSet attrs) {
        super(context, attrs);
        pm = getContext().getPackageManager();
        resolver = getContext().getContentResolver();

        refreshFromSettings();
    }

    private void refreshFromSettings() {
        String component = Settings.Secure.getString(resolver, SCREENSAVER_COMPONENT);
        if (component == null) {
            component = getContext().getResources().getString(
                com.android.internal.R.string.config_defaultDreamComponent);
        }
        if (component != null) {
            ComponentName cn = ComponentName.unflattenFromString(component);
            try {
                setSummary(pm.getActivityInfo(cn, 0).loadLabel(pm));
            } catch (PackageManager.NameNotFoundException ex) {
                setSummary("(unknown)");
            }
        }
    }

    final static Comparator<ResolveInfo> sResolveInfoComparator = new Comparator<ResolveInfo>() {
        @Override
        public int compare(ResolveInfo a, ResolveInfo b) {
            int cmp = a.activityInfo.applicationInfo.packageName.compareTo(
                    b.activityInfo.applicationInfo.packageName);
            if (cmp == 0) {
                cmp = a.activityInfo.name.compareTo(b.activityInfo.name);
            }
            return cmp;
        }
    };

    public class DreamListAdapter extends BaseAdapter implements ListAdapter {
        private ArrayList<ResolveInfo> results;
        private final LayoutInflater inflater;

        public DreamListAdapter(Context context) {
            Intent choosy = new Intent(Intent.ACTION_MAIN)
                        .addCategory("android.intent.category.DREAM");

            inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

            results = new ArrayList<ResolveInfo>(pm.queryIntentActivities(choosy, 0));

            // Group by package
            Collections.sort(results, sResolveInfoComparator);

            if (SHOW_DOCK_APPS_TOO) {
                choosy = new Intent(Intent.ACTION_MAIN)
                            .addCategory(Intent.CATEGORY_DESK_DOCK);

                List<ResolveInfo> dockApps = pm.queryIntentActivities(choosy, 0);
                for (ResolveInfo app : dockApps) {
                    // do not insert duplicate packages
                    int pos = Collections.binarySearch(results, app, sResolveInfoComparator);
                    if (pos < 0) {
                        results.add(-1-pos, app);
                    }
                }
            }
        }

        @Override
        public int getCount() {
            return results.size();
        }

        @Override
        public Object getItem(int position) {
            return results.get(position);
        }

        @Override
        public long getItemId (int position) {
            return (long) position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View row = (convertView != null) 
                ? convertView
                : inflater.inflate(R.layout.dream_picker_row, parent, false);
            ResolveInfo ri = results.get(position);
            ((TextView)row.findViewById(R.id.title)).setText(ri.loadLabel(pm));
            ((ImageView)row.findViewById(R.id.icon)).setImageDrawable(ri.loadIcon(pm));
            return row;
        }
    }

    @Override
    protected void onClick() {
        final DreamListAdapter list = new DreamListAdapter(getContext());
        AlertDialog alert = new AlertDialog.Builder(getContext())
            .setAdapter(
                list,
                new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        ResolveInfo ri = (ResolveInfo)list.getItem(which);
                        ActivityInfo act = ri.activityInfo;
                        ComponentName cn = new ComponentName(
                            act.applicationInfo.packageName,
                            act.name);
                        Intent intent = new Intent(Intent.ACTION_MAIN).setComponent(cn);
                        
                        setSummary(ri.loadLabel(pm));
                        //getContext().startActivity(intent);
                        
                        Settings.Secure.putString(resolver, SCREENSAVER_COMPONENT, cn.flattenToString());
                    }
                })
            .create();
        alert.show();
    }
}
Loading