From b67f242861286fbd0b1f070557663b0d778a22b8 Mon Sep 17 00:00:00 2001 From: YraFyra Date: Sun, 23 Feb 2014 22:23:12 +0100 Subject: Long-press menus for trackables Enables copy&share and translate for all suitable fields for trackables. --- main/src/cgeo/geocaching/TrackableActivity.java | 87 +++++++++++++++++++++++-- 1 file changed, 83 insertions(+), 4 deletions(-) (limited to 'main/src/cgeo/geocaching/TrackableActivity.java') diff --git a/main/src/cgeo/geocaching/TrackableActivity.java b/main/src/cgeo/geocaching/TrackableActivity.java index 34f546a..de5c21a 100644 --- a/main/src/cgeo/geocaching/TrackableActivity.java +++ b/main/src/cgeo/geocaching/TrackableActivity.java @@ -18,8 +18,10 @@ import cgeo.geocaching.ui.Formatter; import cgeo.geocaching.ui.UserActionsClickListener; import cgeo.geocaching.ui.UserNameClickListener; import cgeo.geocaching.ui.logs.TrackableLogsViewCreator; +import cgeo.geocaching.utils.ClipboardUtils; import cgeo.geocaching.utils.HtmlUtils; import cgeo.geocaching.utils.Log; +import cgeo.geocaching.utils.TranslationUtils; import cgeo.geocaching.utils.UnknownTagsHandler; import org.apache.commons.lang3.StringUtils; @@ -34,6 +36,7 @@ import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.text.Html; +import android.view.ContextMenu; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; @@ -109,6 +112,8 @@ public class TrackableActivity extends AbstractViewPagerActivity 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); + } + + @Override + public boolean onContextItemSelected(MenuItem item) { + 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: + break; + } + return onOptionsItemSelected(item); + } + + @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.trackable_activity, menu); return true; @@ -362,7 +438,7 @@ public class TrackableActivity extends AbstractViewPagerActivity= 0) { - details.add(R.string.trackable_distance, Units.getDistanceFromKilometers(trackable.getDistance())); + registerForContextMenu(details.add(R.string.trackable_distance, Units.getDistanceFromKilometers(trackable.getDistance()))); } // trackable goal @@ -461,6 +538,7 @@ public class TrackableActivity extends AbstractViewPagerActivity