blob: ebc16087b21d01bb84df9a786ba252725f89d625 [file] [log] [blame]
// Copyright 2019 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.touchless;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import org.chromium.base.Callback;
import org.chromium.chrome.touchless.R;
/**
* View for the button to open the last tab.
*/
// TODO(crbug.com/948858): Add render tests for this view.
public class OpenLastTabView extends FrameLayout {
private LinearLayout mPlaceholder;
private LinearLayout mLastTabView;
private ImageView mIconView;
private TextView mTitleText;
private TextView mTimestampText;
private Callback<View> mAsyncFocusDelegate;
public OpenLastTabView(Context context, AttributeSet attrs) {
super(context, attrs);
LayoutInflater.from(context).inflate(R.layout.open_last_tab_button, this);
}
@Override
protected void onFinishInflate() {
super.onFinishInflate();
mPlaceholder = findViewById(R.id.placeholder);
mLastTabView = findViewById(R.id.open_last_tab);
mIconView = findViewById(R.id.favicon);
mTitleText = findViewById(R.id.title);
mTimestampText = findViewById(R.id.timestamp);
}
void setLoadSuccess(boolean loadSuccess) {
this.setVisibility(View.VISIBLE);
if (loadSuccess) {
mPlaceholder.setVisibility(View.GONE);
mLastTabView.setVisibility(View.VISIBLE);
} else {
mLastTabView.setVisibility(View.GONE);
mPlaceholder.setVisibility(View.VISIBLE);
}
}
void setOpenLastTabOnClickListener(OnClickListener onClickListener) {
mLastTabView.setOnClickListener(onClickListener);
}
void setFavicon(Bitmap favicon) {
mIconView.setImageDrawable(new BitmapDrawable(getContext().getResources(), favicon));
}
void setTitle(String title) {
mTitleText.setText(title);
}
void setTimestamp(String timestamp) {
mTimestampText.setText(timestamp);
}
void setOnFocusCallback(Runnable callback) {
mLastTabView.setOnFocusChangeListener((View view, boolean hasFocus) -> {
if (hasFocus) {
callback.run();
}
});
}
void triggerRequestFocus() {
if (mAsyncFocusDelegate != null) {
mAsyncFocusDelegate.onResult(mLastTabView);
}
}
void setAsyncFocusDelegate(Callback<View> asyncFocusDelegate) {
mAsyncFocusDelegate = asyncFocusDelegate;
}
}