diff options
Diffstat (limited to 'main/src/cgeo/geocaching/activity/AbstractActivity.java')
| -rw-r--r-- | main/src/cgeo/geocaching/activity/AbstractActivity.java | 59 |
1 files changed, 55 insertions, 4 deletions
diff --git a/main/src/cgeo/geocaching/activity/AbstractActivity.java b/main/src/cgeo/geocaching/activity/AbstractActivity.java index 36b6d01..7127de4 100644 --- a/main/src/cgeo/geocaching/activity/AbstractActivity.java +++ b/main/src/cgeo/geocaching/activity/AbstractActivity.java @@ -3,18 +3,27 @@ package cgeo.geocaching.activity; import butterknife.ButterKnife; import cgeo.geocaching.CgeoApplication; +import cgeo.geocaching.R; import cgeo.geocaching.compatibility.Compatibility; import cgeo.geocaching.network.Cookies; import cgeo.geocaching.settings.Settings; +import cgeo.geocaching.utils.ClipboardUtils; +import cgeo.geocaching.utils.HtmlUtils; +import cgeo.geocaching.utils.TranslationUtils; -import android.content.Context; +import org.apache.commons.lang3.StringUtils; + +import android.content.Intent; import android.content.res.Resources; import android.os.Bundle; import android.support.v4.app.FragmentActivity; +import android.view.ContextMenu; +import android.view.MenuItem; import android.view.View; -import android.view.inputmethod.InputMethodManager; import android.widget.EditText; +import java.util.Locale; + public abstract class AbstractActivity extends FragmentActivity implements IAbstractActivity { protected CgeoApplication app = null; @@ -96,7 +105,7 @@ public abstract class AbstractActivity extends FragmentActivity implements IAbst // create view variables ButterKnife.inject(this); } - + private void initializeCommonFields() { // initialize commonly used members res = this.getResources(); @@ -116,6 +125,48 @@ public abstract class AbstractActivity extends FragmentActivity implements IAbst } protected void hideKeyboard() { - ((InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput(InputMethodManager.SHOW_IMPLICIT, 0); + new Keyboard(this).hide(); + } + + public void showKeyboard(final View view) { + new Keyboard(this).show(view); + } + + protected void buildDetailsContextMenu(final ContextMenu menu, final CharSequence clickedItemText, final String fieldTitle, final boolean copyOnly) { + menu.setHeaderTitle(fieldTitle); + getMenuInflater().inflate(R.menu.details_context, menu); + menu.findItem(R.id.menu_translate_to_sys_lang).setVisible(!copyOnly); + if (!copyOnly) { + if (clickedItemText.length() > TranslationUtils.TRANSLATION_TEXT_LENGTH_WARN) { + showToast(res.getString(R.string.translate_length_warning)); + } + menu.findItem(R.id.menu_translate_to_sys_lang).setTitle(res.getString(R.string.translate_to_sys_lang, Locale.getDefault().getDisplayLanguage())); + } + final boolean localeIsEnglish = StringUtils.equals(Locale.getDefault().getLanguage(), Locale.ENGLISH.getLanguage()); + menu.findItem(R.id.menu_translate_to_english).setVisible(!copyOnly && !localeIsEnglish); + } + + protected boolean onClipboardItemSelected(final MenuItem item, final CharSequence clickedItemText) { + switch (item.getItemId()) { + // detail fields + case R.id.menu_copy: + ClipboardUtils.copyToClipboard(clickedItemText); + showToast(res.getString(R.string.clipboard_copy_ok)); + return true; + case R.id.menu_translate_to_sys_lang: + TranslationUtils.startActivityTranslate(this, Locale.getDefault().getLanguage(), HtmlUtils.extractText(clickedItemText)); + return true; + case R.id.menu_translate_to_english: + TranslationUtils.startActivityTranslate(this, Locale.ENGLISH.getLanguage(), HtmlUtils.extractText(clickedItemText)); + return true; + case R.id.menu_cache_share_field: + final Intent intent = new Intent(Intent.ACTION_SEND); + intent.setType("text/plain"); + intent.putExtra(Intent.EXTRA_TEXT, clickedItemText.toString()); + startActivity(Intent.createChooser(intent, res.getText(R.string.cache_share_field))); + return true; + default: + return false; + } } } |
