/* * Tint Browser for Android * * Copyright (C) 2012 - to infinity and beyond J. Devauchelle and contributors. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * version 3 as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ package com.seal.ui.views; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Picture; import android.graphics.drawable.BitmapDrawable; import android.text.Html; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import com.seal.R; public class TabView extends LinearLayout { private ImageView mCloseView; private TextView mTitleView; private View mTitleBar; private ImageView mImage; private ImageView tabSelect; private int mImageWidth; private int mImageHeight; private int mFaviconSize; private String mTitle; private boolean mSelected; private OnClickListener mClickListener; public TabView(Context context) { super(context); init(context); } public TabView(Context context, AttributeSet attrs) { super(context, attrs); init(context); } public TabView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); init(context); } private void init(Context context) { LayoutInflater.from(context).inflate(R.layout.tab_view, this); mTitle = null; mSelected = false; mCloseView = (ImageView) findViewById(R.id.closetab); mTitleView = (TextView) findViewById(R.id.title); mTitleBar = findViewById(R.id.titlebar); mImage = (ImageView) findViewById(R.id.tab_view); tabSelect = (ImageView) findViewById(R.id.tab_select); float density = context.getResources().getDisplayMetrics().density; mImageWidth = (int) (200 * density); mImageHeight = (int) (120 * density); mFaviconSize = (int) (32 * density); } public boolean isClose(View v) { return v == mCloseView; } public boolean isTitle(View v) { return v == mTitleBar; } public boolean isWebView(View v) { return v == mImage; } public void setImage(Picture picture) { Bitmap bm = Bitmap.createBitmap(mImageWidth, mImageHeight, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bm); Paint p = new Paint(Paint.ANTI_ALIAS_FLAG); p.setColor(0xFFFFFFFF); canvas.drawRect(0, 0, mImageWidth, mImageHeight, p); if (picture != null) { float scale = mImageWidth / (float) picture.getWidth(); canvas.scale(scale, scale); picture.draw(canvas); } mImage.setImageBitmap(bm); } public void setImageResource(int resource) { mImage.setImageResource(resource); } public void setTitle(String title) { mTitle = title; updateTitle(); } public void setTitle(int title) { mTitle = getResources().getString(title); updateTitle(); } public void setSelected(boolean selected) { mSelected = selected; updateTitle(); } public void setFavicon(Bitmap icon) { BitmapDrawable bd; if (icon != null) { bd = new BitmapDrawable(getResources(), Bitmap.createScaledBitmap(icon, mFaviconSize, mFaviconSize, false)); } else { bd = null; } mTitleView.setCompoundDrawablesWithIntrinsicBounds(bd, null, null, null); } @Override public void setOnClickListener(OnClickListener listener) { mClickListener = listener; mTitleBar.setOnClickListener(mClickListener); mCloseView.setOnClickListener(mClickListener); if (mImage != null) { mImage.setOnClickListener(mClickListener); } } private void updateTitle() { if (mTitle != null) { if (mSelected) { mTitleView.setText(Html.fromHtml(String.format("<b>%s</b>", mTitle))); } else { mTitleView.setText(mTitle); } } else { mTitleView.setText(null); } if (mSelected) { tabSelect.setImageResource(R.drawable.item_current_selected); } else { tabSelect.setImageResource(R.drawable.item_choice_nor); } } }