blob: 46136dbc95b86f9180faca68961633bd1e08b97e [file] [log] [blame]
/*
* Copyright (C) 2010 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.browser;
import com.android.browser.UrlInputView.UrlInputListener;
import android.app.SearchManager;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable;
import android.graphics.drawable.PaintDrawable;
import android.os.Bundle;
import android.speech.RecognizerResultsIntent;
import android.view.Gravity;
import android.view.View;
import android.widget.AbsoluteLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
/**
* Base class for a title bar used by the browser.
*/
public class TitleBarBase extends LinearLayout implements UrlInputListener {
protected static final int PROGRESS_MAX = 100;
// These need to be set by the subclass.
protected ImageView mFavicon;
protected ImageView mLockIcon;
protected Drawable mGenericFavicon;
protected UiController mUiController;
protected BaseUi mBaseUi;
protected UrlInputView mUrlInput;
protected boolean mInVoiceMode;
public TitleBarBase(Context context, UiController controller, BaseUi ui) {
super(context, null);
mUiController = controller;
mBaseUi = ui;
mGenericFavicon = context.getResources().getDrawable(
R.drawable.app_web_browser_sm);
}
/* package */ void setProgress(int newProgress) {}
/* package */ void setDisplayTitle(String title) {}
/* package */ void setLock(Drawable d) {
assert mLockIcon != null;
if (null == d) {
mLockIcon.setVisibility(View.GONE);
} else {
mLockIcon.setImageDrawable(d);
mLockIcon.setVisibility(View.VISIBLE);
}
}
/* package */ void setFavicon(Bitmap icon) {
assert mFavicon != null;
Drawable[] array = new Drawable[3];
array[0] = new PaintDrawable(Color.BLACK);
PaintDrawable p = new PaintDrawable(Color.WHITE);
array[1] = p;
if (icon == null) {
array[2] = mGenericFavicon;
} else {
array[2] = new BitmapDrawable(icon);
}
LayerDrawable d = new LayerDrawable(array);
d.setLayerInset(1, 1, 1, 1, 1);
d.setLayerInset(2, 2, 2, 2, 2);
mFavicon.setImageDrawable(d);
}
/* package */ void setInVoiceMode(boolean inVoiceMode) {}
/* package */ void setIncognitoMode(boolean incognito) {}
void setTitleGravity(int gravity) {
int newTop = 0;
if (gravity != Gravity.NO_GRAVITY) {
View parent = (View) getParent();
if (parent != null) {
if (gravity == Gravity.TOP) {
newTop = parent.getScrollY();
} else if (gravity == Gravity.BOTTOM) {
newTop = parent.getScrollY() + parent.getHeight() - getHeight();
}
}
}
AbsoluteLayout.LayoutParams lp = (AbsoluteLayout.LayoutParams) getLayoutParams();
if (lp != null) {
lp.y = newTop;
setLayoutParams(lp);
}
}
public int getEmbeddedHeight() {
return getHeight();
}
// UrlInputListener implementation
/**
* callback from suggestion dropdown
* user selected a suggestion
*/
@Override
public void onAction(String text, String extra, String source) {
mUiController.getCurrentTopWebView().requestFocus();
mBaseUi.hideTitleBar();
Intent i = new Intent();
String action = null;
if (UrlInputView.VOICE.equals(source)) {
action = RecognizerResultsIntent.ACTION_VOICE_SEARCH_RESULTS;
source = null;
} else {
action = Intent.ACTION_SEARCH;
}
i.setAction(action);
i.putExtra(SearchManager.QUERY, text);
if (extra != null) {
i.putExtra(SearchManager.EXTRA_DATA_KEY, extra);
}
if (source != null) {
Bundle appData = new Bundle();
appData.putString(com.android.common.Search.SOURCE, source);
i.putExtra(SearchManager.APP_DATA, appData);
}
mUiController.handleNewIntent(i);
setDisplayTitle(text);
}
@Override
public void onDismiss() {
final Tab currentTab = mBaseUi.getActiveTab();
mBaseUi.hideTitleBar();
post(new Runnable() {
public void run() {
clearFocus();
if ((currentTab != null) && !mInVoiceMode) {
setDisplayTitle(currentTab.getUrl());
}
}
});
}
/**
* callback from the suggestion dropdown
* copy text to input field and stay in edit mode
*/
@Override
public void onCopySuggestion(String text) {
mUrlInput.setText(text, true);
if (text != null) {
mUrlInput.setSelection(text.length());
}
}
public void setCurrentUrlIsBookmark(boolean isBookmark) {
}
}