import android.content.SharedPreferences;
import android.graphics.Color;
import android.graphics.Typeface;
-import android.graphics.drawable.ColorDrawable;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.view.View.OnClickListener;
import android.view.View.OnLongClickListener;
import android.view.ViewGroup;
-import android.view.ViewGroup.LayoutParams;
import android.view.WindowManager;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputMethodManager;
+import android.widget.AdapterView;
import android.widget.AdapterView.AdapterContextMenuInfo;
+import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.FrameLayout;
+import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
import android.widget.LinearLayout;
import android.widget.TextView.BufferType;
import android.widget.Toast;
-import com.actionbarsherlock.app.ActionBar;
-import com.actionbarsherlock.app.SherlockListActivity;
-import com.actionbarsherlock.view.Menu;
-import com.actionbarsherlock.view.MenuItem;
-import com.actionbarsherlock.view.MenuItem.OnMenuItemClickListener;
-import com.actionbarsherlock.widget.SearchView;
-import com.actionbarsherlock.widget.SearchView.OnQueryTextListener;
+import android.support.v4.view.MenuItemCompat;
+import android.support.v7.app.ActionBar;
+import android.support.v7.app.ActionBarActivity;
+import android.support.v7.widget.SearchView;
+import android.support.v7.widget.SearchView.OnQueryTextListener;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.MenuItem.OnMenuItemClickListener;
import com.hughes.android.dictionary.DictionaryInfo.IndexInfo;
import com.hughes.android.dictionary.engine.Dictionary;
import com.hughes.android.dictionary.engine.EntrySource;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-public class DictionaryActivity extends SherlockListActivity {
+public class DictionaryActivity extends ActionBarActivity {
static final String LOG = "QuickDic";
int textColorFg = Color.BLACK;
int fontSizeSp;
+ private ListView listView;
+ private ListView getListView() {
+ if (listView == null) {
+ listView = (ListView)findViewById(android.R.id.list);
+ }
+ return listView;
+ }
+
+ private void setListAdapter(ListAdapter adapter) {
+ getListView().setAdapter(adapter);
+ }
+
+ private ListAdapter getListAdapter() {
+ return getListView().getAdapter();
+ }
+
SearchView searchView;
- ImageView searchHintIcon;
+ ImageButton languageButton;
SearchView.OnQueryTextListener onQueryTextListener;
MenuItem nextWordMenuItem, previousWordMenuItem;
@Override
public void onCreate(Bundle savedInstanceState) {
+ // This needs to be before super.onCreate, otherwise ActionbarSherlock
+ // doesn't makes the background of the actionbar white when you're
+ // in the dark theme.
+ setTheme(((DictionaryApplication) getApplication()).getSelectedTheme().themeId);
+
Log.d(LOG, "onCreate:" + this);
super.onCreate(savedInstanceState);
// Don't auto-launch if this fails.
prefs.edit().remove(C.DICT_FILE).commit();
- setTheme(((DictionaryApplication) getApplication()).getSelectedTheme().themeId);
application = (DictionaryApplication) getApplication();
theme = application.getSelectedTheme();
registerForContextMenu(getListView());
// Cache some prefs.
- wordList = new File(prefs.getString(getString(R.string.wordListFileKey),
- new File(application.getDictDir(), "wordList.txt").getAbsolutePath()));
+ wordList = application.getWordListFile();
saveOnlyFirstSubentry = prefs.getBoolean(getString(R.string.saveOnlyFirstSubentryKey),
false);
clickOpensContextMenu = prefs.getBoolean(getString(R.string.clickOpensContextMenuKey),
updateLangButton();
searchView.requestFocus();
+
+ // http://stackoverflow.com/questions/2833057/background-listview-becomes-black-when-scrolling
+// getListView().setCacheColorHint(0);
}
private void onCreateSetupActionBarAndSearchView() {
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setDisplayShowHomeEnabled(false);
actionBar.setDisplayHomeAsUpEnabled(false);
+
+ final LinearLayout customSearchView = new LinearLayout(getSupportActionBar().getThemedContext());
+
+ final int width = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 300,
+ getResources().getDisplayMetrics());
+ final LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
+ width, ViewGroup.LayoutParams.WRAP_CONTENT);
+ customSearchView.setLayoutParams(layoutParams);
+
+ listView.setOnItemClickListener(new OnItemClickListener() {
+ @Override
+ public void onItemClick(AdapterView<?> parent, View view, int row, long id) {
+ onListItemClick(getListView(), view, row, id);
+ }
+ });
+
+ languageButton = new ImageButton(customSearchView.getContext());
+ languageButton.setMinimumWidth(application.languageButtonPixels);
+ languageButton.setMinimumHeight(application.languageButtonPixels * 2 / 3);
+ languageButton.setScaleType(ScaleType.FIT_CENTER);
+ languageButton.setOnClickListener(new OnClickListener() {
+ @Override
+ public void onClick(View arg0) {
+ onLanguageButtonClick();
+ }
+ });
+ languageButton.setOnLongClickListener(new OnLongClickListener() {
+ @Override
+ public boolean onLongClick(View v) {
+ onLanguageButtonLongClick(v.getContext());
+ return true;
+ }
+ });
+ customSearchView.addView(languageButton);
searchView = new SearchView(getSupportActionBar().getThemedContext());
searchView.setIconifiedByDefault(false);
// wrong place.
searchView.setQueryHint(getString(R.string.searchText));
searchView.setSubmitButtonEnabled(false);
- final int width = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 300,
- getResources().getDisplayMetrics());
- FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(width,
+ LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(0,
FrameLayout.LayoutParams.WRAP_CONTENT);
+ lp.weight = 1;
searchView.setLayoutParams(lp);
searchView.setImeOptions(
EditorInfo.IME_ACTION_SEARCH |
};
searchView.setOnQueryTextListener(onQueryTextListener);
searchView.setFocusable(true);
+ customSearchView.addView(searchView);
- searchHintIcon = (ImageView) searchView.findViewById(R.id.abs__search_mag_icon);
- // http://stackoverflow.com/questions/2521959/how-to-scale-an-image-in-imageview-to-keep-the-aspect-ratio
- searchHintIcon.setLayoutParams(new LinearLayout.LayoutParams(
- application.languageButtonPixels * 3 / 4, LayoutParams.WRAP_CONTENT));
- searchHintIcon.setScaleType(ScaleType.FIT_CENTER);
- searchHintIcon.setAdjustViewBounds(true);
- searchHintIcon.setPadding(1, application.languageButtonPixels / 8, 1, 0);
- searchHintIcon.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View arg0) {
- onLanguageButtonClick();
- }
- });
- searchHintIcon.setOnLongClickListener(new OnLongClickListener() {
- @Override
- public boolean onLongClick(View v) {
- onLanguageButtonLongClick(v.getContext());
- return true;
- }
- });
- actionBar.setCustomView(searchView);
+ actionBar.setCustomView(customSearchView);
actionBar.setDisplayShowCustomEnabled(true);
}
void updateLangButton() {
final LanguageResources languageResources =
- Language.isoCodeToResources.get(index.shortName);
+ DictionaryApplication.isoCodeToResources.get(index.shortName);
if (languageResources != null && languageResources.flagId != 0) {
- searchHintIcon.setImageResource(languageResources.flagId);
+ languageButton.setImageResource(languageResources.flagId);
} else {
if (indexIndex % 2 == 0) {
- searchHintIcon.setImageResource(android.R.drawable.ic_media_next);
+ languageButton.setImageResource(android.R.drawable.ic_media_next);
} else {
- searchHintIcon.setImageResource(android.R.drawable.ic_media_previous);
+ languageButton.setImageResource(android.R.drawable.ic_media_previous);
}
}
updateTTSLanguage();
// Next word.
nextWordMenuItem = menu.add(getString(R.string.nextWord))
.setIcon(R.drawable.arrow_down_float);
- nextWordMenuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
+ MenuItemCompat.setShowAsAction(nextWordMenuItem, MenuItem.SHOW_AS_ACTION_IF_ROOM);
nextWordMenuItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
// Previous word.
previousWordMenuItem = menu.add(getString(R.string.previousWord))
.setIcon(R.drawable.arrow_up_float);
- previousWordMenuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
+ MenuItemCompat.setShowAsAction(previousWordMenuItem, MenuItem.SHOW_AS_ACTION_IF_ROOM);
previousWordMenuItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
{
final MenuItem dictionaryManager = menu.add(getString(R.string.dictionaryManager));
- dictionaryManager.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
+ MenuItemCompat.setShowAsAction(dictionaryManager, MenuItem.SHOW_AS_ACTION_NEVER);
dictionaryManager.setOnMenuItemClickListener(new OnMenuItemClickListener() {
public boolean onMenuItemClick(final MenuItem menuItem) {
startActivity(DictionaryManagerActivity.getLaunchIntent());
{
final MenuItem aboutDictionary = menu.add(getString(R.string.aboutDictionary));
- aboutDictionary.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
+ MenuItemCompat.setShowAsAction(aboutDictionary, MenuItem.SHOW_AS_ACTION_NEVER);
aboutDictionary.setOnMenuItemClickListener(new OnMenuItemClickListener() {
public boolean onMenuItemClick(final MenuItem menuItem) {
final Context context = getListView().getContext();
return false;
}
});
+ // Rats, this won't be shown:
+ //searchForSelection.setIcon(R.drawable.abs__ic_search);
}
if (row instanceof TokenRow && ttsReady) {
// searchView.selectAll();
}
- @Override
protected void onListItemClick(ListView l, View v, int row, long id) {
defocusSearchText();
if (clickOpensContextMenu && dictRaf != null) {
final PrintWriter out = new PrintWriter(new FileWriter(wordList, true));
out.println(rawText.toString());
out.close();
- } catch (IOException e) {
+ } catch (Exception e) {
Log.e(LOG, "Unable to append to " + wordList.getAbsolutePath(), e);
Toast.makeText(this,
getString(R.string.failedAddingToWordList, wordList.getAbsolutePath()),
result.setClickable(true);
result.setFocusable(true);
result.setLongClickable(true);
- result.setBackgroundResource(android.R.drawable.menuitem_background);
+// result.setBackgroundResource(android.R.drawable.menuitem_background);
+
+ result.setBackgroundResource(theme.normalRowBg);
+
result.setOnClickListener(new TextView.OnClickListener() {
@Override
public void onClick(View v) {