package com.google.android.diskusage; import com.google.android.diskusage.entity.FileSystemSuperRoot; import android.content.Context; import android.graphics.Color; import android.graphics.drawable.Drawable; import android.text.Editable; import android.text.TextWatcher; import android.view.KeyEvent; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.MenuItem.OnMenuItemClickListener; import android.view.inputmethod.InputMethodManager; import android.widget.Button; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.LinearLayout.LayoutParams; public class DiskUsageMenuPreCupcake extends DiskUsageMenu { private String searchPattern; protected View searchBar; protected EditText searchBox; private Drawable origSearchBackground; public DiskUsageMenuPreCupcake(DiskUsage diskusage) { super(diskusage); } @Override public void onCreate() {} @Override public boolean readyToFinish() { if (searchPattern != null) { cancelSearch(); return false; } return true; } @Override public void searchRequest() { searchBar.setVisibility(View.VISIBLE); searchBox.requestFocus(); } @Override public boolean finishedSearch(FileSystemSuperRoot newRoot, String searchQuery) { boolean matched = super.finishedSearch(newRoot, searchQuery); if (matched) { searchBox.setBackgroundDrawable(origSearchBackground); } else { searchBox.setBackgroundColor(Color.parseColor("#FFDDDD")); } return matched; } @Override public void wrapAndSetContentView(View view, FileSystemSuperRoot newRoot) { super.wrapAndSetContentView(view, newRoot); diskusage.setContentView(R.layout.main); LinearLayout searchLayout = (LinearLayout) diskusage.findViewById(R.id.search_layout); searchLayout.addView((View)view, new LinearLayout.LayoutParams( LayoutParams.MATCH_PARENT, 0, 1.f)); searchBar = diskusage.findViewById(R.id.search_bar); Button cancelSearch = (Button) diskusage.findViewById(R.id.cancel_button); searchBox = (EditText) diskusage.findViewById(R.id.search_box); origSearchBackground = searchBox.getBackground(); cancelSearch.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { cancelSearch(); } }); if (searchPattern != null) { searchBox.setText(searchPattern); applyPattern(searchPattern); } else { searchBar.setVisibility(View.GONE); } searchBox.setOnKeyListener(new View.OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if (KeyEvent.KEYCODE_BACK == keyCode) { cancelSearch(); return true; } return false; } }); searchBox.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { searchPattern = s.toString(); applyPattern(searchPattern); } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) {} @Override public void afterTextChanged(Editable s) {} }); } public void hideInputMethod() {} public void cancelSearch() { searchBar.setVisibility(View.GONE); searchBox.setText(""); searchBox.setBackgroundDrawable(origSearchBackground); searchPattern = null; hideInputMethod(); } @Override public MenuItem makeSearchMenuEntry(Menu menu) { MenuItem item = menu.add("Search"); item.setOnMenuItemClickListener(new OnMenuItemClickListener() { public boolean onMenuItemClick(MenuItem item) { searchRequest(); return true; } }); return item; } }