package com.hawkbrowser.app; import java.util.ArrayList; import java.util.List; import com.hawkbrowser.R; import com.hawkbrowser.shell.HawkBrowser; import android.app.Activity; import android.content.Intent; import android.content.res.Resources; import android.os.Bundle; import android.text.format.Time; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ExpandableListView; import android.widget.ListView; import android.widget.TabHost; import android.widget.TabHost.TabSpec; import android.widget.TabWidget; import android.widget.TextView; public class BookmarkActivity extends Activity { private final String BOOKMARK_TAB_ID = "bookmark"; private final String HISTORY_TAB_ID = "history"; private TabHost mTabHost; private TabWidget mTabWidget; private Bookmark mBookmark; private boolean mIsHistoryLoaded = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.bookmark_history); initLayout(); setupListeners(); loadBookmark(); } private void initLayout() { mTabHost = (TabHost) findViewById(android.R.id.tabhost); mTabHost.setup(); mTabWidget = mTabHost.getTabWidget(); TabSpec tabBookmark = mTabHost.newTabSpec(BOOKMARK_TAB_ID); tabBookmark.setContent(R.id.bookmarkhistory_bookmark); Resources rc = getResources(); View vb = getCustomTab(rc.getString(R.string.bookmark), true); tabBookmark.setIndicator(vb); mTabHost.addTab(tabBookmark); TabSpec tabHistory = mTabHost.newTabSpec(HISTORY_TAB_ID); View vh = getCustomTab(rc.getString(R.string.history), false); tabHistory.setContent(R.id.bookmarkhistory_history); tabHistory.setIndicator(vh); mTabHost.addTab(tabHistory); } private void setupListeners() { mTabHost.setOnTabChangedListener(new TabHost.OnTabChangeListener() { @Override public void onTabChanged(String tabId) { Log.d("Bookmark", String.format("Click tab %s", tabId)); for(int i = 0; i < mTabWidget.getChildCount(); ++i) { ViewGroup twChild = (ViewGroup) mTabWidget.getChildAt(i); View lineView = twChild.findViewById( R.id.bookmark_custom_tab_line); if(i != mTabHost.getCurrentTab()) { lineView.setVisibility(View.INVISIBLE); } else { lineView.setVisibility(View.VISIBLE); } } if(tabId.equals(HISTORY_TAB_ID) && !mIsHistoryLoaded) { mIsHistoryLoaded = true; loadHistory(); } } }); View back = mTabHost.findViewById(R.id.bookmarkhistory_return); back.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub finish(); } }); } private View getCustomTab(String title, boolean isSelectable) { ViewGroup vg = (ViewGroup) LayoutInflater.from(this).inflate( R.layout.bookmark_custom_tab, null); TextView titleView = (TextView) vg.findViewById(R.id.bookmark_custom_tab_title); titleView.setText(title); if(!isSelectable) { View lineView = vg.findViewById(R.id.bookmark_custom_tab_line); lineView.setVisibility(View.INVISIBLE); } return vg; } private void loadBookmark() { mBookmark = new Bookmark(this); List<Bookmark.Item> items = mBookmark.getChildren(null); Log.d("Bookmark", String.format("bookmarks count: %d", items.size())); BookmarkArrayAdapter adapter = new BookmarkArrayAdapter(this, items); ListView listView = (ListView) mTabHost.findViewById(R.id.bookmarkhistory_bookmark); listView.setAdapter(adapter); listView.setOnItemClickListener(adapter); } private void loadHistory() { History history = HawkBrowser.getHistory(this); HistoryExpListAdapter adapter = new HistoryExpListAdapter(this, history); ExpandableListView listView = (ExpandableListView) mTabHost.findViewById(R.id.bookmarkhistory_history); listView.setGroupIndicator(null); listView.setAdapter(adapter); listView.setOnChildClickListener(adapter); } public void onBookmarkItemClicked(Bookmark.Item item) { openUrl(item.url()); } public void onHistoryItemClicked(History.Item item) { openUrl(item.url()); } private void openUrl(String url) { Intent intent = new Intent(this, HawkBrowser.class); intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); intent.putExtra(HawkBrowser.INTENT_EXTRA_URL, url); intent.putExtra(HawkBrowser.INTENT_EXTRA_ACTION, HawkBrowser.INTENT_ACTION_OPENURL); startActivity(intent); finish(); } }