aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--main/res/values/strings.xml2
-rw-r--r--main/src/cgeo/geocaching/twitter/Twitter.java25
-rw-r--r--main/src/cgeo/geocaching/utils/LogTemplateProvider.java29
3 files changed, 38 insertions, 18 deletions
diff --git a/main/res/values/strings.xml b/main/res/values/strings.xml
index f65a009..9f040d2 100644
--- a/main/res/values/strings.xml
+++ b/main/res/values/strings.xml
@@ -420,6 +420,8 @@
<string name="init_signature_template_user">User</string>
<string name="init_signature_template_number">Number</string>
<string name="init_signature_template_owner">Owner</string>
+ <string name="init_signature_template_name">Name</string>
+ <string name="init_signature_template_url">URL</string>
<string name="init_ratingwanted">GCvote Rating</string>
<string name="init_summary_ratingwanted">Load cache rating from GCvote.com</string>
<string name="init_friendlogswanted">Show Friends\' Logs</string>
diff --git a/main/src/cgeo/geocaching/twitter/Twitter.java b/main/src/cgeo/geocaching/twitter/Twitter.java
index c3f99fa..3dd1e17 100644
--- a/main/src/cgeo/geocaching/twitter/Twitter.java
+++ b/main/src/cgeo/geocaching/twitter/Twitter.java
@@ -12,6 +12,8 @@ import cgeo.geocaching.network.OAuth;
import cgeo.geocaching.network.Parameters;
import cgeo.geocaching.settings.Settings;
import cgeo.geocaching.utils.Log;
+import cgeo.geocaching.utils.LogTemplateProvider;
+import cgeo.geocaching.utils.LogTemplateProvider.LogContext;
import ch.boye.httpclientandroidlib.HttpResponse;
@@ -64,35 +66,22 @@ public final class Twitter {
private static void appendHashTag(final StringBuilder status, final String tag) {
if (status.length() + HASH_PREFIX_WITH_BLANK.length() + tag.length() <= MAX_TWEET_SIZE) {
final String tagWithPrefix = HASH_PREFIX_WITH_BLANK + tag;
- if (status.indexOf(tagWithPrefix, 0) == -1) {
+ if (!StringUtils.contains(status, tagWithPrefix)) {
status.append(tagWithPrefix);
}
}
}
static String getStatusMessage(Geocache cache) {
- String name = cache.getName();
- if (name.length() > 100) {
- name = name.substring(0, 100) + '…';
- }
- final String url = StringUtils.defaultString(cache.getUrl());
- return fillTemplate(Settings.getCacheTwitterMessage(), name, url);
+ return appendHashTags(LogTemplateProvider.applyTemplates(Settings.getCacheTwitterMessage(), new LogContext(cache)));
}
static String getStatusMessage(Trackable trackable) {
- String name = trackable.getName();
- if (name.length() > 82) {
- name = name.substring(0, 81) + '…';
- }
- String url = StringUtils.defaultString(trackable.getUrl());
- String status = Settings.getTrackableTwitterMessage();
- return fillTemplate(status, name, url);
+ return appendHashTags(LogTemplateProvider.applyTemplates(Settings.getTrackableTwitterMessage(), new LogContext(trackable)));
}
- private static String fillTemplate(String template, String name, final String url) {
- String result = StringUtils.replace(template, "[NAME]", name);
- result = StringUtils.replace(result, "[URL]", url);
- StringBuilder builder = new StringBuilder(result);
+ private static String appendHashTags(final String status) {
+ StringBuilder builder = new StringBuilder(status);
appendHashTag(builder, "cgeo");
appendHashTag(builder, "geocaching");
return builder.toString();
diff --git a/main/src/cgeo/geocaching/utils/LogTemplateProvider.java b/main/src/cgeo/geocaching/utils/LogTemplateProvider.java
index 98201b5..bf2a27c 100644
--- a/main/src/cgeo/geocaching/utils/LogTemplateProvider.java
+++ b/main/src/cgeo/geocaching/utils/LogTemplateProvider.java
@@ -178,6 +178,35 @@ public final class LogTemplateProvider {
return StringUtils.EMPTY;
}
});
+ templates.add(new LogTemplate("NAME", R.string.init_signature_template_name) {
+ @Override
+ public String getValue(LogContext context) {
+ Trackable trackable = context.getTrackable();
+ if (trackable != null) {
+ return trackable.getName();
+ }
+ Geocache cache = context.getCache();
+ if (cache != null) {
+ return cache.getName();
+ }
+ return StringUtils.EMPTY;
+ }
+ });
+ templates.add(new LogTemplate("URL", R.string.init_signature_template_url) {
+
+ @Override
+ public String getValue(LogContext context) {
+ Trackable trackable = context.getTrackable();
+ if (trackable != null) {
+ return trackable.getUrl();
+ }
+ Geocache cache = context.getCache();
+ if (cache != null) {
+ return cache.getUrl();
+ }
+ return StringUtils.EMPTY;
+ }
+ });
return templates;
}