Commit 0cc7b305 authored by Xing Liu's avatar Xing Liu Committed by Commit Bot

Download location: fix storage summary string.

The storage summary string under download home title currently uses
SpannableString that can expand to multiple lines, and can only apply
simple styles defined by Spannale.

This CL adds a view for the summary string.


Bug: 849973
Change-Id: If01d323022e0cc743540a02ba58801c664957aa4
Reviewed-on: https://chromium-review.googlesource.com/1089815Reviewed-by: default avatarDavid Trainor <dtrainor@chromium.org>
Commit-Queue: Xing Liu <xingliu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#565309}
parent c7b8b360
......@@ -3,7 +3,24 @@
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file. -->
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:chrome="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="@style/BlackHeadline1" />
\ No newline at end of file
android:paddingTop="0dp"
android:paddingBottom="0dp"
android:orientation="vertical" >
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/download_home_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="@style/BlackHeadline1" />
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/download_storage_summary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="1"
android:textAppearance="@style/BlackDisabledText2" />
</LinearLayout>
......@@ -4,16 +4,10 @@
package org.chromium.chrome.browser.download.ui;
import android.graphics.Typeface;
import android.os.AsyncTask;
import android.os.Environment;
import android.support.annotation.LayoutRes;
import android.support.graphics.drawable.VectorDrawableCompat;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.text.style.ForegroundColorSpan;
import android.text.style.RelativeSizeSpan;
import android.text.style.StyleSpan;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
......@@ -72,8 +66,8 @@ class FilterAdapter
@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
TextView labelView =
getTextViewFromResource(convertView, R.layout.download_manager_spinner_drop_down);
TextView labelView = (TextView) getViewFromResource(
convertView, R.layout.download_manager_spinner_drop_down);
labelView.setText(DownloadFilter.getStringIdForFilter(position));
int iconId = DownloadFilter.getDrawableForFilter(position);
VectorDrawableCompat iconDrawable =
......@@ -88,58 +82,39 @@ class FilterAdapter
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView labelView =
getTextViewFromResource(convertView, R.layout.download_manager_spinner);
View labelView = getViewFromResource(convertView, R.layout.download_manager_spinner);
SpannableStringBuilder titleBuilder = new SpannableStringBuilder();
CharSequence title = mManagerUi.getActivity().getResources().getText(position == 0
? R.string.menu_downloads
: DownloadFilter.getStringIdForFilter(position));
titleBuilder.append(title);
TextView titleView = labelView.findViewById(R.id.download_home_title);
titleView.setText(title);
// Set the storage summary for download location change feature.
TextView summaryView = labelView.findViewById(R.id.download_storage_summary);
if (ChromeFeatureList.isEnabled(ChromeFeatureList.DOWNLOADS_LOCATION_CHANGE)
&& mDirectoryOption != null) {
titleBuilder.append("\n");
String storageSummary =
mManagerUi.getActivity().getString(R.string.download_manager_ui_space_using,
DownloadUtils.getStringForBytes(
mManagerUi.getActivity(), mDirectoryOption.availableSpace),
DownloadUtils.getStringForBytes(
mManagerUi.getActivity(), mDirectoryOption.totalSpace));
titleBuilder.append(storageSummary);
@SuppressWarnings("deprecation")
int color = mManagerUi.getActivity().getResources().getColor(R.color.black_alpha_38);
int start = title.length() + 1;
int end = title.length() + storageSummary.length() + 1;
titleBuilder.setSpan(
new ForegroundColorSpan(color), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
titleBuilder.setSpan(
new RelativeSizeSpan(0.65f), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
titleBuilder.setSpan(
new StyleSpan(Typeface.NORMAL), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
summaryView.setText(storageSummary);
} else {
summaryView.setVisibility(View.GONE);
}
labelView.setText(titleBuilder);
if (!FeatureUtilities.isChromeModernDesignEnabled()) {
ApiCompatibilityUtils.setTextAppearance(labelView, R.style.BlackHeadline2);
ApiCompatibilityUtils.setTextAppearance(titleView, R.style.BlackHeadline2);
}
return labelView;
}
private TextView getTextViewFromResource(View convertView, @LayoutRes int resId) {
TextView labelView = null;
if (convertView instanceof TextView) {
labelView = (TextView) convertView;
} else {
labelView =
(TextView) LayoutInflater.from(mManagerUi.getActivity()).inflate(resId, null);
}
return labelView;
private View getViewFromResource(View convertView, @LayoutRes int resId) {
if (convertView != null) return convertView;
return LayoutInflater.from(mManagerUi.getActivity()).inflate(resId, null);
}
@Override
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment