blob: c79dafcabce679ee0a75165d13edbbbdcb092907 [file] [log] [blame]
Michael Kolb4bd767d2011-05-27 11:33:55 -07001/*
2 * Copyright (C) 2011 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
5 * use this file except in compliance with the License. You may obtain a copy of
6 * the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13 * License for the specific language governing permissions and limitations under
14 * the License.
15 */
16
Bijan Amirzada41242f22014-03-21 12:12:18 -070017package com.android.browser;
Michael Kolb4bd767d2011-05-27 11:33:55 -070018
19import android.content.Context;
Michael Kolb9ef259a2011-07-12 15:33:08 -070020import android.graphics.Bitmap;
Michael Kolb4bd767d2011-05-27 11:33:55 -070021import android.util.AttributeSet;
22import android.view.LayoutInflater;
23import android.view.View;
Michael Kolbc3af0672011-08-09 10:24:41 -070024import android.view.ViewGroup;
Bijan Amirzada9b1e9882014-02-26 17:15:46 -080025import org.codeaurora.swe.WebView;
26
Bijan Amirzada41242f22014-03-21 12:12:18 -070027import com.android.browser.R;
Bijan Amirzada9b1e9882014-02-26 17:15:46 -080028
Michael Kolb4bd767d2011-05-27 11:33:55 -070029import android.widget.ImageView;
30import android.widget.LinearLayout;
31import android.widget.TextView;
32
33public class NavTabView extends LinearLayout {
34
Michael Kolbc3af0672011-08-09 10:24:41 -070035 private ViewGroup mContent;
Michael Kolb0f91e032011-06-01 09:54:20 -070036 private Tab mTab;
Michael Kolb9829b432011-06-04 13:29:00 -070037 private ImageView mClose;
Michael Kolb0f91e032011-06-01 09:54:20 -070038 private TextView mTitle;
39 private View mTitleBar;
John Reck8ee633f2011-08-09 16:00:35 -070040 ImageView mImage;
Michael Kolb0f91e032011-06-01 09:54:20 -070041 private OnClickListener mClickListener;
42 private boolean mHighlighted;
Michael Kolb4bd767d2011-05-27 11:33:55 -070043
44 public NavTabView(Context context, AttributeSet attrs, int defStyle) {
45 super(context, attrs, defStyle);
46 init();
47 }
48
49 public NavTabView(Context context, AttributeSet attrs) {
50 super(context, attrs);
51 init();
52 }
53
54 public NavTabView(Context context) {
55 super(context);
56 init();
57 }
58
59 private void init() {
Bijan Amirzada9b1e9882014-02-26 17:15:46 -080060 LayoutInflater.from(getContext()).inflate(R.layout.nav_tab_view, this);
Enrico Rosd6efa972014-12-02 19:49:59 -080061 mContent = (ViewGroup) findViewById(R.id.nav_tab);
Michael Kolb9829b432011-06-04 13:29:00 -070062 mClose = (ImageView) findViewById(R.id.closetab);
Michael Kolb4bd767d2011-05-27 11:33:55 -070063 mTitle = (TextView) findViewById(R.id.title);
Michael Kolb4bd767d2011-05-27 11:33:55 -070064 mTitleBar = findViewById(R.id.titlebar);
Tarun Nainani87a86682015-02-05 11:47:35 -080065 mImage = (ImageView) findViewById(R.id.tab_preview);
Michael Kolb4bd767d2011-05-27 11:33:55 -070066 }
67
68 protected boolean isClose(View v) {
69 return v == mClose;
70 }
71
72 protected boolean isTitle(View v) {
73 return v == mTitleBar;
74 }
75
Michael Kolb4bd767d2011-05-27 11:33:55 -070076 protected boolean isWebView(View v) {
Michael Kolb9ef259a2011-07-12 15:33:08 -070077 return v == mImage;
Michael Kolb4bd767d2011-05-27 11:33:55 -070078 }
79
Michael Kolb4bd767d2011-05-27 11:33:55 -070080 private void setTitle() {
81 if (mTab == null) return;
82 if (mHighlighted) {
83 mTitle.setText(mTab.getUrl());
84 } else {
85 String txt = mTab.getTitle();
Michael Kolb9829b432011-06-04 13:29:00 -070086 if (txt == null) {
87 txt = mTab.getUrl();
88 }
Michael Kolb4bd767d2011-05-27 11:33:55 -070089 mTitle.setText(txt);
90 }
John Reck502a3532011-08-16 14:21:46 -070091 if (mTab.isSnapshot()) {
Enrico Rosd6efa972014-12-02 19:49:59 -080092 setTitleIcon(R.drawable.ic_suggest_history_normal);
Ze G Riande2a675c22015-06-03 11:15:24 -070093 } else if (mTab.isDistilled()) {
94 setTitleIcon(R.drawable.ic_deco_reader_mode_normal);
John Reck502a3532011-08-16 14:21:46 -070095 } else if (mTab.isPrivateBrowsingEnabled()) {
Enrico Rosd6efa972014-12-02 19:49:59 -080096 mContent.setBackgroundResource(R.drawable.nav_tab_title_incognito);
97 mTitle.setTextColor(getResources().getColor(R.color.white));
98 mClose.setImageResource(R.drawable.ic_action_close_inverted);
99 setTitleIcon(R.drawable.ic_deco_incognito_normal);
John Reck502a3532011-08-16 14:21:46 -0700100 } else {
101 setTitleIcon(0);
102 }
103 }
104
105 private void setTitleIcon(int id) {
106 if (id == 0) {
107 mTitle.setPadding(mTitle.getCompoundDrawablePadding(), 0, 0, 0);
108 } else {
109 mTitle.setPadding(0, 0, 0, 0);
110 }
111 mTitle.setCompoundDrawablesWithIntrinsicBounds(id, 0, 0, 0);
Michael Kolb4bd767d2011-05-27 11:33:55 -0700112 }
113
114 protected boolean isHighlighted() {
115 return mHighlighted;
116 }
117
Michael Kolbc3af0672011-08-09 10:24:41 -0700118 protected void setWebView(Tab tab) {
Michael Kolb4bd767d2011-05-27 11:33:55 -0700119 mTab = tab;
Michael Kolb4bd767d2011-05-27 11:33:55 -0700120 setTitle();
Michael Kolb9ef259a2011-07-12 15:33:08 -0700121 Bitmap image = tab.getScreenshot();
122 if (image != null) {
123 mImage.setImageBitmap(image);
Michael Kolba9a59672011-11-17 12:50:10 -0800124 if (tab != null) {
125 mImage.setContentDescription(tab.getTitle());
126 }
John Reckd8c74522011-06-14 08:45:00 -0700127 }
Michael Kolb4bd767d2011-05-27 11:33:55 -0700128 }
129
Michael Kolb4bd767d2011-05-27 11:33:55 -0700130 @Override
131 public void setOnClickListener(OnClickListener listener) {
132 mClickListener = listener;
133 mTitleBar.setOnClickListener(mClickListener);
Michael Kolb4bd767d2011-05-27 11:33:55 -0700134 mClose.setOnClickListener(mClickListener);
Michael Kolb9ef259a2011-07-12 15:33:08 -0700135 if (mImage != null) {
136 mImage.setOnClickListener(mClickListener);
Michael Kolb4bd767d2011-05-27 11:33:55 -0700137 }
138 }
139
Michael Kolb4bd767d2011-05-27 11:33:55 -0700140}