From b2fe1d43c9e4026247e432c41195af53e7cf674e Mon Sep 17 00:00:00 2001 From: Sergey Solovyev Date: Sun, 23 Sep 2012 19:25:05 +0400 Subject: [PATCH] New architecture --- .../android/calculator/CalculatorImpl.java | 6 +- .../android/calculator/CalculatorOutput.java | 5 +- .../calculator/CalculatorOutputImpl.java | 21 ++++- calculatorpp-service/AndroidManifest.xml | 2 - calculatorpp-service/pom.xml | 44 ----------- calculatorpp-service/res/values/dummy.xml | 3 - .../org/solovyev/android/LocalBinder.java | 33 -------- .../calculator/CalculationServiceImpl.java | 78 ------------------- .../calculator/ICalculationService.java | 9 --- calculatorpp/pom.xml | 14 ---- calculatorpp/project.properties | 13 ++-- .../AndroidCalculatorDisplayView.java | 6 +- .../calculator/CalculatorActivity.java | 22 +----- pom.xml | 1 - 14 files changed, 36 insertions(+), 221 deletions(-) delete mode 100644 calculatorpp-service/AndroidManifest.xml delete mode 100644 calculatorpp-service/pom.xml delete mode 100644 calculatorpp-service/res/values/dummy.xml delete mode 100644 calculatorpp-service/src/main/java/org/solovyev/android/LocalBinder.java delete mode 100644 calculatorpp-service/src/main/java/org/solovyev/android/calculator/CalculationServiceImpl.java delete mode 100644 calculatorpp-service/src/main/java/org/solovyev/android/calculator/ICalculationService.java diff --git a/calculatorpp-core/src/main/java/org/solovyev/android/calculator/CalculatorImpl.java b/calculatorpp-core/src/main/java/org/solovyev/android/calculator/CalculatorImpl.java index ae034819..bba408d4 100644 --- a/calculatorpp-core/src/main/java/org/solovyev/android/calculator/CalculatorImpl.java +++ b/calculatorpp-core/src/main/java/org/solovyev/android/calculator/CalculatorImpl.java @@ -3,7 +3,6 @@ package org.solovyev.android.calculator; import jscl.AbstractJsclArithmeticException; import jscl.NumeralBase; import jscl.NumeralBaseException; -import jscl.math.Expression; import jscl.math.Generic; import jscl.text.ParseInterruptedException; import org.jetbrains.annotations.NotNull; @@ -238,8 +237,7 @@ public class CalculatorImpl implements Calculator, CalculatorEventListener { expression = expression.trim(); if (StringUtils.isEmpty(expression)) { - final CalculatorOutputImpl data = new CalculatorOutputImpl("", operation, Expression.valueOf("")); - fireCalculatorEvent(newCalculationEventData(operation, expression, sequenceId), CalculatorEventType.calculation_result, data); + fireCalculatorEvent(newCalculationEventData(operation, expression, sequenceId), CalculatorEventType.calculation_result, CalculatorOutputImpl.newEmptyOutput(operation)); } else { preparedExpression = preprocessor.process(expression); @@ -252,7 +250,7 @@ public class CalculatorImpl implements Calculator, CalculatorEventListener { // NOTE: toString() method must be called here as ArithmeticOperationException may occur in it (just to avoid later check!) result.toString(); - final CalculatorOutputImpl data = new CalculatorOutputImpl(operation.getFromProcessor().process(result), operation, result); + final CalculatorOutput data = CalculatorOutputImpl.newOutput(operation.getFromProcessor().process(result), operation, result); fireCalculatorEvent(newCalculationEventData(operation, expression, sequenceId), CalculatorEventType.calculation_result, data); } catch (AbstractJsclArithmeticException e) { diff --git a/calculatorpp-core/src/main/java/org/solovyev/android/calculator/CalculatorOutput.java b/calculatorpp-core/src/main/java/org/solovyev/android/calculator/CalculatorOutput.java index bac56104..2dc6843f 100644 --- a/calculatorpp-core/src/main/java/org/solovyev/android/calculator/CalculatorOutput.java +++ b/calculatorpp-core/src/main/java/org/solovyev/android/calculator/CalculatorOutput.java @@ -2,6 +2,7 @@ package org.solovyev.android.calculator; import jscl.math.Generic; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import org.solovyev.android.calculator.jscl.JsclOperation; /** @@ -17,6 +18,8 @@ public interface CalculatorOutput { @NotNull JsclOperation getOperation(); - @NotNull + + // null in case of empty expression + @Nullable Generic getResult(); } diff --git a/calculatorpp-core/src/main/java/org/solovyev/android/calculator/CalculatorOutputImpl.java b/calculatorpp-core/src/main/java/org/solovyev/android/calculator/CalculatorOutputImpl.java index 0ca7e1fe..2a2db29b 100644 --- a/calculatorpp-core/src/main/java/org/solovyev/android/calculator/CalculatorOutputImpl.java +++ b/calculatorpp-core/src/main/java/org/solovyev/android/calculator/CalculatorOutputImpl.java @@ -2,6 +2,7 @@ package org.solovyev.android.calculator; import jscl.math.Generic; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import org.solovyev.android.calculator.jscl.JsclOperation; /** @@ -11,7 +12,7 @@ import org.solovyev.android.calculator.jscl.JsclOperation; */ public class CalculatorOutputImpl implements CalculatorOutput { - @NotNull + @Nullable private Generic result; @NotNull @@ -20,12 +21,26 @@ public class CalculatorOutputImpl implements CalculatorOutput { @NotNull private JsclOperation operation; - public CalculatorOutputImpl(@NotNull String stringResult, @NotNull JsclOperation operation, @NotNull Generic result) { + private CalculatorOutputImpl(@NotNull String stringResult, + @NotNull JsclOperation operation, + @Nullable Generic result) { this.stringResult = stringResult; this.operation = operation; this.result = result; } + @NotNull + public static CalculatorOutput newOutput(@NotNull String stringResult, + @NotNull JsclOperation operation, + @NotNull Generic result) { + return new CalculatorOutputImpl(stringResult, operation, result); + } + + @NotNull + public static CalculatorOutput newEmptyOutput(@NotNull JsclOperation operation) { + return new CalculatorOutputImpl("", operation, null); + } + @Override @NotNull public String getStringResult() { @@ -39,7 +54,7 @@ public class CalculatorOutputImpl implements CalculatorOutput { } @Override - @NotNull + @Nullable public Generic getResult() { return result; } diff --git a/calculatorpp-service/AndroidManifest.xml b/calculatorpp-service/AndroidManifest.xml deleted file mode 100644 index 7c364aa4..00000000 --- a/calculatorpp-service/AndroidManifest.xml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/calculatorpp-service/pom.xml b/calculatorpp-service/pom.xml deleted file mode 100644 index e51d5896..00000000 --- a/calculatorpp-service/pom.xml +++ /dev/null @@ -1,44 +0,0 @@ - - - - - org.solovyev.android - calculatorpp-parent - 1.3.2 - - - 4.0.0 - - org.solovyev.android - calculatorpp-service - 1.3.2 - apklib - Calculator++ Service - - - - - com.intellij - annotations - - - - com.google.android - android - provided - - - - - - - - com.jayway.maven.plugins.android.generation2 - android-maven-plugin - - - - - \ No newline at end of file diff --git a/calculatorpp-service/res/values/dummy.xml b/calculatorpp-service/res/values/dummy.xml deleted file mode 100644 index dee82b37..00000000 --- a/calculatorpp-service/res/values/dummy.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/calculatorpp-service/src/main/java/org/solovyev/android/LocalBinder.java b/calculatorpp-service/src/main/java/org/solovyev/android/LocalBinder.java deleted file mode 100644 index 5ab791ac..00000000 --- a/calculatorpp-service/src/main/java/org/solovyev/android/LocalBinder.java +++ /dev/null @@ -1,33 +0,0 @@ -package org.solovyev.android; - -import android.os.Binder; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.lang.ref.WeakReference; - -/** - * A generic implementation of Binder to be used for local services - * - * @param The type of the service being bound - * @author Geoff Bruckner 12th December 2009 - */ - -public class LocalBinder extends Binder { - - @NotNull - private static String TAG = "LocalBinder"; - - @NotNull - private WeakReference serviceReference; - - - public LocalBinder(@NotNull S service) { - serviceReference = new WeakReference(service); - } - - @Nullable - public S getService() { - return serviceReference.get(); - } -} \ No newline at end of file diff --git a/calculatorpp-service/src/main/java/org/solovyev/android/calculator/CalculationServiceImpl.java b/calculatorpp-service/src/main/java/org/solovyev/android/calculator/CalculationServiceImpl.java deleted file mode 100644 index d3f35ae9..00000000 --- a/calculatorpp-service/src/main/java/org/solovyev/android/calculator/CalculationServiceImpl.java +++ /dev/null @@ -1,78 +0,0 @@ -package org.solovyev.android.calculator; - -import android.app.Service; -import android.content.Intent; -import android.os.*; -import android.os.Process; -import android.widget.Toast; -import org.jetbrains.annotations.NotNull; -import org.solovyev.android.LocalBinder; - -/** - * User: serso - * Date: 3/5/12 - * Time: 10:23 PM - */ -public class CalculationServiceImpl extends Service implements ICalculationService { - - @NotNull - private ServiceHandler handler; - - public CalculationServiceImpl() { - } - - @Override - public int onStartCommand(Intent intent, int flags, int startId) { - //Toast.makeText(this, ".CalculationService.onStartCommand", Toast.LENGTH_SHORT).show(); - - // For each start request, send a message to start a job and deliver the - // start ID so we know which request we're stopping when we finish the job - final Message msg = handler.obtainMessage(); - msg.arg1 = startId; - handler.sendMessage(msg); - - // If we get killed, after returning from here, restart - return START_STICKY; - } - - - @Override - public void onCreate() { - //Toast.makeText(this, ".CalculationService.onCreate", Toast.LENGTH_SHORT).show(); - // first time initialization - - // Start up the thread running the service. Note that we create a - // separate thread because the service normally runs in the process's - // main thread, which we don't want to block. We also make it - // background priority so CPU-intensive work will not disrupt our UI. - final HandlerThread thread = new HandlerThread("ServiceStartArguments", Process.THREAD_PRIORITY_BACKGROUND); - thread.start(); - - handler = new ServiceHandler(thread.getLooper()); - - } - - @Override - public void onDestroy() { - // last time call - //Toast.makeText(this, ".CalculationService.onDestroy", Toast.LENGTH_SHORT).show(); - } - - @Override - public IBinder onBind(Intent intent) { - return new LocalBinder(this); - } - - private final class ServiceHandler extends Handler { - - private ServiceHandler(@NotNull Looper looper) { - super(looper); - } - - @Override - public void handleMessage(@NotNull Message msg) { - //Toast.makeText(CalculationServiceImpl.this, "Doing job!", Toast.LENGTH_SHORT).show(); - stopSelf(msg.arg1); - } - } -} diff --git a/calculatorpp-service/src/main/java/org/solovyev/android/calculator/ICalculationService.java b/calculatorpp-service/src/main/java/org/solovyev/android/calculator/ICalculationService.java deleted file mode 100644 index 0e79e485..00000000 --- a/calculatorpp-service/src/main/java/org/solovyev/android/calculator/ICalculationService.java +++ /dev/null @@ -1,9 +0,0 @@ -package org.solovyev.android.calculator; - -/** - * User: serso - * Date: 3/5/12 - * Time: 10:23 PM - */ -public interface ICalculationService { -} diff --git a/calculatorpp/pom.xml b/calculatorpp/pom.xml index a0b1535d..81d2b234 100644 --- a/calculatorpp/pom.xml +++ b/calculatorpp/pom.xml @@ -26,13 +26,6 @@ 1.3.2 - - org.solovyev.android - calculatorpp-service - 1.3.2 - apklib - - org.solovyev common-core @@ -79,13 +72,6 @@ apklib - - org.solovyev.android - calculatorpp-service - 0.1 - apklib - - org.solovyev jscl diff --git a/calculatorpp/project.properties b/calculatorpp/project.properties index 69b50958..1b733b09 100644 --- a/calculatorpp/project.properties +++ b/calculatorpp/project.properties @@ -9,12 +9,11 @@ # Project target. target=android-15 -android.library.reference.1=gen-external-apklibs/org.solovyev.android_calculatorpp-service_0.1 -android.library.reference.2=gen-external-apklibs/org.solovyev.android_android-common-core_1.0.0 -android.library.reference.3=gen-external-apklibs/org.solovyev.android_android-common-ads_1.0.0 -android.library.reference.4=gen-external-apklibs/org.solovyev.android_android-common-view_1.0.0 -android.library.reference.5=gen-external-apklibs/org.solovyev.android_android-common-preferences_1.0.0 -android.library.reference.6=gen-external-apklibs/org.solovyev.android_android-common-other_1.0.0 -android.library.reference.7=gen-external-apklibs/org.solovyev.android_android-common-menu_1.0.0 +android.library.reference.1=gen-external-apklibs/org.solovyev.android_android-common-core_1.0.0 +android.library.reference.2=gen-external-apklibs/org.solovyev.android_android-common-ads_1.0.0 +android.library.reference.3=gen-external-apklibs/org.solovyev.android_android-common-view_1.0.0 +android.library.reference.4=gen-external-apklibs/org.solovyev.android_android-common-preferences_1.0.0 +android.library.reference.5=gen-external-apklibs/org.solovyev.android_android-common-other_1.0.0 +android.library.reference.6=gen-external-apklibs/org.solovyev.android_android-common-menu_1.0.0 diff --git a/calculatorpp/src/main/java/org/solovyev/android/calculator/AndroidCalculatorDisplayView.java b/calculatorpp/src/main/java/org/solovyev/android/calculator/AndroidCalculatorDisplayView.java index d04fc39f..87b6b714 100644 --- a/calculatorpp/src/main/java/org/solovyev/android/calculator/AndroidCalculatorDisplayView.java +++ b/calculatorpp/src/main/java/org/solovyev/android/calculator/AndroidCalculatorDisplayView.java @@ -95,8 +95,10 @@ public class AndroidCalculatorDisplayView extends AutoResizeTextView implements redraw(); } else { setTextColor(getResources().getColor(R.color.display_error_text_color)); - setText(state.getErrorMessage()); - redraw(); + + // error messages are never shown -> just greyed out text (error message will be shown on click) + //setText(state.getErrorMessage()); + //redraw(); } } } diff --git a/calculatorpp/src/main/java/org/solovyev/android/calculator/CalculatorActivity.java b/calculatorpp/src/main/java/org/solovyev/android/calculator/CalculatorActivity.java index 795e4b03..a99e7a4a 100644 --- a/calculatorpp/src/main/java/org/solovyev/android/calculator/CalculatorActivity.java +++ b/calculatorpp/src/main/java/org/solovyev/android/calculator/CalculatorActivity.java @@ -7,11 +7,10 @@ package org.solovyev.android.calculator; import android.app.Activity; import android.app.AlertDialog; -import android.content.*; +import android.content.SharedPreferences; import android.content.pm.ActivityInfo; import android.content.res.Configuration; import android.os.Bundle; -import android.os.IBinder; import android.os.Vibrator; import android.preference.PreferenceManager; import android.text.Html; @@ -32,7 +31,6 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.solovyev.android.AndroidUtils; import org.solovyev.android.FontSizeAdjuster; -import org.solovyev.android.LocalBinder; import org.solovyev.android.calculator.about.CalculatorReleaseNotesActivity; import org.solovyev.android.calculator.history.CalculatorHistoryState; import org.solovyev.android.calculator.model.AndroidCalculatorEngine; @@ -57,7 +55,7 @@ import java.lang.reflect.Modifier; import java.util.ArrayList; import java.util.List; -public class CalculatorActivity extends Activity implements FontSizeAdjuster, SharedPreferences.OnSharedPreferenceChangeListener, ServiceConnection { +public class CalculatorActivity extends Activity implements FontSizeAdjuster, SharedPreferences.OnSharedPreferenceChangeListener { @NotNull public static final String TAG = "Calculator++"; @@ -67,9 +65,6 @@ public class CalculatorActivity extends Activity implements FontSizeAdjuster, Sh @Nullable private IBillingObserver billingObserver; - @Nullable - private ICalculationService calculationService; - @NotNull private final Announcer dpclRegister = new Announcer(DragPreferencesChangeListener.class); @@ -110,8 +105,6 @@ public class CalculatorActivity extends Activity implements FontSizeAdjuster, Sh super.onCreate(savedInstanceState); setLayout(preferences); - bindService(new Intent(this, CalculationServiceImpl.class), this, Context.BIND_AUTO_CREATE); - if (customTitleSupported) { try { getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.calc_title); @@ -421,17 +414,6 @@ public class CalculatorActivity extends Activity implements FontSizeAdjuster, Sh return onDragListener; } - @Override - public void onServiceConnected(ComponentName componentName, IBinder binder) { - if (binder instanceof LocalBinder) { - calculationService = (ICalculationService)((LocalBinder) binder).getService(); - } - } - - @Override - public void onServiceDisconnected(ComponentName componentName) { - } - private synchronized void setLayout(@NotNull SharedPreferences preferences) { layout = CalculatorPreferences.Gui.layout.getPreferenceNoError(preferences); diff --git a/pom.xml b/pom.xml index f8cef3f0..eff76609 100644 --- a/pom.xml +++ b/pom.xml @@ -13,7 +13,6 @@ calculatorpp - calculatorpp-service calculatorpp-test calculatorpp-core