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

Commit 1f8bd6f4 authored by Jason Monk's avatar Jason Monk
Browse files

Fix settings crashes on larger devices

Just remove this code until its updated for the new settings home.

Bug: 25750060
Change-Id: I8132598c4b76ef290d180af3d472686b41cb594c
parent 26a2e695
Loading
Loading
Loading
Loading
+0 −74
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2014 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="@dimen/dashboard_tile_minimum_height">

    <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">

        <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:orientation="horizontal"
                android:gravity="center_vertical"
                android:layout_weight="1">

            <ImageView
                    android:id="@+id/icon"
                    android:layout_width="@dimen/dashboard_tile_image_size"
                    android:layout_height="@dimen/dashboard_tile_image_size"
                    android:scaleType="centerInside"
                    android:layout_marginStart="@dimen/dashboard_tile_image_margin_start"
                    android:layout_marginEnd="@dimen/dashboard_tile_image_margin_end" />

            <RelativeLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content">

                <TextView android:id="@+id/title"
                          android:layout_width="wrap_content"
                          android:layout_height="wrap_content"
                          android:singleLine="true"
                          android:textAppearance="@style/TextAppearance.TileTitle"
                          android:ellipsize="marquee"
                          android:fadingEdge="horizontal" />

                <TextView android:id="@+id/status"
                          android:layout_width="wrap_content"
                          android:layout_height="wrap_content"
                          android:layout_below="@id/title"
                          android:layout_alignStart="@android:id/title"
                          android:textAppearance="@style/TextAppearance.Small"
                          android:textColor="?android:attr/textColorSecondary" />

            </RelativeLayout>

        </LinearLayout>

        <View android:id="@+id/tile_divider"
              android:layout_width="match_parent"
              android:layout_height="1dp"
              android:background="?android:attr/dividerVertical" />

    </LinearLayout>

</LinearLayout>
 No newline at end of file
+0 −74
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2014 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="@dimen/dashboard_tile_minimum_height">

    <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">

        <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:orientation="horizontal"
                android:gravity="center_vertical"
                android:layout_weight="1">

            <ImageView
                    android:id="@+id/icon"
                    android:layout_width="@dimen/dashboard_tile_image_size"
                    android:layout_height="@dimen/dashboard_tile_image_size"
                    android:scaleType="centerInside"
                    android:layout_marginStart="@dimen/dashboard_tile_image_margin_start"
                    android:layout_marginEnd="@dimen/dashboard_tile_image_margin_end" />

            <RelativeLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content">

                <TextView android:id="@+id/title"
                          android:layout_width="wrap_content"
                          android:layout_height="wrap_content"
                          android:singleLine="true"
                          android:textAppearance="@style/TextAppearance.TileTitle"
                          android:ellipsize="marquee"
                          android:fadingEdge="horizontal" />

                <TextView android:id="@+id/status"
                          android:layout_width="wrap_content"
                          android:layout_height="wrap_content"
                          android:layout_below="@id/title"
                          android:layout_alignStart="@android:id/title"
                          android:textAppearance="@style/TextAppearance.Small"
                          android:textColor="?android:attr/textColorSecondary" />

            </RelativeLayout>

        </LinearLayout>

        <View android:id="@+id/tile_divider"
              android:layout_width="match_parent"
              android:layout_height="1dp"
              android:background="?android:attr/dividerVertical" />

    </LinearLayout>

</LinearLayout>
 No newline at end of file
