From e0528ae340916a7a71103dc98dbd630c2ce1c33b Mon Sep 17 00:00:00 2001 From: serso Date: Thu, 4 Feb 2016 13:06:03 +0100 Subject: [PATCH] Button moved to a separate package --- .../calculator/ButtonOnClickListener.java | 23 ++++----- .../calculator/CalculatorReceiver.java | 6 ++- .../solovyev/android/calculator/Keyboard.java | 3 +- .../CppButton.java} | 49 ++++++++++--------- .../CppSpecialButton.java} | 24 +++++---- .../onscreen/CalculatorOnscreenView.java | 6 +-- .../calculator/widget/CalculatorWidget.java | 12 ++--- .../calculator/CalculatorReceiverTest.java | 2 +- 8 files changed, 68 insertions(+), 57 deletions(-) rename app/src/main/java/org/solovyev/android/calculator/{CalculatorButton.java => buttons/CppButton.java} (61%) rename app/src/main/java/org/solovyev/android/calculator/{CalculatorSpecialButton.java => buttons/CppSpecialButton.java} (87%) diff --git a/app/src/main/java/org/solovyev/android/calculator/ButtonOnClickListener.java b/app/src/main/java/org/solovyev/android/calculator/ButtonOnClickListener.java index 62a68e69..01f2759e 100644 --- a/app/src/main/java/org/solovyev/android/calculator/ButtonOnClickListener.java +++ b/app/src/main/java/org/solovyev/android/calculator/ButtonOnClickListener.java @@ -5,6 +5,7 @@ import android.view.HapticFeedbackConstants; import android.view.View; import android.widget.Button; +import org.solovyev.android.calculator.buttons.CppSpecialButton; import org.solovyev.android.calculator.view.ViewsCache; import javax.annotation.Nonnull; @@ -42,39 +43,39 @@ final class ButtonOnClickListener implements View.OnClickListener { onClick(v, ((Button) v).getText().toString()); break; case R.id.cpp_button_clear: - onClick(v, CalculatorSpecialButton.clear); + onClick(v, CppSpecialButton.clear); break; case R.id.cpp_button_functions: - onClick(v, CalculatorSpecialButton.functions); + onClick(v, CppSpecialButton.functions); break; case R.id.cpp_button_history: - onClick(v, CalculatorSpecialButton.history); + onClick(v, CppSpecialButton.history); break; case R.id.cpp_button_erase: - onClick(v, CalculatorSpecialButton.erase); + onClick(v, CppSpecialButton.erase); break; case R.id.cpp_button_paste: - onClick(v, CalculatorSpecialButton.paste); + onClick(v, CppSpecialButton.paste); break; case R.id.cpp_button_copy: - onClick(v, CalculatorSpecialButton.copy); + onClick(v, CppSpecialButton.copy); break; case R.id.cpp_button_like: - onClick(v, CalculatorSpecialButton.like); + onClick(v, CppSpecialButton.like); break; case R.id.cpp_button_operators: - onClick(v, CalculatorSpecialButton.operators); + onClick(v, CppSpecialButton.operators); break; case R.id.cpp_button_vars: - onClick(v, CalculatorSpecialButton.vars); + onClick(v, CppSpecialButton.vars); break; case R.id.cpp_button_equals: - onClick(v, CalculatorSpecialButton.equals); + onClick(v, CppSpecialButton.equals); break; } } - private void onClick(@Nonnull View v, @Nonnull CalculatorSpecialButton b) { + private void onClick(@Nonnull View v, @Nonnull CppSpecialButton b) { onClick(v, b.getActionCode()); } diff --git a/app/src/main/java/org/solovyev/android/calculator/CalculatorReceiver.java b/app/src/main/java/org/solovyev/android/calculator/CalculatorReceiver.java index f8288f40..1f670384 100644 --- a/app/src/main/java/org/solovyev/android/calculator/CalculatorReceiver.java +++ b/app/src/main/java/org/solovyev/android/calculator/CalculatorReceiver.java @@ -5,6 +5,8 @@ import android.content.Context; import android.content.Intent; import android.text.TextUtils; +import org.solovyev.android.calculator.buttons.CppButton; + import javax.annotation.Nonnull; import javax.inject.Inject; @@ -19,7 +21,7 @@ public final class CalculatorReceiver extends BroadcastReceiver { Keyboard keyboard; @Nonnull - public static Intent newButtonClickedIntent(@Nonnull Context context, @Nonnull CalculatorButton button) { + public static Intent newButtonClickedIntent(@Nonnull Context context, @Nonnull CppButton button) { final Intent intent = new Intent(context, CalculatorReceiver.class); intent.setAction(ACTION_BUTTON_PRESSED); intent.putExtra(ACTION_BUTTON_ID_EXTRA, button.id); @@ -36,7 +38,7 @@ public final class CalculatorReceiver extends BroadcastReceiver { cast(context).getComponent().inject(this); final int buttonId = intent.getIntExtra(ACTION_BUTTON_ID_EXTRA, 0); - final CalculatorButton button = CalculatorButton.getById(buttonId); + final CppButton button = CppButton.getById(buttonId); if (button == null) { return; } diff --git a/app/src/main/java/org/solovyev/android/calculator/Keyboard.java b/app/src/main/java/org/solovyev/android/calculator/Keyboard.java index 05024d62..d890ba3d 100644 --- a/app/src/main/java/org/solovyev/android/calculator/Keyboard.java +++ b/app/src/main/java/org/solovyev/android/calculator/Keyboard.java @@ -26,6 +26,7 @@ import android.text.TextUtils; import com.squareup.otto.Bus; +import org.solovyev.android.calculator.buttons.CppSpecialButton; import org.solovyev.android.calculator.math.MathType; import javax.annotation.Nonnull; @@ -106,7 +107,7 @@ public class Keyboard { private boolean processSpecialButtons(@Nonnull String text) { boolean result = false; - final CalculatorSpecialButton button = CalculatorSpecialButton.getByActionCode(text); + final CppSpecialButton button = CppSpecialButton.getByActionCode(text); if (button != null) { button.onClick(this); result = true; diff --git a/app/src/main/java/org/solovyev/android/calculator/CalculatorButton.java b/app/src/main/java/org/solovyev/android/calculator/buttons/CppButton.java similarity index 61% rename from app/src/main/java/org/solovyev/android/calculator/CalculatorButton.java rename to app/src/main/java/org/solovyev/android/calculator/buttons/CppButton.java index de00d2a5..09719f1f 100644 --- a/app/src/main/java/org/solovyev/android/calculator/CalculatorButton.java +++ b/app/src/main/java/org/solovyev/android/calculator/buttons/CppButton.java @@ -20,25 +20,26 @@ * Site: http://se.solovyev.org */ -package org.solovyev.android.calculator; +package org.solovyev.android.calculator.buttons; import android.util.SparseArray; import org.solovyev.android.Check; +import org.solovyev.android.calculator.R; import javax.annotation.Nonnull; import javax.annotation.Nullable; -import static org.solovyev.android.calculator.CalculatorSpecialButton.cursor_left; -import static org.solovyev.android.calculator.CalculatorSpecialButton.cursor_right; -import static org.solovyev.android.calculator.CalculatorSpecialButton.functions_detached; -import static org.solovyev.android.calculator.CalculatorSpecialButton.history_detached; -import static org.solovyev.android.calculator.CalculatorSpecialButton.open_app; -import static org.solovyev.android.calculator.CalculatorSpecialButton.operators_detached; -import static org.solovyev.android.calculator.CalculatorSpecialButton.settings_detached; -import static org.solovyev.android.calculator.CalculatorSpecialButton.vars_detached; +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 CalculatorButton { +public enum CppButton { /*digits*/ one(R.id.cpp_button_1, "1"), @@ -56,8 +57,8 @@ public enum CalculatorButton { brackets(R.id.cpp_button_round_brackets, "()"), settings(R.id.cpp_button_settings, settings_detached), - settings_widget(R.id.cpp_button_settings_widget, CalculatorSpecialButton.settings_widget), - like(R.id.cpp_button_like, CalculatorSpecialButton.like), + 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), @@ -77,43 +78,43 @@ public enum CalculatorButton { power(R.id.cpp_button_power, "^"), /*last column*/ - clear(R.id.cpp_button_clear, CalculatorSpecialButton.clear), - erase(R.id.cpp_button_erase, CalculatorSpecialButton.erase, CalculatorSpecialButton.clear), - copy(R.id.cpp_button_copy, CalculatorSpecialButton.copy), - paste(R.id.cpp_button_paste, CalculatorSpecialButton.paste), + clear(R.id.cpp_button_clear, CppSpecialButton.clear), + erase(R.id.cpp_button_erase, CppSpecialButton.erase, CppSpecialButton.clear), + copy(R.id.cpp_button_copy, CppSpecialButton.copy), + paste(R.id.cpp_button_paste, CppSpecialButton.paste), /*equals*/ - equals(R.id.cpp_button_equals, CalculatorSpecialButton.equals); + equals(R.id.cpp_button_equals, CppSpecialButton.equals); @Nonnull - private static SparseArray buttonsByIds = new SparseArray<>(); + private static SparseArray buttonsByIds = new SparseArray<>(); public final int id; @Nonnull public final String action; @Nullable public final String actionLong; - CalculatorButton(int id, @Nonnull CalculatorSpecialButton onClickButton, @Nullable CalculatorSpecialButton onLongClickButton) { + CppButton(int id, @Nonnull CppSpecialButton onClickButton, @Nullable CppSpecialButton onLongClickButton) { this(id, onClickButton.getActionCode(), onLongClickButton == null ? null : onLongClickButton.getActionCode()); } - CalculatorButton(int id, @Nonnull CalculatorSpecialButton onClickButton) { + CppButton(int id, @Nonnull CppSpecialButton onClickButton) { this(id, onClickButton, null); } - CalculatorButton(int id, @Nonnull String action, @Nullable String actionLong) { + CppButton(int id, @Nonnull String action, @Nullable String actionLong) { this.id = id; this.action = action; this.actionLong = actionLong; } - CalculatorButton(int id, @Nonnull String action) { + CppButton(int id, @Nonnull String action) { this(id, action, null); } @Nullable - public static CalculatorButton getById(int buttonId) { + public static CppButton getById(int buttonId) { initButtonsByIdsMap(); return buttonsByIds.get(buttonId); } @@ -121,7 +122,7 @@ public enum CalculatorButton { private static void initButtonsByIdsMap() { Check.isMainThread(); if (buttonsByIds.size() == 0) { - for (CalculatorButton button : values()) { + for (CppButton button : values()) { buttonsByIds.append(button.id, button); } } diff --git a/app/src/main/java/org/solovyev/android/calculator/CalculatorSpecialButton.java b/app/src/main/java/org/solovyev/android/calculator/buttons/CppSpecialButton.java similarity index 87% rename from app/src/main/java/org/solovyev/android/calculator/CalculatorSpecialButton.java rename to app/src/main/java/org/solovyev/android/calculator/buttons/CppSpecialButton.java index be68503d..65bf9bf8 100644 --- a/app/src/main/java/org/solovyev/android/calculator/CalculatorSpecialButton.java +++ b/app/src/main/java/org/solovyev/android/calculator/buttons/CppSpecialButton.java @@ -20,7 +20,14 @@ * Site: http://se.solovyev.org */ -package org.solovyev.android.calculator; +package org.solovyev.android.calculator.buttons; + +import org.solovyev.android.calculator.App; +import org.solovyev.android.calculator.Calculator; +import org.solovyev.android.calculator.CalculatorEventType; +import org.solovyev.android.calculator.DisplayState; +import org.solovyev.android.calculator.Keyboard; +import org.solovyev.android.calculator.Locator; import java.util.HashMap; import java.util.Map; @@ -28,7 +35,7 @@ import java.util.Map; import javax.annotation.Nonnull; import javax.annotation.Nullable; -public enum CalculatorSpecialButton { +public enum CppSpecialButton { history("history") { @Override @@ -72,7 +79,6 @@ public enum CalculatorSpecialButton { Locator.getInstance().getCalculator().fireCalculatorEvent(CalculatorEventType.show_settings_widget, null); } }, - like("like") { @Override public void onClick(@Nonnull Keyboard keyboard) { @@ -164,17 +170,17 @@ public enum CalculatorSpecialButton { }; @Nonnull - private static Map buttonsByActionCodes = new HashMap<>(); + private static Map buttonsByActionCodes = new HashMap<>(); @Nonnull private final String actionCode; - CalculatorSpecialButton(@Nonnull String actionCode) { + CppSpecialButton(@Nonnull String actionCode) { this.actionCode = actionCode; } @Nullable - public static CalculatorSpecialButton getByActionCode(@Nonnull String actionCode) { + public static CppSpecialButton getByActionCode(@Nonnull String actionCode) { initButtonsByActionCodesMap(); return buttonsByActionCodes.get(actionCode); } @@ -183,10 +189,10 @@ public enum CalculatorSpecialButton { if (buttonsByActionCodes.isEmpty()) { // if not initialized - final CalculatorSpecialButton[] specialButtons = values(); + final CppSpecialButton[] specialButtons = values(); - final Map localButtonsByActionCodes = new HashMap(specialButtons.length); - for (CalculatorSpecialButton specialButton : specialButtons) { + final Map localButtonsByActionCodes = new HashMap(specialButtons.length); + for (CppSpecialButton specialButton : specialButtons) { localButtonsByActionCodes.put(specialButton.getActionCode(), specialButton); } diff --git a/app/src/main/java/org/solovyev/android/calculator/onscreen/CalculatorOnscreenView.java b/app/src/main/java/org/solovyev/android/calculator/onscreen/CalculatorOnscreenView.java index b94af29a..29afdba7 100644 --- a/app/src/main/java/org/solovyev/android/calculator/onscreen/CalculatorOnscreenView.java +++ b/app/src/main/java/org/solovyev/android/calculator/onscreen/CalculatorOnscreenView.java @@ -38,7 +38,7 @@ import android.view.View; import android.view.WindowManager; import android.widget.ImageView; -import org.solovyev.android.calculator.CalculatorButton; +import org.solovyev.android.calculator.buttons.CppButton; import org.solovyev.android.calculator.DisplayState; import org.solovyev.android.calculator.DisplayView; import org.solovyev.android.calculator.EditorState; @@ -152,7 +152,7 @@ public class CalculatorOnscreenView { return; } - for (final CalculatorButton widgetButton : CalculatorButton.values()) { + for (final CppButton widgetButton : CppButton.values()) { final View button = root.findViewById(widgetButton.id); if (button == null) { continue; @@ -163,7 +163,7 @@ public class CalculatorOnscreenView { if (keyboard.buttonPressed(widgetButton.action)) { v.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY); } - if (widgetButton == CalculatorButton.app) { + if (widgetButton == CppButton.app) { minimize(); } } diff --git a/app/src/main/java/org/solovyev/android/calculator/widget/CalculatorWidget.java b/app/src/main/java/org/solovyev/android/calculator/widget/CalculatorWidget.java index 81ed0a50..294f4896 100644 --- a/app/src/main/java/org/solovyev/android/calculator/widget/CalculatorWidget.java +++ b/app/src/main/java/org/solovyev/android/calculator/widget/CalculatorWidget.java @@ -44,7 +44,7 @@ import android.widget.RemoteViews; import org.solovyev.android.Check; import org.solovyev.android.Views; import org.solovyev.android.calculator.App; -import org.solovyev.android.calculator.CalculatorButton; +import org.solovyev.android.calculator.buttons.CppButton; import org.solovyev.android.calculator.DisplayState; import org.solovyev.android.calculator.EditorState; import org.solovyev.android.calculator.Locator; @@ -129,13 +129,13 @@ public class CalculatorWidget extends AppWidgetProvider { final RemoteViews views = new RemoteViews(context.getPackageName(), getLayout(manager, widgetId, resources, theme)); if (!partially || Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { - for (CalculatorButton button : CalculatorButton.values()) { + for (CppButton button : CppButton.values()) { final PendingIntent intent = intents.get(context, button); if (intent != null) { final int buttonId; - if (button == CalculatorButton.settings_widget) { + if (button == CppButton.settings_widget) { // overriding default settings button behavior - buttonId = CalculatorButton.settings.id; + buttonId = CppButton.settings.id; } else { buttonId = button.id; } @@ -254,10 +254,10 @@ public class CalculatorWidget extends AppWidgetProvider { private static class Intents { @Nonnull - private final EnumMap map = new EnumMap<>(CalculatorButton.class); + private final EnumMap map = new EnumMap<>(CppButton.class); @Nullable - PendingIntent get(@Nonnull Context context, @Nonnull CalculatorButton button) { + PendingIntent get(@Nonnull Context context, @Nonnull CppButton button) { Check.isMainThread(); PendingIntent intent = map.get(button); diff --git a/app/src/test/java/org/solovyev/android/calculator/CalculatorReceiverTest.java b/app/src/test/java/org/solovyev/android/calculator/CalculatorReceiverTest.java index 68cbda99..4dbdcd7a 100644 --- a/app/src/test/java/org/solovyev/android/calculator/CalculatorReceiverTest.java +++ b/app/src/test/java/org/solovyev/android/calculator/CalculatorReceiverTest.java @@ -11,7 +11,7 @@ import org.robolectric.annotation.Config; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.robolectric.RuntimeEnvironment.application; -import static org.solovyev.android.calculator.CalculatorButton.four; +import static org.solovyev.android.calculator.buttons.CppButton.four; import static org.solovyev.android.calculator.CalculatorReceiver.*; @Config(constants = BuildConfig.class, sdk = Build.VERSION_CODES.LOLLIPOP)