| Index: chrome/android/java/src/org/chromium/chrome/browser/download/ui/OfflineGroupHeaderView.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/download/ui/OfflineGroupHeaderView.java b/chrome/android/java/src/org/chromium/chrome/browser/download/ui/OfflineGroupHeaderView.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..a9a8087c017da57a60b62efdeadb327007e8a2dc
|
| --- /dev/null
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/download/ui/OfflineGroupHeaderView.java
|
| @@ -0,0 +1,75 @@
|
| +// Copyright 2017 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +package org.chromium.chrome.browser.download.ui;
|
| +
|
| +import android.content.Context;
|
| +import android.text.format.Formatter;
|
| +import android.util.AttributeSet;
|
| +import android.view.View;
|
| +import android.widget.FrameLayout;
|
| +import android.widget.ImageView;
|
| +import android.widget.TextView;
|
| +
|
| +import org.chromium.chrome.R;
|
| +
|
| +/** A header that presents users the option to view or hide the suggested offline pages. */
|
| +public class OfflineGroupHeaderView extends FrameLayout {
|
| + private TextView mPageCountHeader;
|
| + private TextView mFileSizeView;
|
| + private ImageView mImageView;
|
| +
|
| + private DownloadItemGroup mGroup;
|
| + private DownloadHistoryAdapter mAdapter;
|
| +
|
| + public OfflineGroupHeaderView(Context context, AttributeSet attrs) {
|
| + super(context, attrs);
|
| + setOnClickListener(new View.OnClickListener() {
|
| + @Override
|
| + public void onClick(View v) {
|
| + boolean currentState = mGroup.isSuggestedOfflinePagesSectionExpanded();
|
| + mAdapter.setSuggestedPagesHeaderState(mGroup, !currentState);
|
| + mImageView.setImageResource(
|
| + currentState ? R.drawable.ic_expanded : R.drawable.ic_collapsed);
|
| + mImageView.setContentDescription(getResources().getString(currentState
|
| + ? R.string.accessibility_collapse_offline_pages
|
| + : R.string.accessibility_expand_offline_pages));
|
| + }
|
| + });
|
| + }
|
| +
|
| + @Override
|
| + protected void onFinishInflate() {
|
| + super.onFinishInflate();
|
| + mPageCountHeader = (TextView) findViewById(R.id.page_count_text);
|
| + mFileSizeView = (TextView) findViewById(R.id.filesize_view);
|
| + mImageView = (ImageView) findViewById(R.id.expand_icon);
|
| + }
|
| +
|
| + /**
|
| + * @param adapter The adapter associated with this header.
|
| + */
|
| + public void setAdapter(DownloadHistoryAdapter adapter) {
|
| + mAdapter = adapter;
|
| + }
|
| +
|
| + /**
|
| + * Associates this header with a group.
|
| + * @param group The group currently associated with this header.
|
| + */
|
| + public void setGroup(DownloadItemGroup group) {
|
| + mGroup = group;
|
| + updateTitleText(group.getNumSuggestedOfflinePages());
|
| + mImageView.setImageResource(mGroup.isSuggestedOfflinePagesSectionExpanded()
|
| + ? R.drawable.ic_collapsed
|
| + : R.drawable.ic_expanded);
|
| + }
|
| +
|
| + private void updateTitleText(int pageCount) {
|
| + mPageCountHeader.setText(getResources().getString(
|
| + R.string.download_manager_offline_header_title, pageCount));
|
| + mFileSizeView.setText(
|
| + Formatter.formatFileSize(getContext(), mGroup.getSuggestedOfflinePagesFileSize()));
|
| + }
|
| +}
|
|
|