+0 −143
Original line number Diff line number Diff line
/*
 * Copyright (C) 2014 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.dashboard;

import android.content.Context;
import android.content.res.Resources;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;

import com.android.settings.R;

public class DashboardContainerView extends ViewGroup {

    private float mCellGapX;
    private float mCellGapY;

    private int mNumRows;
    private int mNumColumns;

    public DashboardContainerView(Context context, AttributeSet attrs) {
        super(context, attrs);

        final Resources res = context.getResources();
        mCellGapX = res.getDimension(R.dimen.dashboard_cell_gap_x);
        mCellGapY = res.getDimension(R.dimen.dashboard_cell_gap_y);
        mNumColumns = res.getInteger(R.integer.dashboard_num_columns);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        final int width = MeasureSpec.getSize(widthMeasureSpec);
        final int availableWidth = (int) (width - getPaddingLeft() - getPaddingRight() -
                (mNumColumns - 1) * mCellGapX);
        float cellWidth = (float) Math.ceil(((float) availableWidth) / mNumColumns);
        final int N = getChildCount();

        int cellHeight = 0;
        int cursor = 0;

        for (int i = 0; i < N; ++i) {
            DashboardTileView v = (DashboardTileView) getChildAt(i);
            if (v.getVisibility() == View.GONE) {
                continue;
            }

            ViewGroup.LayoutParams lp = v.getLayoutParams();
            int colSpan = v.getColumnSpan();
            lp.width = (int) ((colSpan * cellWidth) + (colSpan - 1) * mCellGapX);

            // Measure the child
            int newWidthSpec = getChildMeasureSpec(widthMeasureSpec, 0, lp.width);
            int newHeightSpec = getChildMeasureSpec(heightMeasureSpec, 0, lp.height);
            v.measure(newWidthSpec, newHeightSpec);

            // Save the cell height
            if (cellHeight <= 0) {
                cellHeight = v.getMeasuredHeight();
            }

            lp.height = cellHeight;

            cursor += colSpan;
        }

        mNumRows = (int) Math.ceil((float) cursor / mNumColumns);
        final int newHeight = (int) ((mNumRows * cellHeight) + ((mNumRows - 1) * mCellGapY)) +
                getPaddingTop() + getPaddingBottom();

        setMeasuredDimension(width, newHeight);
    }

    @Override
    protected void onLayout(boolean changed, int l, int t, int r, int b) {
        final int N = getChildCount();
        final boolean isLayoutRtl = isLayoutRtl();
        final int width = getWidth();

        int x = getPaddingStart();
        int y = getPaddingTop();
        int cursor = 0;

        for (int i = 0; i < N; ++i) {
            final DashboardTileView child = (DashboardTileView) getChildAt(i);
            final ViewGroup.LayoutParams lp = child.getLayoutParams();
            if (child.getVisibility() == GONE) {
                continue;
            }

            final int col = cursor % mNumColumns;
            final int colSpan = child.getColumnSpan();

            final int childWidth = lp.width;
            final int childHeight = lp.height;

            int row = cursor / mNumColumns;

            if (row == mNumRows - 1) {
                child.setDividerVisibility(false);
            }

            // Push the item to the next row if it can't fit on this one
            if ((col + colSpan) > mNumColumns) {
                x = getPaddingStart();
                y += childHeight + mCellGapY;
                row++;
            }

            final int childLeft = (isLayoutRtl) ? width - x - childWidth : x;
            final int childRight = childLeft + childWidth;

            final int childTop = y;
            final int childBottom = childTop + childHeight;

            // Layout the container
            child.layout(childLeft, childTop, childRight, childBottom);

            // Offset the position by the cell gap or reset the position and cursor when we
            // reach the end of the row
            cursor += child.getColumnSpan();
            if (cursor < (((row + 1) * mNumColumns))) {
                x += childWidth + mCellGapX;
            } else {
                x = getPaddingStart();
                y += childHeight + mCellGapY;
            }
        }
    }
}
+0 −94
Original line number Diff line number Diff line
/*
 * Copyright (C) 2014 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.dashboard;

import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;
import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settingslib.drawer.DashboardTile;

public class DashboardTileView extends FrameLayout implements View.OnClickListener {

    private static final int DEFAULT_COL_SPAN = 1;

    private ImageView mImageView;
    private TextView mTitleTextView;
    private TextView mStatusTextView;
    private View mDivider;

    private int mColSpan = DEFAULT_COL_SPAN;

    private DashboardTile mTile;

    public DashboardTileView(Context context) {
        this(context, null);
    }

    public DashboardTileView(Context context, AttributeSet attrs) {
        super(context, attrs);

        final View view = LayoutInflater.from(context).inflate(R.layout.dashboard_tile, this);

        mImageView = (ImageView) view.findViewById(R.id.icon);
        mTitleTextView = (TextView) view.findViewById(R.id.title);
        mStatusTextView = (TextView) view.findViewById(R.id.status);
        mDivider = view.findViewById(R.id.tile_divider);

        setOnClickListener(this);
        setBackgroundResource(R.drawable.dashboard_tile_background);
        setFocusable(true);
    }

    public TextView getTitleTextView() {
        return mTitleTextView;
    }

    public TextView getStatusTextView() {
        return mStatusTextView;
    }

    public ImageView getImageView() {
        return mImageView;
    }

    public void setTile(DashboardTile tile) {
        mTile = tile;
    }

    public void setDividerVisibility(boolean visible) {
        mDivider.setVisibility(visible ? View.VISIBLE : View.GONE);
    }

    void setColumnSpan(int span) {
        mColSpan = span;
    }

    int getColumnSpan() {
        return mColSpan;
    }

    @Override
    public void onClick(View v) {
        ((SettingsActivity) getContext()).openTile(mTile);
    }
}