diff options
Diffstat (limited to 'main/src')
| -rw-r--r-- | main/src/cgeo/geocaching/twitter/Twitter.java | 25 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/utils/LogTemplateProvider.java | 29 |
2 files changed, 36 insertions, 18 deletions
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; } |
