diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 000000000..396318427 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,5 @@ +# See https://help.github.com/en/articles/about-code-owners + +# These owners will be the default owners for everything in the repo. Unless a later match takes precedence, +# @elimu-ai/codeowners-android (https://github.com/orgs/elimu-ai/teams/codeowners-android/members) will be requested for review when someone opens a pull request. +* @elimu-ai/codeowners-android diff --git a/.github/workflows/gradle-build.yml b/.github/workflows/gradle-build.yml new file mode 100644 index 000000000..e4755e405 --- /dev/null +++ b/.github/workflows/gradle-build.yml @@ -0,0 +1,23 @@ +name: Gradle Build + +on: + push: + branches: [ "cm-13.0" ] + pull_request: + branches: [ "cm-13.0" ] + +jobs: + build: + strategy: + matrix: + os: [ubuntu-latest, macos-latest, windows-latest] + java: [17, 21] + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: ${{ matrix.java }} + - uses: gradle/gradle-build-action@v3 + - run: ./gradlew clean build diff --git a/.github/workflows/gradle-lint.yml b/.github/workflows/gradle-lint.yml new file mode 100644 index 000000000..693d2e3d0 --- /dev/null +++ b/.github/workflows/gradle-lint.yml @@ -0,0 +1,19 @@ +name: Gradle Lint + +on: + push: + branches: [ "cm-13.0" ] + pull_request: + branches: [ "cm-13.0" ] + +jobs: + lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: 17 + - uses: gradle/gradle-build-action@v3 + - run: ./gradlew lint diff --git a/.gitignore b/.gitignore index cbd2f9cd7..7ac9535f9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,16 @@ +local.properties + .gradle -/local.properties -/.idea/workspace.xml -/.idea/libraries -.DS_Store +/*/build /build -*.iml \ No newline at end of file + +# Ignore Gradle GUI config +gradle-app.setting + +# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored) +!gradle-wrapper.jar + +*.iml +.idea + +.DS_Store diff --git a/.idea/.name b/.idea/.name deleted file mode 100644 index 6bc478bc6..000000000 --- a/.idea/.name +++ /dev/null @@ -1 +0,0 @@ -Calculator3 \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml deleted file mode 100644 index 217af471a..000000000 --- a/.idea/compiler.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml deleted file mode 100644 index e7bedf337..000000000 --- a/.idea/copyright/profiles_settings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml deleted file mode 100644 index e206d70d8..000000000 --- a/.idea/encodings.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/.idea/gradle.xml b/.idea/gradle.xml deleted file mode 100644 index d3e559218..000000000 --- a/.idea/gradle.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml deleted file mode 100644 index 4cc820c22..000000000 --- a/.idea/inspectionProfiles/Project_Default.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml deleted file mode 100644 index 3b312839b..000000000 --- a/.idea/inspectionProfiles/profiles_settings.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index 216459e75..000000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,102 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - localhost - 5050 - - - - diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index 9ba53b25b..000000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - diff --git a/.idea/scopes/scope_settings.xml b/.idea/scopes/scope_settings.xml deleted file mode 100644 index 922003b84..000000000 --- a/.idea/scopes/scope_settings.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index def6a6a18..000000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/Android.mk b/Android.mk index 0c09e76d5..f699e4cca 100644 --- a/Android.mk +++ b/Android.mk @@ -36,7 +36,7 @@ LOCAL_RESOURCE_DIR := $(addprefix $(LOCAL_PATH)/, $(res_dir)) LOCAL_AAPT_FLAGS := --auto-add-overlay \ --extra-packages com.xlythe.floatingview2 \ - --extra-packages android.support.v7.recyclerview + --extra-packages androidx.v7.recyclerview LOCAL_PROGUARD_FLAG_FILES := proguard.flags diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 9d22f5e72..1cdb16d8b 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -1,16 +1,12 @@ - - @@ -50,7 +46,7 @@ - + @@ -70,7 +66,7 @@ android:noHistory="true" android:theme="@style/TransparentBackground" /> @@ -79,7 +75,7 @@ + +## Demo Video 🎥 + +[![](https://i.ytimg.com/vi/q1-DU0uqqbY/hqdefault.jpg)](https://youtu.be/q1-DU0uqqbY) + +## Installation + +Note: This app depends on the [elimu.ai Content Provider](https://github.com/elimu-ai/content-provider) to be installed. + +--- + +

+ +

+

+ elimu.ai - Free open-source learning software for out-of-school children ✨🚀 +

+

+ Website 🌐 +  •  + Wiki 📃 +  •  + Projects 👩🏽‍💻 +  •  + Milestones 🎯 +  •  + Community 👋🏽 +  •  + Support 💜 +

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 @@