diff --git a/app/build.gradle b/app/build.gradle
new file mode 100644
index 000000000..80a12f5b5
--- /dev/null
+++ b/app/build.gradle
@@ -0,0 +1,43 @@
+apply plugin: 'com.android.application'
+
+android {
+ compileSdk 35
+ namespace "ai.elimu.calculator"
+
+ defaultConfig {
+ applicationId "ai.elimu.calculator"
+ minSdkVersion 26
+ targetSdkVersion 35
+ versionCode 2000000
+ versionName "2.0.0"
+ }
+
+ buildTypes {
+ debug {
+ applicationIdSuffix ".debug"
+ versionNameSuffix "-debug"
+ }
+ release {
+ minifyEnabled false
+ }
+ }
+
+ compileOptions {
+ sourceCompatibility = JavaVersion.VERSION_17
+ targetCompatibility = JavaVersion.VERSION_17
+ }
+
+ lintOptions {
+ disable 'MissingTranslation'
+ abortOnError false
+ }
+}
+
+dependencies {
+ implementation fileTree(dir: 'libs', include: ['*.jar'])
+
+ implementation 'androidx.appcompat:appcompat:1.7.0'
+ implementation 'androidx.recyclerview:recyclerview:1.4.0'
+ implementation 'androidx.legacy:legacy-support-v4:1.0.0'
+ implementation 'ai.elimu:model:model-2.0.100'
+}
diff --git a/libs/arity-2.1.6.jar b/app/libs/arity-2.1.6.jar
similarity index 100%
rename from libs/arity-2.1.6.jar
rename to app/libs/arity-2.1.6.jar
diff --git a/libs/ejml-0.21.jar b/app/libs/ejml-0.21.jar
similarity index 100%
rename from libs/ejml-0.21.jar
rename to app/libs/ejml-0.21.jar
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
new file mode 100644
index 000000000..08ff8aefe
--- /dev/null
+++ b/app/src/main/AndroidManifest.xml
@@ -0,0 +1,106 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/com/android/calculator2/Calculator.java b/app/src/main/java/com/android/calculator2/Calculator.java
similarity index 92%
rename from src/com/android/calculator2/Calculator.java
rename to app/src/main/java/com/android/calculator2/Calculator.java
index 4f0f35f66..420054ea9 100644
--- a/src/com/android/calculator2/Calculator.java
+++ b/app/src/main/java/com/android/calculator2/Calculator.java
@@ -24,12 +24,15 @@
import android.animation.ValueAnimator;
import android.animation.ValueAnimator.AnimatorUpdateListener;
import android.app.Activity;
+import android.content.SharedPreferences;
import android.os.Bundle;
-import android.support.annotation.NonNull;
-import android.support.v7.widget.RecyclerView;
+import android.preference.PreferenceManager;
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
+import android.util.Log;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.View;
@@ -42,17 +45,20 @@
import android.widget.Button;
import android.widget.FrameLayout;
-import com.android.calculator2.view.GraphView;
-import com.android.calculator2.view.MultiButton;
-import com.android.calculator2.view.display.AdvancedDisplay.OnTextSizeChangeListener;
import com.android.calculator2.CalculatorExpressionEvaluator.EvaluateCallback;
-import com.android.calculator2.view.display.AdvancedDisplay;
+import com.android.calculator2.receiver.StudentUpdatedReceiver;
+import com.android.calculator2.util.DigitLabelHelper;
+import com.android.calculator2.util.PlayerUtil;
import com.android.calculator2.view.DisplayOverlay;
import com.android.calculator2.view.DisplayOverlay.DisplayMode;
+import com.android.calculator2.view.GraphView;
import com.android.calculator2.view.MatrixEditText;
import com.android.calculator2.view.MatrixInverseView;
import com.android.calculator2.view.MatrixTransposeView;
import com.android.calculator2.view.MatrixView;
+import com.android.calculator2.view.MultiButton;
+import com.android.calculator2.view.display.AdvancedDisplay;
+import com.android.calculator2.view.display.AdvancedDisplay.OnTextSizeChangeListener;
import com.xlythe.math.Base;
import com.xlythe.math.Constants;
import com.xlythe.math.GraphModule;
@@ -60,6 +66,13 @@
import com.xlythe.math.HistoryEntry;
import com.xlythe.math.Persist;
+import ai.elimu.calculator.R;
+import ai.elimu.model.v2.enums.content.NumeracySkill;
+
+import java.util.Set;
+
+import static com.android.calculator2.util.PlayerUtil.RAW_FILE_EQUALS;
+
public class Calculator extends Activity
implements OnTextSizeChangeListener, EvaluateCallback, OnLongClickListener {
@@ -154,6 +167,25 @@ protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_calculator);
+ // Personalize available operators
+ Button buttonOperatorMul = (Button) findViewById(R.id.op_mul);
+ Button buttonOperatorSub = (Button) findViewById(R.id.op_sub);
+ Button buttonOperatorAdd = (Button) findViewById(R.id.op_add);
+ SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
+ Set numeracySkillSet = sharedPreferences.getStringSet(StudentUpdatedReceiver.PREF_STUDENT_NUMERACY_SKILLS, null);
+ Log.d(getClass().getName(), "numeracySkillSet: " + numeracySkillSet);
+ if (numeracySkillSet == null) {
+ buttonOperatorMul.setVisibility(View.INVISIBLE);
+ buttonOperatorSub.setVisibility(View.INVISIBLE);
+ } else {
+ if (!numeracySkillSet.contains(NumeracySkill.MULTIPLICATION.toString())) {
+ buttonOperatorMul.setVisibility(View.INVISIBLE);
+ }
+ if (!numeracySkillSet.contains(NumeracySkill.SUBTRACTION.toString())) {
+ buttonOperatorSub.setVisibility(View.INVISIBLE);
+ }
+ }
+
mX = getString(R.string.X);
mDisplayView = (DisplayOverlay) findViewById(R.id.display);
mFormulaEditText = (AdvancedDisplay) findViewById(R.id.formula);
@@ -258,8 +290,9 @@ protected void onResume() {
new HistoryAdapter.HistoryItemCallback() {
@Override
public void onHistoryItemSelected(HistoryEntry entry) {
- mFormulaEditText.insert(entry.getEdited());
- mDisplayView.collapseHistory();
+ //Disabled insert text in the formula
+// mFormulaEditText.insert(entry.getEdited());
+// mDisplayView.collapseHistory();
}
});
mHistory.setObserver(mHistoryAdapter);
@@ -342,6 +375,12 @@ public void onUserInteraction() {
}
public void onButtonClick(View view) {
+
+ // Play audio for numbers and operators
+ if ((view.getTag() != null) && !RAW_FILE_EQUALS.equals(view.getTag())) {
+ PlayerUtil.playRawFile(this, view.getTag().toString());
+ }
+
mCurrentButton = view;
switch (view.getId()) {
case R.id.eq:
@@ -443,7 +482,7 @@ public void onEvaluate(String expr, String result, int errorResourceId) {
mResultEditText.clear();
}
else {
- mResultEditText.setText(result);
+ mResultEditText.setText("=" + result);
}
} else if (errorResourceId != INVALID_RES_ID) {
onError(errorResourceId);
@@ -590,6 +629,15 @@ public void onAnimationStart(Animator animation) {
}
private void onResult(final String result) {
+
+ // Play audio for result
+ if (TextUtils.isDigitsOnly(result) && (Integer.parseInt(result) < 10)) {
+ View view = findViewById(DigitLabelHelper.getIdForDigit(Integer.parseInt(result)));
+ PlayerUtil.playResult(this, view.getTag().toString());
+ } else {
+ PlayerUtil.playRawFile(this, RAW_FILE_EQUALS);
+ }
+
// Make the clear button appear immediately.
setClearVisibility(true);
diff --git a/src/com/android/calculator2/CalculatorExpressionEvaluator.java b/app/src/main/java/com/android/calculator2/CalculatorExpressionEvaluator.java
similarity index 95%
rename from src/com/android/calculator2/CalculatorExpressionEvaluator.java
rename to app/src/main/java/com/android/calculator2/CalculatorExpressionEvaluator.java
index 2da74e9d9..a846680d5 100644
--- a/src/com/android/calculator2/CalculatorExpressionEvaluator.java
+++ b/app/src/main/java/com/android/calculator2/CalculatorExpressionEvaluator.java
@@ -15,15 +15,11 @@
*/
package com.android.calculator2;
-import android.util.Log;
-
import com.xlythe.math.Base;
-import com.xlythe.math.EquationFormatter;
import com.xlythe.math.Solver;
-import org.javia.arity.Symbols;
import org.javia.arity.SyntaxException;
-import org.javia.arity.Util;
+import ai.elimu.calculator.R;
public class CalculatorExpressionEvaluator {
private final Solver mSolver;
diff --git a/src/com/android/calculator2/CalculatorExpressionTokenizer.java b/app/src/main/java/com/android/calculator2/CalculatorExpressionTokenizer.java
similarity index 99%
rename from src/com/android/calculator2/CalculatorExpressionTokenizer.java
rename to app/src/main/java/com/android/calculator2/CalculatorExpressionTokenizer.java
index 713e87259..570abf771 100644
--- a/src/com/android/calculator2/CalculatorExpressionTokenizer.java
+++ b/app/src/main/java/com/android/calculator2/CalculatorExpressionTokenizer.java
@@ -27,6 +27,8 @@
import com.xlythe.math.Constants;
+import ai.elimu.calculator.R;
+
import java.util.LinkedList;
import java.util.List;
diff --git a/src/com/android/calculator2/CalculatorNumericPadLayout.java b/app/src/main/java/com/android/calculator2/CalculatorNumericPadLayout.java
similarity index 100%
rename from src/com/android/calculator2/CalculatorNumericPadLayout.java
rename to app/src/main/java/com/android/calculator2/CalculatorNumericPadLayout.java
diff --git a/src/com/android/calculator2/CalculatorPadLayout.java b/app/src/main/java/com/android/calculator2/CalculatorPadLayout.java
similarity index 100%
rename from src/com/android/calculator2/CalculatorPadLayout.java
rename to app/src/main/java/com/android/calculator2/CalculatorPadLayout.java
diff --git a/src/com/android/calculator2/CalculatorPadViewPager.java b/app/src/main/java/com/android/calculator2/CalculatorPadViewPager.java
similarity index 95%
rename from src/com/android/calculator2/CalculatorPadViewPager.java
rename to app/src/main/java/com/android/calculator2/CalculatorPadViewPager.java
index 939dced1e..7c2a72dde 100644
--- a/src/com/android/calculator2/CalculatorPadViewPager.java
+++ b/app/src/main/java/com/android/calculator2/CalculatorPadViewPager.java
@@ -16,15 +16,13 @@
package com.android.calculator2;
import android.content.Context;
-import android.support.v4.view.PagerAdapter;
-import android.support.v4.view.ViewPager;
+import androidx.viewpager.widget.PagerAdapter;
+import androidx.viewpager.widget.ViewPager;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.Button;
-import android.widget.Toast;
-import com.xlythe.math.Constants;
+import ai.elimu.calculator.R;
public class CalculatorPadViewPager extends ViewPager {
private NumberBaseManager mBaseManager;
diff --git a/src/com/android/calculator2/Clipboard.java b/app/src/main/java/com/android/calculator2/Clipboard.java
similarity index 98%
rename from src/com/android/calculator2/Clipboard.java
rename to app/src/main/java/com/android/calculator2/Clipboard.java
index f25141652..9d28c1bf6 100644
--- a/src/com/android/calculator2/Clipboard.java
+++ b/app/src/main/java/com/android/calculator2/Clipboard.java
@@ -5,6 +5,8 @@
import android.content.Context;
import android.widget.Toast;
+import ai.elimu.calculator.R;
+
/**
* Simplify Android copy/paste
*/
diff --git a/src/com/android/calculator2/GraphController.java b/app/src/main/java/com/android/calculator2/GraphController.java
similarity index 99%
rename from src/com/android/calculator2/GraphController.java
rename to app/src/main/java/com/android/calculator2/GraphController.java
index 0e879da99..a1823ef2f 100644
--- a/src/com/android/calculator2/GraphController.java
+++ b/app/src/main/java/com/android/calculator2/GraphController.java
@@ -12,6 +12,8 @@
import com.xlythe.math.GraphModule.OnGraphUpdatedListener;
import com.xlythe.math.Point;
+import ai.elimu.calculator.R;
+
import java.util.ArrayList;
import java.util.List;
diff --git a/src/com/android/calculator2/HistoryAdapter.java b/app/src/main/java/com/android/calculator2/HistoryAdapter.java
similarity index 97%
rename from src/com/android/calculator2/HistoryAdapter.java
rename to app/src/main/java/com/android/calculator2/HistoryAdapter.java
index 2a123b4ff..e159146b1 100644
--- a/src/com/android/calculator2/HistoryAdapter.java
+++ b/app/src/main/java/com/android/calculator2/HistoryAdapter.java
@@ -17,7 +17,7 @@
package com.android.calculator2;
import android.content.Context;
-import android.support.v7.widget.RecyclerView;
+import androidx.recyclerview.widget.RecyclerView;
import android.text.Html;
import android.text.Spanned;
import android.view.LayoutInflater;
@@ -29,6 +29,8 @@
import com.xlythe.math.History;
import com.xlythe.math.HistoryEntry;
+import ai.elimu.calculator.R;
+
import java.util.Vector;
public class HistoryAdapter extends RecyclerView.Adapter {
diff --git a/src/com/android/calculator2/NumberBaseManager.java b/app/src/main/java/com/android/calculator2/NumberBaseManager.java
similarity index 98%
rename from src/com/android/calculator2/NumberBaseManager.java
rename to app/src/main/java/com/android/calculator2/NumberBaseManager.java
index e25e07c02..85d334d48 100644
--- a/src/com/android/calculator2/NumberBaseManager.java
+++ b/app/src/main/java/com/android/calculator2/NumberBaseManager.java
@@ -2,6 +2,8 @@
import com.xlythe.math.Base;
+import ai.elimu.calculator.R;
+
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
diff --git a/src/com/android/calculator2/floating/FloatingCalculator.java b/app/src/main/java/com/android/calculator2/floating/FloatingCalculator.java
similarity index 83%
rename from src/com/android/calculator2/floating/FloatingCalculator.java
rename to app/src/main/java/com/android/calculator2/floating/FloatingCalculator.java
index 16fcfc5ab..dedbe54d9 100644
--- a/src/com/android/calculator2/floating/FloatingCalculator.java
+++ b/app/src/main/java/com/android/calculator2/floating/FloatingCalculator.java
@@ -3,7 +3,8 @@
import android.content.ClipData;
import android.content.ClipboardManager;
import android.content.Context;
-import android.support.v4.view.ViewPager;
+import androidx.viewpager.widget.ViewPager;
+import android.text.TextUtils;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
@@ -13,12 +14,16 @@
import com.android.calculator2.Calculator;
import com.android.calculator2.CalculatorExpressionEvaluator;
import com.android.calculator2.CalculatorExpressionTokenizer;
-import com.android.calculator2.R;
+import com.android.calculator2.util.DigitLabelHelper;
+import com.android.calculator2.util.PlayerUtil;
import com.android.calculator2.view.display.AdvancedDisplay;
import com.xlythe.floatingview.FloatingView;
import com.xlythe.math.History;
import com.xlythe.math.Persist;
+import ai.elimu.calculator.R;
+
+import static com.android.calculator2.util.PlayerUtil.RAW_FILE_EQUALS;
public class FloatingCalculator extends FloatingView {
// Calc logic
@@ -42,7 +47,7 @@ public View inflateButton() {
}
public View inflateView() {
- View child = View.inflate(getContext(), R.layout.floating_calculator, null);
+ final View child = View.inflate(getContext(), R.layout.floating_calculator, null);
mTokenizer = new CalculatorExpressionTokenizer(this);
mEvaluator = new CalculatorExpressionEvaluator(mTokenizer);
@@ -68,7 +73,11 @@ public boolean onLongClick(View v) {
mClear = (ImageButton) child.findViewById(R.id.clear);
mListener = new View.OnClickListener() {
@Override
- public void onClick(View v) {
+ public void onClick(final View v) {
+ if (v.getTag() != null && !RAW_FILE_EQUALS.equals(v.getTag())) {
+ PlayerUtil.playRawFile(getContext(), v.getTag().toString());
+ }
+
if(v instanceof Button) {
if(((Button) v).getText().toString().equals("=")) {
mEvaluator.evaluate(mDisplay.getText(), new CalculatorExpressionEvaluator.EvaluateCallback() {
@@ -77,6 +86,13 @@ public void onEvaluate(String expr, String result, int errorResourceId) {
if (errorResourceId != Calculator.INVALID_RES_ID) {
onError(errorResourceId);
} else {
+ // Play audio for result
+ if (result != null && TextUtils.isDigitsOnly(result) && Integer.parseInt(result) < 10) {
+ View view = child.findViewById(DigitLabelHelper.getIdForDigit(Integer.parseInt(result)));
+ PlayerUtil.playResult(getContext(), view.getTag().toString());
+ } else {
+ PlayerUtil.playRawFile(getContext(), RAW_FILE_EQUALS);
+ }
setText(result);
}
}
diff --git a/src/com/android/calculator2/floating/FloatingCalculatorCreateShortCutActivity.java b/app/src/main/java/com/android/calculator2/floating/FloatingCalculatorCreateShortCutActivity.java
similarity index 97%
rename from src/com/android/calculator2/floating/FloatingCalculatorCreateShortCutActivity.java
rename to app/src/main/java/com/android/calculator2/floating/FloatingCalculatorCreateShortCutActivity.java
index ba4f0299a..ac43986b6 100644
--- a/src/com/android/calculator2/floating/FloatingCalculatorCreateShortCutActivity.java
+++ b/app/src/main/java/com/android/calculator2/floating/FloatingCalculatorCreateShortCutActivity.java
@@ -4,7 +4,7 @@
import android.content.Intent;
import android.os.Bundle;
-import com.android.calculator2.R;
+import ai.elimu.calculator.R;
/**
* Created by Will on 4/9/2014.
diff --git a/src/com/android/calculator2/floating/FloatingCalculatorOpenShortCutActivity.java b/app/src/main/java/com/android/calculator2/floating/FloatingCalculatorOpenShortCutActivity.java
similarity index 98%
rename from src/com/android/calculator2/floating/FloatingCalculatorOpenShortCutActivity.java
rename to app/src/main/java/com/android/calculator2/floating/FloatingCalculatorOpenShortCutActivity.java
index 0e97852f7..8534732d8 100644
--- a/src/com/android/calculator2/floating/FloatingCalculatorOpenShortCutActivity.java
+++ b/app/src/main/java/com/android/calculator2/floating/FloatingCalculatorOpenShortCutActivity.java
@@ -7,7 +7,7 @@
import android.os.Handler;
import android.provider.Settings;
-import com.android.calculator2.R;
+import ai.elimu.calculator.R;
/**
* Created by Will on 4/9/2014.
diff --git a/src/com/android/calculator2/floating/FloatingCalculatorPageAdapter.java b/app/src/main/java/com/android/calculator2/floating/FloatingCalculatorPageAdapter.java
similarity index 94%
rename from src/com/android/calculator2/floating/FloatingCalculatorPageAdapter.java
rename to app/src/main/java/com/android/calculator2/floating/FloatingCalculatorPageAdapter.java
index 10f797ed2..cacf7c9fc 100644
--- a/src/com/android/calculator2/floating/FloatingCalculatorPageAdapter.java
+++ b/app/src/main/java/com/android/calculator2/floating/FloatingCalculatorPageAdapter.java
@@ -2,9 +2,9 @@
import android.content.Context;
import android.os.Parcelable;
-import android.support.v4.view.PagerAdapter;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
+import androidx.viewpager.widget.PagerAdapter;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
@@ -12,11 +12,12 @@
import android.widget.TextView;
import com.android.calculator2.HistoryAdapter;
-import com.android.calculator2.R;
import com.android.calculator2.util.DigitLabelHelper;
import com.xlythe.math.History;
import com.xlythe.math.HistoryEntry;
+import ai.elimu.calculator.R;
+
public class FloatingCalculatorPageAdapter extends PagerAdapter {
private final Context mContext;
private final View.OnClickListener mListener;
@@ -35,7 +36,7 @@ protected Context getContext() {
@Override
public int getCount() {
- return 3;
+ return 2; //Removed the green pad with additional operators
}
@Override
diff --git a/src/com/android/calculator2/floating/FloatingHistoryAdapter.java b/app/src/main/java/com/android/calculator2/floating/FloatingHistoryAdapter.java
similarity index 96%
rename from src/com/android/calculator2/floating/FloatingHistoryAdapter.java
rename to app/src/main/java/com/android/calculator2/floating/FloatingHistoryAdapter.java
index 3bd1e8d35..ed3b7dc32 100644
--- a/src/com/android/calculator2/floating/FloatingHistoryAdapter.java
+++ b/app/src/main/java/com/android/calculator2/floating/FloatingHistoryAdapter.java
@@ -16,10 +16,12 @@
package com.android.calculator2.floating;
import android.content.Context;
+
import com.android.calculator2.HistoryAdapter;
-import com.android.calculator2.R;
import com.xlythe.math.History;
+import ai.elimu.calculator.R;
+
class FloatingHistoryAdapter extends HistoryAdapter {
public FloatingHistoryAdapter(Context context, History history, HistoryItemCallback callback) {
super(context, history, callback);
diff --git a/app/src/main/java/com/android/calculator2/receiver/StudentUpdatedReceiver.java b/app/src/main/java/com/android/calculator2/receiver/StudentUpdatedReceiver.java
new file mode 100644
index 000000000..49749bed8
--- /dev/null
+++ b/app/src/main/java/com/android/calculator2/receiver/StudentUpdatedReceiver.java
@@ -0,0 +1,51 @@
+package com.android.calculator2.receiver;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.preference.PreferenceManager;
+import android.util.Log;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Set;
+
+public class StudentUpdatedReceiver extends BroadcastReceiver {
+
+ public static final String PREF_STUDENT_NUMBERS = "pref_student_numbers";
+ public static final String PREF_STUDENT_NUMERACY_SKILLS = "pref_student_numeracy_skills";
+
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ Log.i(getClass().getName(), "onReceive");
+
+ // Customize the user interface to match the current Student's level
+
+ ArrayList availableNumbers = intent.getStringArrayListExtra("availableNumbers");
+ Log.i(getClass().getName(), "availableNumbers: " + availableNumbers);
+
+ ArrayList availableNumeracySkills = intent.getStringArrayListExtra("availableNumeracySkills");
+ Log.i(getClass().getName(), "availableNumeracySkills: " + availableNumeracySkills);
+
+ SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
+
+ if (availableNumbers != null) {
+ Set availableNumberSet = new HashSet<>();
+ for (String availableNumber : availableNumbers) {
+ availableNumberSet.add(availableNumber);
+ }
+ Log.i(getClass().getName(), "Storing availableNumbersSet: " + availableNumberSet);
+ sharedPreferences.edit().putStringSet(PREF_STUDENT_NUMBERS, availableNumberSet).commit();
+ }
+
+ if (availableNumeracySkills != null) {
+ Set availableNumeracySkillSet = new HashSet<>();
+ for (String availableNumeracySkill : availableNumeracySkills) {
+ availableNumeracySkillSet.add(availableNumeracySkill);
+ }
+ Log.i(getClass().getName(), "Storing availableNumeracySkillSet: " + availableNumeracySkillSet);
+ sharedPreferences.edit().putStringSet(PREF_STUDENT_NUMERACY_SKILLS, availableNumeracySkillSet).commit();
+ }
+ }
+}
diff --git a/src/com/android/calculator2/util/AnimationUtil.java b/app/src/main/java/com/android/calculator2/util/AnimationUtil.java
similarity index 100%
rename from src/com/android/calculator2/util/AnimationUtil.java
rename to app/src/main/java/com/android/calculator2/util/AnimationUtil.java
diff --git a/src/com/android/calculator2/util/DigitLabelHelper.java b/app/src/main/java/com/android/calculator2/util/DigitLabelHelper.java
similarity index 95%
rename from src/com/android/calculator2/util/DigitLabelHelper.java
rename to app/src/main/java/com/android/calculator2/util/DigitLabelHelper.java
index c91e2b4c6..d0ece42a1 100644
--- a/src/com/android/calculator2/util/DigitLabelHelper.java
+++ b/app/src/main/java/com/android/calculator2/util/DigitLabelHelper.java
@@ -2,7 +2,7 @@
import android.content.Context;
import android.content.res.Resources;
-import com.android.calculator2.R;
+import ai.elimu.calculator.R;
import java.text.DecimalFormatSymbols;
import java.util.Locale;
@@ -68,4 +68,8 @@ public void getTextForDigits(Context context, DigitLabelHelperCallback callback)
}
}
}
+
+ public static int getIdForDigit(int digit) {
+ return sDigitIds[digit];
+ }
}
diff --git a/app/src/main/java/com/android/calculator2/util/PlayerUtil.java b/app/src/main/java/com/android/calculator2/util/PlayerUtil.java
new file mode 100644
index 000000000..72f40a9f5
--- /dev/null
+++ b/app/src/main/java/com/android/calculator2/util/PlayerUtil.java
@@ -0,0 +1,47 @@
+package com.android.calculator2.util;
+
+import android.content.Context;
+import android.media.MediaPlayer;
+
+/**
+ * Created by GSC on 12/11/2016.
+ */
+public class PlayerUtil {
+
+ public static String RAW_FILE_EQUALS = "equals";
+
+ public static final String[] NUMBER_RAW_FILES = new String[] {
+ "digit_0",
+ "digit_1",
+ "digit_2",
+ "digit_3",
+ "digit_4",
+ "digit_5",
+ "digit_6",
+ "digit_7",
+ "digit_8",
+ "digit_9"
+ };
+
+ public static void playRawFile(Context context, String rawFile) {
+ int rawId = context.getResources().getIdentifier(rawFile, "raw", context.getPackageName());
+ if (rawId != 0) {
+ MediaPlayer mediaPlayer = MediaPlayer.create(context, rawId);
+ mediaPlayer.start();
+ }
+ }
+
+ public static void playResult(final Context context, final String result) {
+ int rawId = context.getResources().getIdentifier(RAW_FILE_EQUALS, "raw", context.getPackageName());
+ if (rawId != 0) {
+ final MediaPlayer mediaPlayer = MediaPlayer.create(context, rawId);
+ mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
+ @Override
+ public void onCompletion(MediaPlayer mp) {
+ playRawFile(context, result);
+ }
+ });
+ mediaPlayer.start();
+ }
+ }
+}
diff --git a/src/com/android/calculator2/view/AutoFitButtonView.java b/app/src/main/java/com/android/calculator2/view/AutoFitButtonView.java
similarity index 96%
rename from src/com/android/calculator2/view/AutoFitButtonView.java
rename to app/src/main/java/com/android/calculator2/view/AutoFitButtonView.java
index d0be64ec6..afb421ba3 100644
--- a/src/com/android/calculator2/view/AutoFitButtonView.java
+++ b/app/src/main/java/com/android/calculator2/view/AutoFitButtonView.java
@@ -64,13 +64,13 @@ private void init(android.content.Context context, android.util.AttributeSet att
if (attrs != null) {
android.content.res.TypedArray ta = context.obtainStyledAttributes(
attrs,
- com.android.calculator2.R.styleable.CalculatorEditText,
+ ai.elimu.calculator.R.styleable.CalculatorEditText,
defStyle,
0);
- sizeToFit = ta.getBoolean(com.android.calculator2.R.styleable.CalculatorEditText_sizeToFit, sizeToFit);
- minTextSize = ta.getDimensionPixelSize(com.android.calculator2.R.styleable.CalculatorEditText_minTextSize,
+ sizeToFit = ta.getBoolean(ai.elimu.calculator.R.styleable.CalculatorEditText_sizeToFit, sizeToFit);
+ minTextSize = ta.getDimensionPixelSize(ai.elimu.calculator.R.styleable.CalculatorEditText_minTextSize,
minTextSize);
- precision = ta.getFloat(com.android.calculator2.R.styleable.CalculatorEditText_precision, precision);
+ precision = ta.getFloat(ai.elimu.calculator.R.styleable.CalculatorEditText_precision, precision);
ta.recycle();
}
diff --git a/src/com/android/calculator2/view/AuxPadView.java b/app/src/main/java/com/android/calculator2/view/AuxPadView.java
similarity index 99%
rename from src/com/android/calculator2/view/AuxPadView.java
rename to app/src/main/java/com/android/calculator2/view/AuxPadView.java
index 35c736ad9..5513adc7b 100644
--- a/src/com/android/calculator2/view/AuxPadView.java
+++ b/app/src/main/java/com/android/calculator2/view/AuxPadView.java
@@ -7,10 +7,12 @@
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
-import com.android.calculator2.R;
+
import com.android.calculator2.viewpager.PagerAdapter;
import com.android.calculator2.viewpager.VerticalViewPager;
+import ai.elimu.calculator.R;
+
/**
* Container for a vertical view pager that adds indicator dots to show the currently
* selected page.
diff --git a/src/com/android/calculator2/view/CalculatorEditable.java b/app/src/main/java/com/android/calculator2/view/CalculatorEditable.java
similarity index 100%
rename from src/com/android/calculator2/view/CalculatorEditable.java
rename to app/src/main/java/com/android/calculator2/view/CalculatorEditable.java
diff --git a/src/com/android/calculator2/view/DisplayOverlay.java b/app/src/main/java/com/android/calculator2/view/DisplayOverlay.java
similarity index 98%
rename from src/com/android/calculator2/view/DisplayOverlay.java
rename to app/src/main/java/com/android/calculator2/view/DisplayOverlay.java
index 27f93226f..3630fe362 100644
--- a/src/com/android/calculator2/view/DisplayOverlay.java
+++ b/app/src/main/java/com/android/calculator2/view/DisplayOverlay.java
@@ -3,9 +3,9 @@
import android.animation.Animator;
import android.animation.ObjectAnimator;
import android.content.Context;
-import android.support.v4.view.MotionEventCompat;
-import android.support.v7.widget.LinearLayoutManager;
-import android.support.v7.widget.RecyclerView;
+import androidx.core.view.MotionEventCompat;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
@@ -14,9 +14,11 @@
import android.view.ViewConfiguration;
import android.view.ViewGroup;
import android.widget.FrameLayout;
-import com.android.calculator2.R;
-import com.android.calculator2.view.display.AdvancedDisplay;
+
import com.android.calculator2.util.AnimationUtil;
+import com.android.calculator2.view.display.AdvancedDisplay;
+
+import ai.elimu.calculator.R;
/**
* The display overlay is a container that intercepts touch events on top of:
diff --git a/src/com/android/calculator2/view/GraphView.java b/app/src/main/java/com/android/calculator2/view/GraphView.java
similarity index 99%
rename from src/com/android/calculator2/view/GraphView.java
rename to app/src/main/java/com/android/calculator2/view/GraphView.java
index 9d10eaa0f..e5714bb57 100644
--- a/src/com/android/calculator2/view/GraphView.java
+++ b/app/src/main/java/com/android/calculator2/view/GraphView.java
@@ -13,7 +13,7 @@
import android.view.MotionEvent;
import android.view.View;
-import com.android.calculator2.R;
+import ai.elimu.calculator.R;
import com.xlythe.math.Point;
diff --git a/src/com/android/calculator2/view/HistoryLine.java b/app/src/main/java/com/android/calculator2/view/HistoryLine.java
similarity index 98%
rename from src/com/android/calculator2/view/HistoryLine.java
rename to app/src/main/java/com/android/calculator2/view/HistoryLine.java
index aaf5d30f4..a32da792b 100644
--- a/src/com/android/calculator2/view/HistoryLine.java
+++ b/app/src/main/java/com/android/calculator2/view/HistoryLine.java
@@ -4,7 +4,7 @@
import android.content.ClipboardManager;
import android.content.Context;
import android.content.res.Resources;
-import android.support.v7.widget.RecyclerView;
+import androidx.recyclerview.widget.RecyclerView;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.ContextMenu;
@@ -14,7 +14,7 @@
import android.widget.LinearLayout;
import android.widget.Toast;
-import com.android.calculator2.R;
+import ai.elimu.calculator.R;
import com.xlythe.math.History;
import com.xlythe.math.HistoryEntry;
diff --git a/src/com/android/calculator2/view/MatrixEditText.java b/app/src/main/java/com/android/calculator2/view/MatrixEditText.java
similarity index 99%
rename from src/com/android/calculator2/view/MatrixEditText.java
rename to app/src/main/java/com/android/calculator2/view/MatrixEditText.java
index 88e88b644..162f41e7c 100644
--- a/src/com/android/calculator2/view/MatrixEditText.java
+++ b/app/src/main/java/com/android/calculator2/view/MatrixEditText.java
@@ -32,7 +32,7 @@
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
-import com.android.calculator2.R;
+import ai.elimu.calculator.R;
import com.android.calculator2.view.display.AdvancedDisplay;
import com.android.calculator2.view.display.EventListener;
import com.xlythe.math.Constants;
diff --git a/src/com/android/calculator2/view/MatrixInverseView.java b/app/src/main/java/com/android/calculator2/view/MatrixInverseView.java
similarity index 97%
rename from src/com/android/calculator2/view/MatrixInverseView.java
rename to app/src/main/java/com/android/calculator2/view/MatrixInverseView.java
index 1a6ae8d32..a8d590700 100644
--- a/src/com/android/calculator2/view/MatrixInverseView.java
+++ b/app/src/main/java/com/android/calculator2/view/MatrixInverseView.java
@@ -21,7 +21,7 @@
import android.text.InputType;
import android.widget.TextView;
-import com.android.calculator2.R;
+import ai.elimu.calculator.R;
import com.android.calculator2.view.display.AdvancedDisplay;
public class MatrixInverseView extends TextView {
diff --git a/src/com/android/calculator2/view/MatrixTransposeView.java b/app/src/main/java/com/android/calculator2/view/MatrixTransposeView.java
similarity index 97%
rename from src/com/android/calculator2/view/MatrixTransposeView.java
rename to app/src/main/java/com/android/calculator2/view/MatrixTransposeView.java
index f0c8b34a1..2a7cb6121 100644
--- a/src/com/android/calculator2/view/MatrixTransposeView.java
+++ b/app/src/main/java/com/android/calculator2/view/MatrixTransposeView.java
@@ -21,9 +21,10 @@
import android.text.InputType;
import android.widget.TextView;
-import com.android.calculator2.R;
import com.android.calculator2.view.display.AdvancedDisplay;
+import ai.elimu.calculator.R;
+
public class MatrixTransposeView extends TextView {
public final static String PATTERN = "^T";
diff --git a/src/com/android/calculator2/view/MatrixView.java b/app/src/main/java/com/android/calculator2/view/MatrixView.java
similarity index 99%
rename from src/com/android/calculator2/view/MatrixView.java
rename to app/src/main/java/com/android/calculator2/view/MatrixView.java
index 61599ddd3..de23aebdc 100644
--- a/src/com/android/calculator2/view/MatrixView.java
+++ b/app/src/main/java/com/android/calculator2/view/MatrixView.java
@@ -7,7 +7,7 @@
import android.widget.TableLayout;
import android.widget.TableRow;
-import com.android.calculator2.R;
+import ai.elimu.calculator.R;
import com.android.calculator2.view.display.AdvancedDisplay;
import com.android.calculator2.view.display.AdvancedDisplayControls;
import com.android.calculator2.view.display.DisplayComponent;
diff --git a/src/com/android/calculator2/view/MultiButton.java b/app/src/main/java/com/android/calculator2/view/MultiButton.java
similarity index 100%
rename from src/com/android/calculator2/view/MultiButton.java
rename to app/src/main/java/com/android/calculator2/view/MultiButton.java
diff --git a/src/com/android/calculator2/view/ScrollableDisplay.java b/app/src/main/java/com/android/calculator2/view/ScrollableDisplay.java
similarity index 97%
rename from src/com/android/calculator2/view/ScrollableDisplay.java
rename to app/src/main/java/com/android/calculator2/view/ScrollableDisplay.java
index e8bcb117f..0a3fb5772 100644
--- a/src/com/android/calculator2/view/ScrollableDisplay.java
+++ b/app/src/main/java/com/android/calculator2/view/ScrollableDisplay.java
@@ -6,10 +6,9 @@
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
-import android.view.View.OnLongClickListener;
import android.widget.HorizontalScrollView;
-import com.android.calculator2.R;
+import ai.elimu.calculator.R;
public class ScrollableDisplay extends HorizontalScrollView {
private int mMaxHeight;
diff --git a/src/com/android/calculator2/view/TextUtil.java b/app/src/main/java/com/android/calculator2/view/TextUtil.java
similarity index 100%
rename from src/com/android/calculator2/view/TextUtil.java
rename to app/src/main/java/com/android/calculator2/view/TextUtil.java
diff --git a/src/com/android/calculator2/view/display/AdvancedDisplay.java b/app/src/main/java/com/android/calculator2/view/display/AdvancedDisplay.java
similarity index 99%
rename from src/com/android/calculator2/view/display/AdvancedDisplay.java
rename to app/src/main/java/com/android/calculator2/view/display/AdvancedDisplay.java
index 5ddb62640..97213ad25 100644
--- a/src/com/android/calculator2/view/display/AdvancedDisplay.java
+++ b/app/src/main/java/com/android/calculator2/view/display/AdvancedDisplay.java
@@ -26,7 +26,7 @@
import android.widget.Toast;
import com.android.calculator2.Clipboard;
-import com.android.calculator2.R;
+import ai.elimu.calculator.R;
import com.android.calculator2.view.CalculatorEditable;
import com.android.calculator2.view.ScrollableDisplay;
import com.android.calculator2.view.TextUtil;
diff --git a/src/com/android/calculator2/view/display/AdvancedDisplayControls.java b/app/src/main/java/com/android/calculator2/view/display/AdvancedDisplayControls.java
similarity index 100%
rename from src/com/android/calculator2/view/display/AdvancedDisplayControls.java
rename to app/src/main/java/com/android/calculator2/view/display/AdvancedDisplayControls.java
diff --git a/src/com/android/calculator2/view/display/CalculatorEditText.java b/app/src/main/java/com/android/calculator2/view/display/CalculatorEditText.java
similarity index 99%
rename from src/com/android/calculator2/view/display/CalculatorEditText.java
rename to app/src/main/java/com/android/calculator2/view/display/CalculatorEditText.java
index 5bc35f99d..58da31187 100644
--- a/src/com/android/calculator2/view/display/CalculatorEditText.java
+++ b/app/src/main/java/com/android/calculator2/view/display/CalculatorEditText.java
@@ -39,7 +39,7 @@
import android.widget.EditText;
import android.widget.LinearLayout;
-import com.android.calculator2.R;
+import ai.elimu.calculator.R;
import com.android.calculator2.view.MatrixView;
import com.android.calculator2.view.TextUtil;
import com.xlythe.math.BaseModule;
diff --git a/src/com/android/calculator2/view/display/DisplayComponent.java b/app/src/main/java/com/android/calculator2/view/display/DisplayComponent.java
similarity index 100%
rename from src/com/android/calculator2/view/display/DisplayComponent.java
rename to app/src/main/java/com/android/calculator2/view/display/DisplayComponent.java
diff --git a/src/com/android/calculator2/view/display/EventListener.java b/app/src/main/java/com/android/calculator2/view/display/EventListener.java
similarity index 100%
rename from src/com/android/calculator2/view/display/EventListener.java
rename to app/src/main/java/com/android/calculator2/view/display/EventListener.java
diff --git a/src/com/android/calculator2/view/display/MenuHandler.java b/app/src/main/java/com/android/calculator2/view/display/MenuHandler.java
similarity index 100%
rename from src/com/android/calculator2/view/display/MenuHandler.java
rename to app/src/main/java/com/android/calculator2/view/display/MenuHandler.java
diff --git a/src/com/android/calculator2/view/display/Sync.java b/app/src/main/java/com/android/calculator2/view/display/Sync.java
similarity index 100%
rename from src/com/android/calculator2/view/display/Sync.java
rename to app/src/main/java/com/android/calculator2/view/display/Sync.java
diff --git a/src/com/android/calculator2/viewpager/PagerAdapter.java b/app/src/main/java/com/android/calculator2/viewpager/PagerAdapter.java
similarity index 99%
rename from src/com/android/calculator2/viewpager/PagerAdapter.java
rename to app/src/main/java/com/android/calculator2/viewpager/PagerAdapter.java
index 5437fbd95..fa8ef064f 100644
--- a/src/com/android/calculator2/viewpager/PagerAdapter.java
+++ b/app/src/main/java/com/android/calculator2/viewpager/PagerAdapter.java
@@ -25,8 +25,8 @@
* Base class providing the adapter to populate pages inside of
* a {@link VerticalViewPager}. You will most likely want to use a more
* specific implementation of this, such as
- * {@link android.support.v4.app.FragmentPagerAdapter} or
- * {@link android.support.v4.app.FragmentStatePagerAdapter}.
+ * {@link androidx.v4.app.FragmentPagerAdapter} or
+ * {@link androidx.v4.app.FragmentStatePagerAdapter}.
*
*
When you implement a PagerAdapter, you must override the following methods
* at minimum:
diff --git a/src/com/android/calculator2/viewpager/VerticalViewPager.java b/app/src/main/java/com/android/calculator2/viewpager/VerticalViewPager.java
similarity index 99%
rename from src/com/android/calculator2/viewpager/VerticalViewPager.java
rename to app/src/main/java/com/android/calculator2/viewpager/VerticalViewPager.java
index f2f1d88e8..fd0fd2d86 100644
--- a/src/com/android/calculator2/viewpager/VerticalViewPager.java
+++ b/app/src/main/java/com/android/calculator2/viewpager/VerticalViewPager.java
@@ -40,16 +40,15 @@
import android.os.Parcel;
import android.os.Parcelable;
import android.os.SystemClock;
-import android.support.v4.os.ParcelableCompat;
-import android.support.v4.os.ParcelableCompatCreatorCallbacks;
-import android.support.v4.view.AccessibilityDelegateCompat;
-import android.support.v4.view.KeyEventCompat;
-import android.support.v4.view.MotionEventCompat;
-import android.support.v4.view.VelocityTrackerCompat;
-import android.support.v4.view.ViewCompat;
-import android.support.v4.view.ViewConfigurationCompat;
-import android.support.v4.view.accessibility.AccessibilityNodeInfoCompat;
-import android.support.v4.widget.EdgeEffectCompat;
+import androidx.core.os.ParcelableCompat;
+import androidx.core.os.ParcelableCompatCreatorCallbacks;
+import androidx.core.view.AccessibilityDelegateCompat;
+import androidx.core.view.MotionEventCompat;
+import androidx.core.view.VelocityTrackerCompat;
+import androidx.core.view.ViewCompat;
+import androidx.core.view.ViewConfigurationCompat;
+import androidx.core.view.accessibility.AccessibilityNodeInfoCompat;
+import androidx.core.widget.EdgeEffectCompat;
import android.util.AttributeSet;
import android.util.Log;
import android.view.FocusFinder;
@@ -80,10 +79,10 @@
* which is a convenient way to supply and manage the lifecycle of each page.
* There are standard adapters implemented for using fragments with the ViewPager,
* which cover the most common use cases. These are
- * {@link android.support.v4.app.FragmentPagerAdapter},
- * {@link android.support.v4.app.FragmentStatePagerAdapter},
- * {@link android.support.v13.app.FragmentPagerAdapter}, and
- * {@link android.support.v13.app.FragmentStatePagerAdapter}; each of these
+ * {@link androidx.v4.app.FragmentPagerAdapter},
+ * {@link androidx.v4.app.FragmentStatePagerAdapter},
+ * {@link androidx.v13.app.FragmentPagerAdapter}, and
+ * {@link androidx.v13.app.FragmentStatePagerAdapter}; each of these
* classes have simple code showing how to build a full user interface
* with them.
*
@@ -2453,9 +2452,9 @@ public boolean executeKeyEvent(KeyEvent event) {
if (Build.VERSION.SDK_INT >= 11) {
// The focus finder had a bug handling FOCUS_FORWARD and FOCUS_BACKWARD
// before Android 3.0. Ignore the tab key on those devices.
- if (KeyEventCompat.hasNoModifiers(event)) {
+ if (event.hasNoModifiers()) {
handled = arrowScroll(FOCUS_FORWARD);
- } else if (KeyEventCompat.hasModifiers(event, KeyEvent.META_SHIFT_ON)) {
+ } else if (event.hasModifiers(KeyEvent.META_SHIFT_ON)) {
handled = arrowScroll(FOCUS_BACKWARD);
}
}
diff --git a/src/com/android/calculator2/widget/CalculatorWidget.java b/app/src/main/java/com/android/calculator2/widget/CalculatorWidget.java
similarity index 87%
rename from src/com/android/calculator2/widget/CalculatorWidget.java
rename to app/src/main/java/com/android/calculator2/widget/CalculatorWidget.java
index 10e2e98aa..23a7bc883 100644
--- a/src/com/android/calculator2/widget/CalculatorWidget.java
+++ b/app/src/main/java/com/android/calculator2/widget/CalculatorWidget.java
@@ -6,36 +6,46 @@
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
+import android.content.SharedPreferences;
import android.preference.PreferenceManager;
+import android.text.TextUtils;
+import android.util.Log;
import android.view.View;
import android.widget.RemoteViews;
import com.android.calculator2.CalculatorExpressionTokenizer;
-import com.android.calculator2.R;
+import com.android.calculator2.receiver.StudentUpdatedReceiver;
import com.android.calculator2.util.DigitLabelHelper;
+import com.android.calculator2.util.PlayerUtil;
import com.xlythe.math.Base;
import com.xlythe.math.Constants;
import com.xlythe.math.EquationFormatter;
-import com.xlythe.math.Solver;
import com.xlythe.math.History;
import com.xlythe.math.Persist;
+import com.xlythe.math.Solver;
import org.javia.arity.SyntaxException;
+import ai.elimu.calculator.R;
+import ai.elimu.model.v2.enums.content.NumeracySkill;
import java.text.DecimalFormatSymbols;
+import java.util.Set;
+
+import static com.android.calculator2.util.PlayerUtil.NUMBER_RAW_FILES;
+import static com.android.calculator2.util.PlayerUtil.RAW_FILE_EQUALS;
public class CalculatorWidget extends AppWidgetProvider {
public final static String PREFERENCE_WIDGET_PREAMBLE = "com.android.calculator2.CALC_WIDGET_VALUE_";
- public static final String DIGIT_0 = "com.android.calculator2.0";
- public static final String DIGIT_1 = "com.android.calculator2.1";
- public static final String DIGIT_2 = "com.android.calculator2.2";
- public static final String DIGIT_3 = "com.android.calculator2.3";
- public static final String DIGIT_4 = "com.android.calculator2.4";
- public static final String DIGIT_5 = "com.android.calculator2.5";
- public static final String DIGIT_6 = "com.android.calculator2.6";
- public static final String DIGIT_7 = "com.android.calculator2.7";
- public static final String DIGIT_8 = "com.android.calculator2.8";
- public static final String DIGIT_9 = "com.android.calculator2.9";
+ public static final String DIGIT_0 = "com.android.calculator2.digit_0";
+ public static final String DIGIT_1 = "com.android.calculator2.digit_1";
+ public static final String DIGIT_2 = "com.android.calculator2.digit_2";
+ public static final String DIGIT_3 = "com.android.calculator2.digit_3";
+ public static final String DIGIT_4 = "com.android.calculator2.digit_4";
+ public static final String DIGIT_5 = "com.android.calculator2.digit_5";
+ public static final String DIGIT_6 = "com.android.calculator2.digit_6";
+ public static final String DIGIT_7 = "com.android.calculator2.digit_7";
+ public static final String DIGIT_8 = "com.android.calculator2.digit_8";
+ public static final String DIGIT_9 = "com.android.calculator2.digit_9";
public static final String DOT = "com.android.calculator2.dot";
public static final String PLUS = "com.android.calculator2.plus";
public static final String MINUS = "com.android.calculator2.minus";
@@ -57,9 +67,17 @@ private static char getDecimal() {
public void onReceive(Context context, Intent intent) {
int appWidgetId = intent.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, 0);
String value = getValue(context, appWidgetId);
- if(value.equals(context.getResources().getString(R.string.error_syntax))) value = "";
+ if (value.equals(context.getResources().getString(R.string.error_syntax))) {
+ value = "";
+ }
mClearText = intent.getBooleanExtra(SHOW_CLEAR, false);
+ // Play audio for numbers and operators
+ String action = intent.getAction().substring(intent.getAction().lastIndexOf(".")+1);
+ if (!RAW_FILE_EQUALS.equals(action)) {
+ PlayerUtil.playRawFile(context, action);
+ }
+
if(intent.getAction().equals(DIGIT_0)) {
if(mClearText) {
value = "";
@@ -158,6 +176,14 @@ public void onReceive(Context context, Intent intent) {
// Try to save it to history
if(!value.equals(context.getResources().getString(R.string.error_syntax))) {
+
+ // Play audio for result
+ if (TextUtils.isDigitsOnly(value) && Integer.parseInt(value) < 10) {
+ PlayerUtil.playResult(context, NUMBER_RAW_FILES[Integer.parseInt(value)]);
+ } else {
+ PlayerUtil.playRawFile(context, RAW_FILE_EQUALS);
+ }
+
final Persist persist = new Persist(context);
persist.load();
if(persist.getMode() == null) persist.setMode(Base.DECIMAL);
@@ -281,6 +307,22 @@ private void updateAppWidget(Context context, AppWidgetManager appWidgetManager,
remoteViews.setViewVisibility(R.id.clear, mClearText ? View.VISIBLE : View.GONE);
setOnClickListeners(context, appWidgetId, remoteViews);
+ // Personalize available operators
+ SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
+ Set numeracySkillSet = sharedPreferences.getStringSet(StudentUpdatedReceiver.PREF_STUDENT_NUMERACY_SKILLS, null);
+ Log.d(getClass().getName(), "numeracySkillSet: " + numeracySkillSet);
+ if (numeracySkillSet == null) {
+ remoteViews.setViewVisibility(R.id.mul, View.INVISIBLE);
+ remoteViews.setViewVisibility(R.id.minus, View.INVISIBLE);
+ } else {
+ if (!numeracySkillSet.contains(NumeracySkill.MULTIPLICATION.toString())) {
+ remoteViews.setViewVisibility(R.id.mul, View.INVISIBLE);
+ }
+ if (!numeracySkillSet.contains(NumeracySkill.SUBTRACTION.toString())) {
+ remoteViews.setViewVisibility(R.id.minus, View.INVISIBLE);
+ }
+ }
+
DigitLabelHelper.getInstance().getTextForDigits(context,
new DigitLabelHelper.DigitLabelHelperCallback() {
@Override
diff --git a/src/com/xlythe/floatingview/AnimationFinishedListener.java b/app/src/main/java/com/xlythe/floatingview/AnimationFinishedListener.java
similarity index 100%
rename from src/com/xlythe/floatingview/AnimationFinishedListener.java
rename to app/src/main/java/com/xlythe/floatingview/AnimationFinishedListener.java
diff --git a/src/com/xlythe/floatingview/FloatingActivity.java b/app/src/main/java/com/xlythe/floatingview/FloatingActivity.java
similarity index 97%
rename from src/com/xlythe/floatingview/FloatingActivity.java
rename to app/src/main/java/com/xlythe/floatingview/FloatingActivity.java
index 4ab98d230..b5ef6da0a 100644
--- a/src/com/xlythe/floatingview/FloatingActivity.java
+++ b/app/src/main/java/com/xlythe/floatingview/FloatingActivity.java
@@ -7,7 +7,7 @@
import android.view.Window;
import android.view.WindowManager;
-import com.android.calculator2.R;
+import ai.elimu.calculator.R;
/**
* Created by Will on 4/9/2014.
diff --git a/src/com/xlythe/floatingview/FloatingView.java b/app/src/main/java/com/xlythe/floatingview/FloatingView.java
similarity index 99%
rename from src/com/xlythe/floatingview/FloatingView.java
rename to app/src/main/java/com/xlythe/floatingview/FloatingView.java
index 5900b5205..15f4b3a57 100644
--- a/src/com/xlythe/floatingview/FloatingView.java
+++ b/app/src/main/java/com/xlythe/floatingview/FloatingView.java
@@ -23,7 +23,7 @@
import android.widget.FrameLayout;
import android.widget.RelativeLayout;
-import com.android.calculator2.R;
+import ai.elimu.calculator.R;
public abstract class FloatingView extends Service implements OnTouchListener {
public static FloatingView ACTIVE_VIEW;
diff --git a/src/com/xlythe/floatingview/LimitedQueue.java b/app/src/main/java/com/xlythe/floatingview/LimitedQueue.java
similarity index 100%
rename from src/com/xlythe/floatingview/LimitedQueue.java
rename to app/src/main/java/com/xlythe/floatingview/LimitedQueue.java
diff --git a/src/com/xlythe/math/Base.java b/app/src/main/java/com/xlythe/math/Base.java
similarity index 100%
rename from src/com/xlythe/math/Base.java
rename to app/src/main/java/com/xlythe/math/Base.java
diff --git a/src/com/xlythe/math/BaseModule.java b/app/src/main/java/com/xlythe/math/BaseModule.java
similarity index 100%
rename from src/com/xlythe/math/BaseModule.java
rename to app/src/main/java/com/xlythe/math/BaseModule.java
diff --git a/src/com/xlythe/math/Constants.java b/app/src/main/java/com/xlythe/math/Constants.java
similarity index 100%
rename from src/com/xlythe/math/Constants.java
rename to app/src/main/java/com/xlythe/math/Constants.java
diff --git a/src/com/xlythe/math/EquationFormatter.java b/app/src/main/java/com/xlythe/math/EquationFormatter.java
similarity index 100%
rename from src/com/xlythe/math/EquationFormatter.java
rename to app/src/main/java/com/xlythe/math/EquationFormatter.java
diff --git a/src/com/xlythe/math/GraphModule.java b/app/src/main/java/com/xlythe/math/GraphModule.java
similarity index 100%
rename from src/com/xlythe/math/GraphModule.java
rename to app/src/main/java/com/xlythe/math/GraphModule.java
diff --git a/src/com/xlythe/math/History.java b/app/src/main/java/com/xlythe/math/History.java
similarity index 98%
rename from src/com/xlythe/math/History.java
rename to app/src/main/java/com/xlythe/math/History.java
index f3c26e00c..74f7e771b 100644
--- a/src/com/xlythe/math/History.java
+++ b/app/src/main/java/com/xlythe/math/History.java
@@ -16,7 +16,7 @@
package com.xlythe.math;
-import android.support.v7.widget.RecyclerView;
+import androidx.recyclerview.widget.RecyclerView;
import android.widget.BaseAdapter;
import java.io.DataInput;
diff --git a/src/com/xlythe/math/HistoryEntry.java b/app/src/main/java/com/xlythe/math/HistoryEntry.java
similarity index 100%
rename from src/com/xlythe/math/HistoryEntry.java
rename to app/src/main/java/com/xlythe/math/HistoryEntry.java
diff --git a/src/com/xlythe/math/Localizer.java b/app/src/main/java/com/xlythe/math/Localizer.java
similarity index 100%
rename from src/com/xlythe/math/Localizer.java
rename to app/src/main/java/com/xlythe/math/Localizer.java
diff --git a/src/com/xlythe/math/MatrixModule.java b/app/src/main/java/com/xlythe/math/MatrixModule.java
similarity index 100%
rename from src/com/xlythe/math/MatrixModule.java
rename to app/src/main/java/com/xlythe/math/MatrixModule.java
diff --git a/src/com/xlythe/math/Module.java b/app/src/main/java/com/xlythe/math/Module.java
similarity index 100%
rename from src/com/xlythe/math/Module.java
rename to app/src/main/java/com/xlythe/math/Module.java
diff --git a/src/com/xlythe/math/Persist.java b/app/src/main/java/com/xlythe/math/Persist.java
similarity index 100%
rename from src/com/xlythe/math/Persist.java
rename to app/src/main/java/com/xlythe/math/Persist.java
diff --git a/src/com/xlythe/math/Point.java b/app/src/main/java/com/xlythe/math/Point.java
similarity index 100%
rename from src/com/xlythe/math/Point.java
rename to app/src/main/java/com/xlythe/math/Point.java
diff --git a/src/com/xlythe/math/Solver.java b/app/src/main/java/com/xlythe/math/Solver.java
similarity index 100%
rename from src/com/xlythe/math/Solver.java
rename to app/src/main/java/com/xlythe/math/Solver.java
diff --git a/src/com/xlythe/math/SpellContext.java b/app/src/main/java/com/xlythe/math/SpellContext.java
similarity index 100%
rename from src/com/xlythe/math/SpellContext.java
rename to app/src/main/java/com/xlythe/math/SpellContext.java
diff --git a/src/com/xlythe/math/SpellException.java b/app/src/main/java/com/xlythe/math/SpellException.java
similarity index 100%
rename from src/com/xlythe/math/SpellException.java
rename to app/src/main/java/com/xlythe/math/SpellException.java
diff --git a/src/com/xlythe/math/Voice.java b/app/src/main/java/com/xlythe/math/Voice.java
similarity index 100%
rename from src/com/xlythe/math/Voice.java
rename to app/src/main/java/com/xlythe/math/Voice.java
diff --git a/res/anim/blank.xml b/app/src/main/res/anim/blank.xml
similarity index 100%
rename from res/anim/blank.xml
rename to app/src/main/res/anim/blank.xml
diff --git a/res/color/pad_button_advanced_text_color.xml b/app/src/main/res/color/pad_button_advanced_text_color.xml
similarity index 100%
rename from res/color/pad_button_advanced_text_color.xml
rename to app/src/main/res/color/pad_button_advanced_text_color.xml
diff --git a/res/color/pad_button_text_color.xml b/app/src/main/res/color/pad_button_text_color.xml
similarity index 100%
rename from res/color/pad_button_text_color.xml
rename to app/src/main/res/color/pad_button_text_color.xml
diff --git a/res/color/pad_button_toggle_text_color.xml b/app/src/main/res/color/pad_button_toggle_text_color.xml
similarity index 100%
rename from res/color/pad_button_toggle_text_color.xml
rename to app/src/main/res/color/pad_button_toggle_text_color.xml
diff --git a/res/color/view_pager_indicator_color.xml b/app/src/main/res/color/view_pager_indicator_color.xml
similarity index 100%
rename from res/color/view_pager_indicator_color.xml
rename to app/src/main/res/color/view_pager_indicator_color.xml
diff --git a/res/drawable-hdpi/btn_close.png b/app/src/main/res/drawable-hdpi/btn_close.png
similarity index 100%
rename from res/drawable-hdpi/btn_close.png
rename to app/src/main/res/drawable-hdpi/btn_close.png
diff --git a/res/drawable-hdpi/btn_graph.png b/app/src/main/res/drawable-hdpi/btn_graph.png
similarity index 100%
rename from res/drawable-hdpi/btn_graph.png
rename to app/src/main/res/drawable-hdpi/btn_graph.png
diff --git a/res/drawable-hdpi/btn_reset.png b/app/src/main/res/drawable-hdpi/btn_reset.png
similarity index 100%
rename from res/drawable-hdpi/btn_reset.png
rename to app/src/main/res/drawable-hdpi/btn_reset.png
diff --git a/res/drawable-hdpi/btn_zoomin.png b/app/src/main/res/drawable-hdpi/btn_zoomin.png
similarity index 100%
rename from res/drawable-hdpi/btn_zoomin.png
rename to app/src/main/res/drawable-hdpi/btn_zoomin.png
diff --git a/res/drawable-hdpi/btn_zoomout.png b/app/src/main/res/drawable-hdpi/btn_zoomout.png
similarity index 100%
rename from res/drawable-hdpi/btn_zoomout.png
rename to app/src/main/res/drawable-hdpi/btn_zoomout.png
diff --git a/res/drawable-hdpi/button_big.png b/app/src/main/res/drawable-hdpi/button_big.png
similarity index 100%
rename from res/drawable-hdpi/button_big.png
rename to app/src/main/res/drawable-hdpi/button_big.png
diff --git a/res/drawable-hdpi/circle.9.png b/app/src/main/res/drawable-hdpi/circle.9.png
similarity index 100%
rename from res/drawable-hdpi/circle.9.png
rename to app/src/main/res/drawable-hdpi/circle.9.png
diff --git a/res/drawable-hdpi/color_card.9.png b/app/src/main/res/drawable-hdpi/color_card.9.png
similarity index 100%
rename from res/drawable-hdpi/color_card.9.png
rename to app/src/main/res/drawable-hdpi/color_card.9.png
diff --git a/res/drawable-hdpi/egg.png b/app/src/main/res/drawable-hdpi/egg.png
similarity index 100%
rename from res/drawable-hdpi/egg.png
rename to app/src/main/res/drawable-hdpi/egg.png
diff --git a/res/drawable-hdpi/floating_calc_background.9.png b/app/src/main/res/drawable-hdpi/floating_calc_background.9.png
similarity index 100%
rename from res/drawable-hdpi/floating_calc_background.9.png
rename to app/src/main/res/drawable-hdpi/floating_calc_background.9.png
diff --git a/res/drawable-hdpi/history_divider.png b/app/src/main/res/drawable-hdpi/history_divider.png
similarity index 100%
rename from res/drawable-hdpi/history_divider.png
rename to app/src/main/res/drawable-hdpi/history_divider.png
diff --git a/res/drawable-hdpi/ic_launcher_floating.png b/app/src/main/res/drawable-hdpi/ic_launcher_floating.png
similarity index 100%
rename from res/drawable-hdpi/ic_launcher_floating.png
rename to app/src/main/res/drawable-hdpi/ic_launcher_floating.png
diff --git a/res/drawable-hdpi/line.9.png b/app/src/main/res/drawable-hdpi/line.9.png
similarity index 100%
rename from res/drawable-hdpi/line.9.png
rename to app/src/main/res/drawable-hdpi/line.9.png
diff --git a/res/drawable-hdpi/matrix_background.9.png b/app/src/main/res/drawable-hdpi/matrix_background.9.png
similarity index 100%
rename from res/drawable-hdpi/matrix_background.9.png
rename to app/src/main/res/drawable-hdpi/matrix_background.9.png
diff --git a/res/drawable-hdpi/white_card.9.png b/app/src/main/res/drawable-hdpi/white_card.9.png
similarity index 100%
rename from res/drawable-hdpi/white_card.9.png
rename to app/src/main/res/drawable-hdpi/white_card.9.png
diff --git a/res/drawable-hdpi/widget_clear.png b/app/src/main/res/drawable-hdpi/widget_clear.png
similarity index 100%
rename from res/drawable-hdpi/widget_clear.png
rename to app/src/main/res/drawable-hdpi/widget_clear.png
diff --git a/res/drawable-hdpi/widget_delete.png b/app/src/main/res/drawable-hdpi/widget_delete.png
similarity index 100%
rename from res/drawable-hdpi/widget_delete.png
rename to app/src/main/res/drawable-hdpi/widget_delete.png
diff --git a/res/drawable-hdpi/widget_preview.png b/app/src/main/res/drawable-hdpi/widget_preview.png
similarity index 100%
rename from res/drawable-hdpi/widget_preview.png
rename to app/src/main/res/drawable-hdpi/widget_preview.png
diff --git a/res/drawable-hdpi/x.png b/app/src/main/res/drawable-hdpi/x.png
similarity index 100%
rename from res/drawable-hdpi/x.png
rename to app/src/main/res/drawable-hdpi/x.png
diff --git a/res/drawable-mdpi/btn_close.png b/app/src/main/res/drawable-mdpi/btn_close.png
similarity index 100%
rename from res/drawable-mdpi/btn_close.png
rename to app/src/main/res/drawable-mdpi/btn_close.png
diff --git a/res/drawable-mdpi/btn_graph.png b/app/src/main/res/drawable-mdpi/btn_graph.png
similarity index 100%
rename from res/drawable-mdpi/btn_graph.png
rename to app/src/main/res/drawable-mdpi/btn_graph.png
diff --git a/res/drawable-mdpi/btn_reset.png b/app/src/main/res/drawable-mdpi/btn_reset.png
similarity index 100%
rename from res/drawable-mdpi/btn_reset.png
rename to app/src/main/res/drawable-mdpi/btn_reset.png
diff --git a/res/drawable-mdpi/btn_zoomin.png b/app/src/main/res/drawable-mdpi/btn_zoomin.png
similarity index 100%
rename from res/drawable-mdpi/btn_zoomin.png
rename to app/src/main/res/drawable-mdpi/btn_zoomin.png
diff --git a/res/drawable-mdpi/btn_zoomout.png b/app/src/main/res/drawable-mdpi/btn_zoomout.png
similarity index 100%
rename from res/drawable-mdpi/btn_zoomout.png
rename to app/src/main/res/drawable-mdpi/btn_zoomout.png
diff --git a/res/drawable-mdpi/button_big.png b/app/src/main/res/drawable-mdpi/button_big.png
similarity index 100%
rename from res/drawable-mdpi/button_big.png
rename to app/src/main/res/drawable-mdpi/button_big.png
diff --git a/res/drawable-mdpi/circle.9.png b/app/src/main/res/drawable-mdpi/circle.9.png
similarity index 100%
rename from res/drawable-mdpi/circle.9.png
rename to app/src/main/res/drawable-mdpi/circle.9.png
diff --git a/res/drawable-mdpi/color_card.9.png b/app/src/main/res/drawable-mdpi/color_card.9.png
similarity index 100%
rename from res/drawable-mdpi/color_card.9.png
rename to app/src/main/res/drawable-mdpi/color_card.9.png
diff --git a/res/drawable-mdpi/egg.png b/app/src/main/res/drawable-mdpi/egg.png
similarity index 100%
rename from res/drawable-mdpi/egg.png
rename to app/src/main/res/drawable-mdpi/egg.png
diff --git a/res/drawable-mdpi/floating_calc_background.9.png b/app/src/main/res/drawable-mdpi/floating_calc_background.9.png
similarity index 100%
rename from res/drawable-mdpi/floating_calc_background.9.png
rename to app/src/main/res/drawable-mdpi/floating_calc_background.9.png
diff --git a/res/drawable-mdpi/history_divider.png b/app/src/main/res/drawable-mdpi/history_divider.png
similarity index 100%
rename from res/drawable-mdpi/history_divider.png
rename to app/src/main/res/drawable-mdpi/history_divider.png
diff --git a/res/drawable-mdpi/ic_launcher_floating.png b/app/src/main/res/drawable-mdpi/ic_launcher_floating.png
similarity index 100%
rename from res/drawable-mdpi/ic_launcher_floating.png
rename to app/src/main/res/drawable-mdpi/ic_launcher_floating.png
diff --git a/res/drawable-mdpi/line.9.png b/app/src/main/res/drawable-mdpi/line.9.png
similarity index 100%
rename from res/drawable-mdpi/line.9.png
rename to app/src/main/res/drawable-mdpi/line.9.png
diff --git a/res/drawable-mdpi/matrix_background.9.png b/app/src/main/res/drawable-mdpi/matrix_background.9.png
similarity index 100%
rename from res/drawable-mdpi/matrix_background.9.png
rename to app/src/main/res/drawable-mdpi/matrix_background.9.png
diff --git a/res/drawable-mdpi/white_card.9.png b/app/src/main/res/drawable-mdpi/white_card.9.png
similarity index 100%
rename from res/drawable-mdpi/white_card.9.png
rename to app/src/main/res/drawable-mdpi/white_card.9.png
diff --git a/res/drawable-mdpi/widget_clear.png b/app/src/main/res/drawable-mdpi/widget_clear.png
similarity index 100%
rename from res/drawable-mdpi/widget_clear.png
rename to app/src/main/res/drawable-mdpi/widget_clear.png
diff --git a/res/drawable-mdpi/widget_delete.png b/app/src/main/res/drawable-mdpi/widget_delete.png
similarity index 100%
rename from res/drawable-mdpi/widget_delete.png
rename to app/src/main/res/drawable-mdpi/widget_delete.png
diff --git a/res/drawable-mdpi/widget_preview.png b/app/src/main/res/drawable-mdpi/widget_preview.png
similarity index 100%
rename from res/drawable-mdpi/widget_preview.png
rename to app/src/main/res/drawable-mdpi/widget_preview.png
diff --git a/res/drawable-mdpi/x.png b/app/src/main/res/drawable-mdpi/x.png
similarity index 100%
rename from res/drawable-mdpi/x.png
rename to app/src/main/res/drawable-mdpi/x.png
diff --git a/res/drawable-v21/pad_button_advanced_background.xml b/app/src/main/res/drawable-v21/pad_button_advanced_background.xml
similarity index 100%
rename from res/drawable-v21/pad_button_advanced_background.xml
rename to app/src/main/res/drawable-v21/pad_button_advanced_background.xml
diff --git a/res/drawable-v21/pad_button_background.xml b/app/src/main/res/drawable-v21/pad_button_background.xml
similarity index 100%
rename from res/drawable-v21/pad_button_background.xml
rename to app/src/main/res/drawable-v21/pad_button_background.xml
diff --git a/res/drawable-xhdpi/btn_close.png b/app/src/main/res/drawable-xhdpi/btn_close.png
similarity index 100%
rename from res/drawable-xhdpi/btn_close.png
rename to app/src/main/res/drawable-xhdpi/btn_close.png
diff --git a/res/drawable-xhdpi/btn_graph.png b/app/src/main/res/drawable-xhdpi/btn_graph.png
similarity index 100%
rename from res/drawable-xhdpi/btn_graph.png
rename to app/src/main/res/drawable-xhdpi/btn_graph.png
diff --git a/res/drawable-xhdpi/btn_reset.png b/app/src/main/res/drawable-xhdpi/btn_reset.png
similarity index 100%
rename from res/drawable-xhdpi/btn_reset.png
rename to app/src/main/res/drawable-xhdpi/btn_reset.png
diff --git a/res/drawable-xhdpi/btn_zoomin.png b/app/src/main/res/drawable-xhdpi/btn_zoomin.png
similarity index 100%
rename from res/drawable-xhdpi/btn_zoomin.png
rename to app/src/main/res/drawable-xhdpi/btn_zoomin.png
diff --git a/res/drawable-xhdpi/btn_zoomout.png b/app/src/main/res/drawable-xhdpi/btn_zoomout.png
similarity index 100%
rename from res/drawable-xhdpi/btn_zoomout.png
rename to app/src/main/res/drawable-xhdpi/btn_zoomout.png
diff --git a/res/drawable-xhdpi/button_big.png b/app/src/main/res/drawable-xhdpi/button_big.png
similarity index 100%
rename from res/drawable-xhdpi/button_big.png
rename to app/src/main/res/drawable-xhdpi/button_big.png
diff --git a/res/drawable-xhdpi/circle.9.png b/app/src/main/res/drawable-xhdpi/circle.9.png
similarity index 100%
rename from res/drawable-xhdpi/circle.9.png
rename to app/src/main/res/drawable-xhdpi/circle.9.png
diff --git a/res/drawable-xhdpi/color_card.9.png b/app/src/main/res/drawable-xhdpi/color_card.9.png
similarity index 100%
rename from res/drawable-xhdpi/color_card.9.png
rename to app/src/main/res/drawable-xhdpi/color_card.9.png
diff --git a/res/drawable-xhdpi/egg.png b/app/src/main/res/drawable-xhdpi/egg.png
similarity index 100%
rename from res/drawable-xhdpi/egg.png
rename to app/src/main/res/drawable-xhdpi/egg.png
diff --git a/res/drawable-xhdpi/floating_calc_background.9.png b/app/src/main/res/drawable-xhdpi/floating_calc_background.9.png
similarity index 100%
rename from res/drawable-xhdpi/floating_calc_background.9.png
rename to app/src/main/res/drawable-xhdpi/floating_calc_background.9.png
diff --git a/res/drawable-xhdpi/ic_launcher_floating.png b/app/src/main/res/drawable-xhdpi/ic_launcher_floating.png
similarity index 100%
rename from res/drawable-xhdpi/ic_launcher_floating.png
rename to app/src/main/res/drawable-xhdpi/ic_launcher_floating.png
diff --git a/res/drawable-xhdpi/line.9.png b/app/src/main/res/drawable-xhdpi/line.9.png
similarity index 100%
rename from res/drawable-xhdpi/line.9.png
rename to app/src/main/res/drawable-xhdpi/line.9.png
diff --git a/res/drawable-xhdpi/matrix_background.9.png b/app/src/main/res/drawable-xhdpi/matrix_background.9.png
similarity index 100%
rename from res/drawable-xhdpi/matrix_background.9.png
rename to app/src/main/res/drawable-xhdpi/matrix_background.9.png
diff --git a/res/drawable-xhdpi/white_card.9.png b/app/src/main/res/drawable-xhdpi/white_card.9.png
similarity index 100%
rename from res/drawable-xhdpi/white_card.9.png
rename to app/src/main/res/drawable-xhdpi/white_card.9.png
diff --git a/res/drawable-xhdpi/widget_clear.png b/app/src/main/res/drawable-xhdpi/widget_clear.png
similarity index 100%
rename from res/drawable-xhdpi/widget_clear.png
rename to app/src/main/res/drawable-xhdpi/widget_clear.png
diff --git a/res/drawable-xhdpi/widget_delete.png b/app/src/main/res/drawable-xhdpi/widget_delete.png
similarity index 100%
rename from res/drawable-xhdpi/widget_delete.png
rename to app/src/main/res/drawable-xhdpi/widget_delete.png
diff --git a/res/drawable-xhdpi/widget_preview.png b/app/src/main/res/drawable-xhdpi/widget_preview.png
similarity index 100%
rename from res/drawable-xhdpi/widget_preview.png
rename to app/src/main/res/drawable-xhdpi/widget_preview.png
diff --git a/res/drawable-xhdpi/x.png b/app/src/main/res/drawable-xhdpi/x.png
similarity index 100%
rename from res/drawable-xhdpi/x.png
rename to app/src/main/res/drawable-xhdpi/x.png
diff --git a/res/drawable-xxhdpi/btn_close.png b/app/src/main/res/drawable-xxhdpi/btn_close.png
similarity index 100%
rename from res/drawable-xxhdpi/btn_close.png
rename to app/src/main/res/drawable-xxhdpi/btn_close.png
diff --git a/res/drawable-xxhdpi/btn_graph.png b/app/src/main/res/drawable-xxhdpi/btn_graph.png
similarity index 100%
rename from res/drawable-xxhdpi/btn_graph.png
rename to app/src/main/res/drawable-xxhdpi/btn_graph.png
diff --git a/res/drawable-xxhdpi/btn_reset.png b/app/src/main/res/drawable-xxhdpi/btn_reset.png
similarity index 100%
rename from res/drawable-xxhdpi/btn_reset.png
rename to app/src/main/res/drawable-xxhdpi/btn_reset.png
diff --git a/res/drawable-xxhdpi/btn_zoomin.png b/app/src/main/res/drawable-xxhdpi/btn_zoomin.png
similarity index 100%
rename from res/drawable-xxhdpi/btn_zoomin.png
rename to app/src/main/res/drawable-xxhdpi/btn_zoomin.png
diff --git a/res/drawable-xxhdpi/btn_zoomout.png b/app/src/main/res/drawable-xxhdpi/btn_zoomout.png
similarity index 100%
rename from res/drawable-xxhdpi/btn_zoomout.png
rename to app/src/main/res/drawable-xxhdpi/btn_zoomout.png
diff --git a/res/drawable-xxhdpi/button_big.png b/app/src/main/res/drawable-xxhdpi/button_big.png
similarity index 100%
rename from res/drawable-xxhdpi/button_big.png
rename to app/src/main/res/drawable-xxhdpi/button_big.png
diff --git a/res/drawable-xxhdpi/circle.9.png b/app/src/main/res/drawable-xxhdpi/circle.9.png
similarity index 100%
rename from res/drawable-xxhdpi/circle.9.png
rename to app/src/main/res/drawable-xxhdpi/circle.9.png
diff --git a/res/drawable-xxhdpi/color_card.9.png b/app/src/main/res/drawable-xxhdpi/color_card.9.png
similarity index 100%
rename from res/drawable-xxhdpi/color_card.9.png
rename to app/src/main/res/drawable-xxhdpi/color_card.9.png
diff --git a/res/drawable-xxhdpi/egg.png b/app/src/main/res/drawable-xxhdpi/egg.png
similarity index 100%
rename from res/drawable-xxhdpi/egg.png
rename to app/src/main/res/drawable-xxhdpi/egg.png
diff --git a/res/drawable-xxhdpi/floating_calc_background.9.png b/app/src/main/res/drawable-xxhdpi/floating_calc_background.9.png
similarity index 100%
rename from res/drawable-xxhdpi/floating_calc_background.9.png
rename to app/src/main/res/drawable-xxhdpi/floating_calc_background.9.png
diff --git a/res/drawable-xxhdpi/ic_launcher_floating.png b/app/src/main/res/drawable-xxhdpi/ic_launcher_floating.png
similarity index 100%
rename from res/drawable-xxhdpi/ic_launcher_floating.png
rename to app/src/main/res/drawable-xxhdpi/ic_launcher_floating.png
diff --git a/res/drawable-xxhdpi/line.9.png b/app/src/main/res/drawable-xxhdpi/line.9.png
similarity index 100%
rename from res/drawable-xxhdpi/line.9.png
rename to app/src/main/res/drawable-xxhdpi/line.9.png
diff --git a/res/drawable-xxhdpi/matrix_background.9.png b/app/src/main/res/drawable-xxhdpi/matrix_background.9.png
similarity index 100%
rename from res/drawable-xxhdpi/matrix_background.9.png
rename to app/src/main/res/drawable-xxhdpi/matrix_background.9.png
diff --git a/res/drawable-xxhdpi/white_card.9.png b/app/src/main/res/drawable-xxhdpi/white_card.9.png
similarity index 100%
rename from res/drawable-xxhdpi/white_card.9.png
rename to app/src/main/res/drawable-xxhdpi/white_card.9.png
diff --git a/res/drawable-xxhdpi/widget_clear.png b/app/src/main/res/drawable-xxhdpi/widget_clear.png
similarity index 100%
rename from res/drawable-xxhdpi/widget_clear.png
rename to app/src/main/res/drawable-xxhdpi/widget_clear.png
diff --git a/res/drawable-xxhdpi/widget_delete.png b/app/src/main/res/drawable-xxhdpi/widget_delete.png
similarity index 100%
rename from res/drawable-xxhdpi/widget_delete.png
rename to app/src/main/res/drawable-xxhdpi/widget_delete.png
diff --git a/res/drawable-xxhdpi/widget_preview.png b/app/src/main/res/drawable-xxhdpi/widget_preview.png
similarity index 100%
rename from res/drawable-xxhdpi/widget_preview.png
rename to app/src/main/res/drawable-xxhdpi/widget_preview.png
diff --git a/res/drawable-xxhdpi/x.png b/app/src/main/res/drawable-xxhdpi/x.png
similarity index 100%
rename from res/drawable-xxhdpi/x.png
rename to app/src/main/res/drawable-xxhdpi/x.png
diff --git a/res/drawable-xxxhdpi/button_big.png b/app/src/main/res/drawable-xxxhdpi/button_big.png
similarity index 100%
rename from res/drawable-xxxhdpi/button_big.png
rename to app/src/main/res/drawable-xxxhdpi/button_big.png
diff --git a/res/drawable-xxxhdpi/circle.9.png b/app/src/main/res/drawable-xxxhdpi/circle.9.png
similarity index 100%
rename from res/drawable-xxxhdpi/circle.9.png
rename to app/src/main/res/drawable-xxxhdpi/circle.9.png
diff --git a/res/drawable-xxxhdpi/color_card.9.png b/app/src/main/res/drawable-xxxhdpi/color_card.9.png
similarity index 100%
rename from res/drawable-xxxhdpi/color_card.9.png
rename to app/src/main/res/drawable-xxxhdpi/color_card.9.png
diff --git a/res/drawable-xxxhdpi/egg.png b/app/src/main/res/drawable-xxxhdpi/egg.png
similarity index 100%
rename from res/drawable-xxxhdpi/egg.png
rename to app/src/main/res/drawable-xxxhdpi/egg.png
diff --git a/res/drawable-xxxhdpi/floating_calc_background.9.png b/app/src/main/res/drawable-xxxhdpi/floating_calc_background.9.png
similarity index 100%
rename from res/drawable-xxxhdpi/floating_calc_background.9.png
rename to app/src/main/res/drawable-xxxhdpi/floating_calc_background.9.png
diff --git a/res/drawable-xxxhdpi/ic_launcher_floating.png b/app/src/main/res/drawable-xxxhdpi/ic_launcher_floating.png
similarity index 100%
rename from res/drawable-xxxhdpi/ic_launcher_floating.png
rename to app/src/main/res/drawable-xxxhdpi/ic_launcher_floating.png
diff --git a/res/drawable-xxxhdpi/line.9.png b/app/src/main/res/drawable-xxxhdpi/line.9.png
similarity index 100%
rename from res/drawable-xxxhdpi/line.9.png
rename to app/src/main/res/drawable-xxxhdpi/line.9.png
diff --git a/res/drawable-xxxhdpi/matrix_background.9.png b/app/src/main/res/drawable-xxxhdpi/matrix_background.9.png
similarity index 100%
rename from res/drawable-xxxhdpi/matrix_background.9.png
rename to app/src/main/res/drawable-xxxhdpi/matrix_background.9.png
diff --git a/res/drawable-xxxhdpi/white_card.9.png b/app/src/main/res/drawable-xxxhdpi/white_card.9.png
similarity index 100%
rename from res/drawable-xxxhdpi/white_card.9.png
rename to app/src/main/res/drawable-xxxhdpi/white_card.9.png
diff --git a/res/drawable-xxxhdpi/widget_clear.png b/app/src/main/res/drawable-xxxhdpi/widget_clear.png
similarity index 100%
rename from res/drawable-xxxhdpi/widget_clear.png
rename to app/src/main/res/drawable-xxxhdpi/widget_clear.png
diff --git a/res/drawable-xxxhdpi/widget_delete.png b/app/src/main/res/drawable-xxxhdpi/widget_delete.png
similarity index 100%
rename from res/drawable-xxxhdpi/widget_delete.png
rename to app/src/main/res/drawable-xxxhdpi/widget_delete.png
diff --git a/res/drawable-xxxhdpi/widget_preview.png b/app/src/main/res/drawable-xxxhdpi/widget_preview.png
similarity index 100%
rename from res/drawable-xxxhdpi/widget_preview.png
rename to app/src/main/res/drawable-xxxhdpi/widget_preview.png
diff --git a/res/drawable-xxxhdpi/x.png b/app/src/main/res/drawable-xxxhdpi/x.png
similarity index 100%
rename from res/drawable-xxxhdpi/x.png
rename to app/src/main/res/drawable-xxxhdpi/x.png
diff --git a/res/drawable/circle_bg.xml b/app/src/main/res/drawable/circle_bg.xml
similarity index 100%
rename from res/drawable/circle_bg.xml
rename to app/src/main/res/drawable/circle_bg.xml
diff --git a/res/drawable/delete_background.xml b/app/src/main/res/drawable/delete_background.xml
similarity index 100%
rename from res/drawable/delete_background.xml
rename to app/src/main/res/drawable/delete_background.xml
diff --git a/app/src/main/res/drawable/ic_delete_black_24dp.xml b/app/src/main/res/drawable/ic_delete_black_24dp.xml
new file mode 100644
index 000000000..39e64d698
--- /dev/null
+++ b/app/src/main/res/drawable/ic_delete_black_24dp.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/res/drawable/menu_bg.xml b/app/src/main/res/drawable/menu_bg.xml
similarity index 100%
rename from res/drawable/menu_bg.xml
rename to app/src/main/res/drawable/menu_bg.xml
diff --git a/res/drawable/pad_button_advanced_background.xml b/app/src/main/res/drawable/pad_button_advanced_background.xml
similarity index 100%
rename from res/drawable/pad_button_advanced_background.xml
rename to app/src/main/res/drawable/pad_button_advanced_background.xml
diff --git a/res/drawable/pad_button_background.xml b/app/src/main/res/drawable/pad_button_background.xml
similarity index 100%
rename from res/drawable/pad_button_background.xml
rename to app/src/main/res/drawable/pad_button_background.xml
diff --git a/res/drawable/view_pager_indicator.xml b/app/src/main/res/drawable/view_pager_indicator.xml
similarity index 100%
rename from res/drawable/view_pager_indicator.xml
rename to app/src/main/res/drawable/view_pager_indicator.xml
diff --git a/res/layout-land/activity_calculator.xml b/app/src/main/res/layout-land/activity_calculator.xml
similarity index 95%
rename from res/layout-land/activity_calculator.xml
rename to app/src/main/res/layout-land/activity_calculator.xml
index bac5a9eab..1baad5134 100644
--- a/res/layout-land/activity_calculator.xml
+++ b/app/src/main/res/layout-land/activity_calculator.xml
@@ -32,7 +32,7 @@
android:layout_below="@id/display">
-
+
diff --git a/res/layout-sw600dp-port/activity_calculator.xml b/app/src/main/res/layout-sw600dp-port/activity_calculator.xml
similarity index 95%
rename from res/layout-sw600dp-port/activity_calculator.xml
rename to app/src/main/res/layout-sw600dp-port/activity_calculator.xml
index 5ea2b4e29..5b9a53a96 100644
--- a/res/layout-sw600dp-port/activity_calculator.xml
+++ b/app/src/main/res/layout-sw600dp-port/activity_calculator.xml
@@ -37,7 +37,7 @@
style="@style/PadLinearLayoutStyle">
-
+
diff --git a/res/layout/activity_calculator.xml b/app/src/main/res/layout/activity_calculator.xml
similarity index 100%
rename from res/layout/activity_calculator.xml
rename to app/src/main/res/layout/activity_calculator.xml
diff --git a/res/layout/display.xml b/app/src/main/res/layout/display.xml
similarity index 97%
rename from res/layout/display.xml
rename to app/src/main/res/layout/display.xml
index db5ee41ed..788dfa489 100644
--- a/res/layout/display.xml
+++ b/app/src/main/res/layout/display.xml
@@ -35,7 +35,7 @@
android:layout_height="wrap_content"
android:background="@color/display_background_color">
-
diff --git a/res/layout/equals_graph_button.xml b/app/src/main/res/layout/equals_graph_button.xml
similarity index 98%
rename from res/layout/equals_graph_button.xml
rename to app/src/main/res/layout/equals_graph_button.xml
index ada061372..961360daf 100644
--- a/res/layout/equals_graph_button.xml
+++ b/app/src/main/res/layout/equals_graph_button.xml
@@ -21,6 +21,7 @@
-
+ android:layout_gravity="center"
+ android:visibility="invisible"/>
+ android:layout_gravity="center" />
+ android:text="@string/op_div"
+ android:visibility="gone"/>
+
+
+
diff --git a/res/layout/floating_calculator_history.xml b/app/src/main/res/layout/floating_calculator_history.xml
similarity index 89%
rename from res/layout/floating_calculator_history.xml
rename to app/src/main/res/layout/floating_calculator_history.xml
index 896f2965b..03caa0a84 100644
--- a/res/layout/floating_calculator_history.xml
+++ b/app/src/main/res/layout/floating_calculator_history.xml
@@ -4,7 +4,7 @@
android:layout_height="wrap_content"
android:background="@color/pad_numeric_background_color">
-
diff --git a/res/layout/floating_calculator_icon.xml b/app/src/main/res/layout/floating_calculator_icon.xml
similarity index 100%
rename from res/layout/floating_calculator_icon.xml
rename to app/src/main/res/layout/floating_calculator_icon.xml
diff --git a/res/layout/floating_delete_box.xml b/app/src/main/res/layout/floating_delete_box.xml
similarity index 100%
rename from res/layout/floating_delete_box.xml
rename to app/src/main/res/layout/floating_delete_box.xml
diff --git a/res/layout/floating_history_entry.xml b/app/src/main/res/layout/floating_history_entry.xml
similarity index 100%
rename from res/layout/floating_history_entry.xml
rename to app/src/main/res/layout/floating_history_entry.xml
diff --git a/res/layout/graph_display.xml b/app/src/main/res/layout/graph_display.xml
similarity index 100%
rename from res/layout/graph_display.xml
rename to app/src/main/res/layout/graph_display.xml
diff --git a/res/layout/history_entry.xml b/app/src/main/res/layout/history_entry.xml
similarity index 100%
rename from res/layout/history_entry.xml
rename to app/src/main/res/layout/history_entry.xml
diff --git a/res/layout/history_panel.xml b/app/src/main/res/layout/history_panel.xml
similarity index 100%
rename from res/layout/history_panel.xml
rename to app/src/main/res/layout/history_panel.xml
diff --git a/res/layout/pad_advanced.xml b/app/src/main/res/layout/pad_advanced.xml
similarity index 100%
rename from res/layout/pad_advanced.xml
rename to app/src/main/res/layout/pad_advanced.xml
diff --git a/res/layout/pad_auxiliary.xml b/app/src/main/res/layout/pad_auxiliary.xml
similarity index 95%
rename from res/layout/pad_auxiliary.xml
rename to app/src/main/res/layout/pad_auxiliary.xml
index 83ea8850b..c57f1097d 100644
--- a/res/layout/pad_auxiliary.xml
+++ b/app/src/main/res/layout/pad_auxiliary.xml
@@ -17,7 +17,8 @@
+ style="@style/PadLayoutStyle.Card"
+ android:visibility="gone">
-
-
diff --git a/res/layout/pad_operator_one_col.xml b/app/src/main/res/layout/pad_operator_one_col.xml
similarity index 78%
rename from res/layout/pad_operator_one_col.xml
rename to app/src/main/res/layout/pad_operator_one_col.xml
index d51a2576b..c5fc90bae 100644
--- a/res/layout/pad_operator_one_col.xml
+++ b/app/src/main/res/layout/pad_operator_one_col.xml
@@ -23,20 +23,21 @@
android:columnCount="1"
android:rowCount="5">
-
+ android:src="@drawable/ic_delete_black_24dp"
+ android:tint="#FFF"/>
-
+ android:text="@string/op_div"
+ android:visibility="gone"/>
+
+
diff --git a/res/layout/pad_operator_two_col.xml b/app/src/main/res/layout/pad_operator_two_col.xml
similarity index 86%
rename from res/layout/pad_operator_two_col.xml
rename to app/src/main/res/layout/pad_operator_two_col.xml
index 04568a723..66966c6eb 100644
--- a/res/layout/pad_operator_two_col.xml
+++ b/app/src/main/res/layout/pad_operator_two_col.xml
@@ -28,22 +28,24 @@
style="@style/PadButtonStyle.Operator"
android:contentDescription="@string/desc_op_div"
android:onClick="onButtonClick"
- android:text="@string/op_div" />
+ android:text="@string/op_div"
+ android:visibility="invisible"/>
-
+ android:background="@drawable/ic_delete_black_24dp"
+ android:tint="#FFF"/>
-
@@ -94,7 +94,17 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
- android:text="@string/op_div" />
+ android:text="@string/op_div"
+ android:visibility="gone"/>
+
+
+ android:text="@string/op_sub" />
+ android:text="@string/op_add" />
+ android:layout_weight="1"
+ android:visibility="invisible"/>
+ android:layout_weight="1"/>
+ android:text="@string/eq" />
diff --git a/res/mipmap-hdpi/ic_launcher_calculator.png b/app/src/main/res/mipmap-hdpi/ic_launcher_calculator.png
similarity index 100%
rename from res/mipmap-hdpi/ic_launcher_calculator.png
rename to app/src/main/res/mipmap-hdpi/ic_launcher_calculator.png
diff --git a/res/mipmap-mdpi/ic_launcher_calculator.png b/app/src/main/res/mipmap-mdpi/ic_launcher_calculator.png
similarity index 100%
rename from res/mipmap-mdpi/ic_launcher_calculator.png
rename to app/src/main/res/mipmap-mdpi/ic_launcher_calculator.png
diff --git a/res/mipmap-xhdpi/ic_launcher_calculator.png b/app/src/main/res/mipmap-xhdpi/ic_launcher_calculator.png
similarity index 100%
rename from res/mipmap-xhdpi/ic_launcher_calculator.png
rename to app/src/main/res/mipmap-xhdpi/ic_launcher_calculator.png
diff --git a/res/mipmap-xxhdpi/ic_launcher_calculator.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher_calculator.png
similarity index 100%
rename from res/mipmap-xxhdpi/ic_launcher_calculator.png
rename to app/src/main/res/mipmap-xxhdpi/ic_launcher_calculator.png
diff --git a/res/mipmap-xxxhdpi/ic_launcher_calculator.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_calculator.png
similarity index 100%
rename from res/mipmap-xxxhdpi/ic_launcher_calculator.png
rename to app/src/main/res/mipmap-xxxhdpi/ic_launcher_calculator.png
diff --git a/app/src/main/res/raw-es/digit_0.mp3 b/app/src/main/res/raw-es/digit_0.mp3
new file mode 100644
index 000000000..730a395cb
Binary files /dev/null and b/app/src/main/res/raw-es/digit_0.mp3 differ
diff --git a/app/src/main/res/raw-es/digit_1.mp3 b/app/src/main/res/raw-es/digit_1.mp3
new file mode 100644
index 000000000..35dcd2aef
Binary files /dev/null and b/app/src/main/res/raw-es/digit_1.mp3 differ
diff --git a/app/src/main/res/raw-es/digit_2.mp3 b/app/src/main/res/raw-es/digit_2.mp3
new file mode 100644
index 000000000..b25b58f2e
Binary files /dev/null and b/app/src/main/res/raw-es/digit_2.mp3 differ
diff --git a/app/src/main/res/raw-es/digit_3.mp3 b/app/src/main/res/raw-es/digit_3.mp3
new file mode 100644
index 000000000..36d2feb3d
Binary files /dev/null and b/app/src/main/res/raw-es/digit_3.mp3 differ
diff --git a/app/src/main/res/raw-es/digit_4.mp3 b/app/src/main/res/raw-es/digit_4.mp3
new file mode 100644
index 000000000..475c1bc93
Binary files /dev/null and b/app/src/main/res/raw-es/digit_4.mp3 differ
diff --git a/app/src/main/res/raw-es/digit_5.mp3 b/app/src/main/res/raw-es/digit_5.mp3
new file mode 100644
index 000000000..667d35f10
Binary files /dev/null and b/app/src/main/res/raw-es/digit_5.mp3 differ
diff --git a/app/src/main/res/raw-es/digit_6.mp3 b/app/src/main/res/raw-es/digit_6.mp3
new file mode 100644
index 000000000..d25d53295
Binary files /dev/null and b/app/src/main/res/raw-es/digit_6.mp3 differ
diff --git a/app/src/main/res/raw-es/digit_7.mp3 b/app/src/main/res/raw-es/digit_7.mp3
new file mode 100644
index 000000000..1e0dccabc
Binary files /dev/null and b/app/src/main/res/raw-es/digit_7.mp3 differ
diff --git a/app/src/main/res/raw-es/digit_8.mp3 b/app/src/main/res/raw-es/digit_8.mp3
new file mode 100644
index 000000000..b8b4749ad
Binary files /dev/null and b/app/src/main/res/raw-es/digit_8.mp3 differ
diff --git a/app/src/main/res/raw-es/digit_9.mp3 b/app/src/main/res/raw-es/digit_9.mp3
new file mode 100644
index 000000000..11ecebbf2
Binary files /dev/null and b/app/src/main/res/raw-es/digit_9.mp3 differ
diff --git a/app/src/main/res/raw-es/equals.mp3 b/app/src/main/res/raw-es/equals.mp3
new file mode 100644
index 000000000..9706204bc
Binary files /dev/null and b/app/src/main/res/raw-es/equals.mp3 differ
diff --git a/app/src/main/res/raw-es/minus.mp3 b/app/src/main/res/raw-es/minus.mp3
new file mode 100644
index 000000000..930c510c8
Binary files /dev/null and b/app/src/main/res/raw-es/minus.mp3 differ
diff --git a/app/src/main/res/raw-es/mul.mp3 b/app/src/main/res/raw-es/mul.mp3
new file mode 100644
index 000000000..11484e15c
Binary files /dev/null and b/app/src/main/res/raw-es/mul.mp3 differ
diff --git a/app/src/main/res/raw-es/plus.mp3 b/app/src/main/res/raw-es/plus.mp3
new file mode 100644
index 000000000..1ef1a174f
Binary files /dev/null and b/app/src/main/res/raw-es/plus.mp3 differ
diff --git a/app/src/main/res/raw-sw/digit_0.wav b/app/src/main/res/raw-sw/digit_0.wav
new file mode 100755
index 000000000..83378cc13
Binary files /dev/null and b/app/src/main/res/raw-sw/digit_0.wav differ
diff --git a/app/src/main/res/raw-sw/digit_1.wav b/app/src/main/res/raw-sw/digit_1.wav
new file mode 100755
index 000000000..4587defaf
Binary files /dev/null and b/app/src/main/res/raw-sw/digit_1.wav differ
diff --git a/app/src/main/res/raw-sw/digit_2.wav b/app/src/main/res/raw-sw/digit_2.wav
new file mode 100755
index 000000000..b704a9ed6
Binary files /dev/null and b/app/src/main/res/raw-sw/digit_2.wav differ
diff --git a/app/src/main/res/raw-sw/digit_3.wav b/app/src/main/res/raw-sw/digit_3.wav
new file mode 100755
index 000000000..cf321519f
Binary files /dev/null and b/app/src/main/res/raw-sw/digit_3.wav differ
diff --git a/app/src/main/res/raw-sw/digit_4.wav b/app/src/main/res/raw-sw/digit_4.wav
new file mode 100755
index 000000000..65b1237a1
Binary files /dev/null and b/app/src/main/res/raw-sw/digit_4.wav differ
diff --git a/app/src/main/res/raw-sw/digit_5.wav b/app/src/main/res/raw-sw/digit_5.wav
new file mode 100755
index 000000000..03ba3e962
Binary files /dev/null and b/app/src/main/res/raw-sw/digit_5.wav differ
diff --git a/app/src/main/res/raw-sw/digit_6.wav b/app/src/main/res/raw-sw/digit_6.wav
new file mode 100755
index 000000000..b2d0ade26
Binary files /dev/null and b/app/src/main/res/raw-sw/digit_6.wav differ
diff --git a/app/src/main/res/raw-sw/digit_7.wav b/app/src/main/res/raw-sw/digit_7.wav
new file mode 100755
index 000000000..f56ed559a
Binary files /dev/null and b/app/src/main/res/raw-sw/digit_7.wav differ
diff --git a/app/src/main/res/raw-sw/digit_8.wav b/app/src/main/res/raw-sw/digit_8.wav
new file mode 100755
index 000000000..97f58944a
Binary files /dev/null and b/app/src/main/res/raw-sw/digit_8.wav differ
diff --git a/app/src/main/res/raw-sw/digit_9.wav b/app/src/main/res/raw-sw/digit_9.wav
new file mode 100755
index 000000000..8bb1e4d27
Binary files /dev/null and b/app/src/main/res/raw-sw/digit_9.wav differ
diff --git a/app/src/main/res/raw-sw/equals.wav b/app/src/main/res/raw-sw/equals.wav
new file mode 100755
index 000000000..36ae35c37
Binary files /dev/null and b/app/src/main/res/raw-sw/equals.wav differ
diff --git a/app/src/main/res/raw-sw/minus.wav b/app/src/main/res/raw-sw/minus.wav
new file mode 100755
index 000000000..7ff317f2d
Binary files /dev/null and b/app/src/main/res/raw-sw/minus.wav differ
diff --git a/app/src/main/res/raw-sw/mul.wav b/app/src/main/res/raw-sw/mul.wav
new file mode 100755
index 000000000..7da1d5fe4
Binary files /dev/null and b/app/src/main/res/raw-sw/mul.wav differ
diff --git a/app/src/main/res/raw-sw/plus.wav b/app/src/main/res/raw-sw/plus.wav
new file mode 100755
index 000000000..961091b36
Binary files /dev/null and b/app/src/main/res/raw-sw/plus.wav differ
diff --git a/app/src/main/res/raw/digit_0.wav b/app/src/main/res/raw/digit_0.wav
new file mode 100644
index 000000000..da465a128
Binary files /dev/null and b/app/src/main/res/raw/digit_0.wav differ
diff --git a/app/src/main/res/raw/digit_1.wav b/app/src/main/res/raw/digit_1.wav
new file mode 100644
index 000000000..2322c505a
Binary files /dev/null and b/app/src/main/res/raw/digit_1.wav differ
diff --git a/app/src/main/res/raw/digit_2.wav b/app/src/main/res/raw/digit_2.wav
new file mode 100644
index 000000000..5b841c5ce
Binary files /dev/null and b/app/src/main/res/raw/digit_2.wav differ
diff --git a/app/src/main/res/raw/digit_3.wav b/app/src/main/res/raw/digit_3.wav
new file mode 100644
index 000000000..43767070d
Binary files /dev/null and b/app/src/main/res/raw/digit_3.wav differ
diff --git a/app/src/main/res/raw/digit_4.wav b/app/src/main/res/raw/digit_4.wav
new file mode 100644
index 000000000..8d8308c33
Binary files /dev/null and b/app/src/main/res/raw/digit_4.wav differ
diff --git a/app/src/main/res/raw/digit_5.wav b/app/src/main/res/raw/digit_5.wav
new file mode 100644
index 000000000..9a4c0a1a2
Binary files /dev/null and b/app/src/main/res/raw/digit_5.wav differ
diff --git a/app/src/main/res/raw/digit_6.wav b/app/src/main/res/raw/digit_6.wav
new file mode 100644
index 000000000..610cbbb2d
Binary files /dev/null and b/app/src/main/res/raw/digit_6.wav differ
diff --git a/app/src/main/res/raw/digit_7.wav b/app/src/main/res/raw/digit_7.wav
new file mode 100644
index 000000000..3f2923c70
Binary files /dev/null and b/app/src/main/res/raw/digit_7.wav differ
diff --git a/app/src/main/res/raw/digit_8.wav b/app/src/main/res/raw/digit_8.wav
new file mode 100644
index 000000000..cc1277159
Binary files /dev/null and b/app/src/main/res/raw/digit_8.wav differ
diff --git a/app/src/main/res/raw/digit_9.wav b/app/src/main/res/raw/digit_9.wav
new file mode 100644
index 000000000..7b8a14734
Binary files /dev/null and b/app/src/main/res/raw/digit_9.wav differ
diff --git a/app/src/main/res/raw/equals.wav b/app/src/main/res/raw/equals.wav
new file mode 100644
index 000000000..cbf31029d
Binary files /dev/null and b/app/src/main/res/raw/equals.wav differ
diff --git a/app/src/main/res/raw/minus.wav b/app/src/main/res/raw/minus.wav
new file mode 100644
index 000000000..9ae1cb052
Binary files /dev/null and b/app/src/main/res/raw/minus.wav differ
diff --git a/app/src/main/res/raw/mul.wav b/app/src/main/res/raw/mul.wav
new file mode 100644
index 000000000..e429dc881
Binary files /dev/null and b/app/src/main/res/raw/mul.wav differ
diff --git a/app/src/main/res/raw/plus.wav b/app/src/main/res/raw/plus.wav
new file mode 100644
index 000000000..c824b60c0
Binary files /dev/null and b/app/src/main/res/raw/plus.wav differ
diff --git a/res/values-af/cm_strings.xml b/app/src/main/res/values-af/cm_strings.xml
similarity index 100%
rename from res/values-af/cm_strings.xml
rename to app/src/main/res/values-af/cm_strings.xml
diff --git a/res/values-af/strings.xml b/app/src/main/res/values-af/strings.xml
similarity index 98%
rename from res/values-af/strings.xml
rename to app/src/main/res/values-af/strings.xml
index ebd3e68d2..083ee53f8 100644
--- a/res/values-af/strings.xml
+++ b/app/src/main/res/values-af/strings.xml
@@ -1,4 +1,4 @@
-
+
36sp
diff --git a/res/values-sw600dp-port-v17/styles.xml b/app/src/main/res/values-sw600dp-port-v17/styles.xml
similarity index 100%
rename from res/values-sw600dp-port-v17/styles.xml
rename to app/src/main/res/values-sw600dp-port-v17/styles.xml
diff --git a/res/values-sw600dp-port/styles.xml b/app/src/main/res/values-sw600dp-port/styles.xml
similarity index 91%
rename from res/values-sw600dp-port/styles.xml
rename to app/src/main/res/values-sw600dp-port/styles.xml
index 904ec0299..4e07dfeaf 100644
--- a/res/values-sw600dp-port/styles.xml
+++ b/app/src/main/res/values-sw600dp-port/styles.xml
@@ -20,8 +20,8 @@
+
+
+
+
+
+
+
+
@@ -152,7 +156,6 @@
@@ -160,7 +163,7 @@
true15sp
-
+