Display changes
This commit is contained in:
parent
af43970d9b
commit
a219db0391
@ -64,7 +64,7 @@ public abstract class BaseFragment extends Fragment {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
protected static MenuItem addMenu(@Nonnull ContextMenu menu, @StringRes int label, @Nonnull MenuItem.OnMenuItemClickListener listener) {
|
public static MenuItem addMenu(@Nonnull ContextMenu menu, @StringRes int label, @Nonnull MenuItem.OnMenuItemClickListener listener) {
|
||||||
return menu.add(NONE, label, NONE, label).setOnMenuItemClickListener(listener);
|
return menu.add(NONE, label, NONE, label).setOnMenuItemClickListener(listener);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,138 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2013 serso aka se.solovyev
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*
|
|
||||||
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
* Contact details
|
|
||||||
*
|
|
||||||
* Email: se.solovyev@gmail.com
|
|
||||||
* Site: http://se.solovyev.org
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.solovyev.android.calculator;
|
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
|
|
||||||
import org.solovyev.android.calculator.jscl.JsclOperation;
|
|
||||||
import org.solovyev.android.calculator.plot.CalculatorPlotter;
|
|
||||||
import org.solovyev.android.calculator.view.NumeralBaseConverterDialog;
|
|
||||||
import org.solovyev.android.menu.LabeledMenuItem;
|
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
|
||||||
|
|
||||||
import jscl.math.Generic;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* User: Solovyev_S
|
|
||||||
* Date: 21.09.12
|
|
||||||
* Time: 10:55
|
|
||||||
*/
|
|
||||||
public enum CalculatorDisplayMenuItem implements LabeledMenuItem<DisplayState> {
|
|
||||||
|
|
||||||
copy(R.string.c_copy) {
|
|
||||||
@Override
|
|
||||||
public void onClick(@Nonnull DisplayState data, @Nonnull Context context) {
|
|
||||||
Locator.getInstance().getKeyboard().copyButtonPressed();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
convert_to_bin(R.string.convert_to_bin) {
|
|
||||||
@Override
|
|
||||||
public void onClick(@Nonnull DisplayState data, @Nonnull Context context) {
|
|
||||||
ConversionMenuItem.convert_to_bin.onClick(data, context);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected boolean isItemVisibleFor(@Nonnull Generic generic, @Nonnull JsclOperation operation) {
|
|
||||||
return ConversionMenuItem.convert_to_bin.isItemVisibleFor(generic, operation);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
convert_to_dec(R.string.convert_to_dec) {
|
|
||||||
@Override
|
|
||||||
public void onClick(@Nonnull DisplayState data, @Nonnull Context context) {
|
|
||||||
ConversionMenuItem.convert_to_dec.onClick(data, context);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected boolean isItemVisibleFor(@Nonnull Generic generic, @Nonnull JsclOperation operation) {
|
|
||||||
return ConversionMenuItem.convert_to_dec.isItemVisibleFor(generic, operation);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
convert_to_hex(R.string.convert_to_hex) {
|
|
||||||
@Override
|
|
||||||
public void onClick(@Nonnull DisplayState data, @Nonnull Context context) {
|
|
||||||
ConversionMenuItem.convert_to_hex.onClick(data, context);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected boolean isItemVisibleFor(@Nonnull Generic generic, @Nonnull JsclOperation operation) {
|
|
||||||
return ConversionMenuItem.convert_to_hex.isItemVisibleFor(generic, operation);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
convert(R.string.c_convert) {
|
|
||||||
@Override
|
|
||||||
public void onClick(@Nonnull DisplayState data, @Nonnull Context context) {
|
|
||||||
final Generic result = data.getResult();
|
|
||||||
if (result != null) {
|
|
||||||
new NumeralBaseConverterDialog(result.toString()).show(context);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected boolean isItemVisibleFor(@Nonnull Generic generic, @Nonnull JsclOperation operation) {
|
|
||||||
return operation == JsclOperation.numeric && generic.getConstants().isEmpty();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
plot(R.string.c_plot) {
|
|
||||||
@Override
|
|
||||||
public void onClick(@Nonnull DisplayState data, @Nonnull Context context) {
|
|
||||||
final Generic expression = data.getResult();
|
|
||||||
if (expression == null) throw new AssertionError();
|
|
||||||
|
|
||||||
final CalculatorPlotter plotter = Locator.getInstance().getPlotter();
|
|
||||||
plotter.plot(expression);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected boolean isItemVisibleFor(@Nonnull Generic generic, @Nonnull JsclOperation operation) {
|
|
||||||
return Locator.getInstance().getPlotter().isPlotPossibleFor(generic);
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
private final int captionId;
|
|
||||||
|
|
||||||
CalculatorDisplayMenuItem(int captionId) {
|
|
||||||
this.captionId = captionId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public final boolean isItemVisible(@Nonnull DisplayState displayViewState) {
|
|
||||||
//noinspection ConstantConditions
|
|
||||||
return displayViewState.valid && displayViewState.getResult() != null && isItemVisibleFor(displayViewState.getResult(), displayViewState.getOperation());
|
|
||||||
}
|
|
||||||
|
|
||||||
protected boolean isItemVisibleFor(@Nonnull Generic generic, @Nonnull JsclOperation operation) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
@Override
|
|
||||||
public String getCaption(@Nonnull Context context) {
|
|
||||||
return context.getString(captionId);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,75 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2013 serso aka se.solovyev
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*
|
|
||||||
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
||||||
* Contact details
|
|
||||||
*
|
|
||||||
* Email: se.solovyev@gmail.com
|
|
||||||
* Site: http://se.solovyev.org
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.solovyev.android.calculator;
|
|
||||||
|
|
||||||
import android.support.v4.app.FragmentActivity;
|
|
||||||
import android.view.View;
|
|
||||||
|
|
||||||
import org.solovyev.android.menu.ContextMenuBuilder;
|
|
||||||
import org.solovyev.android.menu.ListContextMenu;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* User: Solovyev_S
|
|
||||||
* Date: 21.09.12
|
|
||||||
* Time: 10:58
|
|
||||||
*/
|
|
||||||
public class CalculatorDisplayOnClickListener implements View.OnClickListener {
|
|
||||||
|
|
||||||
@Nonnull
|
|
||||||
private final FragmentActivity activity;
|
|
||||||
|
|
||||||
public CalculatorDisplayOnClickListener(@Nonnull FragmentActivity activity) {
|
|
||||||
this.activity = activity;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onClick(View v) {
|
|
||||||
if (v instanceof DisplayView) {
|
|
||||||
final Display cd = App.getDisplay();
|
|
||||||
|
|
||||||
final DisplayState displayViewState = cd.getState();
|
|
||||||
|
|
||||||
if (displayViewState.valid) {
|
|
||||||
final List<CalculatorDisplayMenuItem> filteredMenuItems = new ArrayList<CalculatorDisplayMenuItem>(CalculatorDisplayMenuItem.values().length);
|
|
||||||
for (CalculatorDisplayMenuItem menuItem : CalculatorDisplayMenuItem.values()) {
|
|
||||||
if (menuItem.isItemVisible(displayViewState)) {
|
|
||||||
filteredMenuItems.add(menuItem);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!filteredMenuItems.isEmpty()) {
|
|
||||||
ContextMenuBuilder.newInstance(activity, "display-menu", ListContextMenu.newInstance(filteredMenuItems)).build(displayViewState).show();
|
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
|
||||||
final String errorMessage = displayViewState.text;
|
|
||||||
Locator.getInstance().getCalculator().fireCalculatorEvent(CalculatorEventType.show_evaluation_error, errorMessage, activity);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -70,17 +70,6 @@ public enum CalculatorEventType {
|
|||||||
|
|
||||||
conversion_finished,
|
conversion_finished,
|
||||||
|
|
||||||
/*
|
|
||||||
**********************************************************************
|
|
||||||
*
|
|
||||||
* MATH ENTITIES
|
|
||||||
*
|
|
||||||
**********************************************************************
|
|
||||||
*/
|
|
||||||
|
|
||||||
// @Nonnull Operator
|
|
||||||
use_operator,
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
**********************************************************************
|
**********************************************************************
|
||||||
*
|
*
|
||||||
|
@ -22,37 +22,56 @@
|
|||||||
|
|
||||||
package org.solovyev.android.calculator;
|
package org.solovyev.android.calculator;
|
||||||
|
|
||||||
|
import android.view.ContextMenu;
|
||||||
|
import android.view.MenuItem;
|
||||||
|
import android.view.View;
|
||||||
import com.squareup.otto.Bus;
|
import com.squareup.otto.Bus;
|
||||||
|
import com.squareup.otto.Subscribe;
|
||||||
|
import dagger.Lazy;
|
||||||
|
import jscl.math.Generic;
|
||||||
import org.solovyev.android.Check;
|
import org.solovyev.android.Check;
|
||||||
|
import org.solovyev.android.calculator.jscl.JsclOperation;
|
||||||
|
import org.solovyev.android.calculator.view.NumeralBaseConverterDialog;
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
|
|
||||||
import static org.solovyev.android.calculator.CalculatorEventType.calculation_cancelled;
|
import static org.solovyev.android.calculator.BaseFragment.addMenu;
|
||||||
import static org.solovyev.android.calculator.CalculatorEventType.calculation_failed;
|
import static org.solovyev.android.calculator.CalculatorEventType.*;
|
||||||
import static org.solovyev.android.calculator.CalculatorEventType.calculation_result;
|
|
||||||
import static org.solovyev.android.calculator.CalculatorEventType.conversion_failed;
|
|
||||||
import static org.solovyev.android.calculator.CalculatorEventType.conversion_result;
|
|
||||||
|
|
||||||
@Singleton
|
@Singleton
|
||||||
public class Display implements CalculatorEventListener {
|
public class Display implements CalculatorEventListener, View.OnClickListener, View.OnCreateContextMenuListener, MenuItem.OnMenuItemClickListener {
|
||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
private final CalculatorEventHolder lastEvent;
|
private final CalculatorEventHolder lastEvent;
|
||||||
|
@Nonnull
|
||||||
|
private final Bus bus;
|
||||||
@Inject
|
@Inject
|
||||||
Bus bus;
|
Lazy<Keyboard> keyboard;
|
||||||
|
@Inject
|
||||||
|
Lazy<Clipboard> clipboard;
|
||||||
@Nullable
|
@Nullable
|
||||||
private DisplayView view;
|
private DisplayView view;
|
||||||
@Nonnull
|
@Nonnull
|
||||||
private DisplayState state = DisplayState.empty();
|
private DisplayState state = DisplayState.empty();
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public Display(@Nonnull Calculator calculator) {
|
public Display(@Nonnull Calculator calculator, @Nonnull Bus bus) {
|
||||||
|
this.bus = bus;
|
||||||
lastEvent = new CalculatorEventHolder(CalculatorUtils.createFirstEventDataId());
|
lastEvent = new CalculatorEventHolder(CalculatorUtils.createFirstEventDataId());
|
||||||
calculator.addCalculatorEventListener(this);
|
calculator.addCalculatorEventListener(this);
|
||||||
|
bus.register(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Subscribe
|
||||||
|
public void onCopy(@Nonnull CopyOperation o) {
|
||||||
|
if (!state.valid) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
clipboard.get().setText(state.text);
|
||||||
|
Locator.getInstance().getNotifier().showMessage(CalculatorMessage.newInfoMessage(CalculatorMessages.result_copied));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void clearView(@Nonnull DisplayView view) {
|
public void clearView(@Nonnull DisplayView view) {
|
||||||
@ -66,6 +85,7 @@ public class Display implements CalculatorEventListener {
|
|||||||
public void setView(@Nonnull DisplayView view) {
|
public void setView(@Nonnull DisplayView view) {
|
||||||
Check.isMainThread();
|
Check.isMainThread();
|
||||||
this.view = view;
|
this.view = view;
|
||||||
|
this.view.setOnClickListener(this);
|
||||||
this.view.setState(state);
|
this.view.setState(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -161,6 +181,79 @@ public class Display implements CalculatorEventListener {
|
|||||||
setState(DisplayState.createValid(displayState.getOperation(), displayState.getResult(), result, calculatorEventData.getSequenceId()));
|
setState(DisplayState.createValid(displayState.getOperation(), displayState.getResult(), result, calculatorEventData.getSequenceId()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
if (state.valid) {
|
||||||
|
v.setOnCreateContextMenuListener(this);
|
||||||
|
v.showContextMenu();
|
||||||
|
v.setOnCreateContextMenuListener(null);
|
||||||
|
} else {
|
||||||
|
Locator.getInstance().getCalculator().fireCalculatorEvent(CalculatorEventType.show_evaluation_error, state.text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
|
||||||
|
if (!state.valid) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
addMenu(menu, R.string.c_copy, this);
|
||||||
|
|
||||||
|
final Generic result = state.getResult();
|
||||||
|
final JsclOperation operation = state.getOperation();
|
||||||
|
if (result != null) {
|
||||||
|
if (ConversionMenuItem.convert_to_bin.isItemVisibleFor(result, operation)) {
|
||||||
|
addMenu(menu, R.string.convert_to_bin, this);
|
||||||
|
}
|
||||||
|
if (ConversionMenuItem.convert_to_dec.isItemVisibleFor(result, operation)) {
|
||||||
|
addMenu(menu, R.string.convert_to_dec, this);
|
||||||
|
}
|
||||||
|
if (ConversionMenuItem.convert_to_hex.isItemVisibleFor(result, operation)) {
|
||||||
|
addMenu(menu, R.string.convert_to_hex, this);
|
||||||
|
}
|
||||||
|
if (operation == JsclOperation.numeric && result.getConstants().isEmpty()) {
|
||||||
|
addMenu(menu, R.string.c_convert, this);
|
||||||
|
}
|
||||||
|
if (Locator.getInstance().getPlotter().isPlotPossibleFor(result)) {
|
||||||
|
addMenu(menu, R.string.c_plot, this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onMenuItemClick(MenuItem item) {
|
||||||
|
final Generic result = state.getResult();
|
||||||
|
switch (item.getItemId()) {
|
||||||
|
case R.string.c_copy:
|
||||||
|
keyboard.get().copyButtonPressed();
|
||||||
|
return true;
|
||||||
|
case R.string.convert_to_bin:
|
||||||
|
ConversionMenuItem.convert_to_bin.onClick(state, App.getApplication());
|
||||||
|
return true;
|
||||||
|
case R.string.convert_to_dec:
|
||||||
|
ConversionMenuItem.convert_to_dec.onClick(state, App.getApplication());
|
||||||
|
return true;
|
||||||
|
case R.string.convert_to_hex:
|
||||||
|
ConversionMenuItem.convert_to_hex.onClick(state, App.getApplication());
|
||||||
|
return true;
|
||||||
|
case R.string.c_convert:
|
||||||
|
if (result != null) {
|
||||||
|
new NumeralBaseConverterDialog(result.toString()).show(App.getApplication());
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
case R.string.c_plot:
|
||||||
|
if (result != null) {
|
||||||
|
Locator.getInstance().getPlotter().plot(result);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class CopyOperation {
|
||||||
|
}
|
||||||
|
|
||||||
public static class ChangedEvent {
|
public static class ChangedEvent {
|
||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
|
@ -25,7 +25,8 @@ package org.solovyev.android.calculator;
|
|||||||
import android.os.Parcel;
|
import android.os.Parcel;
|
||||||
import android.os.Parcelable;
|
import android.os.Parcelable;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
|
import android.view.ContextMenu;
|
||||||
|
import jscl.math.Generic;
|
||||||
import org.json.JSONException;
|
import org.json.JSONException;
|
||||||
import org.json.JSONObject;
|
import org.json.JSONObject;
|
||||||
import org.solovyev.android.calculator.jscl.JsclOperation;
|
import org.solovyev.android.calculator.jscl.JsclOperation;
|
||||||
@ -33,9 +34,7 @@ import org.solovyev.android.calculator.jscl.JsclOperation;
|
|||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
import jscl.math.Generic;
|
public class DisplayState implements Parcelable, ContextMenu.ContextMenuInfo {
|
||||||
|
|
||||||
public class DisplayState implements Parcelable {
|
|
||||||
|
|
||||||
public static final Creator<DisplayState> CREATOR = new Creator<DisplayState>() {
|
public static final Creator<DisplayState> CREATOR = new Creator<DisplayState>() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -25,7 +25,6 @@ package org.solovyev.android.calculator;
|
|||||||
import android.app.Service;
|
import android.app.Service;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
import android.support.v4.app.FragmentActivity;
|
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.util.TypedValue;
|
import android.util.TypedValue;
|
||||||
@ -70,7 +69,6 @@ public class DisplayView extends AutoResizeTextView {
|
|||||||
if (!layout.optimized) {
|
if (!layout.optimized) {
|
||||||
setTextSize(TypedValue.COMPLEX_UNIT_SP, getResources().getDimension(R.dimen.cpp_display_text_size_mobile));
|
setTextSize(TypedValue.COMPLEX_UNIT_SP, getResources().getDimension(R.dimen.cpp_display_text_size_mobile));
|
||||||
}
|
}
|
||||||
setOnClickListener(new CalculatorDisplayOnClickListener((FragmentActivity) context));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nonnull
|
@Nonnull
|
||||||
|
@ -23,6 +23,8 @@
|
|||||||
package org.solovyev.android.calculator;
|
package org.solovyev.android.calculator;
|
||||||
|
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
|
import com.squareup.otto.Bus;
|
||||||
|
import dagger.Lazy;
|
||||||
import org.solovyev.android.calculator.math.MathType;
|
import org.solovyev.android.calculator.math.MathType;
|
||||||
import org.solovyev.common.text.Strings;
|
import org.solovyev.common.text.Strings;
|
||||||
|
|
||||||
@ -40,9 +42,9 @@ public class Keyboard {
|
|||||||
@Inject
|
@Inject
|
||||||
Editor editor;
|
Editor editor;
|
||||||
@Inject
|
@Inject
|
||||||
Display display;
|
Lazy<Clipboard> clipboard;
|
||||||
@Inject
|
@Inject
|
||||||
Clipboard clipboard;
|
Lazy<Bus> bus;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public Keyboard() {
|
public Keyboard() {
|
||||||
@ -112,7 +114,7 @@ public class Keyboard {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void roundBracketsButtonPressed() {
|
public void roundBracketsButtonPressed() {
|
||||||
EditorState viewState = editor.getState();
|
EditorState viewState = editor.getState();
|
||||||
|
|
||||||
final int cursorPosition = viewState.selection;
|
final int cursorPosition = viewState.selection;
|
||||||
final CharSequence oldText = viewState.text;
|
final CharSequence oldText = viewState.text;
|
||||||
@ -121,7 +123,7 @@ public class Keyboard {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void pasteButtonPressed() {
|
public void pasteButtonPressed() {
|
||||||
final String text = clipboard.getText();
|
final String text = clipboard.get().getText();
|
||||||
if (!TextUtils.isEmpty(text)) {
|
if (!TextUtils.isEmpty(text)) {
|
||||||
editor.insert(text);
|
editor.insert(text);
|
||||||
}
|
}
|
||||||
@ -132,12 +134,7 @@ public class Keyboard {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void copyButtonPressed() {
|
public void copyButtonPressed() {
|
||||||
final DisplayState displayState = display.getState();
|
bus.get().post(new Display.CopyOperation());
|
||||||
if (!displayState.valid) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
clipboard.setText(displayState.text);
|
|
||||||
Locator.getInstance().getNotifier().showMessage(CalculatorMessage.newInfoMessage(CalculatorMessages.result_copied));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void moveCursorLeft() {
|
public void moveCursorLeft() {
|
||||||
|
Loading…
Reference in New Issue
Block a user