functions activity added
This commit is contained in:
parent
cf0e3e697b
commit
dd63a57c0b
@ -7,8 +7,8 @@
|
||||
|
||||
<uses-permission a:name="android.permission.VIBRATE"/>
|
||||
|
||||
<uses-sdk a:minSdkVersion="4"
|
||||
a:targetSdkVersion="8"/>
|
||||
<uses-sdk a:minSdkVersion="4"
|
||||
a:targetSdkVersion="8"/>
|
||||
|
||||
<application a:icon="@drawable/icon"
|
||||
a:label="@string/c_app_name">
|
||||
@ -36,6 +36,11 @@
|
||||
a:label="@string/c_about"
|
||||
a:configChanges="orientation|keyboardHidden"/>
|
||||
|
||||
<activity a:name=".CalculatorFunctionsActivity"
|
||||
a:label="@string/c_functions"
|
||||
a:configChanges="orientation|keyboardHidden">
|
||||
</activity>
|
||||
|
||||
<activity a:name=".CalculatorVarsActivity"
|
||||
a:label="@string/c_vars_and_constants"
|
||||
a:configChanges="orientation|keyboardHidden">
|
||||
|
@ -105,8 +105,8 @@
|
||||
|
||||
<LinearLayout a:layout_weight="1" a:layout_width="fill_parent" a:layout_height="0dp">
|
||||
|
||||
<include layout="@layout/calc_functions_button"/>
|
||||
<include layout="@layout/calc_donate_button"/>
|
||||
<include layout="@layout/calc_empty_button"/>
|
||||
<include layout="@layout/calc_one_digit_button"/>
|
||||
<include layout="@layout/calc_two_digit_button"/>
|
||||
<include layout="@layout/calc_three_digit_button"/>
|
||||
|
@ -99,8 +99,8 @@
|
||||
|
||||
<LinearLayout a:layout_weight="1" a:layout_width="fill_parent" a:layout_height="0dp">
|
||||
|
||||
<include layout="@layout/calc_functions_button"/>
|
||||
<include layout="@layout/calc_donate_button"/>
|
||||
<include layout="@layout/calc_empty_button"/>
|
||||
<include layout="@layout/calc_seven_digit_button"/>
|
||||
<include layout="@layout/calc_eight_digit_button"/>
|
||||
<include layout="@layout/calc_nine_digit_button"/>
|
||||
|
@ -80,8 +80,8 @@
|
||||
<include layout="@layout/calc_left_button"/>
|
||||
<include layout="@layout/calc_right_button"/>
|
||||
<include layout="@layout/calc_vars_button"/>
|
||||
<include layout="@layout/calc_functions_button"/>
|
||||
<include layout="@layout/calc_history_button"/>
|
||||
<include layout="@layout/calc_donate_button"/>
|
||||
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
@ -74,8 +74,8 @@
|
||||
<include layout="@layout/calc_left_button"/>
|
||||
<include layout="@layout/calc_right_button"/>
|
||||
<include layout="@layout/calc_vars_button"/>
|
||||
<include layout="@layout/calc_functions_button"/>
|
||||
<include layout="@layout/calc_history_button"/>
|
||||
<include layout="@layout/calc_donate_button"/>
|
||||
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
14
res/layout/calc_functions_button.xml
Normal file
14
res/layout/calc_functions_button.xml
Normal file
@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<!--
|
||||
~ Copyright (c) 2009-2011. Created by serso aka se.solovyev.
|
||||
~ For more information, please, contact se.solovyev@gmail.com
|
||||
~ or visit http://se.solovyev.org
|
||||
-->
|
||||
|
||||
<org.solovyev.android.view.widgets.DirectionDragButton xmlns:a="http://schemas.android.com/apk/res/android"
|
||||
a:id="@+id/functionsButton"
|
||||
a:text="ƒ(x)"
|
||||
a:textStyle="italic"
|
||||
a:onClick="functionsButtonClickHandler"
|
||||
style="?controlButtonStyle"/>
|
@ -8,8 +8,7 @@
|
||||
<org.solovyev.android.view.widgets.DirectionDragButton xmlns:a="http://schemas.android.com/apk/res/android"
|
||||
xmlns:calc="http://schemas.android.com/apk/res/org.solovyev.android.calculator"
|
||||
a:id="@+id/subtractionButton" a:text="-"
|
||||
calc:textUp="{"
|
||||
calc:textDown="}"
|
||||
calc:textUp=","
|
||||
calc:directionTextScale="0.5"
|
||||
|
||||
style="?digitButtonStyle"
|
||||
|
20
res/layout/functions.xml
Normal file
20
res/layout/functions.xml
Normal file
@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<!--
|
||||
~ Copyright (c) 2009-2011. Created by serso aka se.solovyev.
|
||||
~ For more information, please, contact se.solovyev@gmail.com
|
||||
~ or visit http://se.solovyev.org
|
||||
-->
|
||||
|
||||
<LinearLayout xmlns:a="http://schemas.android.com/apk/res/android"
|
||||
a:orientation="vertical"
|
||||
a:layout_width="fill_parent"
|
||||
a:layout_height="fill_parent">
|
||||
|
||||
<ListView
|
||||
a:layout_width="fill_parent"
|
||||
a:layout_height="fill_parent"
|
||||
a:layout_weight="1"
|
||||
a:id="@android:id/list"/>
|
||||
|
||||
</LinearLayout>
|
@ -116,5 +116,6 @@
|
||||
|
||||
<string name="p_calc_haptic_feedback_duration_title">Длительность отклика</string>
|
||||
<string name="p_calc_haptic_feedback_duration_summary">Длительность вибрации по нажатию клавиши</string>
|
||||
<string name="c_functions">Функции</string>
|
||||
|
||||
</resources>
|
||||
|
@ -117,5 +117,6 @@
|
||||
|
||||
<string name="p_calc_haptic_feedback_duration_title">Haptic feedback duration</string>
|
||||
<string name="p_calc_haptic_feedback_duration_summary">Duration vibration on button click</string>
|
||||
<string name="c_functions">Functions</string>
|
||||
|
||||
</resources>
|
||||
|
@ -332,6 +332,11 @@ public class CalculatorActivity extends Activity implements FontSizeAdjuster, Sh
|
||||
calculatorModel.processDigitButtonAction(((DirectionDragButton) v).getTextMiddle());
|
||||
}
|
||||
|
||||
@SuppressWarnings({"UnusedDeclaration"})
|
||||
public void functionsButtonClickHandler(@NotNull View v) {
|
||||
startActivity(new Intent(this, CalculatorFunctionsActivity.class));
|
||||
}
|
||||
|
||||
@SuppressWarnings({"UnusedDeclaration"})
|
||||
public void varsButtonClickHandler(@NotNull View v) {
|
||||
startActivity(new Intent(this, CalculatorVarsActivity.class));
|
||||
|
@ -0,0 +1,97 @@
|
||||
/*
|
||||
* Copyright (c) 2009-2011. Created by serso aka se.solovyev.
|
||||
* For more information, please, contact se.solovyev@gmail.com
|
||||
* or visit http://se.solovyev.org
|
||||
*/
|
||||
|
||||
package org.solovyev.android.calculator;
|
||||
|
||||
import android.app.ListActivity;
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.*;
|
||||
import jscl.math.function.Function;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.solovyev.android.calculator.model.CalculatorEngine;
|
||||
import org.solovyev.common.utils.StringUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* User: serso
|
||||
* Date: 10/29/11
|
||||
* Time: 4:55 PM
|
||||
*/
|
||||
public class CalculatorFunctionsActivity extends ListActivity{
|
||||
|
||||
@NotNull
|
||||
private FunctionsArrayAdapter adapter;
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
setContentView(R.layout.functions);
|
||||
|
||||
adapter = new FunctionsArrayAdapter(this, R.layout.var, R.id.var_text, new ArrayList<Function>(CalculatorEngine.instance.getFunctionsRegistry().getEntities()));
|
||||
setListAdapter(adapter);
|
||||
|
||||
final ListView lv = getListView();
|
||||
lv.setTextFilterEnabled(true);
|
||||
|
||||
|
||||
|
||||
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
||||
public void onItemClick(final AdapterView<?> parent,
|
||||
final View view,
|
||||
final int position,
|
||||
final long id) {
|
||||
|
||||
CalculatorModel.instance.processDigitButtonAction(((Function) parent.getItemAtPosition(position)).getName(), false);
|
||||
|
||||
CalculatorFunctionsActivity.this.finish();
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
private class FunctionsArrayAdapter extends ArrayAdapter<Function> {
|
||||
|
||||
private FunctionsArrayAdapter(Context context, int resource, int textViewResourceId, List<Function> objects) {
|
||||
super(context, resource, textViewResourceId, objects);
|
||||
}
|
||||
|
||||
@Override
|
||||
public View getView(int position, View convertView, ViewGroup parent) {
|
||||
final ViewGroup result = (ViewGroup) super.getView(position, convertView, parent);
|
||||
|
||||
final Function function = getItem(position);
|
||||
|
||||
if (!StringUtils.isEmpty(function.getDescription())) {
|
||||
TextView description = (TextView) result.findViewById(R.id.var_description);
|
||||
if (description == null) {
|
||||
final LayoutInflater layoutInflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
|
||||
final ViewGroup itemView = (ViewGroup) layoutInflater.inflate(R.layout.var, null);
|
||||
description = (TextView) itemView.findViewById(R.id.var_description);
|
||||
itemView.removeView(description);
|
||||
result.addView(description);
|
||||
}
|
||||
description.setText(function.getDescription());
|
||||
} else {
|
||||
TextView description = (TextView) result.findViewById(R.id.var_description);
|
||||
if (description != null) {
|
||||
result.removeView(description);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -239,6 +239,10 @@ public enum CalculatorModel implements CursorControl, HistoryControl<CalculatorH
|
||||
}
|
||||
|
||||
public void processDigitButtonAction(@Nullable final String text) {
|
||||
processDigitButtonAction(text, true);
|
||||
}
|
||||
|
||||
public void processDigitButtonAction(@Nullable final String text, boolean delayEvaluate) {
|
||||
//Toast.makeText(CalculatorActivity.this, text, Toast.LENGTH_SHORT).show();
|
||||
|
||||
if (!StringUtils.isEmpty(text)) {
|
||||
@ -268,7 +272,7 @@ public enum CalculatorModel implements CursorControl, HistoryControl<CalculatorH
|
||||
editor.getText().insert(editor.getSelectionStart(), textToBeInserted.toString());
|
||||
editor.setSelection(editor.getSelectionStart() + cursorPositionOffset, editor.getSelectionEnd() + cursorPositionOffset);
|
||||
}
|
||||
});
|
||||
}, delayEvaluate);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user