From 9968d62a74827dbae56bf6dbf0c47406ae45cd37 Mon Sep 17 00:00:00 2001 From: Damien Date: Fri, 8 Feb 2013 16:48:11 +0100 Subject: [PATCH] Add a stop() method in IntentBuilder of a @EService and return the componentName for start() method --- .../helper/APTCodeModelHelper.java | 18 +++++++++++------- .../helper/CanonicalNameConstants.java | 1 + .../processing/EBeansHolder.java | 1 + 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/helper/APTCodeModelHelper.java b/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/helper/APTCodeModelHelper.java index 83d9546267..d1341959e6 100644 --- a/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/helper/APTCodeModelHelper.java +++ b/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/helper/APTCodeModelHelper.java @@ -349,16 +349,13 @@ private void addIntentBuilder(JCodeModel codeModel, EBeanHolder holder, boolean body._return(_this()); } - { + if (isActivity) { // start() JMethod method = holder.intentBuilderClass.method(PUBLIC, codeModel.VOID, "start"); - String startComponentName = isActivity ? "startActivity" : "startService"; - method.body().invoke(contextField, startComponentName).arg(holder.intentField); - } + method.body().invoke(contextField, "startActivity").arg(holder.intentField); - if (isActivity) { // startForResult() - JMethod method = holder.intentBuilderClass.method(PUBLIC, codeModel.VOID, "startForResult"); + method = holder.intentBuilderClass.method(PUBLIC, codeModel.VOID, "startForResult"); JVar requestCode = method.param(codeModel.INT, "requestCode"); JBlock body = method.body(); @@ -368,6 +365,14 @@ private void addIntentBuilder(JCodeModel codeModel, EBeanHolder holder, boolean .invoke(JExpr.cast(activityClass, contextField), "startActivityForResult").arg(holder.intentField).arg(requestCode); condition._else() // .invoke(contextField, "startActivity").arg(holder.intentField); + } else { + // start() + JMethod method = holder.intentBuilderClass.method(PUBLIC, holder.classes().COMPONENT_NAME, "start"); + method.body()._return(contextField.invoke("startService").arg(holder.intentField)); + + // stop() + method = holder.intentBuilderClass.method(PUBLIC, codeModel.BOOLEAN, "stop"); + method.body()._return(contextField.invoke("stopService").arg(holder.intentField)); } { @@ -378,5 +383,4 @@ private void addIntentBuilder(JCodeModel codeModel, EBeanHolder holder, boolean } } } - } diff --git a/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/helper/CanonicalNameConstants.java b/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/helper/CanonicalNameConstants.java index 45565649bf..5273a56208 100644 --- a/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/helper/CanonicalNameConstants.java +++ b/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/helper/CanonicalNameConstants.java @@ -49,6 +49,7 @@ public final class CanonicalNameConstants { public static final String LOG = "android.util.Log"; public static final String PARCELABLE = "android.os.Parcelable"; public static final String INTENT = "android.content.Intent"; + public static final String COMPONENT_NAME = "android.content.ComponentName"; public static final String BUNDLE = "android.os.Bundle"; public static final String APPLICATION = "android.app.Application"; public static final String ACTIVITY = "android.app.Activity"; diff --git a/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/processing/EBeansHolder.java b/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/processing/EBeansHolder.java index 3107d65e73..4c7eecca71 100644 --- a/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/processing/EBeansHolder.java +++ b/AndroidAnnotations/androidannotations/src/main/java/org/androidannotations/processing/EBeansHolder.java @@ -69,6 +69,7 @@ public class Classes { public final JClass KEY_EVENT = refClass(CanonicalNameConstants.KEY_EVENT); public final JClass CONTEXT = refClass(CanonicalNameConstants.CONTEXT); public final JClass INTENT = refClass(CanonicalNameConstants.INTENT); + public final JClass COMPONENT_NAME = refClass(CanonicalNameConstants.COMPONENT_NAME); public final JClass VIEW_GROUP = refClass(CanonicalNameConstants.VIEW_GROUP); public final JClass LAYOUT_INFLATER = refClass(CanonicalNameConstants.LAYOUT_INFLATER); public final JClass FRAGMENT_ACTIVITY = refClass(CanonicalNameConstants.FRAGMENT_ACTIVITY);