ActivityLauncher
This commit is contained in:
parent
ebdfbc328c
commit
07a1608a80
@ -67,7 +67,7 @@
|
||||
android:label="@string/c_app_settings" />
|
||||
|
||||
<activity
|
||||
android:name=".history.CalculatorHistoryActivity"
|
||||
android:name=".history.HistoryActivity"
|
||||
android:label="@string/c_history" />
|
||||
|
||||
<activity
|
||||
@ -78,7 +78,7 @@
|
||||
android:theme="@style/Cpp.Theme.Translucent" />
|
||||
|
||||
<activity
|
||||
android:name=".about.CalculatorAboutActivity"
|
||||
android:name=".about.AboutActivity"
|
||||
android:label="@string/c_about" />
|
||||
|
||||
<activity
|
||||
|
@ -23,21 +23,19 @@
|
||||
package org.solovyev.android.calculator;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.app.Application;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.widget.TextView;
|
||||
import jscl.math.Generic;
|
||||
import jscl.math.function.Constant;
|
||||
import android.support.annotation.NonNull;
|
||||
|
||||
import org.solovyev.android.Activities;
|
||||
import org.solovyev.android.calculator.about.CalculatorAboutActivity;
|
||||
import org.solovyev.android.Check;
|
||||
import org.solovyev.android.calculator.about.AboutActivity;
|
||||
import org.solovyev.android.calculator.functions.CppFunction;
|
||||
import org.solovyev.android.calculator.functions.EditFunctionFragment;
|
||||
import org.solovyev.android.calculator.functions.FunctionsActivity;
|
||||
import org.solovyev.android.calculator.history.CalculatorHistoryActivity;
|
||||
import org.solovyev.android.calculator.history.HistoryActivity;
|
||||
import org.solovyev.android.calculator.matrix.CalculatorMatrixActivity;
|
||||
import org.solovyev.android.calculator.operators.OperatorsActivity;
|
||||
import org.solovyev.android.calculator.plot.CalculatorPlotter;
|
||||
@ -49,73 +47,77 @@ import org.solovyev.android.calculator.variables.VariablesFragment;
|
||||
import org.solovyev.common.msg.MessageType;
|
||||
import org.solovyev.common.text.Strings;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import jscl.math.Generic;
|
||||
import jscl.math.function.Constant;
|
||||
|
||||
@Singleton
|
||||
public final class ActivityLauncher implements CalculatorEventListener {
|
||||
|
||||
@Inject
|
||||
Application application;
|
||||
@Nullable
|
||||
private CalculatorActivity activity;
|
||||
|
||||
@Inject
|
||||
public ActivityLauncher() {
|
||||
}
|
||||
|
||||
public static void showHistory(@Nonnull final Context context) {
|
||||
showHistory(context, false);
|
||||
private static void showActivity(@Nonnull final Context context, @NonNull Class<? extends Activity> activity) {
|
||||
showActivity(context, new Intent(context, activity));
|
||||
}
|
||||
|
||||
public static void showHistory(@Nonnull final Context context, boolean detached) {
|
||||
final Intent intent = new Intent(context, CalculatorHistoryActivity.class);
|
||||
private static void showActivity(@Nonnull Context context, @NonNull Intent intent) {
|
||||
final boolean detached = !(context instanceof Activity);
|
||||
Activities.addIntentFlags(intent, detached, context);
|
||||
context.startActivity(intent);
|
||||
}
|
||||
|
||||
public void showHistory() {
|
||||
showHistory(getContext());
|
||||
}
|
||||
|
||||
public void showSettings() {
|
||||
showSettings(getContext());
|
||||
}
|
||||
|
||||
public void showWidgetSettings() {
|
||||
final Context context = getContext();
|
||||
showActivity(context, PreferencesActivity.makeIntent(context, R.xml.preferences_widget, R.string.prefs_widget_title));
|
||||
}
|
||||
|
||||
public static void showHistory(@Nonnull final Context context) {
|
||||
show(context, HistoryActivity.class);
|
||||
}
|
||||
|
||||
private static void show(@Nonnull Context context, Class<HistoryActivity> activity) {
|
||||
showActivity(context, activity);
|
||||
}
|
||||
|
||||
public void showOperators() {
|
||||
showActivity(getContext(), OperatorsActivity.class);
|
||||
}
|
||||
|
||||
public static void showSettings(@Nonnull final Context context) {
|
||||
showSettings(context, false);
|
||||
}
|
||||
|
||||
public static void showWidgetSettings(@Nonnull final Context context, boolean detached) {
|
||||
final Intent intent = PreferencesActivity.makeIntent(context, R.xml.preferences_widget, R.string.prefs_widget_title);
|
||||
Activities.addIntentFlags(intent, detached, context);
|
||||
context.startActivity(intent);
|
||||
}
|
||||
|
||||
public static void showSettings(@Nonnull final Context context, boolean detached) {
|
||||
final Intent intent = new Intent(context, PreferencesActivity.class);
|
||||
Activities.addIntentFlags(intent, detached, context);
|
||||
context.startActivity(intent);
|
||||
showActivity(context, PreferencesActivity.class);
|
||||
}
|
||||
|
||||
public static void showAbout(@Nonnull final Context context) {
|
||||
context.startActivity(new Intent(context, CalculatorAboutActivity.class));
|
||||
context.startActivity(new Intent(context, AboutActivity.class));
|
||||
}
|
||||
|
||||
public static void showFunctions(@Nonnull final Context context) {
|
||||
showFunctions(context, false);
|
||||
showActivity(context, FunctionsActivity.class);
|
||||
}
|
||||
|
||||
public static void showFunctions(@Nonnull final Context context, boolean detached) {
|
||||
final Intent intent = new Intent(context, FunctionsActivity.class);
|
||||
Activities.addIntentFlags(intent, detached, context);
|
||||
context.startActivity(intent);
|
||||
}
|
||||
|
||||
public static void showOperators(@Nonnull final Context context) {
|
||||
showOperators(context, false);
|
||||
}
|
||||
|
||||
public static void showOperators(@Nonnull final Context context, boolean detached) {
|
||||
final Intent intent = new Intent(context, OperatorsActivity.class);
|
||||
Activities.addIntentFlags(intent, detached, context);
|
||||
context.startActivity(intent);
|
||||
}
|
||||
|
||||
public static void showVars(@Nonnull final Context context) {
|
||||
showVars(context, false);
|
||||
}
|
||||
|
||||
public static void showVars(@Nonnull final Context context, boolean detached) {
|
||||
final Intent intent = new Intent(context, VariablesActivity.class);
|
||||
Activities.addIntentFlags(intent, detached, context);
|
||||
context.startActivity(intent);
|
||||
public static void showVariables(@Nonnull final Context context) {
|
||||
showActivity(context, VariablesActivity.class);
|
||||
}
|
||||
|
||||
public static void tryCreateVar(@Nonnull final Context context) {
|
||||
@ -188,29 +190,31 @@ public final class ActivityLauncher implements CalculatorEventListener {
|
||||
}
|
||||
}
|
||||
|
||||
public static void openApp(@Nonnull Context context) {
|
||||
final Intent intent = new Intent(context, CalculatorActivity.class);
|
||||
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||
context.startActivity(intent);
|
||||
public void openFacebook() {
|
||||
final Uri uri = Uri.parse(application.getString(R.string.cpp_share_link));
|
||||
final Intent intent = new Intent(Intent.ACTION_VIEW, uri);
|
||||
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
application.startActivity(intent);
|
||||
}
|
||||
|
||||
public static void likeButtonPressed(@Nonnull final Context context) {
|
||||
final Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(context.getString(R.string.cpp_share_link)));
|
||||
Activities.addIntentFlags(intent, false, context);
|
||||
context.startActivity(intent);
|
||||
public void setActivity(@Nullable CalculatorActivity activity) {
|
||||
Check.isNull(this.activity);
|
||||
this.activity = activity;
|
||||
}
|
||||
|
||||
public static void showEvaluationError(@Nonnull Context context, @Nonnull final String errorMessage) {
|
||||
final LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
|
||||
public void clearActivity(@Nullable CalculatorActivity activity) {
|
||||
Check.isNotNull(this.activity);
|
||||
Check.equals(this.activity, activity);
|
||||
this.activity = null;
|
||||
}
|
||||
|
||||
final View errorMessageView = layoutInflater.inflate(R.layout.display_error_message, null);
|
||||
((TextView) errorMessageView.findViewById(R.id.error_message_text_view)).setText(errorMessage);
|
||||
public void show(@NonNull Class<HistoryActivity> activity) {
|
||||
showActivity(getContext(), activity);
|
||||
}
|
||||
|
||||
final AlertDialog.Builder builder = new AlertDialog.Builder(context)
|
||||
.setPositiveButton(R.string.c_cancel, null)
|
||||
.setView(errorMessageView);
|
||||
|
||||
builder.create().show();
|
||||
@NonNull
|
||||
private Context getContext() {
|
||||
return activity == null ? application : activity;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -251,17 +255,21 @@ public final class ActivityLauncher implements CalculatorEventListener {
|
||||
}
|
||||
});
|
||||
break;
|
||||
case show_evaluation_error:
|
||||
final String errorMessage = (String) data;
|
||||
if (errorMessage != null) {
|
||||
App.getUiThreadExecutor().execute(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
showEvaluationError(context, errorMessage);
|
||||
}
|
||||
});
|
||||
}
|
||||
break;
|
||||
|
||||
public void showFunctions() {
|
||||
showFunctions(getContext());
|
||||
}
|
||||
|
||||
public void showVariables() {
|
||||
showVariables(getContext());
|
||||
}
|
||||
|
||||
public void openApp() {
|
||||
final Context context = getContext();
|
||||
final Intent intent = new Intent(context, CalculatorActivity.class);
|
||||
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||
context.startActivity(intent);
|
||||
}
|
||||
}
|
||||
|
@ -128,6 +128,8 @@ public abstract class BaseUi implements SharedPreferences.OnSharedPreferenceChan
|
||||
Calculator calculator;
|
||||
@Inject
|
||||
PreferredPreferences preferredPreferences;
|
||||
@Inject
|
||||
ActivityLauncher launcher;
|
||||
|
||||
protected void onCreate(@Nonnull Activity activity) {
|
||||
cast(activity.getApplication()).getComponent().inject(this);
|
||||
@ -315,11 +317,11 @@ public abstract class BaseUi implements SharedPreferences.OnSharedPreferenceChan
|
||||
}
|
||||
}
|
||||
|
||||
private static class OperatorsDragProcessor implements SimpleDragListener.DragProcessor {
|
||||
private class OperatorsDragProcessor implements SimpleDragListener.DragProcessor {
|
||||
@Override
|
||||
public boolean processDragEvent(@Nonnull DragDirection dragDirection, @Nonnull DragButton dragButton, @Nonnull PointF startPoint, @Nonnull MotionEvent motionEvent) {
|
||||
if (dragDirection == DragDirection.down) {
|
||||
Locator.getInstance().getCalculator().fireCalculatorEvent(CalculatorEventType.show_operators, null);
|
||||
launcher.showOperators();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
@ -26,13 +26,10 @@ import android.content.SharedPreferences;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.text.TextUtils;
|
||||
import android.util.Log;
|
||||
|
||||
import com.squareup.otto.Bus;
|
||||
import com.squareup.otto.Subscribe;
|
||||
import jscl.*;
|
||||
import jscl.math.Generic;
|
||||
import jscl.math.function.Constants;
|
||||
import jscl.math.function.IConstant;
|
||||
import jscl.text.ParseInterruptedException;
|
||||
|
||||
import org.solovyev.android.calculator.calculations.CalculationCancelledEvent;
|
||||
import org.solovyev.android.calculator.calculations.CalculationFailedEvent;
|
||||
import org.solovyev.android.calculator.calculations.CalculationFinishedEvent;
|
||||
@ -48,11 +45,6 @@ import org.solovyev.common.text.Strings;
|
||||
import org.solovyev.common.units.ConversionException;
|
||||
import org.solovyev.common.units.Conversions;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Named;
|
||||
import javax.inject.Singleton;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
@ -60,8 +52,23 @@ import java.util.concurrent.Executor;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Named;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
import jscl.JsclArithmeticException;
|
||||
import jscl.JsclMathEngine;
|
||||
import jscl.NumeralBase;
|
||||
import jscl.NumeralBaseException;
|
||||
import jscl.math.Generic;
|
||||
import jscl.math.function.Constants;
|
||||
import jscl.math.function.IConstant;
|
||||
import jscl.text.ParseInterruptedException;
|
||||
|
||||
@Singleton
|
||||
public class Calculator implements CalculatorEventListener, SharedPreferences.OnSharedPreferenceChangeListener {
|
||||
public class Calculator implements SharedPreferences.OnSharedPreferenceChangeListener {
|
||||
|
||||
public static final long NO_SEQUENCE = -1;
|
||||
private static final long PREFERENCE_CHECK_INTERVAL = TimeUnit.MINUTES.toMillis(15);
|
||||
@ -99,7 +106,6 @@ public class Calculator implements CalculatorEventListener, SharedPreferences.On
|
||||
this.ui = ui;
|
||||
this.background = background;
|
||||
bus.register(this);
|
||||
addCalculatorEventListener(this);
|
||||
preferences.registerOnSharedPreferenceChangeListener(this);
|
||||
}
|
||||
|
||||
@ -149,14 +155,12 @@ public class Calculator implements CalculatorEventListener, SharedPreferences.On
|
||||
|
||||
public void evaluate() {
|
||||
final EditorState state = editor.getState();
|
||||
final CalculatorEventData eventData = fireCalculatorEvent(CalculatorEventType.manual_calculation_requested, state);
|
||||
evaluate(JsclOperation.numeric, state.getTextString(), eventData.getSequenceId());
|
||||
evaluate(JsclOperation.numeric, state.getTextString());
|
||||
}
|
||||
|
||||
public void simplify() {
|
||||
final EditorState state = editor.getState();
|
||||
final CalculatorEventData eventData = fireCalculatorEvent(CalculatorEventType.manual_calculation_requested, state);
|
||||
evaluate(JsclOperation.simplify, state.getTextString(), eventData.getSequenceId());
|
||||
evaluate(JsclOperation.simplify, state.getTextString());
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
@ -462,51 +466,6 @@ public class Calculator implements CalculatorEventListener, SharedPreferences.On
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCalculatorEvent(@Nonnull CalculatorEventData calculatorEventData, @Nonnull CalculatorEventType calculatorEventType, @Nullable Object data) {
|
||||
switch (calculatorEventType) {
|
||||
case show_history:
|
||||
ActivityLauncher.showHistory(App.getApplication());
|
||||
break;
|
||||
case show_history_detached:
|
||||
ActivityLauncher.showHistory(App.getApplication(), true);
|
||||
break;
|
||||
case show_functions:
|
||||
ActivityLauncher.showFunctions(App.getApplication());
|
||||
break;
|
||||
case show_functions_detached:
|
||||
ActivityLauncher.showFunctions(App.getApplication(), true);
|
||||
break;
|
||||
case show_operators:
|
||||
ActivityLauncher.showOperators(App.getApplication());
|
||||
break;
|
||||
case show_operators_detached:
|
||||
ActivityLauncher.showOperators(App.getApplication(), true);
|
||||
break;
|
||||
case show_vars:
|
||||
ActivityLauncher.showVars(App.getApplication());
|
||||
break;
|
||||
case show_vars_detached:
|
||||
ActivityLauncher.showVars(App.getApplication(), true);
|
||||
break;
|
||||
case show_settings:
|
||||
ActivityLauncher.showSettings(App.getApplication());
|
||||
break;
|
||||
case show_settings_detached:
|
||||
ActivityLauncher.showSettings(App.getApplication(), true);
|
||||
break;
|
||||
case show_settings_widget:
|
||||
ActivityLauncher.showWidgetSettings(App.getApplication(), true);
|
||||
break;
|
||||
case show_like_dialog:
|
||||
ActivityLauncher.likeButtonPressed(App.getApplication());
|
||||
break;
|
||||
case open_app:
|
||||
ActivityLauncher.openApp(App.getApplication());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSharedPreferenceChanged(@Nonnull SharedPreferences prefs, @Nonnull String key) {
|
||||
if (Preferences.Calculations.calculateOnFly.getKey().equals(key)) {
|
||||
|
@ -143,6 +143,9 @@ public class CalculatorActivity extends BaseActivity implements SharedPreference
|
||||
@Inject
|
||||
History history;
|
||||
|
||||
@Inject
|
||||
ActivityLauncher launcher;
|
||||
|
||||
/**
|
||||
* Called when the activity is first created.
|
||||
*/
|
||||
@ -221,6 +224,7 @@ public class CalculatorActivity extends BaseActivity implements SharedPreference
|
||||
@Override
|
||||
protected void onResume() {
|
||||
super.onResume();
|
||||
launcher.setActivity(this);
|
||||
|
||||
final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
final Preferences.Gui.Layout newLayout = Preferences.Gui.layout.getPreference(preferences);
|
||||
@ -236,6 +240,12 @@ public class CalculatorActivity extends BaseActivity implements SharedPreference
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onPause() {
|
||||
launcher.clearActivity(this);
|
||||
super.onPause();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
PreferenceManager.getDefaultSharedPreferences(this).unregisterOnSharedPreferenceChangeListener(this);
|
||||
|
@ -26,9 +26,10 @@ import android.content.SharedPreferences;
|
||||
import android.os.Handler;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.util.Log;
|
||||
|
||||
import com.squareup.leakcanary.LeakCanary;
|
||||
import com.squareup.otto.Bus;
|
||||
import jscl.MathEngine;
|
||||
|
||||
import org.acra.ACRA;
|
||||
import org.acra.ACRAConfiguration;
|
||||
import org.acra.sender.HttpSender;
|
||||
@ -41,13 +42,14 @@ import org.solovyev.android.calculator.plot.AndroidCalculatorPlotter;
|
||||
import org.solovyev.android.calculator.plot.CalculatorPlotterImpl;
|
||||
import org.solovyev.common.msg.MessageType;
|
||||
|
||||
import java.util.Locale;
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Named;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.concurrent.Executor;
|
||||
|
||||
import jscl.MathEngine;
|
||||
|
||||
public class CalculatorApplication extends android.app.Application implements SharedPreferences.OnSharedPreferenceChangeListener {
|
||||
|
||||
@ -62,9 +64,6 @@ public class CalculatorApplication extends android.app.Application implements Sh
|
||||
@Inject
|
||||
Handler handler;
|
||||
|
||||
@Nonnull
|
||||
private final List<CalculatorEventListener> listeners = new ArrayList<>();
|
||||
|
||||
private AppComponent component;
|
||||
|
||||
@Inject
|
||||
@ -100,6 +99,9 @@ public class CalculatorApplication extends android.app.Application implements Sh
|
||||
@Inject
|
||||
PreferredPreferences preferredPreferences;
|
||||
|
||||
@Inject
|
||||
ActivityLauncher launcher;
|
||||
|
||||
@Override
|
||||
public void onCreate() {
|
||||
final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
|
||||
@ -131,11 +133,6 @@ public class CalculatorApplication extends android.app.Application implements Sh
|
||||
new AndroidCalculatorPlotter(this, new CalculatorPlotterImpl(calculator))
|
||||
);
|
||||
|
||||
listeners.add(new ActivityLauncher());
|
||||
for (CalculatorEventListener listener : listeners) {
|
||||
calculator.addCalculatorEventListener(listener);
|
||||
}
|
||||
|
||||
calculator.init(initThread);
|
||||
|
||||
initThread.execute(new Runnable() {
|
||||
|
@ -31,22 +31,6 @@ import javax.annotation.Nonnull;
|
||||
*/
|
||||
public enum CalculatorEventType {
|
||||
|
||||
/*
|
||||
**********************************************************************
|
||||
*
|
||||
* CALCULATION
|
||||
* org.solovyev.android.calculator.CalculatorEvaluationEventData
|
||||
*
|
||||
**********************************************************************
|
||||
*/
|
||||
|
||||
|
||||
// @Nonnull CalculatorEditorViewState
|
||||
manual_calculation_requested,
|
||||
|
||||
// @Nonnull org.solovyev.android.calculator.CalculatorFailure
|
||||
calculation_failed,
|
||||
|
||||
/*
|
||||
**********************************************************************
|
||||
*
|
||||
@ -76,26 +60,6 @@ public enum CalculatorEventType {
|
||||
// List<Message>
|
||||
calculation_messages,
|
||||
|
||||
show_history,
|
||||
show_history_detached,
|
||||
|
||||
show_functions,
|
||||
show_functions_detached,
|
||||
|
||||
show_vars,
|
||||
show_vars_detached,
|
||||
|
||||
open_app,
|
||||
|
||||
show_operators,
|
||||
show_operators_detached,
|
||||
|
||||
show_settings,
|
||||
show_settings_detached,
|
||||
show_settings_widget,
|
||||
|
||||
show_like_dialog,
|
||||
|
||||
show_create_var_dialog,
|
||||
show_create_matrix_dialog,
|
||||
show_create_function_dialog,
|
||||
@ -105,10 +69,7 @@ public enum CalculatorEventType {
|
||||
/**
|
||||
* {@link org.solovyev.android.calculator.plot.PlotData}
|
||||
*/
|
||||
plot_data_changed,
|
||||
|
||||
//String
|
||||
show_evaluation_error;
|
||||
plot_data_changed;
|
||||
|
||||
public boolean isOfType(@Nonnull CalculatorEventType... types) {
|
||||
for (CalculatorEventType type : types) {
|
||||
|
@ -22,11 +22,15 @@
|
||||
|
||||
package org.solovyev.android.calculator;
|
||||
|
||||
import android.app.Activity;
|
||||
import android.app.AlertDialog;
|
||||
import android.app.Application;
|
||||
import android.content.Context;
|
||||
import android.view.ContextMenu;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.MenuItem;
|
||||
import android.view.View;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.squareup.otto.Bus;
|
||||
import com.squareup.otto.Subscribe;
|
||||
@ -64,6 +68,8 @@ public class Display implements CalculatorEventListener, View.OnClickListener, V
|
||||
Lazy<Clipboard> clipboard;
|
||||
@Inject
|
||||
Lazy<Notifier> notifier;
|
||||
@Inject
|
||||
ActivityLauncher launcher;
|
||||
@Nullable
|
||||
private DisplayView view;
|
||||
@Nonnull
|
||||
@ -194,10 +200,24 @@ public class Display implements CalculatorEventListener, View.OnClickListener, V
|
||||
v.showContextMenu();
|
||||
v.setOnCreateContextMenuListener(null);
|
||||
} else {
|
||||
Locator.getInstance().getCalculator().fireCalculatorEvent(CalculatorEventType.show_evaluation_error, state.text);
|
||||
showEvaluationError(v.getContext(), state.text);
|
||||
}
|
||||
}
|
||||
|
||||
public static void showEvaluationError(@Nonnull Context context, @Nonnull final String errorMessage) {
|
||||
final LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
|
||||
|
||||
final View errorMessageView = layoutInflater.inflate(R.layout.display_error_message, null);
|
||||
((TextView) errorMessageView.findViewById(R.id.error_message_text_view)).setText(errorMessage);
|
||||
|
||||
final AlertDialog.Builder builder = new AlertDialog.Builder(context)
|
||||
.setPositiveButton(R.string.c_cancel, null)
|
||||
.setView(errorMessageView);
|
||||
|
||||
builder.create().show();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
|
||||
if (!state.valid) {
|
||||
|
@ -54,6 +54,8 @@ public class Keyboard {
|
||||
Lazy<Clipboard> clipboard;
|
||||
@Inject
|
||||
Lazy<Bus> bus;
|
||||
@Inject
|
||||
ActivityLauncher launcher;
|
||||
|
||||
@Inject
|
||||
public Keyboard() {
|
||||
@ -119,10 +121,7 @@ public class Keyboard {
|
||||
private void onSpecialButtonPressed(@NonNull CppSpecialButton button) {
|
||||
switch (button) {
|
||||
case history:
|
||||
calculator.fireCalculatorEvent(CalculatorEventType.show_history, null);
|
||||
break;
|
||||
case history_detached:
|
||||
calculator.fireCalculatorEvent(CalculatorEventType.show_history_detached, null);
|
||||
launcher.showHistory();
|
||||
break;
|
||||
case cursor_right:
|
||||
moveCursorRight();
|
||||
@ -131,16 +130,13 @@ public class Keyboard {
|
||||
moveCursorLeft();
|
||||
break;
|
||||
case settings:
|
||||
calculator.fireCalculatorEvent(CalculatorEventType.show_settings, null);
|
||||
break;
|
||||
case settings_detached:
|
||||
calculator.fireCalculatorEvent(CalculatorEventType.show_settings_detached, null);
|
||||
launcher.showSettings();
|
||||
break;
|
||||
case settings_widget:
|
||||
calculator.fireCalculatorEvent(CalculatorEventType.show_settings_widget, null);
|
||||
launcher.showWidgetSettings();
|
||||
break;
|
||||
case like:
|
||||
calculator.fireCalculatorEvent(CalculatorEventType.show_like_dialog, null);
|
||||
launcher.openFacebook();
|
||||
break;
|
||||
case erase:
|
||||
editor.erase();
|
||||
@ -158,25 +154,16 @@ public class Keyboard {
|
||||
clearButtonPressed();
|
||||
break;
|
||||
case functions:
|
||||
calculator.fireCalculatorEvent(CalculatorEventType.show_functions, null);
|
||||
break;
|
||||
case functions_detached:
|
||||
calculator.fireCalculatorEvent(CalculatorEventType.show_functions_detached, null);
|
||||
launcher.showFunctions();
|
||||
break;
|
||||
case open_app:
|
||||
calculator.fireCalculatorEvent(CalculatorEventType.open_app, null);
|
||||
launcher.openApp();
|
||||
break;
|
||||
case vars:
|
||||
calculator.fireCalculatorEvent(CalculatorEventType.show_vars, null);
|
||||
break;
|
||||
case vars_detached:
|
||||
calculator.fireCalculatorEvent(CalculatorEventType.show_vars_detached, null);
|
||||
launcher.showVariables();
|
||||
break;
|
||||
case operators:
|
||||
calculator.fireCalculatorEvent(CalculatorEventType.show_operators, null);
|
||||
break;
|
||||
case operators_detached:
|
||||
calculator.fireCalculatorEvent(CalculatorEventType.show_operators_detached, null);
|
||||
launcher.showOperators();
|
||||
break;
|
||||
default:
|
||||
Check.shouldNotHappen();
|
||||
|
@ -35,7 +35,7 @@ import javax.annotation.Nullable;
|
||||
* Date: 9/16/11
|
||||
* Time: 11:52 PM
|
||||
*/
|
||||
public class CalculatorAboutActivity extends EmptyActivity {
|
||||
public class AboutActivity extends EmptyActivity {
|
||||
|
||||
@Override
|
||||
public void onCreate(@Nullable Bundle savedInstanceState) {
|
@ -32,12 +32,7 @@ import javax.annotation.Nullable;
|
||||
|
||||
import static org.solovyev.android.calculator.buttons.CppSpecialButton.cursor_left;
|
||||
import static org.solovyev.android.calculator.buttons.CppSpecialButton.cursor_right;
|
||||
import static org.solovyev.android.calculator.buttons.CppSpecialButton.functions_detached;
|
||||
import static org.solovyev.android.calculator.buttons.CppSpecialButton.history_detached;
|
||||
import static org.solovyev.android.calculator.buttons.CppSpecialButton.open_app;
|
||||
import static org.solovyev.android.calculator.buttons.CppSpecialButton.operators_detached;
|
||||
import static org.solovyev.android.calculator.buttons.CppSpecialButton.settings_detached;
|
||||
import static org.solovyev.android.calculator.buttons.CppSpecialButton.vars_detached;
|
||||
|
||||
public enum CppButton {
|
||||
|
||||
@ -56,18 +51,18 @@ public enum CppButton {
|
||||
period(R.id.cpp_button_period, "."),
|
||||
brackets(R.id.cpp_button_round_brackets, "()"),
|
||||
|
||||
settings(R.id.cpp_button_settings, settings_detached),
|
||||
settings(R.id.cpp_button_settings, CppSpecialButton.settings),
|
||||
settings_widget(R.id.cpp_button_settings_widget, CppSpecialButton.settings_widget),
|
||||
like(R.id.cpp_button_like, CppSpecialButton.like),
|
||||
|
||||
/*last row*/
|
||||
left(R.id.cpp_button_left, cursor_left),
|
||||
right(R.id.cpp_button_right, cursor_right),
|
||||
vars(R.id.cpp_button_vars, vars_detached),
|
||||
functions(R.id.cpp_button_functions, functions_detached),
|
||||
operators(R.id.cpp_button_operators, operators_detached),
|
||||
vars(R.id.cpp_button_vars, CppSpecialButton.vars),
|
||||
functions(R.id.cpp_button_functions, CppSpecialButton.functions),
|
||||
operators(R.id.cpp_button_operators, CppSpecialButton.operators),
|
||||
app(R.id.cpp_button_app, open_app),
|
||||
history(R.id.cpp_button_history, history_detached),
|
||||
history(R.id.cpp_button_history, CppSpecialButton.history),
|
||||
|
||||
/*operations*/
|
||||
multiplication(R.id.cpp_button_multiplication, "*"),
|
||||
@ -98,8 +93,8 @@ public enum CppButton {
|
||||
this(id, button.action, buttonLong == null ? null : buttonLong.getAction());
|
||||
}
|
||||
|
||||
CppButton(int id, @Nonnull CppSpecialButton onClickButton) {
|
||||
this(id, onClickButton, null);
|
||||
CppButton(int id, @Nonnull CppSpecialButton button) {
|
||||
this(id, button, null);
|
||||
}
|
||||
|
||||
CppButton(int id, @Nonnull String action, @Nullable String actionLong) {
|
||||
|
@ -33,11 +33,9 @@ import javax.annotation.Nullable;
|
||||
public enum CppSpecialButton {
|
||||
|
||||
history("history"),
|
||||
history_detached("history_detached"),
|
||||
cursor_right("▷"),
|
||||
cursor_left("◁"),
|
||||
settings("settings"),
|
||||
settings_detached("settings_detached"),
|
||||
settings_widget("settings_widget"),
|
||||
like("like"),
|
||||
erase("erase"),
|
||||
@ -46,12 +44,9 @@ public enum CppSpecialButton {
|
||||
equals("="),
|
||||
clear("clear"),
|
||||
functions("functions"),
|
||||
functions_detached("functions_detached"),
|
||||
open_app("open_app"),
|
||||
vars("vars"),
|
||||
vars_detached("vars_detached"),
|
||||
operators("operators"),
|
||||
operators_detached("operators_detached");
|
||||
operators("operators");
|
||||
|
||||
@Nonnull
|
||||
private static Map<String, CppSpecialButton> buttonsByActions = new HashMap<>();
|
||||
|
@ -23,6 +23,7 @@
|
||||
package org.solovyev.android.calculator.history;
|
||||
|
||||
import android.os.Bundle;
|
||||
|
||||
import org.solovyev.android.calculator.BaseActivity;
|
||||
import org.solovyev.android.calculator.R;
|
||||
|
||||
@ -31,10 +32,10 @@ import javax.annotation.Nullable;
|
||||
import static org.solovyev.android.calculator.CalculatorFragmentType.history;
|
||||
import static org.solovyev.android.calculator.CalculatorFragmentType.saved_history;
|
||||
|
||||
public class CalculatorHistoryActivity extends BaseActivity {
|
||||
public class HistoryActivity extends BaseActivity {
|
||||
|
||||
public CalculatorHistoryActivity() {
|
||||
super(R.layout.main_empty, CalculatorHistoryActivity.class.getSimpleName());
|
||||
public HistoryActivity() {
|
||||
super(R.layout.main_empty, HistoryActivity.class.getSimpleName());
|
||||
}
|
||||
|
||||
@Override
|
Loading…
Reference in New Issue
Block a user