package com.google.android.diskusage; import android.app.ActionBar; import android.graphics.Color; import android.graphics.drawable.Drawable; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.SearchView; import android.widget.SearchView.OnCloseListener; import android.widget.SearchView.OnQueryTextListener; import com.google.android.diskusage.entity.FileSystemSuperRoot; public class DiskUsageMenuHoneycomb extends DiskUsageMenu { private SearchView searchView; private Drawable origSearchBackground; public DiskUsageMenuHoneycomb(DiskUsage diskusage) { super(diskusage); } @Override public void onCreate() { ActionBar actionBar = diskusage.getActionBar(); actionBar.setDisplayHomeAsUpEnabled(true); } @Override public boolean readyToFinish() { return true; } @Override public void wrapAndSetContentView(View view, FileSystemSuperRoot newRoot) { super.wrapAndSetContentView(view, newRoot); diskusage.setContentView(view); diskusage.invalidateOptionsMenu(); } public void setShowAsAction(MenuItem item) { item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); } @Override public boolean finishedSearch(FileSystemSuperRoot newRoot, String searchQuery) { boolean matched = super.finishedSearch(newRoot, searchQuery); if (matched) { searchView.setBackgroundDrawable(origSearchBackground); } else { searchView.setBackgroundColor(Color.parseColor("#FFDDDD")); } return matched; } @Override public MenuItem makeSearchMenuEntry(Menu menu) { MenuItem item = menu.add("Search"); searchView = new SearchView(diskusage); origSearchBackground = searchView.getBackground(); item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); item.setIcon(android.R.drawable.ic_search_category_default); item.setActionView(searchView); if (searchPattern != null) { searchView.setIconified(false); searchView.setQuery(searchPattern, false); } searchView.setOnCloseListener(new OnCloseListener() { @Override public boolean onClose() { Log.d("diskusage", "search closed"); searchPattern = null; diskusage.applyPatternNewRoot(masterRoot, null); return false; } }); searchView.setOnQueryTextListener(new OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String query) { onQueryTextChange(query); return false; } @Override public boolean onQueryTextChange(String newText) { Log.d("diskusage", "search query changed to: " + newText); searchPattern = newText; applyPattern(searchPattern); return true; } }); return item; } @Override public boolean onPrepareOptionsMenu(Menu menu) { super.onPrepareOptionsMenu(menu); setShowAsAction(showMenuItem); return true; } @Override public void searchRequest() { // FIXME: implement something? // TODO Auto-generated method stub } }