aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/activity/AbstractActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/cgeo/geocaching/activity/AbstractActivity.java')
-rw-r--r--main/src/cgeo/geocaching/activity/AbstractActivity.java59
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;
+ }
}
}