diff --git a/.idea/encodings.xml b/.idea/encodings.xml
index bb0b1d76..1ccfa6c8 100644
--- a/.idea/encodings.xml
+++ b/.idea/encodings.xml
@@ -6,7 +6,5 @@
-
-
\ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index a6784935..35db5fb0 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -11,11 +11,7 @@
-
-
-
-
diff --git a/.idea/modules.xml b/.idea/modules.xml
index 10ca2031..b44e84c8 100644
--- a/.idea/modules.xml
+++ b/.idea/modules.xml
@@ -3,11 +3,7 @@
-
-
-
-
diff --git a/android-app-core-tests/android-app-core-tests.iml b/android-app-core-tests/android-app-core-tests.iml
deleted file mode 100644
index 1197dc73..00000000
--- a/android-app-core-tests/android-app-core-tests.iml
+++ /dev/null
@@ -1,110 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android-app-core-tests/build.gradle b/android-app-core-tests/build.gradle
deleted file mode 100644
index 0cfd9e49..00000000
--- a/android-app-core-tests/build.gradle
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright 2014 serso aka se.solovyev
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- * Contact details
- *
- * Email: se.solovyev@gmail.com
- * Site: http://se.solovyev.org
- */
-
-apply plugin: 'java'
-
-dependencies {
- def androidModule = project(':android-app')
- compile androidModule
-
- testCompile androidModule.android.applicationVariants.toList().first().javaCompile.classpath
- testCompile androidModule.android.applicationVariants.toList().first().javaCompile.outputs.files
- testCompile files(androidModule.plugins.findPlugin("com.android.application").getBootClasspath())
-
- testCompile 'junit:junit:4.+'
- testCompile 'org.robolectric:robolectric:2.3'
- testCompile "org.mockito:mockito-all:1.9.5"
- testCompile "org.skyscreamer:jsonassert:1.2.3"
-}
-
-tasks.withType(Test) {
- scanForTestClasses = false
- include "**/*Test.class"
- exclude "**/*AngleUnitsButtonTest*"
- exclude "**/*NumeralBasesButtonTest*"
-}
-
-test {
- maxParallelForks = 15
- forkEvery = 1
-}
\ No newline at end of file
diff --git a/android-app-core-tests/src/test/java/org/solovyev/android/calculator/CalculatorTestUtils.java b/android-app-core-tests/src/test/java/org/solovyev/android/calculator/CalculatorTestUtils.java
deleted file mode 100644
index 6730aa1b..00000000
--- a/android-app-core-tests/src/test/java/org/solovyev/android/calculator/CalculatorTestUtils.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright 2013 serso aka se.solovyev
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- * Contact details
- *
- * Email: se.solovyev@gmail.com
- * Site: http://se.solovyev.org
- */
-
-package org.solovyev.android.calculator;
-
-import android.content.Context;
-import jscl.JsclMathEngine;
-import org.mockito.Mockito;
-import org.solovyev.android.calculator.history.CalculatorHistory;
-import org.solovyev.android.calculator.plot.CalculatorPlotter;
-
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-
-/**
- * User: serso
- * Date: 10/7/12
- * Time: 8:56 PM
- */
-public class CalculatorTestUtils {
-
- public static void staticSetUp(@Nullable Context context) throws Exception {
- Locator.getInstance().init(new CalculatorImpl(), newCalculatorEngine(), Mockito.mock(CalculatorClipboard.class), Mockito.mock(CalculatorNotifier.class), Mockito.mock(CalculatorHistory.class), new SystemOutCalculatorLogger(), Mockito.mock(CalculatorPreferenceService.class), Mockito.mock(CalculatorKeyboard.class), Mockito.mock(CalculatorPlotter.class), null);
- Locator.getInstance().getEngine().init();
-
- if (context != null) {
- initViews(context);
- }
- }
-
- public static void initViews(@Nonnull Context context) {
- final AndroidCalculatorEditorView editor = new AndroidCalculatorEditorView(context);
- editor.init();
- Locator.getInstance().getEditor().setView(editor);
-
- final AndroidCalculatorDisplayView display = new AndroidCalculatorDisplayView(context);
- display.init(context);
- Locator.getInstance().getDisplay().setView(display);
- }
-
- public static void staticSetUp() throws Exception {
- staticSetUp(null);
- }
-
-
- @Nonnull
- static CalculatorEngineImpl newCalculatorEngine() {
- final MathEntityDao mathEntityDao = Mockito.mock(MathEntityDao.class);
-
- final JsclMathEngine jsclEngine = JsclMathEngine.getInstance();
-
- final CalculatorVarsRegistry varsRegistry = new CalculatorVarsRegistry(jsclEngine.getConstantsRegistry(), mathEntityDao);
- final CalculatorFunctionsMathRegistry functionsRegistry = new CalculatorFunctionsMathRegistry(jsclEngine.getFunctionsRegistry(), mathEntityDao);
- final CalculatorOperatorsMathRegistry operatorsRegistry = new CalculatorOperatorsMathRegistry(jsclEngine.getOperatorsRegistry(), mathEntityDao);
- final CalculatorPostfixFunctionsRegistry postfixFunctionsRegistry = new CalculatorPostfixFunctionsRegistry(jsclEngine.getPostfixFunctionsRegistry(), mathEntityDao);
-
- return new CalculatorEngineImpl(jsclEngine, varsRegistry, functionsRegistry, operatorsRegistry, postfixFunctionsRegistry, null);
- }
-}
diff --git a/android-app-core/android-app-core.iml b/android-app-core/android-app-core.iml
deleted file mode 100644
index e6ac0687..00000000
--- a/android-app-core/android-app-core.iml
+++ /dev/null
@@ -1,109 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android-app-core/build.gradle b/android-app-core/build.gradle
deleted file mode 100644
index f1986fc9..00000000
--- a/android-app-core/build.gradle
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * Copyright 2014 serso aka se.solovyev
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- * Contact details
- *
- * Email: se.solovyev@gmail.com
- * Site: http://se.solovyev.org
- */
-
-apply plugin: 'com.android.library'
-apply plugin: 'maven'
-apply plugin: 'signing'
-
-android {
- compileSdkVersion android_sdk_version()
- buildToolsVersion android_build_tools_version()
-
- defaultConfig {
- minSdkVersion android_min_sdk_version()
- targetSdkVersion android_sdk_version()
- versionCode version_code()
- versionName version_name()
- }
- lintOptions {
- abortOnError false
- }
-}
-
-dependencies {
- compile project(':core')
- compile 'org.solovyev:common-core:1.0.7'
- compile 'org.solovyev:common-text:1.0.7'
- compile 'org.solovyev:common-security:1.0.7'
- compile 'org.solovyev.android:android-common-views:1.1.18@aar'
- compile 'org.solovyev.android:android-common-menus:1.1.18@aar'
- compile 'org.solovyev.android:android-common-core:1.1.18@aar'
- compile 'org.solovyev.android:android-common-preferences:1.1.18@aar'
- compile('org.solovyev:jscl:1.0.8') {
- exclude(module: 'xercesImpl')
- }
- compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
- compile 'com.android.support:support-v4:21.0.3'
- compile 'org.solovyev.android:checkout:0.6.0@aar'
- compile 'com.google.android.gms:play-services:6.5.87@aar'
- //testCompile group: 'org.robolectric', name: 'robolectric', version: '2.1.1'
-}
-
-
-task androidJavadocs(type: Javadoc) {
- source = android.sourceSets.main.java.srcDirs
- classpath += project.files(android.plugin.getBootClasspath().join(File.pathSeparator))
- configurations.compile.each { File file -> classpath += project.files(file.path) }
-}
-
-task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
- classifier = 'javadoc'
- from androidJavadocs.destinationDir
-}
-
-task androidSourcesJar(type: Jar) {
- classifier = 'sources'
- from android.sourceSets.main.java.srcDirs
-}
-
-task apklib(type: Zip) {
- appendix = extension = 'apklib'
-
- from 'src/main/AndroidManifest.xml'
- into('res') {
- from android.sourceSets.main.res.srcDirs
- }
- into('src') {
- from android.sourceSets.main.java.srcDirs
- }
- into('src') {
- from android.sourceSets.main.aidl.srcDirs
- }
-}
-
-
-artifacts {
- archives androidSourcesJar
- archives androidJavadocsJar
- archives apklib
-}
-
-signing {
- sign configurations.archives
-}
-
-group = "org.solovyev.android"
-archivesBaseName = "calculatorpp-android-app-core"
-version = version_name()
-
-uploadArchives {
- repositories {
- mavenDeployer {
- beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }
-
- repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") {
- authentication(userName: ossrhUsername, password: ossrhPassword)
- }
-
- snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") {
- authentication(userName: ossrhUsername, password: ossrhPassword)
- }
-
- pom.project {
- name 'Calculator++ Application Core'
- packaging 'aar'
- url 'https://github.com/serso/android-calculatorpp'
-
- scm {
- url 'https://github.com/serso/android-calculatorpp'
- connection 'scm:https://serso@github.com/serso/android-calculatorpp.git'
- developerConnection 'scm:git://github.com/serso/android-calculatorpp.git'
- }
-
- licenses {
- license {
- name 'The Apache Software License, Version 2.0'
- url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
- distribution 'repo'
- }
- }
-
- developers {
- developer {
- id 'se.solovyev'
- name 'Sergey Solovyev'
- email 'se.solovyev@gmail.com'
- }
- }
- }
- }
- }
-}
diff --git a/android-app-core/src/main/AndroidManifest.xml b/android-app-core/src/main/AndroidManifest.xml
deleted file mode 100644
index 7ee835bb..00000000
--- a/android-app-core/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android-app-core/src/main/assets/fonts/Roboto-Regular.ttf b/android-app-core/src/main/assets/fonts/Roboto-Regular.ttf
deleted file mode 100644
index 73b23abb..00000000
Binary files a/android-app-core/src/main/assets/fonts/Roboto-Regular.ttf and /dev/null differ
diff --git a/android-app-core/src/main/res/values/arrays.xml b/android-app-core/src/main/res/values/arrays.xml
deleted file mode 100644
index d5a7c2ae..00000000
--- a/android-app-core/src/main/res/values/arrays.xml
+++ /dev/null
@@ -1,58 +0,0 @@
-
-
-
-
-
-
- - @string/cpp_solid_line_style
- - @string/cpp_dashed_line_style
- - @string/cpp_dotted_line_style
- - @string/cpp_dash_dotted_line_style
-
-
-
- - @string/cpp_monochrome_line_color_type
- - @string/cpp_color_map_line_color_type
-
-
-
- - @string/p_white_line_color
- - @string/p_blue_line_color
- - @string/p_red_line_color
- - @string/p_green_line_color
- - @string/p_grey_line_color
-
-
- - white
- - blue
- - red
- - green
- - grey
-
-
-
\ No newline at end of file
diff --git a/android-app-onscreen/android-app-onscreen.iml b/android-app-onscreen/android-app-onscreen.iml
deleted file mode 100644
index 08921145..00000000
--- a/android-app-onscreen/android-app-onscreen.iml
+++ /dev/null
@@ -1,108 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android-app-onscreen/build.gradle b/android-app-onscreen/build.gradle
deleted file mode 100644
index db911552..00000000
--- a/android-app-onscreen/build.gradle
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * Copyright 2014 serso aka se.solovyev
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- * Contact details
- *
- * Email: se.solovyev@gmail.com
- * Site: http://se.solovyev.org
- */
-
-apply plugin: 'com.android.library'
-apply plugin: 'maven'
-apply plugin: 'signing'
-
-android {
- compileSdkVersion android_sdk_version()
- buildToolsVersion android_build_tools_version()
-
- defaultConfig {
- minSdkVersion android_min_sdk_version()
- targetSdkVersion android_sdk_version()
- versionCode version_code()
- versionName version_name()
- }
- lintOptions {
- abortOnError false
- }
-}
-
-dependencies {
- compile project(':core')
- compile project(':android-app-core')
- compile 'org.solovyev:common-core:1.0.7'
- compile 'org.solovyev:common-text:1.0.7'
- compile 'org.solovyev.android:android-common-views:1.1.18@aar'
- compile 'org.solovyev.android:android-common-menus:1.1.18@aar'
- compile 'org.solovyev.android:android-common-core:1.1.18@aar'
- compile 'org.solovyev.android:android-common-preferences:1.1.18@aar'
- compile('org.solovyev:jscl:1.0.8') {
- exclude(module: 'xercesImpl')
- }
- compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
- compile 'com.android.support:support-v4:21.0.3'
- //testCompile group: 'org.robolectric', name: 'robolectric', version: '2.1.1'
-}
-
-
-task androidJavadocs(type: Javadoc) {
- source = android.sourceSets.main.java.srcDirs
- classpath += project.files(android.plugin.getBootClasspath().join(File.pathSeparator))
- configurations.compile.each { File file -> classpath += project.files(file.path) }
-}
-
-task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
- classifier = 'javadoc'
- from androidJavadocs.destinationDir
-}
-
-task androidSourcesJar(type: Jar) {
- classifier = 'sources'
- from android.sourceSets.main.java.srcDirs
-}
-
-task apklib(type: Zip) {
- appendix = extension = 'apklib'
-
- from 'src/main/AndroidManifest.xml'
- into('res') {
- from android.sourceSets.main.res.srcDirs
- }
- into('src') {
- from android.sourceSets.main.java.srcDirs
- }
- into('src') {
- from android.sourceSets.main.aidl.srcDirs
- }
-}
-
-
-artifacts {
- archives androidSourcesJar
- archives androidJavadocsJar
- archives apklib
-}
-
-signing {
- sign configurations.archives
-}
-
-group = "org.solovyev.android"
-archivesBaseName = "calculatorpp-android-app-onscreen"
-version = version_name()
-
-uploadArchives {
- repositories {
- mavenDeployer {
- beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }
-
- repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") {
- authentication(userName: ossrhUsername, password: ossrhPassword)
- }
-
- snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") {
- authentication(userName: ossrhUsername, password: ossrhPassword)
- }
-
- pom.project {
- name 'Calculator++ Application Onscreen'
- packaging 'aar'
- url 'https://github.com/serso/android-calculatorpp'
-
- scm {
- url 'https://github.com/serso/android-calculatorpp'
- connection 'scm:https://serso@github.com/serso/android-calculatorpp.git'
- developerConnection 'scm:git://github.com/serso/android-calculatorpp.git'
- }
-
- licenses {
- license {
- name 'The Apache Software License, Version 2.0'
- url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
- distribution 'repo'
- }
- }
-
- developers {
- developer {
- id 'se.solovyev'
- name 'Sergey Solovyev'
- email 'se.solovyev@gmail.com'
- }
- }
- }
- }
- }
-}
diff --git a/android-app-onscreen/pom.xml b/android-app-onscreen/pom.xml
deleted file mode 100644
index 52cafcf6..00000000
--- a/android-app-onscreen/pom.xml
+++ /dev/null
@@ -1,54 +0,0 @@
-
-
- 4.0.0
-
-
- org.solovyev.android
- calculatorpp-parent
- 2.0.7-SNAPSHOT
-
-
- org.solovyev.android
- calculatorpp-android-app-onscreen
- 2.0.7-SNAPSHOT
- Calculator++ Application Onscreen
- apklib
-
-
-
-
- org.solovyev.android
- calculatorpp-core
-
-
-
- org.solovyev.android
- calculatorpp-android-app-core
- apklib
-
-
-
- com.google.android
- android
- provided
-
-
-
- com.google.android
- support-v4
-
-
-
-
-
-
-
-
- com.simpligility.maven.plugins
- android-maven-plugin
-
-
-
-
-
-
diff --git a/android-app-onscreen/src/main/AndroidManifest.xml b/android-app-onscreen/src/main/AndroidManifest.xml
deleted file mode 100644
index 3e72674d..00000000
--- a/android-app-onscreen/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android-app-onscreen/src/main/res/values/colors.xml b/android-app-onscreen/src/main/res/values/colors.xml
deleted file mode 100644
index 941d7007..00000000
--- a/android-app-onscreen/src/main/res/values/colors.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
- #ff707070
-
\ No newline at end of file
diff --git a/android-app-onscreen/src/main/res/values/styles.xml b/android-app-onscreen/src/main/res/values/styles.xml
deleted file mode 100644
index eabbdca9..00000000
--- a/android-app-onscreen/src/main/res/values/styles.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android-app-tests/android-app-tests.iml b/android-app-tests/android-app-tests.iml
index 45a3417a..3fb9b10e 100644
--- a/android-app-tests/android-app-tests.iml
+++ b/android-app-tests/android-app-tests.iml
@@ -71,40 +71,36 @@
+
-
-
+
-
-
-
-
-
-
-
+
+
-
-
-
+
+
+
+
+
-
-
-
+
+
+
+
-
+
-
-
-
-
-
-
+
+
+
+
\ No newline at end of file
diff --git a/android-app-tests/build.gradle b/android-app-tests/build.gradle
index 2108f5c0..a9321ff4 100644
--- a/android-app-tests/build.gradle
+++ b/android-app-tests/build.gradle
@@ -44,6 +44,8 @@ tasks.withType(Test) {
exclude "**/*OnScreenCalculatorWizardStepTest*"
exclude "**/*CalculatorWizardTest*"
exclude "**/*WizardStepTest*"
+ exclude "**/*AngleUnitsButtonTest*"
+ exclude "**/*NumeralBasesButtonTest*"
}
test {
diff --git a/android-app-core-tests/src/test/java/org/solovyev/android/calculator/CalculatorBroadcasterTest.java b/android-app-tests/src/test/java/org/solovyev/android/calculator/CalculatorBroadcasterTest.java
similarity index 100%
rename from android-app-core-tests/src/test/java/org/solovyev/android/calculator/CalculatorBroadcasterTest.java
rename to android-app-tests/src/test/java/org/solovyev/android/calculator/CalculatorBroadcasterTest.java
diff --git a/android-app-core-tests/src/test/java/org/solovyev/android/calculator/CalculatorReceiverTest.java b/android-app-tests/src/test/java/org/solovyev/android/calculator/CalculatorReceiverTest.java
similarity index 100%
rename from android-app-core-tests/src/test/java/org/solovyev/android/calculator/CalculatorReceiverTest.java
rename to android-app-tests/src/test/java/org/solovyev/android/calculator/CalculatorReceiverTest.java
diff --git a/android-app-core-tests/src/test/java/org/solovyev/android/calculator/view/AngleUnitsButtonTest.java b/android-app-tests/src/test/java/org/solovyev/android/calculator/view/AngleUnitsButtonTest.java
similarity index 100%
rename from android-app-core-tests/src/test/java/org/solovyev/android/calculator/view/AngleUnitsButtonTest.java
rename to android-app-tests/src/test/java/org/solovyev/android/calculator/view/AngleUnitsButtonTest.java
diff --git a/android-app-core-tests/src/test/java/org/solovyev/android/calculator/view/NumeralBasesButtonTest.java b/android-app-tests/src/test/java/org/solovyev/android/calculator/view/NumeralBasesButtonTest.java
similarity index 100%
rename from android-app-core-tests/src/test/java/org/solovyev/android/calculator/view/NumeralBasesButtonTest.java
rename to android-app-tests/src/test/java/org/solovyev/android/calculator/view/NumeralBasesButtonTest.java
diff --git a/android-app-widget/android-app-widget.iml b/android-app-widget/android-app-widget.iml
deleted file mode 100644
index e5ff8511..00000000
--- a/android-app-widget/android-app-widget.iml
+++ /dev/null
@@ -1,108 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android-app-widget/build.gradle b/android-app-widget/build.gradle
deleted file mode 100644
index 0700ca52..00000000
--- a/android-app-widget/build.gradle
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * Copyright 2014 serso aka se.solovyev
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- * Contact details
- *
- * Email: se.solovyev@gmail.com
- * Site: http://se.solovyev.org
- */
-
-apply plugin: 'com.android.library'
-apply plugin: 'maven'
-apply plugin: 'signing'
-
-android {
- compileSdkVersion android_sdk_version()
- buildToolsVersion android_build_tools_version()
-
- defaultConfig {
- minSdkVersion android_min_sdk_version()
- targetSdkVersion android_sdk_version()
- versionCode version_code()
- versionName version_name()
- }
- lintOptions {
- abortOnError false
- }
-}
-
-dependencies {
- compile project(':core')
- compile project(':android-app-core')
- compile 'org.solovyev:common-core:1.0.7'
- compile 'org.solovyev:common-text:1.0.7'
- compile 'org.solovyev.android:android-common-views:1.1.18@aar'
- compile 'org.solovyev.android:android-common-menus:1.1.18@aar'
- compile 'org.solovyev.android:android-common-core:1.1.18@aar'
- compile 'org.solovyev.android:android-common-preferences:1.1.18@aar'
- compile('org.solovyev:jscl:1.0.8') {
- exclude(module: 'xercesImpl')
- }
- compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
- compile 'com.android.support:support-v4:21.0.3'
- //testCompile group: 'org.robolectric', name: 'robolectric', version: '2.1.1'
-}
-
-
-task androidJavadocs(type: Javadoc) {
- source = android.sourceSets.main.java.srcDirs
- classpath += project.files(android.plugin.getBootClasspath().join(File.pathSeparator))
- configurations.compile.each { File file -> classpath += project.files(file.path) }
-}
-
-task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) {
- classifier = 'javadoc'
- from androidJavadocs.destinationDir
-}
-
-task androidSourcesJar(type: Jar) {
- classifier = 'sources'
- from android.sourceSets.main.java.srcDirs
-}
-
-task apklib(type: Zip) {
- appendix = extension = 'apklib'
-
- from 'src/main/AndroidManifest.xml'
- into('res') {
- from android.sourceSets.main.res.srcDirs
- }
- into('src') {
- from android.sourceSets.main.java.srcDirs
- }
- into('src') {
- from android.sourceSets.main.aidl.srcDirs
- }
-}
-
-
-artifacts {
- archives androidSourcesJar
- archives androidJavadocsJar
- archives apklib
-}
-
-signing {
- sign configurations.archives
-}
-
-group = "org.solovyev.android"
-archivesBaseName = "calculatorpp-android-app-widget"
-version = version_name()
-
-uploadArchives {
- repositories {
- mavenDeployer {
- beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }
-
- repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") {
- authentication(userName: ossrhUsername, password: ossrhPassword)
- }
-
- snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") {
- authentication(userName: ossrhUsername, password: ossrhPassword)
- }
-
- pom.project {
- name 'Calculator++ Application Widget'
- packaging 'aar'
- url 'https://github.com/serso/android-calculatorpp'
-
- scm {
- url 'https://github.com/serso/android-calculatorpp'
- connection 'scm:https://serso@github.com/serso/android-calculatorpp.git'
- developerConnection 'scm:git://github.com/serso/android-calculatorpp.git'
- }
-
- licenses {
- license {
- name 'The Apache Software License, Version 2.0'
- url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
- distribution 'repo'
- }
- }
-
- developers {
- developer {
- id 'se.solovyev'
- name 'Sergey Solovyev'
- email 'se.solovyev@gmail.com'
- }
- }
- }
- }
- }
-}
diff --git a/android-app-widget/src/main/AndroidManifest.xml b/android-app-widget/src/main/AndroidManifest.xml
deleted file mode 100644
index dedbe451..00000000
--- a/android-app-widget/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android-app-widget/src/main/res/values/colors.xml b/android-app-widget/src/main/res/values/colors.xml
deleted file mode 100644
index 75232d5d..00000000
--- a/android-app-widget/src/main/res/values/colors.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
- #ff707070
-
\ No newline at end of file
diff --git a/android-app-widget/src/main/res/values/dimens.xml b/android-app-widget/src/main/res/values/dimens.xml
deleted file mode 100644
index 3f631a5a..00000000
--- a/android-app-widget/src/main/res/values/dimens.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
- 16sp
- 25sp
- 16sp
- 25sp
- 6dp
- 300dp
-
\ No newline at end of file
diff --git a/android-app-widget/src/main/res/values/styles.xml b/android-app-widget/src/main/res/values/styles.xml
deleted file mode 100644
index 691dbfb0..00000000
--- a/android-app-widget/src/main/res/values/styles.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/android-app/android-app.iml b/android-app/android-app.iml
index b8850e67..f582febd 100644
--- a/android-app/android-app.iml
+++ b/android-app/android-app.iml
@@ -1,5 +1,5 @@
-
+
@@ -79,35 +79,36 @@
-
-
+
-
+
-
-
-
+
-
-
+
-
+
-
+
+
+
+
+
+
+
+
+
-
-
-
\ No newline at end of file
diff --git a/android-app/build.gradle b/android-app/build.gradle
index 7225c2a9..00892a91 100644
--- a/android-app/build.gradle
+++ b/android-app/build.gradle
@@ -47,6 +47,10 @@ android {
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
+ compile project(':core')
+ compile 'org.solovyev:common-core:1.0.7'
+ compile 'org.solovyev:common-text:1.0.7'
+ compile 'org.solovyev:common-security:1.0.7'
compile 'com.android.support:support-v4:21.0.3'
compile ('ch.acra:acra:4.5.0') {
exclude group: 'org.json'
@@ -58,11 +62,16 @@ dependencies {
compile 'org.solovyev.android:android-common-other:1.1.18@aar'
compile 'org.solovyev.android:android-common-db:1.1.18@aar'
compile 'org.solovyev.android:android-common-security:1.1.18@aar'
+ compile 'org.solovyev.android:android-common-views:1.1.18@aar'
+ compile 'org.solovyev.android:android-common-menus:1.1.18@aar'
+ compile 'org.solovyev.android:android-common-preferences:1.1.18@aar'
+ compile('org.solovyev:jscl:1.0.8') {
+ exclude(module: 'xercesImpl')
+ }
compile 'org.solovyev.android:checkout:0.6.0@aar'
- compile project(':android-app-core')
- compile project(':android-app-widget')
- compile project(':android-app-onscreen')
- compile project(':core')
+ compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
+ compile 'com.google.android.gms:play-services:6.5.87@aar'
+
}
task androidJavadocs(type: Javadoc) {
diff --git a/android-app-core/src/main/java/org/solovyev/android/calculator/AndroidCalculatorDisplayView.java b/android-app/src/main/java/org/solovyev/android/calculator/AndroidCalculatorDisplayView.java
similarity index 99%
rename from android-app-core/src/main/java/org/solovyev/android/calculator/AndroidCalculatorDisplayView.java
rename to android-app/src/main/java/org/solovyev/android/calculator/AndroidCalculatorDisplayView.java
index b70643e6..7290cd52 100644
--- a/android-app-core/src/main/java/org/solovyev/android/calculator/AndroidCalculatorDisplayView.java
+++ b/android-app/src/main/java/org/solovyev/android/calculator/AndroidCalculatorDisplayView.java
@@ -31,16 +31,13 @@ import android.support.v4.app.FragmentActivity;
import android.text.Html;
import android.util.AttributeSet;
import android.util.TypedValue;
-
-import org.solovyev.android.calculator.core.R;
import org.solovyev.android.calculator.text.TextProcessor;
-import org.solovyev.android.calculator.view.TextHighlighter;
import org.solovyev.android.calculator.text.TextProcessorEditorResult;
+import org.solovyev.android.calculator.view.TextHighlighter;
import org.solovyev.android.view.AutoResizeTextView;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
-
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
diff --git a/android-app-core/src/main/java/org/solovyev/android/calculator/AndroidCalculatorEditorView.java b/android-app/src/main/java/org/solovyev/android/calculator/AndroidCalculatorEditorView.java
similarity index 100%
rename from android-app-core/src/main/java/org/solovyev/android/calculator/AndroidCalculatorEditorView.java
rename to android-app/src/main/java/org/solovyev/android/calculator/AndroidCalculatorEditorView.java
diff --git a/android-app-core/src/main/java/org/solovyev/android/calculator/App.java b/android-app/src/main/java/org/solovyev/android/calculator/App.java
similarity index 100%
rename from android-app-core/src/main/java/org/solovyev/android/calculator/App.java
rename to android-app/src/main/java/org/solovyev/android/calculator/App.java
diff --git a/android-app/src/main/java/org/solovyev/android/calculator/CalculatorApplication.java b/android-app/src/main/java/org/solovyev/android/calculator/CalculatorApplication.java
index bbf55b23..158ed592 100644
--- a/android-app/src/main/java/org/solovyev/android/calculator/CalculatorApplication.java
+++ b/android-app/src/main/java/org/solovyev/android/calculator/CalculatorApplication.java
@@ -215,6 +215,9 @@ public class CalculatorApplication extends android.app.Application implements Sh
Locator.getInstance().getNotifier().showDebugMessage(TAG, "Application started!");
typeFace = Typeface.createFromAsset(getAssets(), "fonts/Roboto-Regular.ttf");
+
+ // we must update the widget when app starts
+ App.getBroadcaster().sendEditorStateChangedIntent();
}
private void setTheme(@Nonnull SharedPreferences preferences) {
diff --git a/android-app-core/src/main/java/org/solovyev/android/calculator/CalculatorBroadcaster.java b/android-app/src/main/java/org/solovyev/android/calculator/CalculatorBroadcaster.java
similarity index 100%
rename from android-app-core/src/main/java/org/solovyev/android/calculator/CalculatorBroadcaster.java
rename to android-app/src/main/java/org/solovyev/android/calculator/CalculatorBroadcaster.java
diff --git a/android-app-core/src/main/java/org/solovyev/android/calculator/CalculatorButton.java b/android-app/src/main/java/org/solovyev/android/calculator/CalculatorButton.java
similarity index 99%
rename from android-app-core/src/main/java/org/solovyev/android/calculator/CalculatorButton.java
rename to android-app/src/main/java/org/solovyev/android/calculator/CalculatorButton.java
index a1d84bb2..833deff1 100644
--- a/android-app-core/src/main/java/org/solovyev/android/calculator/CalculatorButton.java
+++ b/android-app/src/main/java/org/solovyev/android/calculator/CalculatorButton.java
@@ -27,7 +27,7 @@ import android.content.Context;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
-import org.solovyev.android.calculator.core.R;
+import org.solovyev.android.calculator.R;
import java.util.HashMap;
import java.util.Map;
diff --git a/android-app-core/src/main/java/org/solovyev/android/calculator/CalculatorButtons.java b/android-app/src/main/java/org/solovyev/android/calculator/CalculatorButtons.java
similarity index 99%
rename from android-app-core/src/main/java/org/solovyev/android/calculator/CalculatorButtons.java
rename to android-app/src/main/java/org/solovyev/android/calculator/CalculatorButtons.java
index aa3aeec1..bb555c7a 100644
--- a/android-app-core/src/main/java/org/solovyev/android/calculator/CalculatorButtons.java
+++ b/android-app/src/main/java/org/solovyev/android/calculator/CalculatorButtons.java
@@ -37,7 +37,7 @@ import jscl.AngleUnit;
import jscl.NumeralBase;
import org.solovyev.android.Views;
-import org.solovyev.android.calculator.core.R;
+import org.solovyev.android.calculator.R;
import org.solovyev.android.calculator.model.AndroidCalculatorEngine;
import org.solovyev.android.calculator.view.AngleUnitsButton;
import org.solovyev.android.calculator.view.NumeralBasesButton;
diff --git a/android-app-core/src/main/java/org/solovyev/android/calculator/CalculatorDisplayMenuItem.java b/android-app/src/main/java/org/solovyev/android/calculator/CalculatorDisplayMenuItem.java
similarity index 98%
rename from android-app-core/src/main/java/org/solovyev/android/calculator/CalculatorDisplayMenuItem.java
rename to android-app/src/main/java/org/solovyev/android/calculator/CalculatorDisplayMenuItem.java
index 095483c8..cf3f1108 100644
--- a/android-app-core/src/main/java/org/solovyev/android/calculator/CalculatorDisplayMenuItem.java
+++ b/android-app/src/main/java/org/solovyev/android/calculator/CalculatorDisplayMenuItem.java
@@ -27,7 +27,7 @@ import jscl.math.Generic;
import javax.annotation.Nonnull;
-import org.solovyev.android.calculator.core.R;
+import org.solovyev.android.calculator.R;
import org.solovyev.android.calculator.jscl.JsclOperation;
import org.solovyev.android.calculator.plot.CalculatorPlotter;
import org.solovyev.android.calculator.view.NumeralBaseConverterDialog;
diff --git a/android-app-core/src/main/java/org/solovyev/android/calculator/CalculatorDisplayOnClickListener.java b/android-app/src/main/java/org/solovyev/android/calculator/CalculatorDisplayOnClickListener.java
similarity index 96%
rename from android-app-core/src/main/java/org/solovyev/android/calculator/CalculatorDisplayOnClickListener.java
rename to android-app/src/main/java/org/solovyev/android/calculator/CalculatorDisplayOnClickListener.java
index 4b3994b2..b15c5e85 100644
--- a/android-app-core/src/main/java/org/solovyev/android/calculator/CalculatorDisplayOnClickListener.java
+++ b/android-app/src/main/java/org/solovyev/android/calculator/CalculatorDisplayOnClickListener.java
@@ -1,77 +1,77 @@
-/*
- * Copyright 2013 serso aka se.solovyev
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- * Contact details
- *
- * Email: se.solovyev@gmail.com
- * Site: http://se.solovyev.org
- */
-
-package org.solovyev.android.calculator;
-
-import android.support.v4.app.FragmentActivity;
-import android.view.View;
-
-import javax.annotation.Nonnull;
-
-import org.solovyev.android.menu.ContextMenuBuilder;
-import org.solovyev.android.menu.ListContextMenu;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * User: Solovyev_S
- * Date: 21.09.12
- * Time: 10:58
- */
-public class CalculatorDisplayOnClickListener implements View.OnClickListener {
-
- @Nonnull
- private final FragmentActivity activity;
-
- public CalculatorDisplayOnClickListener(@Nonnull FragmentActivity activity) {
- this.activity = activity;
- }
-
- @Override
- public void onClick(View v) {
- if (v instanceof CalculatorDisplayView) {
- final CalculatorDisplay cd = Locator.getInstance().getDisplay();
-
- final CalculatorDisplayViewState displayViewState = cd.getViewState();
-
- if (displayViewState.isValid()) {
- final List filteredMenuItems = new ArrayList(CalculatorDisplayMenuItem.values().length);
- for (CalculatorDisplayMenuItem menuItem : CalculatorDisplayMenuItem.values()) {
- if (menuItem.isItemVisible(displayViewState)) {
- filteredMenuItems.add(menuItem);
- }
- }
-
- if (!filteredMenuItems.isEmpty()) {
- ContextMenuBuilder.newInstance(activity, "display-menu", ListContextMenu.newInstance(filteredMenuItems)).build(displayViewState).show();
- }
-
- } else {
- final String errorMessage = displayViewState.getErrorMessage();
- if (errorMessage != null) {
- Locator.getInstance().getCalculator().fireCalculatorEvent(CalculatorEventType.show_evaluation_error, errorMessage, activity);
- }
- }
- }
- }
-}
+/*
+ * Copyright 2013 serso aka se.solovyev
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ * Contact details
+ *
+ * Email: se.solovyev@gmail.com
+ * Site: http://se.solovyev.org
+ */
+
+package org.solovyev.android.calculator;
+
+import android.support.v4.app.FragmentActivity;
+import android.view.View;
+
+import javax.annotation.Nonnull;
+
+import org.solovyev.android.menu.ContextMenuBuilder;
+import org.solovyev.android.menu.ListContextMenu;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * User: Solovyev_S
+ * Date: 21.09.12
+ * Time: 10:58
+ */
+public class CalculatorDisplayOnClickListener implements View.OnClickListener {
+
+ @Nonnull
+ private final FragmentActivity activity;
+
+ public CalculatorDisplayOnClickListener(@Nonnull FragmentActivity activity) {
+ this.activity = activity;
+ }
+
+ @Override
+ public void onClick(View v) {
+ if (v instanceof CalculatorDisplayView) {
+ final CalculatorDisplay cd = Locator.getInstance().getDisplay();
+
+ final CalculatorDisplayViewState displayViewState = cd.getViewState();
+
+ if (displayViewState.isValid()) {
+ final List filteredMenuItems = new ArrayList(CalculatorDisplayMenuItem.values().length);
+ for (CalculatorDisplayMenuItem menuItem : CalculatorDisplayMenuItem.values()) {
+ if (menuItem.isItemVisible(displayViewState)) {
+ filteredMenuItems.add(menuItem);
+ }
+ }
+
+ if (!filteredMenuItems.isEmpty()) {
+ ContextMenuBuilder.newInstance(activity, "display-menu", ListContextMenu.newInstance(filteredMenuItems)).build(displayViewState).show();
+ }
+
+ } else {
+ final String errorMessage = displayViewState.getErrorMessage();
+ if (errorMessage != null) {
+ Locator.getInstance().getCalculator().fireCalculatorEvent(CalculatorEventType.show_evaluation_error, errorMessage, activity);
+ }
+ }
+ }
+ }
+}
diff --git a/android-app-core/src/main/java/org/solovyev/android/calculator/CalculatorPreferences.java b/android-app/src/main/java/org/solovyev/android/calculator/CalculatorPreferences.java
similarity index 99%
rename from android-app-core/src/main/java/org/solovyev/android/calculator/CalculatorPreferences.java
rename to android-app/src/main/java/org/solovyev/android/calculator/CalculatorPreferences.java
index 1ced9d0d..4c4f4c01 100644
--- a/android-app-core/src/main/java/org/solovyev/android/calculator/CalculatorPreferences.java
+++ b/android-app/src/main/java/org/solovyev/android/calculator/CalculatorPreferences.java
@@ -26,7 +26,7 @@ import android.content.SharedPreferences;
import jscl.AngleUnit;
import jscl.NumeralBase;
-import org.solovyev.android.calculator.core.R;
+import org.solovyev.android.calculator.R;
import org.solovyev.android.calculator.math.MathType;
import org.solovyev.android.calculator.model.AndroidCalculatorEngine;
import org.solovyev.android.prefs.*;
diff --git a/android-app-core/src/main/java/org/solovyev/android/calculator/CalculatorReceiver.java b/android-app/src/main/java/org/solovyev/android/calculator/CalculatorReceiver.java
similarity index 95%
rename from android-app-core/src/main/java/org/solovyev/android/calculator/CalculatorReceiver.java
rename to android-app/src/main/java/org/solovyev/android/calculator/CalculatorReceiver.java
index 16dfe7ef..17c019c8 100644
--- a/android-app-core/src/main/java/org/solovyev/android/calculator/CalculatorReceiver.java
+++ b/android-app/src/main/java/org/solovyev/android/calculator/CalculatorReceiver.java
@@ -22,8 +22,6 @@ public final class CalculatorReceiver extends BroadcastReceiver {
if (button != null) {
button.onClick(context);
}
-
- App.getBroadcaster().sendEditorStateChangedIntent();
}
}
diff --git a/android-app-core/src/main/java/org/solovyev/android/calculator/ConversionMenuItem.java b/android-app/src/main/java/org/solovyev/android/calculator/ConversionMenuItem.java
similarity index 96%
rename from android-app-core/src/main/java/org/solovyev/android/calculator/ConversionMenuItem.java
rename to android-app/src/main/java/org/solovyev/android/calculator/ConversionMenuItem.java
index ed44264c..8a048941 100644
--- a/android-app-core/src/main/java/org/solovyev/android/calculator/ConversionMenuItem.java
+++ b/android-app/src/main/java/org/solovyev/android/calculator/ConversionMenuItem.java
@@ -1,76 +1,76 @@
-/*
- * Copyright 2013 serso aka se.solovyev
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- * Contact details
- *
- * Email: se.solovyev@gmail.com
- * Site: http://se.solovyev.org
- */
-
-package org.solovyev.android.calculator;
-
-import android.content.Context;
-import jscl.NumeralBase;
-import jscl.math.Generic;
-
-import javax.annotation.Nonnull;
-
-import org.solovyev.android.calculator.jscl.JsclOperation;
-import org.solovyev.android.menu.AMenuItem;
-
-/**
- * User: serso
- * Date: 9/21/12
- * Time: 12:11 AM
- */
-enum ConversionMenuItem implements AMenuItem {
-
- convert_to_bin(NumeralBase.bin),
- convert_to_dec(NumeralBase.dec),
- convert_to_hex(NumeralBase.hex);
-
- @Nonnull
- private final NumeralBase toNumeralBase;
-
- ConversionMenuItem(@Nonnull NumeralBase toNumeralBase) {
- this.toNumeralBase = toNumeralBase;
- }
-
- protected boolean isItemVisibleFor(@Nonnull Generic generic, @Nonnull JsclOperation operation) {
- boolean result = false;
-
- if (operation == JsclOperation.numeric) {
- if (generic.getConstants().isEmpty()) {
- // conversion possible => return true
- final NumeralBase fromNumeralBase = Locator.getInstance().getEngine().getNumeralBase();
- if (fromNumeralBase != toNumeralBase) {
- result = Locator.getInstance().getCalculator().isConversionPossible(generic, fromNumeralBase, this.toNumeralBase);
- }
- }
- }
-
- return result;
- }
-
- @Override
- public void onClick(@Nonnull CalculatorDisplayViewState data, @Nonnull Context context) {
- final Generic result = data.getResult();
-
- if (result != null) {
- Locator.getInstance().getCalculator().convert(result, this.toNumeralBase);
- }
- }
-}
+/*
+ * Copyright 2013 serso aka se.solovyev
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ * Contact details
+ *
+ * Email: se.solovyev@gmail.com
+ * Site: http://se.solovyev.org
+ */
+
+package org.solovyev.android.calculator;
+
+import android.content.Context;
+import jscl.NumeralBase;
+import jscl.math.Generic;
+
+import javax.annotation.Nonnull;
+
+import org.solovyev.android.calculator.jscl.JsclOperation;
+import org.solovyev.android.menu.AMenuItem;
+
+/**
+ * User: serso
+ * Date: 9/21/12
+ * Time: 12:11 AM
+ */
+enum ConversionMenuItem implements AMenuItem {
+
+ convert_to_bin(NumeralBase.bin),
+ convert_to_dec(NumeralBase.dec),
+ convert_to_hex(NumeralBase.hex);
+
+ @Nonnull
+ private final NumeralBase toNumeralBase;
+
+ ConversionMenuItem(@Nonnull NumeralBase toNumeralBase) {
+ this.toNumeralBase = toNumeralBase;
+ }
+
+ protected boolean isItemVisibleFor(@Nonnull Generic generic, @Nonnull JsclOperation operation) {
+ boolean result = false;
+
+ if (operation == JsclOperation.numeric) {
+ if (generic.getConstants().isEmpty()) {
+ // conversion possible => return true
+ final NumeralBase fromNumeralBase = Locator.getInstance().getEngine().getNumeralBase();
+ if (fromNumeralBase != toNumeralBase) {
+ result = Locator.getInstance().getCalculator().isConversionPossible(generic, fromNumeralBase, this.toNumeralBase);
+ }
+ }
+ }
+
+ return result;
+ }
+
+ @Override
+ public void onClick(@Nonnull CalculatorDisplayViewState data, @Nonnull Context context) {
+ final Generic result = data.getResult();
+
+ if (result != null) {
+ Locator.getInstance().getCalculator().convert(result, this.toNumeralBase);
+ }
+ }
+}
diff --git a/android-app-core/src/main/java/org/solovyev/android/calculator/DigitButtonDragProcessor.java b/android-app/src/main/java/org/solovyev/android/calculator/DigitButtonDragProcessor.java
similarity index 97%
rename from android-app-core/src/main/java/org/solovyev/android/calculator/DigitButtonDragProcessor.java
rename to android-app/src/main/java/org/solovyev/android/calculator/DigitButtonDragProcessor.java
index ef99e295..43579581 100644
--- a/android-app-core/src/main/java/org/solovyev/android/calculator/DigitButtonDragProcessor.java
+++ b/android-app/src/main/java/org/solovyev/android/calculator/DigitButtonDragProcessor.java
@@ -1,56 +1,56 @@
-/*
- * Copyright 2013 serso aka se.solovyev
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- * Contact details
- *
- * Email: se.solovyev@gmail.com
- * Site: http://se.solovyev.org
- */
-
-package org.solovyev.android.calculator;
-
-import android.view.MotionEvent;
-
-import javax.annotation.Nonnull;
-
-import org.solovyev.android.view.drag.DirectionDragButton;
-import org.solovyev.android.view.drag.DragButton;
-import org.solovyev.android.view.drag.DragDirection;
-import org.solovyev.android.view.drag.SimpleOnDragListener;
-import org.solovyev.common.math.Point2d;
-
-/**
- * User: serso
- * Date: 9/16/11
- * Time: 11:48 PM
- */
-public class DigitButtonDragProcessor implements SimpleOnDragListener.DragProcessor {
-
- @Nonnull
- private CalculatorKeyboard calculatorKeyboard;
-
- public DigitButtonDragProcessor(@Nonnull CalculatorKeyboard calculatorKeyboard) {
- this.calculatorKeyboard = calculatorKeyboard;
- }
-
- @Override
- public boolean processDragEvent(@Nonnull DragDirection dragDirection, @Nonnull DragButton dragButton, @Nonnull Point2d startPoint2d, @Nonnull MotionEvent motionEvent) {
- assert dragButton instanceof DirectionDragButton;
- calculatorKeyboard.buttonPressed(((DirectionDragButton) dragButton).getText(dragDirection));
- return true;
- }
-
-}
+/*
+ * Copyright 2013 serso aka se.solovyev
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ * Contact details
+ *
+ * Email: se.solovyev@gmail.com
+ * Site: http://se.solovyev.org
+ */
+
+package org.solovyev.android.calculator;
+
+import android.view.MotionEvent;
+
+import javax.annotation.Nonnull;
+
+import org.solovyev.android.view.drag.DirectionDragButton;
+import org.solovyev.android.view.drag.DragButton;
+import org.solovyev.android.view.drag.DragDirection;
+import org.solovyev.android.view.drag.SimpleOnDragListener;
+import org.solovyev.common.math.Point2d;
+
+/**
+ * User: serso
+ * Date: 9/16/11
+ * Time: 11:48 PM
+ */
+public class DigitButtonDragProcessor implements SimpleOnDragListener.DragProcessor {
+
+ @Nonnull
+ private CalculatorKeyboard calculatorKeyboard;
+
+ public DigitButtonDragProcessor(@Nonnull CalculatorKeyboard calculatorKeyboard) {
+ this.calculatorKeyboard = calculatorKeyboard;
+ }
+
+ @Override
+ public boolean processDragEvent(@Nonnull DragDirection dragDirection, @Nonnull DragButton dragButton, @Nonnull Point2d startPoint2d, @Nonnull MotionEvent motionEvent) {
+ assert dragButton instanceof DirectionDragButton;
+ calculatorKeyboard.buttonPressed(((DirectionDragButton) dragButton).getText(dragDirection));
+ return true;
+ }
+
+}
diff --git a/android-app-core/src/main/java/org/solovyev/android/calculator/FixableMessage.java b/android-app/src/main/java/org/solovyev/android/calculator/FixableMessage.java
similarity index 100%
rename from android-app-core/src/main/java/org/solovyev/android/calculator/FixableMessage.java
rename to android-app/src/main/java/org/solovyev/android/calculator/FixableMessage.java
diff --git a/android-app-core/src/main/java/org/solovyev/android/calculator/FixableMessagesDialog.java b/android-app/src/main/java/org/solovyev/android/calculator/FixableMessagesDialog.java
similarity index 99%
rename from android-app-core/src/main/java/org/solovyev/android/calculator/FixableMessagesDialog.java
rename to android-app/src/main/java/org/solovyev/android/calculator/FixableMessagesDialog.java
index e08453ed..d6c6bfaf 100644
--- a/android-app-core/src/main/java/org/solovyev/android/calculator/FixableMessagesDialog.java
+++ b/android-app/src/main/java/org/solovyev/android/calculator/FixableMessagesDialog.java
@@ -40,7 +40,7 @@ import com.actionbarsherlock.app.SherlockActivity;
import javax.annotation.Nonnull;
-import org.solovyev.android.calculator.core.R;
+import org.solovyev.android.calculator.R;
import org.solovyev.common.msg.Message;
import org.solovyev.common.text.Strings;
diff --git a/android-app-core/src/main/java/org/solovyev/android/calculator/ParcelableDialogData.java b/android-app/src/main/java/org/solovyev/android/calculator/ParcelableDialogData.java
similarity index 100%
rename from android-app-core/src/main/java/org/solovyev/android/calculator/ParcelableDialogData.java
rename to android-app/src/main/java/org/solovyev/android/calculator/ParcelableDialogData.java
diff --git a/android-app-core/src/main/java/org/solovyev/android/calculator/ServiceLocator.java b/android-app/src/main/java/org/solovyev/android/calculator/ServiceLocator.java
similarity index 100%
rename from android-app-core/src/main/java/org/solovyev/android/calculator/ServiceLocator.java
rename to android-app/src/main/java/org/solovyev/android/calculator/ServiceLocator.java
diff --git a/android-app-core/src/main/java/org/solovyev/android/calculator/external/ExternalCalculatorIntentHandler.java b/android-app/src/main/java/org/solovyev/android/calculator/external/ExternalCalculatorIntentHandler.java
similarity index 100%
rename from android-app-core/src/main/java/org/solovyev/android/calculator/external/ExternalCalculatorIntentHandler.java
rename to android-app/src/main/java/org/solovyev/android/calculator/external/ExternalCalculatorIntentHandler.java
diff --git a/android-app-core/src/main/java/org/solovyev/android/calculator/model/AndroidCalculatorEngine.java b/android-app/src/main/java/org/solovyev/android/calculator/model/AndroidCalculatorEngine.java
similarity index 99%
rename from android-app-core/src/main/java/org/solovyev/android/calculator/model/AndroidCalculatorEngine.java
rename to android-app/src/main/java/org/solovyev/android/calculator/model/AndroidCalculatorEngine.java
index d55e3b5a..97ff0751 100644
--- a/android-app-core/src/main/java/org/solovyev/android/calculator/model/AndroidCalculatorEngine.java
+++ b/android-app/src/main/java/org/solovyev/android/calculator/model/AndroidCalculatorEngine.java
@@ -37,7 +37,7 @@ import jscl.math.operator.Operator;
import javax.annotation.Nonnull;
import org.solovyev.android.calculator.*;
-import org.solovyev.android.calculator.core.R;
+import org.solovyev.android.calculator.R;
import org.solovyev.android.prefs.BooleanPreference;
import org.solovyev.android.prefs.Preference;
import org.solovyev.android.prefs.StringPreference;
diff --git a/android-app-core/src/main/java/org/solovyev/android/calculator/model/AndroidMathEntityDao.java b/android-app/src/main/java/org/solovyev/android/calculator/model/AndroidMathEntityDao.java
similarity index 96%
rename from android-app-core/src/main/java/org/solovyev/android/calculator/model/AndroidMathEntityDao.java
rename to android-app/src/main/java/org/solovyev/android/calculator/model/AndroidMathEntityDao.java
index a34a72a8..041e8f9b 100644
--- a/android-app-core/src/main/java/org/solovyev/android/calculator/model/AndroidMathEntityDao.java
+++ b/android-app/src/main/java/org/solovyev/android/calculator/model/AndroidMathEntityDao.java
@@ -1,121 +1,121 @@
-/*
- * Copyright 2013 serso aka se.solovyev
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- * Contact details
- *
- * Email: se.solovyev@gmail.com
- * Site: http://se.solovyev.org
- */
-
-package org.solovyev.android.calculator.model;
-
-import android.app.Application;
-import android.content.Context;
-import android.content.SharedPreferences;
-import android.content.res.Resources;
-import android.preference.PreferenceManager;
-import org.simpleframework.xml.Serializer;
-import org.simpleframework.xml.core.Persister;
-import org.solovyev.android.calculator.App;
-import org.solovyev.android.calculator.MathEntityDao;
-import org.solovyev.android.calculator.MathEntityPersistenceContainer;
-import org.solovyev.android.calculator.MathPersistenceEntity;
-
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-import java.io.StringWriter;
-
-/**
- * User: serso
- * Date: 10/7/12
- * Time: 6:46 PM
- */
-public class AndroidMathEntityDao implements MathEntityDao {
-
- @Nonnull
- private static final String TAG = AndroidMathEntityDao.class.getSimpleName();
-
- @Nullable
- private final String preferenceString;
-
- @Nonnull
- private final Context context;
-
- @Nullable
- private final Class extends MathEntityPersistenceContainer> persistenceContainerClass;
-
- public AndroidMathEntityDao(@Nullable String preferenceString,
- @Nonnull Application application,
- @Nullable Class extends MathEntityPersistenceContainer> persistenceContainerClass) {
- this.preferenceString = preferenceString;
- this.context = application;
- this.persistenceContainerClass = persistenceContainerClass;
- }
-
- @Override
- public void save(@Nonnull MathEntityPersistenceContainer container) {
- if (preferenceString != null) {
- final SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context);
- final SharedPreferences.Editor editor = settings.edit();
-
- final StringWriter sw = new StringWriter();
- final Serializer serializer = new Persister();
- try {
- serializer.write(container, sw);
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
-
- editor.putString(preferenceString, sw.toString());
-
- editor.commit();
- }
- }
-
- @Nullable
- @Override
- public MathEntityPersistenceContainer load() {
- if (persistenceContainerClass != null && preferenceString != null) {
- final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
-
- if (preferences != null) {
- final String value = preferences.getString(preferenceString, null);
- if (value != null) {
- final Serializer serializer = new Persister();
- try {
- return serializer.read(persistenceContainerClass, value);
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- }
- }
- }
-
- return null;
- }
-
- @Nullable
- public String getDescription(@Nonnull String descriptionId) {
- final Resources resources = context.getResources();
-
- final int stringId = resources.getIdentifier(descriptionId, "string", App.getApplication().getClass().getPackage().getName());
- try {
- return resources.getString(stringId);
- } catch (Resources.NotFoundException e) {
- return null;
- }
- }
-}
+/*
+ * Copyright 2013 serso aka se.solovyev
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ * Contact details
+ *
+ * Email: se.solovyev@gmail.com
+ * Site: http://se.solovyev.org
+ */
+
+package org.solovyev.android.calculator.model;
+
+import android.app.Application;
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.content.res.Resources;
+import android.preference.PreferenceManager;
+import org.simpleframework.xml.Serializer;
+import org.simpleframework.xml.core.Persister;
+import org.solovyev.android.calculator.App;
+import org.solovyev.android.calculator.MathEntityDao;
+import org.solovyev.android.calculator.MathEntityPersistenceContainer;
+import org.solovyev.android.calculator.MathPersistenceEntity;
+
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+import java.io.StringWriter;
+
+/**
+ * User: serso
+ * Date: 10/7/12
+ * Time: 6:46 PM
+ */
+public class AndroidMathEntityDao implements MathEntityDao {
+
+ @Nonnull
+ private static final String TAG = AndroidMathEntityDao.class.getSimpleName();
+
+ @Nullable
+ private final String preferenceString;
+
+ @Nonnull
+ private final Context context;
+
+ @Nullable
+ private final Class extends MathEntityPersistenceContainer> persistenceContainerClass;
+
+ public AndroidMathEntityDao(@Nullable String preferenceString,
+ @Nonnull Application application,
+ @Nullable Class extends MathEntityPersistenceContainer> persistenceContainerClass) {
+ this.preferenceString = preferenceString;
+ this.context = application;
+ this.persistenceContainerClass = persistenceContainerClass;
+ }
+
+ @Override
+ public void save(@Nonnull MathEntityPersistenceContainer container) {
+ if (preferenceString != null) {
+ final SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context);
+ final SharedPreferences.Editor editor = settings.edit();
+
+ final StringWriter sw = new StringWriter();
+ final Serializer serializer = new Persister();
+ try {
+ serializer.write(container, sw);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+
+ editor.putString(preferenceString, sw.toString());
+
+ editor.commit();
+ }
+ }
+
+ @Nullable
+ @Override
+ public MathEntityPersistenceContainer load() {
+ if (persistenceContainerClass != null && preferenceString != null) {
+ final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
+
+ if (preferences != null) {
+ final String value = preferences.getString(preferenceString, null);
+ if (value != null) {
+ final Serializer serializer = new Persister();
+ try {
+ return serializer.read(persistenceContainerClass, value);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+ }
+ }
+
+ return null;
+ }
+
+ @Nullable
+ public String getDescription(@Nonnull String descriptionId) {
+ final Resources resources = context.getResources();
+
+ final int stringId = resources.getIdentifier(descriptionId, "string", App.getApplication().getClass().getPackage().getName());
+ try {
+ return resources.getString(stringId);
+ } catch (Resources.NotFoundException e) {
+ return null;
+ }
+ }
+}
diff --git a/android-app-onscreen/src/main/java/org/solovyev/android/calculator/onscreen/CalculatorOnscreenBroadcastReceiver.java b/android-app/src/main/java/org/solovyev/android/calculator/onscreen/CalculatorOnscreenBroadcastReceiver.java
similarity index 100%
rename from android-app-onscreen/src/main/java/org/solovyev/android/calculator/onscreen/CalculatorOnscreenBroadcastReceiver.java
rename to android-app/src/main/java/org/solovyev/android/calculator/onscreen/CalculatorOnscreenBroadcastReceiver.java
diff --git a/android-app-onscreen/src/main/java/org/solovyev/android/calculator/onscreen/CalculatorOnscreenService.java b/android-app/src/main/java/org/solovyev/android/calculator/onscreen/CalculatorOnscreenService.java
similarity index 100%
rename from android-app-onscreen/src/main/java/org/solovyev/android/calculator/onscreen/CalculatorOnscreenService.java
rename to android-app/src/main/java/org/solovyev/android/calculator/onscreen/CalculatorOnscreenService.java
diff --git a/android-app-onscreen/src/main/java/org/solovyev/android/calculator/onscreen/CalculatorOnscreenStartActivity.java b/android-app/src/main/java/org/solovyev/android/calculator/onscreen/CalculatorOnscreenStartActivity.java
similarity index 96%
rename from android-app-onscreen/src/main/java/org/solovyev/android/calculator/onscreen/CalculatorOnscreenStartActivity.java
rename to android-app/src/main/java/org/solovyev/android/calculator/onscreen/CalculatorOnscreenStartActivity.java
index 3b032723..a4c74347 100644
--- a/android-app-onscreen/src/main/java/org/solovyev/android/calculator/onscreen/CalculatorOnscreenStartActivity.java
+++ b/android-app/src/main/java/org/solovyev/android/calculator/onscreen/CalculatorOnscreenStartActivity.java
@@ -1,38 +1,38 @@
-/*
- * Copyright 2013 serso aka se.solovyev
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- * Contact details
- *
- * Email: se.solovyev@gmail.com
- * Site: http://se.solovyev.org
- */
-
-package org.solovyev.android.calculator.onscreen;
-
-import android.app.Activity;
-import android.os.Bundle;
-
-public class CalculatorOnscreenStartActivity extends Activity {
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- CalculatorOnscreenService.showOnscreenView(this);
-
- this.finish();
- }
-}
+/*
+ * Copyright 2013 serso aka se.solovyev
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ * Contact details
+ *
+ * Email: se.solovyev@gmail.com
+ * Site: http://se.solovyev.org
+ */
+
+package org.solovyev.android.calculator.onscreen;
+
+import android.app.Activity;
+import android.os.Bundle;
+
+public class CalculatorOnscreenStartActivity extends Activity {
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ CalculatorOnscreenService.showOnscreenView(this);
+
+ this.finish();
+ }
+}
diff --git a/android-app-onscreen/src/main/java/org/solovyev/android/calculator/onscreen/CalculatorOnscreenView.java b/android-app/src/main/java/org/solovyev/android/calculator/onscreen/CalculatorOnscreenView.java
similarity index 100%
rename from android-app-onscreen/src/main/java/org/solovyev/android/calculator/onscreen/CalculatorOnscreenView.java
rename to android-app/src/main/java/org/solovyev/android/calculator/onscreen/CalculatorOnscreenView.java
diff --git a/android-app-onscreen/src/main/java/org/solovyev/android/calculator/onscreen/CalculatorOnscreenViewState.java b/android-app/src/main/java/org/solovyev/android/calculator/onscreen/CalculatorOnscreenViewState.java
similarity index 100%
rename from android-app-onscreen/src/main/java/org/solovyev/android/calculator/onscreen/CalculatorOnscreenViewState.java
rename to android-app/src/main/java/org/solovyev/android/calculator/onscreen/CalculatorOnscreenViewState.java
diff --git a/android-app-onscreen/src/main/java/org/solovyev/android/calculator/onscreen/OnscreenViewListener.java b/android-app/src/main/java/org/solovyev/android/calculator/onscreen/OnscreenViewListener.java
similarity index 100%
rename from android-app-onscreen/src/main/java/org/solovyev/android/calculator/onscreen/OnscreenViewListener.java
rename to android-app/src/main/java/org/solovyev/android/calculator/onscreen/OnscreenViewListener.java
diff --git a/android-app-core/src/main/java/org/solovyev/android/calculator/plot/AndroidCalculatorPlotter.java b/android-app/src/main/java/org/solovyev/android/calculator/plot/AndroidCalculatorPlotter.java
similarity index 100%
rename from android-app-core/src/main/java/org/solovyev/android/calculator/plot/AndroidCalculatorPlotter.java
rename to android-app/src/main/java/org/solovyev/android/calculator/plot/AndroidCalculatorPlotter.java
diff --git a/android-app-core/src/main/java/org/solovyev/android/calculator/plot/AndroidPlotLineStyle.java b/android-app/src/main/java/org/solovyev/android/calculator/plot/AndroidPlotLineStyle.java
similarity index 100%
rename from android-app-core/src/main/java/org/solovyev/android/calculator/plot/AndroidPlotLineStyle.java
rename to android-app/src/main/java/org/solovyev/android/calculator/plot/AndroidPlotLineStyle.java
diff --git a/android-app-core/src/main/java/org/solovyev/android/calculator/view/AngleUnitsButton.java b/android-app/src/main/java/org/solovyev/android/calculator/view/AngleUnitsButton.java
similarity index 98%
rename from android-app-core/src/main/java/org/solovyev/android/calculator/view/AngleUnitsButton.java
rename to android-app/src/main/java/org/solovyev/android/calculator/view/AngleUnitsButton.java
index bd7de550..80244601 100644
--- a/android-app-core/src/main/java/org/solovyev/android/calculator/view/AngleUnitsButton.java
+++ b/android-app/src/main/java/org/solovyev/android/calculator/view/AngleUnitsButton.java
@@ -29,7 +29,7 @@ import android.text.TextPaint;
import android.util.AttributeSet;
import jscl.AngleUnit;
import org.solovyev.android.calculator.Locator;
-import org.solovyev.android.calculator.core.R;
+import org.solovyev.android.calculator.R;
import org.solovyev.android.view.drag.DirectionDragButton;
import javax.annotation.Nonnull;
diff --git a/android-app-core/src/main/java/org/solovyev/android/calculator/view/EditorTextProcessor.java b/android-app/src/main/java/org/solovyev/android/calculator/view/EditorTextProcessor.java
similarity index 100%
rename from android-app-core/src/main/java/org/solovyev/android/calculator/view/EditorTextProcessor.java
rename to android-app/src/main/java/org/solovyev/android/calculator/view/EditorTextProcessor.java
diff --git a/android-app-core/src/main/java/org/solovyev/android/calculator/view/NumeralBaseConverterDialog.java b/android-app/src/main/java/org/solovyev/android/calculator/view/NumeralBaseConverterDialog.java
similarity index 96%
rename from android-app-core/src/main/java/org/solovyev/android/calculator/view/NumeralBaseConverterDialog.java
rename to android-app/src/main/java/org/solovyev/android/calculator/view/NumeralBaseConverterDialog.java
index 81c88097..e696ab9f 100644
--- a/android-app-core/src/main/java/org/solovyev/android/calculator/view/NumeralBaseConverterDialog.java
+++ b/android-app/src/main/java/org/solovyev/android/calculator/view/NumeralBaseConverterDialog.java
@@ -1,122 +1,120 @@
-/*
- * Copyright 2013 serso aka se.solovyev
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- * Contact details
- *
- * Email: se.solovyev@gmail.com
- * Site: http://se.solovyev.org
- */
-
-package org.solovyev.android.calculator.view;
-
-import android.app.AlertDialog;
-import android.content.Context;
-import android.view.View;
-import android.view.WindowManager;
-
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-
-import org.solovyev.android.calculator.CalculatorParseException;
-import org.solovyev.android.calculator.Locator;
-import org.solovyev.android.calculator.ToJsclTextProcessor;
-import org.solovyev.android.calculator.core.R;
-import org.solovyev.android.calculator.units.CalculatorNumeralBase;
-import org.solovyev.common.MutableObject;
-import org.solovyev.common.text.Strings;
-import org.solovyev.common.units.Unit;
-import org.solovyev.common.units.UnitImpl;
-
-import java.util.Arrays;
-
-/**
- * User: serso
- * Date: 4/22/12
- * Time: 12:20 AM
- */
-public class NumeralBaseConverterDialog {
-
- @Nullable
- private String initialFromValue;
-
- public NumeralBaseConverterDialog(@Nullable String initialFromValue) {
- this.initialFromValue = initialFromValue;
- }
-
- public void show(@Nonnull Context context) {
- final UnitConverterViewBuilder b = new UnitConverterViewBuilder();
- b.setFromUnitTypes(Arrays.asList(CalculatorNumeralBase.values()));
- b.setToUnitTypes(Arrays.asList(CalculatorNumeralBase.values()));
-
- if (!Strings.isEmpty(initialFromValue)) {
- String value = initialFromValue;
- try {
- value = ToJsclTextProcessor.getInstance().process(value).getExpression();
- b.setFromValue(UnitImpl.newInstance(value, CalculatorNumeralBase.valueOf(Locator.getInstance().getEngine().getNumeralBase())));
- } catch (CalculatorParseException e) {
- b.setFromValue(UnitImpl.newInstance(value, CalculatorNumeralBase.valueOf(Locator.getInstance().getEngine().getNumeralBase())));
- }
- } else {
- b.setFromValue(UnitImpl.newInstance("", CalculatorNumeralBase.valueOf(Locator.getInstance().getEngine().getNumeralBase())));
- }
-
- b.setConverter(CalculatorNumeralBase.getConverter());
-
- final MutableObject alertDialogHolder = new MutableObject();
- b.setOkButtonOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- final AlertDialog alertDialog = alertDialogHolder.getObject();
- if (alertDialog != null) {
- alertDialog.dismiss();
- }
- }
- });
-
- b.setCustomButtonData(new UnitConverterViewBuilder.CustomButtonData(context.getString(R.string.c_use_short), new UnitConverterViewBuilder.CustomButtonOnClickListener() {
- @Override
- public void onClick(@Nonnull Unit fromUnits, @Nonnull Unit toUnits) {
- String toUnitsValue = toUnits.getValue();
-
- if (!toUnits.getUnitType().equals(CalculatorNumeralBase.valueOf(Locator.getInstance().getEngine().getNumeralBase()))) {
- toUnitsValue = ((CalculatorNumeralBase) toUnits.getUnitType()).getNumeralBase().getJsclPrefix() + toUnitsValue;
- }
-
- Locator.getInstance().getKeyboard().buttonPressed(toUnitsValue);
- final AlertDialog alertDialog = alertDialogHolder.getObject();
- if (alertDialog != null) {
- alertDialog.dismiss();
- }
- }
- }));
-
- final AlertDialog.Builder alertBuilder = new AlertDialog.Builder(context);
- alertBuilder.setView(b.build(context));
- alertBuilder.setTitle(R.string.c_conversion_tool);
-
- final AlertDialog alertDialog = alertBuilder.create();
-
- final WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
- lp.copyFrom(alertDialog.getWindow().getAttributes());
-
- lp.width = WindowManager.LayoutParams.FILL_PARENT;
- lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
-
- alertDialogHolder.setObject(alertDialog);
- alertDialog.show();
- alertDialog.getWindow().setAttributes(lp);
- }
-}
+/*
+ * Copyright 2013 serso aka se.solovyev
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ * Contact details
+ *
+ * Email: se.solovyev@gmail.com
+ * Site: http://se.solovyev.org
+ */
+
+package org.solovyev.android.calculator.view;
+
+import android.app.AlertDialog;
+import android.content.Context;
+import android.view.View;
+import android.view.WindowManager;
+import org.solovyev.android.calculator.CalculatorParseException;
+import org.solovyev.android.calculator.Locator;
+import org.solovyev.android.calculator.R;
+import org.solovyev.android.calculator.ToJsclTextProcessor;
+import org.solovyev.android.calculator.units.CalculatorNumeralBase;
+import org.solovyev.common.MutableObject;
+import org.solovyev.common.text.Strings;
+import org.solovyev.common.units.Unit;
+import org.solovyev.common.units.UnitImpl;
+
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+import java.util.Arrays;
+
+/**
+ * User: serso
+ * Date: 4/22/12
+ * Time: 12:20 AM
+ */
+public class NumeralBaseConverterDialog {
+
+ @Nullable
+ private String initialFromValue;
+
+ public NumeralBaseConverterDialog(@Nullable String initialFromValue) {
+ this.initialFromValue = initialFromValue;
+ }
+
+ public void show(@Nonnull Context context) {
+ final UnitConverterViewBuilder b = new UnitConverterViewBuilder();
+ b.setFromUnitTypes(Arrays.asList(CalculatorNumeralBase.values()));
+ b.setToUnitTypes(Arrays.asList(CalculatorNumeralBase.values()));
+
+ if (!Strings.isEmpty(initialFromValue)) {
+ String value = initialFromValue;
+ try {
+ value = ToJsclTextProcessor.getInstance().process(value).getExpression();
+ b.setFromValue(UnitImpl.newInstance(value, CalculatorNumeralBase.valueOf(Locator.getInstance().getEngine().getNumeralBase())));
+ } catch (CalculatorParseException e) {
+ b.setFromValue(UnitImpl.newInstance(value, CalculatorNumeralBase.valueOf(Locator.getInstance().getEngine().getNumeralBase())));
+ }
+ } else {
+ b.setFromValue(UnitImpl.newInstance("", CalculatorNumeralBase.valueOf(Locator.getInstance().getEngine().getNumeralBase())));
+ }
+
+ b.setConverter(CalculatorNumeralBase.getConverter());
+
+ final MutableObject alertDialogHolder = new MutableObject();
+ b.setOkButtonOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ final AlertDialog alertDialog = alertDialogHolder.getObject();
+ if (alertDialog != null) {
+ alertDialog.dismiss();
+ }
+ }
+ });
+
+ b.setCustomButtonData(new UnitConverterViewBuilder.CustomButtonData(context.getString(R.string.c_use_short), new UnitConverterViewBuilder.CustomButtonOnClickListener() {
+ @Override
+ public void onClick(@Nonnull Unit fromUnits, @Nonnull Unit toUnits) {
+ String toUnitsValue = toUnits.getValue();
+
+ if (!toUnits.getUnitType().equals(CalculatorNumeralBase.valueOf(Locator.getInstance().getEngine().getNumeralBase()))) {
+ toUnitsValue = ((CalculatorNumeralBase) toUnits.getUnitType()).getNumeralBase().getJsclPrefix() + toUnitsValue;
+ }
+
+ Locator.getInstance().getKeyboard().buttonPressed(toUnitsValue);
+ final AlertDialog alertDialog = alertDialogHolder.getObject();
+ if (alertDialog != null) {
+ alertDialog.dismiss();
+ }
+ }
+ }));
+
+ final AlertDialog.Builder alertBuilder = new AlertDialog.Builder(context);
+ alertBuilder.setView(b.build(context));
+ alertBuilder.setTitle(R.string.c_conversion_tool);
+
+ final AlertDialog alertDialog = alertBuilder.create();
+
+ final WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
+ lp.copyFrom(alertDialog.getWindow().getAttributes());
+
+ lp.width = WindowManager.LayoutParams.FILL_PARENT;
+ lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
+
+ alertDialogHolder.setObject(alertDialog);
+ alertDialog.show();
+ alertDialog.getWindow().setAttributes(lp);
+ }
+}
diff --git a/android-app-core/src/main/java/org/solovyev/android/calculator/view/NumeralBasesButton.java b/android-app/src/main/java/org/solovyev/android/calculator/view/NumeralBasesButton.java
similarity index 98%
rename from android-app-core/src/main/java/org/solovyev/android/calculator/view/NumeralBasesButton.java
rename to android-app/src/main/java/org/solovyev/android/calculator/view/NumeralBasesButton.java
index 11be30c8..0ae944b2 100644
--- a/android-app-core/src/main/java/org/solovyev/android/calculator/view/NumeralBasesButton.java
+++ b/android-app/src/main/java/org/solovyev/android/calculator/view/NumeralBasesButton.java
@@ -28,7 +28,7 @@ import android.text.TextPaint;
import android.util.AttributeSet;
import jscl.NumeralBase;
import org.solovyev.android.calculator.Locator;
-import org.solovyev.android.calculator.core.R;
+import org.solovyev.android.calculator.R;
import org.solovyev.android.view.drag.DirectionDragButton;
import javax.annotation.Nonnull;
diff --git a/android-app-core/src/main/java/org/solovyev/android/calculator/view/TextHighlighter.java b/android-app/src/main/java/org/solovyev/android/calculator/view/TextHighlighter.java
similarity index 100%
rename from android-app-core/src/main/java/org/solovyev/android/calculator/view/TextHighlighter.java
rename to android-app/src/main/java/org/solovyev/android/calculator/view/TextHighlighter.java
diff --git a/android-app-core/src/main/java/org/solovyev/android/calculator/view/UnitConverterViewBuilder.java b/android-app/src/main/java/org/solovyev/android/calculator/view/UnitConverterViewBuilder.java
similarity index 96%
rename from android-app-core/src/main/java/org/solovyev/android/calculator/view/UnitConverterViewBuilder.java
rename to android-app/src/main/java/org/solovyev/android/calculator/view/UnitConverterViewBuilder.java
index b33b8aa0..afbd4509 100644
--- a/android-app-core/src/main/java/org/solovyev/android/calculator/view/UnitConverterViewBuilder.java
+++ b/android-app/src/main/java/org/solovyev/android/calculator/view/UnitConverterViewBuilder.java
@@ -1,243 +1,243 @@
-/*
- * Copyright 2013 serso aka se.solovyev
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- * Contact details
- *
- * Email: se.solovyev@gmail.com
- * Site: http://se.solovyev.org
- */
-
-package org.solovyev.android.calculator.view;
-
-import android.app.Activity;
-import android.content.Context;
-import android.text.ClipboardManager;
-import android.text.Editable;
-import android.text.TextWatcher;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.*;
-
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-
-import org.solovyev.android.calculator.core.R;
-import org.solovyev.android.view.ViewBuilder;
-import org.solovyev.android.view.ViewFromLayoutBuilder;
-import org.solovyev.common.units.*;
-
-import java.util.Collections;
-import java.util.List;
-
-/**
- * User: serso
- * Date: 4/20/12
- * Time: 4:50 PM
- */
-public class UnitConverterViewBuilder implements ViewBuilder {
-
- @Nonnull
- private List extends UnitType> fromUnitTypes = Collections.emptyList();
-
- @Nonnull
- private List extends UnitType> toUnitTypes = Collections.emptyList();
-
- @Nullable
- private Unit fromValue;
-
- @Nonnull
- private UnitConverter converter = UnitConverter.Dummy.getInstance();
-
- @Nullable
- private View.OnClickListener okButtonOnClickListener;
-
- @Nullable
- private CustomButtonData customButtonData;
-
- public void setFromUnitTypes(@Nonnull List extends UnitType> fromUnitTypes) {
- this.fromUnitTypes = fromUnitTypes;
- }
-
- public void setToUnitTypes(@Nonnull List extends UnitType> toUnitTypes) {
- this.toUnitTypes = toUnitTypes;
- }
-
- public void setFromValue(@Nullable Unit fromValue) {
- this.fromValue = fromValue;
- }
-
- public void setConverter(@Nonnull UnitConverter converter) {
- this.converter = converter;
- }
-
- public void setOkButtonOnClickListener(@Nullable View.OnClickListener okButtonOnClickListener) {
- this.okButtonOnClickListener = okButtonOnClickListener;
- }
-
- public void setCustomButtonData(@Nullable CustomButtonData customButtonData) {
- this.customButtonData = customButtonData;
- }
-
- @Nonnull
- @Override
- public View build(@Nonnull final Context context) {
- final View main = ViewFromLayoutBuilder.newInstance(R.layout.cpp_unit_converter).build(context);
-
- final Spinner fromSpinner = (Spinner) main.findViewById(R.id.unit_types_from);
- final EditText fromEditText = (EditText) main.findViewById(R.id.units_from);
- fromEditText.addTextChangedListener(new TextWatcher() {
- @Override
- public void beforeTextChanged(CharSequence s, int start, int count, int after) {
- }
-
- @Override
- public void onTextChanged(CharSequence s, int start, int before, int count) {
- }
-
- @Override
- public void afterTextChanged(Editable s) {
- doConversion(main, context, UnitConverterViewBuilder.this.converter);
- }
- });
-
- fillSpinner(main, context, R.id.unit_types_from, fromUnitTypes);
- fillSpinner(main, context, R.id.unit_types_to, toUnitTypes);
-
- if (fromValue != null) {
- fromEditText.setText(fromValue.getValue());
-
- int i = fromUnitTypes.indexOf(fromValue.getUnitType());
- if (i >= 0) {
- fromSpinner.setSelection(i);
- }
- }
-
- final Button copyButton = (Button) main.findViewById(R.id.unit_converter_copy_button);
- copyButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- final EditText toEditText = (EditText) main.findViewById(R.id.units_to);
-
- final ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Activity.CLIPBOARD_SERVICE);
- clipboard.setText(toEditText.getText().toString());
- Toast.makeText(context, context.getText(R.string.c_result_copied), Toast.LENGTH_SHORT).show();
- }
- });
-
- final Button okButton = (Button) main.findViewById(R.id.unit_converter_ok_button);
- if (okButtonOnClickListener == null) {
- ((ViewGroup) okButton.getParent()).removeView(okButton);
- } else {
- okButton.setOnClickListener(this.okButtonOnClickListener);
- }
-
- final Button customButton = (Button) main.findViewById(R.id.unit_converter_custom_button);
- if (customButtonData == null) {
- ((ViewGroup) customButton.getParent()).removeView(customButton);
- } else {
- customButton.setText(customButtonData.text);
- customButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- customButtonData.clickListener.onClick(getFromUnit(main), getToUnit(main));
- }
- });
- }
-
-
- return main;
- }
-
- private void fillSpinner(@Nonnull final View main,
- @Nonnull final Context context,
- final int spinnerId,
- @Nonnull List extends UnitType> unitTypes) {
- final Spinner spinner = (Spinner) main.findViewById(spinnerId);
-
- final ArrayAdapter> adapter = new ArrayAdapter>(context, android.R.layout.simple_spinner_item);
- adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
- for (UnitType fromUnitType : unitTypes) {
- adapter.add(fromUnitType);
- }
- spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
- @Override
- public void onItemSelected(AdapterView> parent, View view, int position, long id) {
- doConversion(main, context, UnitConverterViewBuilder.this.converter);
- }
-
- @Override
- public void onNothingSelected(AdapterView> parent) {
- }
- });
- spinner.setAdapter(adapter);
- }
-
- private static void doConversion(@Nonnull View main, @Nonnull Context context, @Nonnull UnitConverter converter) {
- final EditText fromEditText = (EditText) main.findViewById(R.id.units_from);
-
- final EditText toEditText = (EditText) main.findViewById(R.id.units_to);
-
- final String from = fromEditText.getText().toString();
- try {
- toEditText.setText(Conversions.doConversion(converter, from, getFromUnitType(main), getToUnitType(main)));
- } catch (ConversionException e) {
- toEditText.setText(context.getString(R.string.c_error));
- }
- }
-
- @Nonnull
- private static Unit getToUnit(@Nonnull View main) {
- final EditText toUnits = (EditText) main.findViewById(R.id.units_to);
- return UnitImpl.newInstance(toUnits.getText().toString(), getToUnitType(main));
- }
-
- @Nonnull
- private static UnitType getToUnitType(@Nonnull View main) {
- final Spinner toSpinner = (Spinner) main.findViewById(R.id.unit_types_to);
- return (UnitType) toSpinner.getSelectedItem();
- }
-
- @Nonnull
- private static Unit getFromUnit(@Nonnull View main) {
- final EditText fromUnits = (EditText) main.findViewById(R.id.units_from);
- return UnitImpl.newInstance(fromUnits.getText().toString(), getFromUnitType(main));
- }
-
- @Nonnull
- private static UnitType getFromUnitType(@Nonnull View main) {
- final Spinner fromSpinner = (Spinner) main.findViewById(R.id.unit_types_from);
- return (UnitType) fromSpinner.getSelectedItem();
- }
-
- public static class CustomButtonData {
-
- @Nonnull
- private String text;
-
- @Nonnull
- private CustomButtonOnClickListener clickListener;
-
-
- public CustomButtonData(@Nonnull String text, @Nonnull CustomButtonOnClickListener clickListener) {
- this.text = text;
- this.clickListener = clickListener;
- }
- }
-
- public static interface CustomButtonOnClickListener {
- void onClick(@Nonnull Unit fromUnits, @Nonnull Unit toUnits);
- }
-}
+/*
+ * Copyright 2013 serso aka se.solovyev
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ * Contact details
+ *
+ * Email: se.solovyev@gmail.com
+ * Site: http://se.solovyev.org
+ */
+
+package org.solovyev.android.calculator.view;
+
+import android.app.Activity;
+import android.content.Context;
+import android.text.ClipboardManager;
+import android.text.Editable;
+import android.text.TextWatcher;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.*;
+
+import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+
+import org.solovyev.android.calculator.R;
+import org.solovyev.android.view.ViewBuilder;
+import org.solovyev.android.view.ViewFromLayoutBuilder;
+import org.solovyev.common.units.*;
+
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * User: serso
+ * Date: 4/20/12
+ * Time: 4:50 PM
+ */
+public class UnitConverterViewBuilder implements ViewBuilder {
+
+ @Nonnull
+ private List extends UnitType> fromUnitTypes = Collections.emptyList();
+
+ @Nonnull
+ private List extends UnitType> toUnitTypes = Collections.emptyList();
+
+ @Nullable
+ private Unit fromValue;
+
+ @Nonnull
+ private UnitConverter converter = UnitConverter.Dummy.getInstance();
+
+ @Nullable
+ private View.OnClickListener okButtonOnClickListener;
+
+ @Nullable
+ private CustomButtonData customButtonData;
+
+ public void setFromUnitTypes(@Nonnull List extends UnitType> fromUnitTypes) {
+ this.fromUnitTypes = fromUnitTypes;
+ }
+
+ public void setToUnitTypes(@Nonnull List extends UnitType> toUnitTypes) {
+ this.toUnitTypes = toUnitTypes;
+ }
+
+ public void setFromValue(@Nullable Unit fromValue) {
+ this.fromValue = fromValue;
+ }
+
+ public void setConverter(@Nonnull UnitConverter converter) {
+ this.converter = converter;
+ }
+
+ public void setOkButtonOnClickListener(@Nullable View.OnClickListener okButtonOnClickListener) {
+ this.okButtonOnClickListener = okButtonOnClickListener;
+ }
+
+ public void setCustomButtonData(@Nullable CustomButtonData customButtonData) {
+ this.customButtonData = customButtonData;
+ }
+
+ @Nonnull
+ @Override
+ public View build(@Nonnull final Context context) {
+ final View main = ViewFromLayoutBuilder.newInstance(R.layout.cpp_unit_converter).build(context);
+
+ final Spinner fromSpinner = (Spinner) main.findViewById(R.id.unit_types_from);
+ final EditText fromEditText = (EditText) main.findViewById(R.id.units_from);
+ fromEditText.addTextChangedListener(new TextWatcher() {
+ @Override
+ public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+ }
+
+ @Override
+ public void onTextChanged(CharSequence s, int start, int before, int count) {
+ }
+
+ @Override
+ public void afterTextChanged(Editable s) {
+ doConversion(main, context, UnitConverterViewBuilder.this.converter);
+ }
+ });
+
+ fillSpinner(main, context, R.id.unit_types_from, fromUnitTypes);
+ fillSpinner(main, context, R.id.unit_types_to, toUnitTypes);
+
+ if (fromValue != null) {
+ fromEditText.setText(fromValue.getValue());
+
+ int i = fromUnitTypes.indexOf(fromValue.getUnitType());
+ if (i >= 0) {
+ fromSpinner.setSelection(i);
+ }
+ }
+
+ final Button copyButton = (Button) main.findViewById(R.id.unit_converter_copy_button);
+ copyButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ final EditText toEditText = (EditText) main.findViewById(R.id.units_to);
+
+ final ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Activity.CLIPBOARD_SERVICE);
+ clipboard.setText(toEditText.getText().toString());
+ Toast.makeText(context, context.getText(R.string.c_result_copied), Toast.LENGTH_SHORT).show();
+ }
+ });
+
+ final Button okButton = (Button) main.findViewById(R.id.unit_converter_ok_button);
+ if (okButtonOnClickListener == null) {
+ ((ViewGroup) okButton.getParent()).removeView(okButton);
+ } else {
+ okButton.setOnClickListener(this.okButtonOnClickListener);
+ }
+
+ final Button customButton = (Button) main.findViewById(R.id.unit_converter_custom_button);
+ if (customButtonData == null) {
+ ((ViewGroup) customButton.getParent()).removeView(customButton);
+ } else {
+ customButton.setText(customButtonData.text);
+ customButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ customButtonData.clickListener.onClick(getFromUnit(main), getToUnit(main));
+ }
+ });
+ }
+
+
+ return main;
+ }
+
+ private void fillSpinner(@Nonnull final View main,
+ @Nonnull final Context context,
+ final int spinnerId,
+ @Nonnull List extends UnitType> unitTypes) {
+ final Spinner spinner = (Spinner) main.findViewById(spinnerId);
+
+ final ArrayAdapter> adapter = new ArrayAdapter>(context, android.R.layout.simple_spinner_item);
+ adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
+ for (UnitType fromUnitType : unitTypes) {
+ adapter.add(fromUnitType);
+ }
+ spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
+ @Override
+ public void onItemSelected(AdapterView> parent, View view, int position, long id) {
+ doConversion(main, context, UnitConverterViewBuilder.this.converter);
+ }
+
+ @Override
+ public void onNothingSelected(AdapterView> parent) {
+ }
+ });
+ spinner.setAdapter(adapter);
+ }
+
+ private static void doConversion(@Nonnull View main, @Nonnull Context context, @Nonnull UnitConverter converter) {
+ final EditText fromEditText = (EditText) main.findViewById(R.id.units_from);
+
+ final EditText toEditText = (EditText) main.findViewById(R.id.units_to);
+
+ final String from = fromEditText.getText().toString();
+ try {
+ toEditText.setText(Conversions.doConversion(converter, from, getFromUnitType(main), getToUnitType(main)));
+ } catch (ConversionException e) {
+ toEditText.setText(context.getString(R.string.c_error));
+ }
+ }
+
+ @Nonnull
+ private static Unit getToUnit(@Nonnull View main) {
+ final EditText toUnits = (EditText) main.findViewById(R.id.units_to);
+ return UnitImpl.newInstance(toUnits.getText().toString(), getToUnitType(main));
+ }
+
+ @Nonnull
+ private static UnitType getToUnitType(@Nonnull View main) {
+ final Spinner toSpinner = (Spinner) main.findViewById(R.id.unit_types_to);
+ return (UnitType) toSpinner.getSelectedItem();
+ }
+
+ @Nonnull
+ private static Unit getFromUnit(@Nonnull View main) {
+ final EditText fromUnits = (EditText) main.findViewById(R.id.units_from);
+ return UnitImpl.newInstance(fromUnits.getText().toString(), getFromUnitType(main));
+ }
+
+ @Nonnull
+ private static UnitType getFromUnitType(@Nonnull View main) {
+ final Spinner fromSpinner = (Spinner) main.findViewById(R.id.unit_types_from);
+ return (UnitType) fromSpinner.getSelectedItem();
+ }
+
+ public static class CustomButtonData {
+
+ @Nonnull
+ private String text;
+
+ @Nonnull
+ private CustomButtonOnClickListener clickListener;
+
+
+ public CustomButtonData(@Nonnull String text, @Nonnull CustomButtonOnClickListener clickListener) {
+ this.text = text;
+ this.clickListener = clickListener;
+ }
+ }
+
+ public static interface CustomButtonOnClickListener {
+ void onClick(@Nonnull Unit fromUnits, @Nonnull Unit toUnits);
+ }
+}
diff --git a/android-app-widget/src/main/java/org/solovyev/android/calculator/widget/AbstractCalculatorWidgetProvider.java b/android-app/src/main/java/org/solovyev/android/calculator/widget/AbstractCalculatorWidgetProvider.java
similarity index 100%
rename from android-app-widget/src/main/java/org/solovyev/android/calculator/widget/AbstractCalculatorWidgetProvider.java
rename to android-app/src/main/java/org/solovyev/android/calculator/widget/AbstractCalculatorWidgetProvider.java
diff --git a/android-app-widget/src/main/java/org/solovyev/android/calculator/widget/CalculatorWidgetConfigurationActivity.java b/android-app/src/main/java/org/solovyev/android/calculator/widget/CalculatorWidgetConfigurationActivity.java
similarity index 96%
rename from android-app-widget/src/main/java/org/solovyev/android/calculator/widget/CalculatorWidgetConfigurationActivity.java
rename to android-app/src/main/java/org/solovyev/android/calculator/widget/CalculatorWidgetConfigurationActivity.java
index a0564b39..2fff1205 100644
--- a/android-app-widget/src/main/java/org/solovyev/android/calculator/widget/CalculatorWidgetConfigurationActivity.java
+++ b/android-app/src/main/java/org/solovyev/android/calculator/widget/CalculatorWidgetConfigurationActivity.java
@@ -1,33 +1,33 @@
-/*
- * Copyright 2013 serso aka se.solovyev
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- * Contact details
- *
- * Email: se.solovyev@gmail.com
- * Site: http://se.solovyev.org
- */
-
-package org.solovyev.android.calculator.widget;
-
-import android.app.Activity;
-
-/**
- * User: Solovyev_S
- * Date: 19.10.12
- * Time: 16:20
- */
-public class CalculatorWidgetConfigurationActivity extends Activity {
-}
+/*
+ * Copyright 2013 serso aka se.solovyev
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ * Contact details
+ *
+ * Email: se.solovyev@gmail.com
+ * Site: http://se.solovyev.org
+ */
+
+package org.solovyev.android.calculator.widget;
+
+import android.app.Activity;
+
+/**
+ * User: Solovyev_S
+ * Date: 19.10.12
+ * Time: 16:20
+ */
+public class CalculatorWidgetConfigurationActivity extends Activity {
+}
diff --git a/android-app-widget/src/main/java/org/solovyev/android/calculator/widget/CalculatorWidgetProvider.java b/android-app/src/main/java/org/solovyev/android/calculator/widget/CalculatorWidgetProvider.java
similarity index 100%
rename from android-app-widget/src/main/java/org/solovyev/android/calculator/widget/CalculatorWidgetProvider.java
rename to android-app/src/main/java/org/solovyev/android/calculator/widget/CalculatorWidgetProvider.java
diff --git a/android-app-widget/src/main/java/org/solovyev/android/calculator/widget/CalculatorWidgetProvider3x4.java b/android-app/src/main/java/org/solovyev/android/calculator/widget/CalculatorWidgetProvider3x4.java
similarity index 100%
rename from android-app-widget/src/main/java/org/solovyev/android/calculator/widget/CalculatorWidgetProvider3x4.java
rename to android-app/src/main/java/org/solovyev/android/calculator/widget/CalculatorWidgetProvider3x4.java
diff --git a/android-app-widget/src/main/java/org/solovyev/android/calculator/widget/CalculatorWidgetProvider4x4.java b/android-app/src/main/java/org/solovyev/android/calculator/widget/CalculatorWidgetProvider4x4.java
similarity index 100%
rename from android-app-widget/src/main/java/org/solovyev/android/calculator/widget/CalculatorWidgetProvider4x4.java
rename to android-app/src/main/java/org/solovyev/android/calculator/widget/CalculatorWidgetProvider4x4.java
diff --git a/android-app-widget/src/main/java/org/solovyev/android/calculator/widget/CalculatorWidgetProvider4x5.java b/android-app/src/main/java/org/solovyev/android/calculator/widget/CalculatorWidgetProvider4x5.java
similarity index 100%
rename from android-app-widget/src/main/java/org/solovyev/android/calculator/widget/CalculatorWidgetProvider4x5.java
rename to android-app/src/main/java/org/solovyev/android/calculator/widget/CalculatorWidgetProvider4x5.java
diff --git a/android-app-core/src/main/res/drawable-hdpi/ab_clock.png b/android-app/src/main/res/drawable-hdpi/ab_clock.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-hdpi/ab_clock.png
rename to android-app/src/main/res/drawable-hdpi/ab_clock.png
diff --git a/android-app-core/src/main/res/drawable-hdpi/ab_disk.png b/android-app/src/main/res/drawable-hdpi/ab_disk.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-hdpi/ab_disk.png
rename to android-app/src/main/res/drawable-hdpi/ab_disk.png
diff --git a/android-app-core/src/main/res/drawable-hdpi/ab_expand.png b/android-app/src/main/res/drawable-hdpi/ab_expand.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-hdpi/ab_expand.png
rename to android-app/src/main/res/drawable-hdpi/ab_expand.png
diff --git a/android-app-core/src/main/res/drawable-hdpi/ab_icon.png b/android-app/src/main/res/drawable-hdpi/ab_icon.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-hdpi/ab_icon.png
rename to android-app/src/main/res/drawable-hdpi/ab_icon.png
diff --git a/android-app-core/src/main/res/drawable-hdpi/ab_menu.png b/android-app/src/main/res/drawable-hdpi/ab_menu.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-hdpi/ab_menu.png
rename to android-app/src/main/res/drawable-hdpi/ab_menu.png
diff --git a/android-app-core/src/main/res/drawable-hdpi/ab_plus.png b/android-app/src/main/res/drawable-hdpi/ab_plus.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-hdpi/ab_plus.png
rename to android-app/src/main/res/drawable-hdpi/ab_plus.png
diff --git a/android-app-core/src/main/res/drawable-hdpi/ab_range.png b/android-app/src/main/res/drawable-hdpi/ab_range.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-hdpi/ab_range.png
rename to android-app/src/main/res/drawable-hdpi/ab_range.png
diff --git a/android-app-core/src/main/res/drawable-hdpi/ab_remove.png b/android-app/src/main/res/drawable-hdpi/ab_remove.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-hdpi/ab_remove.png
rename to android-app/src/main/res/drawable-hdpi/ab_remove.png
diff --git a/android-app-core/src/main/res/drawable-hdpi/ab_settings.png b/android-app/src/main/res/drawable-hdpi/ab_settings.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-hdpi/ab_settings.png
rename to android-app/src/main/res/drawable-hdpi/ab_settings.png
diff --git a/android-app-core/src/main/res/drawable-hdpi/ab_stats.png b/android-app/src/main/res/drawable-hdpi/ab_stats.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-hdpi/ab_stats.png
rename to android-app/src/main/res/drawable-hdpi/ab_stats.png
diff --git a/android-app-core/src/main/res/drawable-hdpi/ab_stats_3d.png b/android-app/src/main/res/drawable-hdpi/ab_stats_3d.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-hdpi/ab_stats_3d.png
rename to android-app/src/main/res/drawable-hdpi/ab_stats_3d.png
diff --git a/android-app-core/src/main/res/drawable-hdpi/icon.png b/android-app/src/main/res/drawable-hdpi/icon.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-hdpi/icon.png
rename to android-app/src/main/res/drawable-hdpi/icon.png
diff --git a/android-app-core/src/main/res/drawable-hdpi/icon_onscreen.png b/android-app/src/main/res/drawable-hdpi/icon_onscreen.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-hdpi/icon_onscreen.png
rename to android-app/src/main/res/drawable-hdpi/icon_onscreen.png
diff --git a/android-app-core/src/main/res/drawable-hdpi/kb_copy.png b/android-app/src/main/res/drawable-hdpi/kb_copy.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-hdpi/kb_copy.png
rename to android-app/src/main/res/drawable-hdpi/kb_copy.png
diff --git a/android-app-core/src/main/res/drawable-hdpi/kb_erase.png b/android-app/src/main/res/drawable-hdpi/kb_erase.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-hdpi/kb_erase.png
rename to android-app/src/main/res/drawable-hdpi/kb_erase.png
diff --git a/android-app-core/src/main/res/drawable-hdpi/kb_logo.png b/android-app/src/main/res/drawable-hdpi/kb_logo.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-hdpi/kb_logo.png
rename to android-app/src/main/res/drawable-hdpi/kb_logo.png
diff --git a/android-app-core/src/main/res/drawable-hdpi/kb_paste.png b/android-app/src/main/res/drawable-hdpi/kb_paste.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-hdpi/kb_paste.png
rename to android-app/src/main/res/drawable-hdpi/kb_paste.png
diff --git a/android-app-core/src/main/res/drawable-hdpi/kb_settings.png b/android-app/src/main/res/drawable-hdpi/kb_settings.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-hdpi/kb_settings.png
rename to android-app/src/main/res/drawable-hdpi/kb_settings.png
diff --git a/android-app-core/src/main/res/drawable-hdpi/kb_share.png b/android-app/src/main/res/drawable-hdpi/kb_share.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-hdpi/kb_share.png
rename to android-app/src/main/res/drawable-hdpi/kb_share.png
diff --git a/android-app-core/src/main/res/drawable-hdpi/logo.png b/android-app/src/main/res/drawable-hdpi/logo.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-hdpi/logo.png
rename to android-app/src/main/res/drawable-hdpi/logo.png
diff --git a/android-app-core/src/main/res/drawable-ldpi/ab_icon.png b/android-app/src/main/res/drawable-ldpi/ab_icon.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-ldpi/ab_icon.png
rename to android-app/src/main/res/drawable-ldpi/ab_icon.png
diff --git a/android-app-core/src/main/res/drawable-ldpi/kb_logo.png b/android-app/src/main/res/drawable-ldpi/kb_logo.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-ldpi/kb_logo.png
rename to android-app/src/main/res/drawable-ldpi/kb_logo.png
diff --git a/android-app-core/src/main/res/drawable-ldpi/logo.png b/android-app/src/main/res/drawable-ldpi/logo.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-ldpi/logo.png
rename to android-app/src/main/res/drawable-ldpi/logo.png
diff --git a/android-app-core/src/main/res/drawable-mdpi/ab_clock.png b/android-app/src/main/res/drawable-mdpi/ab_clock.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-mdpi/ab_clock.png
rename to android-app/src/main/res/drawable-mdpi/ab_clock.png
diff --git a/android-app-core/src/main/res/drawable-mdpi/ab_disk.png b/android-app/src/main/res/drawable-mdpi/ab_disk.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-mdpi/ab_disk.png
rename to android-app/src/main/res/drawable-mdpi/ab_disk.png
diff --git a/android-app-core/src/main/res/drawable-mdpi/ab_expand.png b/android-app/src/main/res/drawable-mdpi/ab_expand.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-mdpi/ab_expand.png
rename to android-app/src/main/res/drawable-mdpi/ab_expand.png
diff --git a/android-app-core/src/main/res/drawable-mdpi/ab_icon.png b/android-app/src/main/res/drawable-mdpi/ab_icon.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-mdpi/ab_icon.png
rename to android-app/src/main/res/drawable-mdpi/ab_icon.png
diff --git a/android-app-core/src/main/res/drawable-mdpi/ab_menu.png b/android-app/src/main/res/drawable-mdpi/ab_menu.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-mdpi/ab_menu.png
rename to android-app/src/main/res/drawable-mdpi/ab_menu.png
diff --git a/android-app-core/src/main/res/drawable-mdpi/ab_plus.png b/android-app/src/main/res/drawable-mdpi/ab_plus.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-mdpi/ab_plus.png
rename to android-app/src/main/res/drawable-mdpi/ab_plus.png
diff --git a/android-app-core/src/main/res/drawable-mdpi/ab_range.png b/android-app/src/main/res/drawable-mdpi/ab_range.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-mdpi/ab_range.png
rename to android-app/src/main/res/drawable-mdpi/ab_range.png
diff --git a/android-app-core/src/main/res/drawable-mdpi/ab_remove.png b/android-app/src/main/res/drawable-mdpi/ab_remove.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-mdpi/ab_remove.png
rename to android-app/src/main/res/drawable-mdpi/ab_remove.png
diff --git a/android-app-core/src/main/res/drawable-mdpi/ab_settings.png b/android-app/src/main/res/drawable-mdpi/ab_settings.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-mdpi/ab_settings.png
rename to android-app/src/main/res/drawable-mdpi/ab_settings.png
diff --git a/android-app-core/src/main/res/drawable-mdpi/ab_stats.png b/android-app/src/main/res/drawable-mdpi/ab_stats.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-mdpi/ab_stats.png
rename to android-app/src/main/res/drawable-mdpi/ab_stats.png
diff --git a/android-app-core/src/main/res/drawable-mdpi/ab_stats_3d.png b/android-app/src/main/res/drawable-mdpi/ab_stats_3d.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-mdpi/ab_stats_3d.png
rename to android-app/src/main/res/drawable-mdpi/ab_stats_3d.png
diff --git a/android-app-core/src/main/res/drawable-mdpi/icon.png b/android-app/src/main/res/drawable-mdpi/icon.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-mdpi/icon.png
rename to android-app/src/main/res/drawable-mdpi/icon.png
diff --git a/android-app-core/src/main/res/drawable-mdpi/icon_onscreen.png b/android-app/src/main/res/drawable-mdpi/icon_onscreen.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-mdpi/icon_onscreen.png
rename to android-app/src/main/res/drawable-mdpi/icon_onscreen.png
diff --git a/android-app-core/src/main/res/drawable-mdpi/kb_copy.png b/android-app/src/main/res/drawable-mdpi/kb_copy.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-mdpi/kb_copy.png
rename to android-app/src/main/res/drawable-mdpi/kb_copy.png
diff --git a/android-app-core/src/main/res/drawable-mdpi/kb_erase.png b/android-app/src/main/res/drawable-mdpi/kb_erase.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-mdpi/kb_erase.png
rename to android-app/src/main/res/drawable-mdpi/kb_erase.png
diff --git a/android-app-core/src/main/res/drawable-mdpi/kb_logo.png b/android-app/src/main/res/drawable-mdpi/kb_logo.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-mdpi/kb_logo.png
rename to android-app/src/main/res/drawable-mdpi/kb_logo.png
diff --git a/android-app-core/src/main/res/drawable-mdpi/kb_paste.png b/android-app/src/main/res/drawable-mdpi/kb_paste.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-mdpi/kb_paste.png
rename to android-app/src/main/res/drawable-mdpi/kb_paste.png
diff --git a/android-app-core/src/main/res/drawable-mdpi/kb_settings.png b/android-app/src/main/res/drawable-mdpi/kb_settings.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-mdpi/kb_settings.png
rename to android-app/src/main/res/drawable-mdpi/kb_settings.png
diff --git a/android-app-core/src/main/res/drawable-mdpi/kb_share.png b/android-app/src/main/res/drawable-mdpi/kb_share.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-mdpi/kb_share.png
rename to android-app/src/main/res/drawable-mdpi/kb_share.png
diff --git a/android-app-core/src/main/res/drawable-mdpi/logo.png b/android-app/src/main/res/drawable-mdpi/logo.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-mdpi/logo.png
rename to android-app/src/main/res/drawable-mdpi/logo.png
diff --git a/android-app-core/src/main/res/drawable-nodpi/cpp_onscreen_button_close.png b/android-app/src/main/res/drawable-nodpi/cpp_onscreen_button_close.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-nodpi/cpp_onscreen_button_close.png
rename to android-app/src/main/res/drawable-nodpi/cpp_onscreen_button_close.png
diff --git a/android-app-core/src/main/res/drawable-nodpi/cpp_onscreen_button_fold.png b/android-app/src/main/res/drawable-nodpi/cpp_onscreen_button_fold.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-nodpi/cpp_onscreen_button_fold.png
rename to android-app/src/main/res/drawable-nodpi/cpp_onscreen_button_fold.png
diff --git a/android-app-core/src/main/res/drawable-nodpi/cpp_onscreen_button_minimize.png b/android-app/src/main/res/drawable-nodpi/cpp_onscreen_button_minimize.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-nodpi/cpp_onscreen_button_minimize.png
rename to android-app/src/main/res/drawable-nodpi/cpp_onscreen_button_minimize.png
diff --git a/android-app-core/src/main/res/drawable-nodpi/cpp_onscreen_header_logo.png b/android-app/src/main/res/drawable-nodpi/cpp_onscreen_header_logo.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-nodpi/cpp_onscreen_header_logo.png
rename to android-app/src/main/res/drawable-nodpi/cpp_onscreen_header_logo.png
diff --git a/android-app-core/src/main/res/drawable-nodpi/default_abs__ab_transparent_dark_holo.9.png b/android-app/src/main/res/drawable-nodpi/default_abs__ab_transparent_dark_holo.9.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-nodpi/default_abs__ab_transparent_dark_holo.9.png
rename to android-app/src/main/res/drawable-nodpi/default_abs__ab_transparent_dark_holo.9.png
diff --git a/android-app-core/src/main/res/drawable-nodpi/default_abs__btn_cab_done_default_holo_dark.9.png b/android-app/src/main/res/drawable-nodpi/default_abs__btn_cab_done_default_holo_dark.9.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-nodpi/default_abs__btn_cab_done_default_holo_dark.9.png
rename to android-app/src/main/res/drawable-nodpi/default_abs__btn_cab_done_default_holo_dark.9.png
diff --git a/android-app-core/src/main/res/drawable-nodpi/default_abs__btn_cab_done_focused_holo_dark.9.png b/android-app/src/main/res/drawable-nodpi/default_abs__btn_cab_done_focused_holo_dark.9.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-nodpi/default_abs__btn_cab_done_focused_holo_dark.9.png
rename to android-app/src/main/res/drawable-nodpi/default_abs__btn_cab_done_focused_holo_dark.9.png
diff --git a/android-app-core/src/main/res/drawable-nodpi/default_abs__btn_cab_done_pressed_holo_dark.9.png b/android-app/src/main/res/drawable-nodpi/default_abs__btn_cab_done_pressed_holo_dark.9.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-nodpi/default_abs__btn_cab_done_pressed_holo_dark.9.png
rename to android-app/src/main/res/drawable-nodpi/default_abs__btn_cab_done_pressed_holo_dark.9.png
diff --git a/android-app-core/src/main/res/drawable-nodpi/default_abs__list_focused_holo.9.png b/android-app/src/main/res/drawable-nodpi/default_abs__list_focused_holo.9.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-nodpi/default_abs__list_focused_holo.9.png
rename to android-app/src/main/res/drawable-nodpi/default_abs__list_focused_holo.9.png
diff --git a/android-app-core/src/main/res/drawable-nodpi/default_abs__list_longpressed_holo.9.png b/android-app/src/main/res/drawable-nodpi/default_abs__list_longpressed_holo.9.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-nodpi/default_abs__list_longpressed_holo.9.png
rename to android-app/src/main/res/drawable-nodpi/default_abs__list_longpressed_holo.9.png
diff --git a/android-app-core/src/main/res/drawable-nodpi/default_abs__list_pressed_holo_dark.9.png b/android-app/src/main/res/drawable-nodpi/default_abs__list_pressed_holo_dark.9.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-nodpi/default_abs__list_pressed_holo_dark.9.png
rename to android-app/src/main/res/drawable-nodpi/default_abs__list_pressed_holo_dark.9.png
diff --git a/android-app-core/src/main/res/drawable-nodpi/default_abs__spinner_ab_focused_holo_dark.9.png b/android-app/src/main/res/drawable-nodpi/default_abs__spinner_ab_focused_holo_dark.9.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-nodpi/default_abs__spinner_ab_focused_holo_dark.9.png
rename to android-app/src/main/res/drawable-nodpi/default_abs__spinner_ab_focused_holo_dark.9.png
diff --git a/android-app-core/src/main/res/drawable-nodpi/default_abs__spinner_ab_pressed_holo_dark.9.png b/android-app/src/main/res/drawable-nodpi/default_abs__spinner_ab_pressed_holo_dark.9.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-nodpi/default_abs__spinner_ab_pressed_holo_dark.9.png
rename to android-app/src/main/res/drawable-nodpi/default_abs__spinner_ab_pressed_holo_dark.9.png
diff --git a/android-app-core/src/main/res/drawable-nodpi/default_abs__tab_selected_focused_holo.9.png b/android-app/src/main/res/drawable-nodpi/default_abs__tab_selected_focused_holo.9.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-nodpi/default_abs__tab_selected_focused_holo.9.png
rename to android-app/src/main/res/drawable-nodpi/default_abs__tab_selected_focused_holo.9.png
diff --git a/android-app-core/src/main/res/drawable-nodpi/default_abs__tab_selected_holo.9.png b/android-app/src/main/res/drawable-nodpi/default_abs__tab_selected_holo.9.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-nodpi/default_abs__tab_selected_holo.9.png
rename to android-app/src/main/res/drawable-nodpi/default_abs__tab_selected_holo.9.png
diff --git a/android-app-core/src/main/res/drawable-nodpi/default_abs__tab_selected_pressed_holo.9.png b/android-app/src/main/res/drawable-nodpi/default_abs__tab_selected_pressed_holo.9.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-nodpi/default_abs__tab_selected_pressed_holo.9.png
rename to android-app/src/main/res/drawable-nodpi/default_abs__tab_selected_pressed_holo.9.png
diff --git a/android-app-core/src/main/res/drawable-nodpi/default_abs__tab_unselected_pressed_holo.9.png b/android-app/src/main/res/drawable-nodpi/default_abs__tab_unselected_pressed_holo.9.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-nodpi/default_abs__tab_unselected_pressed_holo.9.png
rename to android-app/src/main/res/drawable-nodpi/default_abs__tab_unselected_pressed_holo.9.png
diff --git a/android-app-core/src/main/res/drawable-nodpi/metro_blue_abs__ab_transparent_dark_holo.9.png b/android-app/src/main/res/drawable-nodpi/metro_blue_abs__ab_transparent_dark_holo.9.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-nodpi/metro_blue_abs__ab_transparent_dark_holo.9.png
rename to android-app/src/main/res/drawable-nodpi/metro_blue_abs__ab_transparent_dark_holo.9.png
diff --git a/android-app-core/src/main/res/drawable-nodpi/metro_blue_abs__list_focused_holo.9.png b/android-app/src/main/res/drawable-nodpi/metro_blue_abs__list_focused_holo.9.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-nodpi/metro_blue_abs__list_focused_holo.9.png
rename to android-app/src/main/res/drawable-nodpi/metro_blue_abs__list_focused_holo.9.png
diff --git a/android-app-core/src/main/res/drawable-nodpi/metro_blue_abs__list_pressed_holo_dark.9.png b/android-app/src/main/res/drawable-nodpi/metro_blue_abs__list_pressed_holo_dark.9.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-nodpi/metro_blue_abs__list_pressed_holo_dark.9.png
rename to android-app/src/main/res/drawable-nodpi/metro_blue_abs__list_pressed_holo_dark.9.png
diff --git a/android-app-core/src/main/res/drawable-nodpi/metro_blue_abs__tab_selected_focused_holo.9.png b/android-app/src/main/res/drawable-nodpi/metro_blue_abs__tab_selected_focused_holo.9.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-nodpi/metro_blue_abs__tab_selected_focused_holo.9.png
rename to android-app/src/main/res/drawable-nodpi/metro_blue_abs__tab_selected_focused_holo.9.png
diff --git a/android-app-core/src/main/res/drawable-nodpi/metro_blue_abs__tab_selected_holo.9.png b/android-app/src/main/res/drawable-nodpi/metro_blue_abs__tab_selected_holo.9.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-nodpi/metro_blue_abs__tab_selected_holo.9.png
rename to android-app/src/main/res/drawable-nodpi/metro_blue_abs__tab_selected_holo.9.png
diff --git a/android-app-core/src/main/res/drawable-nodpi/metro_blue_abs__tab_selected_pressed_holo.9.png b/android-app/src/main/res/drawable-nodpi/metro_blue_abs__tab_selected_pressed_holo.9.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-nodpi/metro_blue_abs__tab_selected_pressed_holo.9.png
rename to android-app/src/main/res/drawable-nodpi/metro_blue_abs__tab_selected_pressed_holo.9.png
diff --git a/android-app-core/src/main/res/drawable-nodpi/metro_blue_abs__tab_unselected_pressed_holo.9.png b/android-app/src/main/res/drawable-nodpi/metro_blue_abs__tab_unselected_pressed_holo.9.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-nodpi/metro_blue_abs__tab_unselected_pressed_holo.9.png
rename to android-app/src/main/res/drawable-nodpi/metro_blue_abs__tab_unselected_pressed_holo.9.png
diff --git a/android-app-core/src/main/res/drawable-nodpi/tablet_big_buttons.png b/android-app/src/main/res/drawable-nodpi/tablet_big_buttons.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-nodpi/tablet_big_buttons.png
rename to android-app/src/main/res/drawable-nodpi/tablet_big_buttons.png
diff --git a/android-app-core/src/main/res/drawable-nodpi/tablet_optimized.png b/android-app/src/main/res/drawable-nodpi/tablet_optimized.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-nodpi/tablet_optimized.png
rename to android-app/src/main/res/drawable-nodpi/tablet_optimized.png
diff --git a/android-app-core/src/main/res/drawable-nodpi/widget_preview.png b/android-app/src/main/res/drawable-nodpi/widget_preview.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-nodpi/widget_preview.png
rename to android-app/src/main/res/drawable-nodpi/widget_preview.png
diff --git a/android-app-core/src/main/res/drawable-xhdpi/ab_clock.png b/android-app/src/main/res/drawable-xhdpi/ab_clock.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-xhdpi/ab_clock.png
rename to android-app/src/main/res/drawable-xhdpi/ab_clock.png
diff --git a/android-app-core/src/main/res/drawable-xhdpi/ab_disk.png b/android-app/src/main/res/drawable-xhdpi/ab_disk.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-xhdpi/ab_disk.png
rename to android-app/src/main/res/drawable-xhdpi/ab_disk.png
diff --git a/android-app-core/src/main/res/drawable-xhdpi/ab_expand.png b/android-app/src/main/res/drawable-xhdpi/ab_expand.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-xhdpi/ab_expand.png
rename to android-app/src/main/res/drawable-xhdpi/ab_expand.png
diff --git a/android-app-core/src/main/res/drawable-xhdpi/ab_icon.png b/android-app/src/main/res/drawable-xhdpi/ab_icon.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-xhdpi/ab_icon.png
rename to android-app/src/main/res/drawable-xhdpi/ab_icon.png
diff --git a/android-app-core/src/main/res/drawable-xhdpi/ab_menu.png b/android-app/src/main/res/drawable-xhdpi/ab_menu.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-xhdpi/ab_menu.png
rename to android-app/src/main/res/drawable-xhdpi/ab_menu.png
diff --git a/android-app-core/src/main/res/drawable-xhdpi/ab_plus.png b/android-app/src/main/res/drawable-xhdpi/ab_plus.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-xhdpi/ab_plus.png
rename to android-app/src/main/res/drawable-xhdpi/ab_plus.png
diff --git a/android-app-core/src/main/res/drawable-xhdpi/ab_range.png b/android-app/src/main/res/drawable-xhdpi/ab_range.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-xhdpi/ab_range.png
rename to android-app/src/main/res/drawable-xhdpi/ab_range.png
diff --git a/android-app-core/src/main/res/drawable-xhdpi/ab_remove.png b/android-app/src/main/res/drawable-xhdpi/ab_remove.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-xhdpi/ab_remove.png
rename to android-app/src/main/res/drawable-xhdpi/ab_remove.png
diff --git a/android-app-core/src/main/res/drawable-xhdpi/ab_settings.png b/android-app/src/main/res/drawable-xhdpi/ab_settings.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-xhdpi/ab_settings.png
rename to android-app/src/main/res/drawable-xhdpi/ab_settings.png
diff --git a/android-app-core/src/main/res/drawable-xhdpi/ab_stats.png b/android-app/src/main/res/drawable-xhdpi/ab_stats.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-xhdpi/ab_stats.png
rename to android-app/src/main/res/drawable-xhdpi/ab_stats.png
diff --git a/android-app-core/src/main/res/drawable-xhdpi/ab_stats_3d.png b/android-app/src/main/res/drawable-xhdpi/ab_stats_3d.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-xhdpi/ab_stats_3d.png
rename to android-app/src/main/res/drawable-xhdpi/ab_stats_3d.png
diff --git a/android-app-core/src/main/res/drawable-xhdpi/icon.png b/android-app/src/main/res/drawable-xhdpi/icon.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-xhdpi/icon.png
rename to android-app/src/main/res/drawable-xhdpi/icon.png
diff --git a/android-app-core/src/main/res/drawable-xhdpi/icon_onscreen.png b/android-app/src/main/res/drawable-xhdpi/icon_onscreen.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-xhdpi/icon_onscreen.png
rename to android-app/src/main/res/drawable-xhdpi/icon_onscreen.png
diff --git a/android-app-core/src/main/res/drawable-xhdpi/kb_copy.png b/android-app/src/main/res/drawable-xhdpi/kb_copy.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-xhdpi/kb_copy.png
rename to android-app/src/main/res/drawable-xhdpi/kb_copy.png
diff --git a/android-app-core/src/main/res/drawable-xhdpi/kb_erase.png b/android-app/src/main/res/drawable-xhdpi/kb_erase.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-xhdpi/kb_erase.png
rename to android-app/src/main/res/drawable-xhdpi/kb_erase.png
diff --git a/android-app-core/src/main/res/drawable-xhdpi/kb_logo.png b/android-app/src/main/res/drawable-xhdpi/kb_logo.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-xhdpi/kb_logo.png
rename to android-app/src/main/res/drawable-xhdpi/kb_logo.png
diff --git a/android-app-core/src/main/res/drawable-xhdpi/kb_paste.png b/android-app/src/main/res/drawable-xhdpi/kb_paste.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-xhdpi/kb_paste.png
rename to android-app/src/main/res/drawable-xhdpi/kb_paste.png
diff --git a/android-app-core/src/main/res/drawable-xhdpi/kb_settings.png b/android-app/src/main/res/drawable-xhdpi/kb_settings.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-xhdpi/kb_settings.png
rename to android-app/src/main/res/drawable-xhdpi/kb_settings.png
diff --git a/android-app-core/src/main/res/drawable-xhdpi/kb_share.png b/android-app/src/main/res/drawable-xhdpi/kb_share.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-xhdpi/kb_share.png
rename to android-app/src/main/res/drawable-xhdpi/kb_share.png
diff --git a/android-app-core/src/main/res/drawable-xhdpi/logo.png b/android-app/src/main/res/drawable-xhdpi/logo.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-xhdpi/logo.png
rename to android-app/src/main/res/drawable-xhdpi/logo.png
diff --git a/android-app-core/src/main/res/drawable-xlarge-hdpi/kb_logo.png b/android-app/src/main/res/drawable-xlarge-hdpi/kb_logo.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-xlarge-hdpi/kb_logo.png
rename to android-app/src/main/res/drawable-xlarge-hdpi/kb_logo.png
diff --git a/android-app-core/src/main/res/drawable-xxhdpi/icon.png b/android-app/src/main/res/drawable-xxhdpi/icon.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-xxhdpi/icon.png
rename to android-app/src/main/res/drawable-xxhdpi/icon.png
diff --git a/android-app-core/src/main/res/drawable-xxhdpi/icon_onscreen.png b/android-app/src/main/res/drawable-xxhdpi/icon_onscreen.png
similarity index 100%
rename from android-app-core/src/main/res/drawable-xxhdpi/icon_onscreen.png
rename to android-app/src/main/res/drawable-xxhdpi/icon_onscreen.png
diff --git a/android-app-core/src/main/res/drawable/blue_button.xml b/android-app/src/main/res/drawable/blue_button.xml
similarity index 100%
rename from android-app-core/src/main/res/drawable/blue_button.xml
rename to android-app/src/main/res/drawable/blue_button.xml
diff --git a/android-app-core/src/main/res/drawable/blue_button_dark.xml b/android-app/src/main/res/drawable/blue_button_dark.xml
similarity index 100%
rename from android-app-core/src/main/res/drawable/blue_button_dark.xml
rename to android-app/src/main/res/drawable/blue_button_dark.xml
diff --git a/android-app-core/src/main/res/drawable/blue_button_dark_shape.xml b/android-app/src/main/res/drawable/blue_button_dark_shape.xml
similarity index 100%
rename from android-app-core/src/main/res/drawable/blue_button_dark_shape.xml
rename to android-app/src/main/res/drawable/blue_button_dark_shape.xml
diff --git a/android-app-core/src/main/res/drawable/blue_button_shape.xml b/android-app/src/main/res/drawable/blue_button_shape.xml
similarity index 100%
rename from android-app-core/src/main/res/drawable/blue_button_shape.xml
rename to android-app/src/main/res/drawable/blue_button_shape.xml
diff --git a/android-app-core/src/main/res/drawable/default_abs__btn_cab_done_holo_dark.xml b/android-app/src/main/res/drawable/default_abs__btn_cab_done_holo_dark.xml
similarity index 100%
rename from android-app-core/src/main/res/drawable/default_abs__btn_cab_done_holo_dark.xml
rename to android-app/src/main/res/drawable/default_abs__btn_cab_done_holo_dark.xml
diff --git a/android-app-core/src/main/res/drawable/default_abs__item_background_holo_dark.xml b/android-app/src/main/res/drawable/default_abs__item_background_holo_dark.xml
similarity index 100%
rename from android-app-core/src/main/res/drawable/default_abs__item_background_holo_dark.xml
rename to android-app/src/main/res/drawable/default_abs__item_background_holo_dark.xml
diff --git a/android-app-core/src/main/res/drawable/default_abs__list_selector_background_transition_holo_dark.xml b/android-app/src/main/res/drawable/default_abs__list_selector_background_transition_holo_dark.xml
similarity index 100%
rename from android-app-core/src/main/res/drawable/default_abs__list_selector_background_transition_holo_dark.xml
rename to android-app/src/main/res/drawable/default_abs__list_selector_background_transition_holo_dark.xml
diff --git a/android-app-core/src/main/res/drawable/default_abs__list_selector_holo_dark.xml b/android-app/src/main/res/drawable/default_abs__list_selector_holo_dark.xml
similarity index 100%
rename from android-app-core/src/main/res/drawable/default_abs__list_selector_holo_dark.xml
rename to android-app/src/main/res/drawable/default_abs__list_selector_holo_dark.xml
diff --git a/android-app-core/src/main/res/drawable/default_abs__spinner_ab_holo_dark.xml b/android-app/src/main/res/drawable/default_abs__spinner_ab_holo_dark.xml
similarity index 100%
rename from android-app-core/src/main/res/drawable/default_abs__spinner_ab_holo_dark.xml
rename to android-app/src/main/res/drawable/default_abs__spinner_ab_holo_dark.xml
diff --git a/android-app-core/src/main/res/drawable/default_abs__tab_indicator_ab_holo.xml b/android-app/src/main/res/drawable/default_abs__tab_indicator_ab_holo.xml
similarity index 100%
rename from android-app-core/src/main/res/drawable/default_abs__tab_indicator_ab_holo.xml
rename to android-app/src/main/res/drawable/default_abs__tab_indicator_ab_holo.xml
diff --git a/android-app-core/src/main/res/drawable/gray_button.xml b/android-app/src/main/res/drawable/gray_button.xml
similarity index 100%
rename from android-app-core/src/main/res/drawable/gray_button.xml
rename to android-app/src/main/res/drawable/gray_button.xml
diff --git a/android-app-core/src/main/res/drawable/gray_button_dark.xml b/android-app/src/main/res/drawable/gray_button_dark.xml
similarity index 100%
rename from android-app-core/src/main/res/drawable/gray_button_dark.xml
rename to android-app/src/main/res/drawable/gray_button_dark.xml
diff --git a/android-app-core/src/main/res/drawable/gray_button_dark_shape.xml b/android-app/src/main/res/drawable/gray_button_dark_shape.xml
similarity index 100%
rename from android-app-core/src/main/res/drawable/gray_button_dark_shape.xml
rename to android-app/src/main/res/drawable/gray_button_dark_shape.xml
diff --git a/android-app-core/src/main/res/drawable/gray_button_shape.xml b/android-app/src/main/res/drawable/gray_button_shape.xml
similarity index 100%
rename from android-app-core/src/main/res/drawable/gray_button_shape.xml
rename to android-app/src/main/res/drawable/gray_button_shape.xml
diff --git a/android-app-core/src/main/res/drawable/metro_blue_abs__tab_indicator_ab_holo.xml b/android-app/src/main/res/drawable/metro_blue_abs__tab_indicator_ab_holo.xml
similarity index 100%
rename from android-app-core/src/main/res/drawable/metro_blue_abs__tab_indicator_ab_holo.xml
rename to android-app/src/main/res/drawable/metro_blue_abs__tab_indicator_ab_holo.xml
diff --git a/android-app-core/src/main/res/drawable/metro_blue_button.xml b/android-app/src/main/res/drawable/metro_blue_button.xml
similarity index 100%
rename from android-app-core/src/main/res/drawable/metro_blue_button.xml
rename to android-app/src/main/res/drawable/metro_blue_button.xml
diff --git a/android-app-core/src/main/res/drawable/metro_blue_button_shape.xml b/android-app/src/main/res/drawable/metro_blue_button_shape.xml
similarity index 100%
rename from android-app-core/src/main/res/drawable/metro_blue_button_shape.xml
rename to android-app/src/main/res/drawable/metro_blue_button_shape.xml
diff --git a/android-app-core/src/main/res/drawable/metro_blue_list_item.xml b/android-app/src/main/res/drawable/metro_blue_list_item.xml
similarity index 100%
rename from android-app-core/src/main/res/drawable/metro_blue_list_item.xml
rename to android-app/src/main/res/drawable/metro_blue_list_item.xml
diff --git a/android-app-core/src/main/res/drawable/metro_button_dark.xml b/android-app/src/main/res/drawable/metro_button_dark.xml
similarity index 100%
rename from android-app-core/src/main/res/drawable/metro_button_dark.xml
rename to android-app/src/main/res/drawable/metro_button_dark.xml
diff --git a/android-app-core/src/main/res/drawable/metro_button_dark_shape.xml b/android-app/src/main/res/drawable/metro_button_dark_shape.xml
similarity index 100%
rename from android-app-core/src/main/res/drawable/metro_button_dark_shape.xml
rename to android-app/src/main/res/drawable/metro_button_dark_shape.xml
diff --git a/android-app-core/src/main/res/drawable/metro_button_green.xml b/android-app/src/main/res/drawable/metro_button_green.xml
similarity index 100%
rename from android-app-core/src/main/res/drawable/metro_button_green.xml
rename to android-app/src/main/res/drawable/metro_button_green.xml
diff --git a/android-app-core/src/main/res/drawable/metro_button_green_shape.xml b/android-app/src/main/res/drawable/metro_button_green_shape.xml
similarity index 100%
rename from android-app-core/src/main/res/drawable/metro_button_green_shape.xml
rename to android-app/src/main/res/drawable/metro_button_green_shape.xml
diff --git a/android-app-core/src/main/res/drawable/metro_button_light.xml b/android-app/src/main/res/drawable/metro_button_light.xml
similarity index 100%
rename from android-app-core/src/main/res/drawable/metro_button_light.xml
rename to android-app/src/main/res/drawable/metro_button_light.xml
diff --git a/android-app-core/src/main/res/drawable/metro_button_light_shape.xml b/android-app/src/main/res/drawable/metro_button_light_shape.xml
similarity index 100%
rename from android-app-core/src/main/res/drawable/metro_button_light_shape.xml
rename to android-app/src/main/res/drawable/metro_button_light_shape.xml
diff --git a/android-app-core/src/main/res/drawable/metro_button_pressed.xml b/android-app/src/main/res/drawable/metro_button_pressed.xml
similarity index 100%
rename from android-app-core/src/main/res/drawable/metro_button_pressed.xml
rename to android-app/src/main/res/drawable/metro_button_pressed.xml
diff --git a/android-app-core/src/main/res/drawable/metro_button_purple.xml b/android-app/src/main/res/drawable/metro_button_purple.xml
similarity index 100%
rename from android-app-core/src/main/res/drawable/metro_button_purple.xml
rename to android-app/src/main/res/drawable/metro_button_purple.xml
diff --git a/android-app-core/src/main/res/drawable/metro_button_purple_shape.xml b/android-app/src/main/res/drawable/metro_button_purple_shape.xml
similarity index 100%
rename from android-app-core/src/main/res/drawable/metro_button_purple_shape.xml
rename to android-app/src/main/res/drawable/metro_button_purple_shape.xml
diff --git a/android-app-core/src/main/res/drawable/metro_green_list_item.xml b/android-app/src/main/res/drawable/metro_green_list_item.xml
similarity index 100%
rename from android-app-core/src/main/res/drawable/metro_green_list_item.xml
rename to android-app/src/main/res/drawable/metro_green_list_item.xml
diff --git a/android-app-core/src/main/res/drawable/metro_purple_list_item.xml b/android-app/src/main/res/drawable/metro_purple_list_item.xml
similarity index 100%
rename from android-app-core/src/main/res/drawable/metro_purple_list_item.xml
rename to android-app/src/main/res/drawable/metro_purple_list_item.xml
diff --git a/android-app-core/src/main/res/drawable/pane_background.xml b/android-app/src/main/res/drawable/pane_background.xml
similarity index 100%
rename from android-app-core/src/main/res/drawable/pane_background.xml
rename to android-app/src/main/res/drawable/pane_background.xml
diff --git a/android-app-core/src/main/res/drawable/violet_button.xml b/android-app/src/main/res/drawable/violet_button.xml
similarity index 100%
rename from android-app-core/src/main/res/drawable/violet_button.xml
rename to android-app/src/main/res/drawable/violet_button.xml
diff --git a/android-app-core/src/main/res/drawable/violet_button_dark.xml b/android-app/src/main/res/drawable/violet_button_dark.xml
similarity index 100%
rename from android-app-core/src/main/res/drawable/violet_button_dark.xml
rename to android-app/src/main/res/drawable/violet_button_dark.xml
diff --git a/android-app-core/src/main/res/drawable/violet_button_dark_shape.xml b/android-app/src/main/res/drawable/violet_button_dark_shape.xml
similarity index 100%
rename from android-app-core/src/main/res/drawable/violet_button_dark_shape.xml
rename to android-app/src/main/res/drawable/violet_button_dark_shape.xml
diff --git a/android-app-core/src/main/res/drawable/violet_button_shape.xml b/android-app/src/main/res/drawable/violet_button_shape.xml
similarity index 100%
rename from android-app-core/src/main/res/drawable/violet_button_shape.xml
rename to android-app/src/main/res/drawable/violet_button_shape.xml
diff --git a/android-app-core/src/main/res/layout/cpp_fixable_messages_dialog.xml b/android-app/src/main/res/layout/cpp_fixable_messages_dialog.xml
similarity index 100%
rename from android-app-core/src/main/res/layout/cpp_fixable_messages_dialog.xml
rename to android-app/src/main/res/layout/cpp_fixable_messages_dialog.xml
diff --git a/android-app-core/src/main/res/layout/cpp_fixable_messages_dialog_message.xml b/android-app/src/main/res/layout/cpp_fixable_messages_dialog_message.xml
similarity index 100%
rename from android-app-core/src/main/res/layout/cpp_fixable_messages_dialog_message.xml
rename to android-app/src/main/res/layout/cpp_fixable_messages_dialog_message.xml
diff --git a/android-app-core/src/main/res/layout/cpp_simple_button_0.xml b/android-app/src/main/res/layout/cpp_simple_button_0.xml
similarity index 100%
rename from android-app-core/src/main/res/layout/cpp_simple_button_0.xml
rename to android-app/src/main/res/layout/cpp_simple_button_0.xml
diff --git a/android-app-core/src/main/res/layout/cpp_simple_button_1.xml b/android-app/src/main/res/layout/cpp_simple_button_1.xml
similarity index 100%
rename from android-app-core/src/main/res/layout/cpp_simple_button_1.xml
rename to android-app/src/main/res/layout/cpp_simple_button_1.xml
diff --git a/android-app-core/src/main/res/layout/cpp_simple_button_2.xml b/android-app/src/main/res/layout/cpp_simple_button_2.xml
similarity index 100%
rename from android-app-core/src/main/res/layout/cpp_simple_button_2.xml
rename to android-app/src/main/res/layout/cpp_simple_button_2.xml
diff --git a/android-app-core/src/main/res/layout/cpp_simple_button_3.xml b/android-app/src/main/res/layout/cpp_simple_button_3.xml
similarity index 100%
rename from android-app-core/src/main/res/layout/cpp_simple_button_3.xml
rename to android-app/src/main/res/layout/cpp_simple_button_3.xml
diff --git a/android-app-core/src/main/res/layout/cpp_simple_button_4.xml b/android-app/src/main/res/layout/cpp_simple_button_4.xml
similarity index 100%
rename from android-app-core/src/main/res/layout/cpp_simple_button_4.xml
rename to android-app/src/main/res/layout/cpp_simple_button_4.xml
diff --git a/android-app-core/src/main/res/layout/cpp_simple_button_5.xml b/android-app/src/main/res/layout/cpp_simple_button_5.xml
similarity index 100%
rename from android-app-core/src/main/res/layout/cpp_simple_button_5.xml
rename to android-app/src/main/res/layout/cpp_simple_button_5.xml
diff --git a/android-app-core/src/main/res/layout/cpp_simple_button_6.xml b/android-app/src/main/res/layout/cpp_simple_button_6.xml
similarity index 100%
rename from android-app-core/src/main/res/layout/cpp_simple_button_6.xml
rename to android-app/src/main/res/layout/cpp_simple_button_6.xml
diff --git a/android-app-core/src/main/res/layout/cpp_simple_button_7.xml b/android-app/src/main/res/layout/cpp_simple_button_7.xml
similarity index 100%
rename from android-app-core/src/main/res/layout/cpp_simple_button_7.xml
rename to android-app/src/main/res/layout/cpp_simple_button_7.xml
diff --git a/android-app-core/src/main/res/layout/cpp_simple_button_8.xml b/android-app/src/main/res/layout/cpp_simple_button_8.xml
similarity index 100%
rename from android-app-core/src/main/res/layout/cpp_simple_button_8.xml
rename to android-app/src/main/res/layout/cpp_simple_button_8.xml
diff --git a/android-app-core/src/main/res/layout/cpp_simple_button_9.xml b/android-app/src/main/res/layout/cpp_simple_button_9.xml
similarity index 100%
rename from android-app-core/src/main/res/layout/cpp_simple_button_9.xml
rename to android-app/src/main/res/layout/cpp_simple_button_9.xml
diff --git a/android-app-core/src/main/res/layout/cpp_simple_button_app.xml b/android-app/src/main/res/layout/cpp_simple_button_app.xml
similarity index 100%
rename from android-app-core/src/main/res/layout/cpp_simple_button_app.xml
rename to android-app/src/main/res/layout/cpp_simple_button_app.xml
diff --git a/android-app-core/src/main/res/layout/cpp_simple_button_clear.xml b/android-app/src/main/res/layout/cpp_simple_button_clear.xml
similarity index 100%
rename from android-app-core/src/main/res/layout/cpp_simple_button_clear.xml
rename to android-app/src/main/res/layout/cpp_simple_button_clear.xml
diff --git a/android-app-core/src/main/res/layout/cpp_simple_button_copy.xml b/android-app/src/main/res/layout/cpp_simple_button_copy.xml
similarity index 100%
rename from android-app-core/src/main/res/layout/cpp_simple_button_copy.xml
rename to android-app/src/main/res/layout/cpp_simple_button_copy.xml
diff --git a/android-app-core/src/main/res/layout/cpp_simple_button_division.xml b/android-app/src/main/res/layout/cpp_simple_button_division.xml
similarity index 100%
rename from android-app-core/src/main/res/layout/cpp_simple_button_division.xml
rename to android-app/src/main/res/layout/cpp_simple_button_division.xml
diff --git a/android-app-core/src/main/res/layout/cpp_simple_button_dot.xml b/android-app/src/main/res/layout/cpp_simple_button_dot.xml
similarity index 100%
rename from android-app-core/src/main/res/layout/cpp_simple_button_dot.xml
rename to android-app/src/main/res/layout/cpp_simple_button_dot.xml
diff --git a/android-app-core/src/main/res/layout/cpp_simple_button_equals.xml b/android-app/src/main/res/layout/cpp_simple_button_equals.xml
similarity index 100%
rename from android-app-core/src/main/res/layout/cpp_simple_button_equals.xml
rename to android-app/src/main/res/layout/cpp_simple_button_equals.xml
diff --git a/android-app-core/src/main/res/layout/cpp_simple_button_erase.xml b/android-app/src/main/res/layout/cpp_simple_button_erase.xml
similarity index 100%
rename from android-app-core/src/main/res/layout/cpp_simple_button_erase.xml
rename to android-app/src/main/res/layout/cpp_simple_button_erase.xml
diff --git a/android-app-core/src/main/res/layout/cpp_simple_button_functions.xml b/android-app/src/main/res/layout/cpp_simple_button_functions.xml
similarity index 100%
rename from android-app-core/src/main/res/layout/cpp_simple_button_functions.xml
rename to android-app/src/main/res/layout/cpp_simple_button_functions.xml
diff --git a/android-app-core/src/main/res/layout/cpp_simple_button_history.xml b/android-app/src/main/res/layout/cpp_simple_button_history.xml
similarity index 100%
rename from android-app-core/src/main/res/layout/cpp_simple_button_history.xml
rename to android-app/src/main/res/layout/cpp_simple_button_history.xml
diff --git a/android-app-core/src/main/res/layout/cpp_simple_button_left.xml b/android-app/src/main/res/layout/cpp_simple_button_left.xml
similarity index 100%
rename from android-app-core/src/main/res/layout/cpp_simple_button_left.xml
rename to android-app/src/main/res/layout/cpp_simple_button_left.xml
diff --git a/android-app-core/src/main/res/layout/cpp_simple_button_like.xml b/android-app/src/main/res/layout/cpp_simple_button_like.xml
similarity index 100%
rename from android-app-core/src/main/res/layout/cpp_simple_button_like.xml
rename to android-app/src/main/res/layout/cpp_simple_button_like.xml
diff --git a/android-app-core/src/main/res/layout/cpp_simple_button_multiplication.xml b/android-app/src/main/res/layout/cpp_simple_button_multiplication.xml
similarity index 100%
rename from android-app-core/src/main/res/layout/cpp_simple_button_multiplication.xml
rename to android-app/src/main/res/layout/cpp_simple_button_multiplication.xml
diff --git a/android-app-core/src/main/res/layout/cpp_simple_button_operators.xml b/android-app/src/main/res/layout/cpp_simple_button_operators.xml
similarity index 100%
rename from android-app-core/src/main/res/layout/cpp_simple_button_operators.xml
rename to android-app/src/main/res/layout/cpp_simple_button_operators.xml
diff --git a/android-app-core/src/main/res/layout/cpp_simple_button_paste.xml b/android-app/src/main/res/layout/cpp_simple_button_paste.xml
similarity index 100%
rename from android-app-core/src/main/res/layout/cpp_simple_button_paste.xml
rename to android-app/src/main/res/layout/cpp_simple_button_paste.xml
diff --git a/android-app-core/src/main/res/layout/cpp_simple_button_percent.xml b/android-app/src/main/res/layout/cpp_simple_button_percent.xml
similarity index 100%
rename from android-app-core/src/main/res/layout/cpp_simple_button_percent.xml
rename to android-app/src/main/res/layout/cpp_simple_button_percent.xml
diff --git a/android-app-core/src/main/res/layout/cpp_simple_button_plus.xml b/android-app/src/main/res/layout/cpp_simple_button_plus.xml
similarity index 100%
rename from android-app-core/src/main/res/layout/cpp_simple_button_plus.xml
rename to android-app/src/main/res/layout/cpp_simple_button_plus.xml
diff --git a/android-app-core/src/main/res/layout/cpp_simple_button_power.xml b/android-app/src/main/res/layout/cpp_simple_button_power.xml
similarity index 100%
rename from android-app-core/src/main/res/layout/cpp_simple_button_power.xml
rename to android-app/src/main/res/layout/cpp_simple_button_power.xml
diff --git a/android-app-core/src/main/res/layout/cpp_simple_button_right.xml b/android-app/src/main/res/layout/cpp_simple_button_right.xml
similarity index 100%
rename from android-app-core/src/main/res/layout/cpp_simple_button_right.xml
rename to android-app/src/main/res/layout/cpp_simple_button_right.xml
diff --git a/android-app-core/src/main/res/layout/cpp_simple_button_round_brackets.xml b/android-app/src/main/res/layout/cpp_simple_button_round_brackets.xml
similarity index 100%
rename from android-app-core/src/main/res/layout/cpp_simple_button_round_brackets.xml
rename to android-app/src/main/res/layout/cpp_simple_button_round_brackets.xml
diff --git a/android-app-core/src/main/res/layout/cpp_simple_button_settings.xml b/android-app/src/main/res/layout/cpp_simple_button_settings.xml
similarity index 100%
rename from android-app-core/src/main/res/layout/cpp_simple_button_settings.xml
rename to android-app/src/main/res/layout/cpp_simple_button_settings.xml
diff --git a/android-app-core/src/main/res/layout/cpp_simple_button_subtraction.xml b/android-app/src/main/res/layout/cpp_simple_button_subtraction.xml
similarity index 100%
rename from android-app-core/src/main/res/layout/cpp_simple_button_subtraction.xml
rename to android-app/src/main/res/layout/cpp_simple_button_subtraction.xml
diff --git a/android-app-core/src/main/res/layout/cpp_simple_button_vars.xml b/android-app/src/main/res/layout/cpp_simple_button_vars.xml
similarity index 100%
rename from android-app-core/src/main/res/layout/cpp_simple_button_vars.xml
rename to android-app/src/main/res/layout/cpp_simple_button_vars.xml
diff --git a/android-app-core/src/main/res/layout/cpp_simple_keyboard.xml b/android-app/src/main/res/layout/cpp_simple_keyboard.xml
similarity index 100%
rename from android-app-core/src/main/res/layout/cpp_simple_keyboard.xml
rename to android-app/src/main/res/layout/cpp_simple_keyboard.xml
diff --git a/android-app-core/src/main/res/layout/cpp_simple_keyboard_lockscreen.xml b/android-app/src/main/res/layout/cpp_simple_keyboard_lockscreen.xml
similarity index 100%
rename from android-app-core/src/main/res/layout/cpp_simple_keyboard_lockscreen.xml
rename to android-app/src/main/res/layout/cpp_simple_keyboard_lockscreen.xml
diff --git a/android-app-core/src/main/res/layout/cpp_simple_keyboard_lockscreen_collapsed.xml b/android-app/src/main/res/layout/cpp_simple_keyboard_lockscreen_collapsed.xml
similarity index 100%
rename from android-app-core/src/main/res/layout/cpp_simple_keyboard_lockscreen_collapsed.xml
rename to android-app/src/main/res/layout/cpp_simple_keyboard_lockscreen_collapsed.xml
diff --git a/android-app-core/src/main/res/layout/cpp_unit_converter.xml b/android-app/src/main/res/layout/cpp_unit_converter.xml
similarity index 100%
rename from android-app-core/src/main/res/layout/cpp_unit_converter.xml
rename to android-app/src/main/res/layout/cpp_unit_converter.xml
diff --git a/android-app-onscreen/src/main/res/layout/onscreen_display.xml b/android-app/src/main/res/layout/onscreen_display.xml
similarity index 100%
rename from android-app-onscreen/src/main/res/layout/onscreen_display.xml
rename to android-app/src/main/res/layout/onscreen_display.xml
diff --git a/android-app-onscreen/src/main/res/layout/onscreen_editor.xml b/android-app/src/main/res/layout/onscreen_editor.xml
similarity index 100%
rename from android-app-onscreen/src/main/res/layout/onscreen_editor.xml
rename to android-app/src/main/res/layout/onscreen_editor.xml
diff --git a/android-app-onscreen/src/main/res/layout/onscreen_footer.xml b/android-app/src/main/res/layout/onscreen_footer.xml
similarity index 100%
rename from android-app-onscreen/src/main/res/layout/onscreen_footer.xml
rename to android-app/src/main/res/layout/onscreen_footer.xml
diff --git a/android-app-onscreen/src/main/res/layout/onscreen_header.xml b/android-app/src/main/res/layout/onscreen_header.xml
similarity index 100%
rename from android-app-onscreen/src/main/res/layout/onscreen_header.xml
rename to android-app/src/main/res/layout/onscreen_header.xml
diff --git a/android-app-onscreen/src/main/res/layout/onscreen_keyboard.xml b/android-app/src/main/res/layout/onscreen_keyboard.xml
similarity index 100%
rename from android-app-onscreen/src/main/res/layout/onscreen_keyboard.xml
rename to android-app/src/main/res/layout/onscreen_keyboard.xml
diff --git a/android-app-onscreen/src/main/res/layout/onscreen_layout.xml b/android-app/src/main/res/layout/onscreen_layout.xml
similarity index 100%
rename from android-app-onscreen/src/main/res/layout/onscreen_layout.xml
rename to android-app/src/main/res/layout/onscreen_layout.xml
diff --git a/android-app-widget/src/main/res/layout/widget_display.xml b/android-app/src/main/res/layout/widget_display.xml
similarity index 100%
rename from android-app-widget/src/main/res/layout/widget_display.xml
rename to android-app/src/main/res/layout/widget_display.xml
diff --git a/android-app-widget/src/main/res/layout/widget_editor.xml b/android-app/src/main/res/layout/widget_editor.xml
similarity index 100%
rename from android-app-widget/src/main/res/layout/widget_editor.xml
rename to android-app/src/main/res/layout/widget_editor.xml
diff --git a/android-app-widget/src/main/res/layout/widget_layout.xml b/android-app/src/main/res/layout/widget_layout.xml
similarity index 100%
rename from android-app-widget/src/main/res/layout/widget_layout.xml
rename to android-app/src/main/res/layout/widget_layout.xml
diff --git a/android-app-widget/src/main/res/layout/widget_layout_lockscreen.xml b/android-app/src/main/res/layout/widget_layout_lockscreen.xml
similarity index 100%
rename from android-app-widget/src/main/res/layout/widget_layout_lockscreen.xml
rename to android-app/src/main/res/layout/widget_layout_lockscreen.xml
diff --git a/android-app-widget/src/main/res/layout/widget_layout_lockscreen_collapsed.xml b/android-app/src/main/res/layout/widget_layout_lockscreen_collapsed.xml
similarity index 100%
rename from android-app-widget/src/main/res/layout/widget_layout_lockscreen_collapsed.xml
rename to android-app/src/main/res/layout/widget_layout_lockscreen_collapsed.xml
diff --git a/android-app-core/src/main/res/values-ar/text_about.xml b/android-app/src/main/res/values-ar/text_about.xml
similarity index 100%
rename from android-app-core/src/main/res/values-ar/text_about.xml
rename to android-app/src/main/res/values-ar/text_about.xml
diff --git a/android-app-core/src/main/res/values-ar/text_functions.xml b/android-app/src/main/res/values-ar/text_functions.xml
similarity index 100%
rename from android-app-core/src/main/res/values-ar/text_functions.xml
rename to android-app/src/main/res/values-ar/text_functions.xml
diff --git a/android-app-core/src/main/res/values-ar/text_operators.xml b/android-app/src/main/res/values-ar/text_operators.xml
similarity index 100%
rename from android-app-core/src/main/res/values-ar/text_operators.xml
rename to android-app/src/main/res/values-ar/text_operators.xml
diff --git a/android-app-core/src/main/res/values-ar/text_preferences.xml b/android-app/src/main/res/values-ar/text_preferences.xml
similarity index 100%
rename from android-app-core/src/main/res/values-ar/text_preferences.xml
rename to android-app/src/main/res/values-ar/text_preferences.xml
diff --git a/android-app-core/src/main/res/values-ar/text_strings.xml b/android-app/src/main/res/values-ar/text_strings.xml
similarity index 100%
rename from android-app-core/src/main/res/values-ar/text_strings.xml
rename to android-app/src/main/res/values-ar/text_strings.xml
diff --git a/android-app-core/src/main/res/values-ar/text_vars.xml b/android-app/src/main/res/values-ar/text_vars.xml
similarity index 100%
rename from android-app-core/src/main/res/values-ar/text_vars.xml
rename to android-app/src/main/res/values-ar/text_vars.xml
diff --git a/android-app-core/src/main/res/values-ar/text_wizard.xml b/android-app/src/main/res/values-ar/text_wizard.xml
similarity index 100%
rename from android-app-core/src/main/res/values-ar/text_wizard.xml
rename to android-app/src/main/res/values-ar/text_wizard.xml
diff --git a/android-app-core/src/main/res/values-cs/text_about.xml b/android-app/src/main/res/values-cs/text_about.xml
similarity index 100%
rename from android-app-core/src/main/res/values-cs/text_about.xml
rename to android-app/src/main/res/values-cs/text_about.xml
diff --git a/android-app-core/src/main/res/values-cs/text_functions.xml b/android-app/src/main/res/values-cs/text_functions.xml
similarity index 100%
rename from android-app-core/src/main/res/values-cs/text_functions.xml
rename to android-app/src/main/res/values-cs/text_functions.xml
diff --git a/android-app-core/src/main/res/values-cs/text_operators.xml b/android-app/src/main/res/values-cs/text_operators.xml
similarity index 100%
rename from android-app-core/src/main/res/values-cs/text_operators.xml
rename to android-app/src/main/res/values-cs/text_operators.xml
diff --git a/android-app-core/src/main/res/values-cs/text_preferences.xml b/android-app/src/main/res/values-cs/text_preferences.xml
similarity index 100%
rename from android-app-core/src/main/res/values-cs/text_preferences.xml
rename to android-app/src/main/res/values-cs/text_preferences.xml
diff --git a/android-app-core/src/main/res/values-cs/text_strings.xml b/android-app/src/main/res/values-cs/text_strings.xml
similarity index 100%
rename from android-app-core/src/main/res/values-cs/text_strings.xml
rename to android-app/src/main/res/values-cs/text_strings.xml
diff --git a/android-app-core/src/main/res/values-cs/text_vars.xml b/android-app/src/main/res/values-cs/text_vars.xml
similarity index 100%
rename from android-app-core/src/main/res/values-cs/text_vars.xml
rename to android-app/src/main/res/values-cs/text_vars.xml
diff --git a/android-app-core/src/main/res/values-cs/text_wizard.xml b/android-app/src/main/res/values-cs/text_wizard.xml
similarity index 100%
rename from android-app-core/src/main/res/values-cs/text_wizard.xml
rename to android-app/src/main/res/values-cs/text_wizard.xml
diff --git a/android-app-core/src/main/res/values-de/text_about.xml b/android-app/src/main/res/values-de/text_about.xml
similarity index 100%
rename from android-app-core/src/main/res/values-de/text_about.xml
rename to android-app/src/main/res/values-de/text_about.xml
diff --git a/android-app-core/src/main/res/values-de/text_functions.xml b/android-app/src/main/res/values-de/text_functions.xml
similarity index 100%
rename from android-app-core/src/main/res/values-de/text_functions.xml
rename to android-app/src/main/res/values-de/text_functions.xml
diff --git a/android-app-core/src/main/res/values-de/text_operators.xml b/android-app/src/main/res/values-de/text_operators.xml
similarity index 100%
rename from android-app-core/src/main/res/values-de/text_operators.xml
rename to android-app/src/main/res/values-de/text_operators.xml
diff --git a/android-app-core/src/main/res/values-de/text_preferences.xml b/android-app/src/main/res/values-de/text_preferences.xml
similarity index 100%
rename from android-app-core/src/main/res/values-de/text_preferences.xml
rename to android-app/src/main/res/values-de/text_preferences.xml
diff --git a/android-app-core/src/main/res/values-de/text_strings.xml b/android-app/src/main/res/values-de/text_strings.xml
similarity index 100%
rename from android-app-core/src/main/res/values-de/text_strings.xml
rename to android-app/src/main/res/values-de/text_strings.xml
diff --git a/android-app-core/src/main/res/values-de/text_vars.xml b/android-app/src/main/res/values-de/text_vars.xml
similarity index 100%
rename from android-app-core/src/main/res/values-de/text_vars.xml
rename to android-app/src/main/res/values-de/text_vars.xml
diff --git a/android-app-core/src/main/res/values-de/text_wizard.xml b/android-app/src/main/res/values-de/text_wizard.xml
similarity index 100%
rename from android-app-core/src/main/res/values-de/text_wizard.xml
rename to android-app/src/main/res/values-de/text_wizard.xml
diff --git a/android-app-core/src/main/res/values-el/text_about.xml b/android-app/src/main/res/values-el/text_about.xml
similarity index 100%
rename from android-app-core/src/main/res/values-el/text_about.xml
rename to android-app/src/main/res/values-el/text_about.xml
diff --git a/android-app-core/src/main/res/values-el/text_functions.xml b/android-app/src/main/res/values-el/text_functions.xml
similarity index 100%
rename from android-app-core/src/main/res/values-el/text_functions.xml
rename to android-app/src/main/res/values-el/text_functions.xml
diff --git a/android-app-core/src/main/res/values-el/text_operators.xml b/android-app/src/main/res/values-el/text_operators.xml
similarity index 100%
rename from android-app-core/src/main/res/values-el/text_operators.xml
rename to android-app/src/main/res/values-el/text_operators.xml
diff --git a/android-app-core/src/main/res/values-el/text_preferences.xml b/android-app/src/main/res/values-el/text_preferences.xml
similarity index 100%
rename from android-app-core/src/main/res/values-el/text_preferences.xml
rename to android-app/src/main/res/values-el/text_preferences.xml
diff --git a/android-app-core/src/main/res/values-el/text_strings.xml b/android-app/src/main/res/values-el/text_strings.xml
similarity index 100%
rename from android-app-core/src/main/res/values-el/text_strings.xml
rename to android-app/src/main/res/values-el/text_strings.xml
diff --git a/android-app-core/src/main/res/values-el/text_vars.xml b/android-app/src/main/res/values-el/text_vars.xml
similarity index 100%
rename from android-app-core/src/main/res/values-el/text_vars.xml
rename to android-app/src/main/res/values-el/text_vars.xml
diff --git a/android-app-core/src/main/res/values-el/text_wizard.xml b/android-app/src/main/res/values-el/text_wizard.xml
similarity index 100%
rename from android-app-core/src/main/res/values-el/text_wizard.xml
rename to android-app/src/main/res/values-el/text_wizard.xml
diff --git a/android-app-core/src/main/res/values-es/text_about.xml b/android-app/src/main/res/values-es/text_about.xml
similarity index 100%
rename from android-app-core/src/main/res/values-es/text_about.xml
rename to android-app/src/main/res/values-es/text_about.xml
diff --git a/android-app-core/src/main/res/values-es/text_functions.xml b/android-app/src/main/res/values-es/text_functions.xml
similarity index 100%
rename from android-app-core/src/main/res/values-es/text_functions.xml
rename to android-app/src/main/res/values-es/text_functions.xml
diff --git a/android-app-core/src/main/res/values-es/text_operators.xml b/android-app/src/main/res/values-es/text_operators.xml
similarity index 100%
rename from android-app-core/src/main/res/values-es/text_operators.xml
rename to android-app/src/main/res/values-es/text_operators.xml
diff --git a/android-app-core/src/main/res/values-es/text_preferences.xml b/android-app/src/main/res/values-es/text_preferences.xml
similarity index 100%
rename from android-app-core/src/main/res/values-es/text_preferences.xml
rename to android-app/src/main/res/values-es/text_preferences.xml
diff --git a/android-app-core/src/main/res/values-es/text_strings.xml b/android-app/src/main/res/values-es/text_strings.xml
similarity index 100%
rename from android-app-core/src/main/res/values-es/text_strings.xml
rename to android-app/src/main/res/values-es/text_strings.xml
diff --git a/android-app-core/src/main/res/values-es/text_vars.xml b/android-app/src/main/res/values-es/text_vars.xml
similarity index 100%
rename from android-app-core/src/main/res/values-es/text_vars.xml
rename to android-app/src/main/res/values-es/text_vars.xml
diff --git a/android-app-core/src/main/res/values-es/text_wizard.xml b/android-app/src/main/res/values-es/text_wizard.xml
similarity index 100%
rename from android-app-core/src/main/res/values-es/text_wizard.xml
rename to android-app/src/main/res/values-es/text_wizard.xml
diff --git a/android-app-core/src/main/res/values-fi/text_about.xml b/android-app/src/main/res/values-fi/text_about.xml
similarity index 100%
rename from android-app-core/src/main/res/values-fi/text_about.xml
rename to android-app/src/main/res/values-fi/text_about.xml
diff --git a/android-app-core/src/main/res/values-fi/text_functions.xml b/android-app/src/main/res/values-fi/text_functions.xml
similarity index 100%
rename from android-app-core/src/main/res/values-fi/text_functions.xml
rename to android-app/src/main/res/values-fi/text_functions.xml
diff --git a/android-app-core/src/main/res/values-fi/text_operators.xml b/android-app/src/main/res/values-fi/text_operators.xml
similarity index 100%
rename from android-app-core/src/main/res/values-fi/text_operators.xml
rename to android-app/src/main/res/values-fi/text_operators.xml
diff --git a/android-app-core/src/main/res/values-fi/text_preferences.xml b/android-app/src/main/res/values-fi/text_preferences.xml
similarity index 100%
rename from android-app-core/src/main/res/values-fi/text_preferences.xml
rename to android-app/src/main/res/values-fi/text_preferences.xml
diff --git a/android-app-core/src/main/res/values-fi/text_strings.xml b/android-app/src/main/res/values-fi/text_strings.xml
similarity index 100%
rename from android-app-core/src/main/res/values-fi/text_strings.xml
rename to android-app/src/main/res/values-fi/text_strings.xml
diff --git a/android-app-core/src/main/res/values-fi/text_vars.xml b/android-app/src/main/res/values-fi/text_vars.xml
similarity index 100%
rename from android-app-core/src/main/res/values-fi/text_vars.xml
rename to android-app/src/main/res/values-fi/text_vars.xml
diff --git a/android-app-core/src/main/res/values-fi/text_wizard.xml b/android-app/src/main/res/values-fi/text_wizard.xml
similarity index 100%
rename from android-app-core/src/main/res/values-fi/text_wizard.xml
rename to android-app/src/main/res/values-fi/text_wizard.xml
diff --git a/android-app-core/src/main/res/values-fr/text_about.xml b/android-app/src/main/res/values-fr/text_about.xml
similarity index 100%
rename from android-app-core/src/main/res/values-fr/text_about.xml
rename to android-app/src/main/res/values-fr/text_about.xml
diff --git a/android-app-core/src/main/res/values-fr/text_functions.xml b/android-app/src/main/res/values-fr/text_functions.xml
similarity index 100%
rename from android-app-core/src/main/res/values-fr/text_functions.xml
rename to android-app/src/main/res/values-fr/text_functions.xml
diff --git a/android-app-core/src/main/res/values-fr/text_operators.xml b/android-app/src/main/res/values-fr/text_operators.xml
similarity index 100%
rename from android-app-core/src/main/res/values-fr/text_operators.xml
rename to android-app/src/main/res/values-fr/text_operators.xml
diff --git a/android-app-core/src/main/res/values-fr/text_preferences.xml b/android-app/src/main/res/values-fr/text_preferences.xml
similarity index 100%
rename from android-app-core/src/main/res/values-fr/text_preferences.xml
rename to android-app/src/main/res/values-fr/text_preferences.xml
diff --git a/android-app-core/src/main/res/values-fr/text_strings.xml b/android-app/src/main/res/values-fr/text_strings.xml
similarity index 100%
rename from android-app-core/src/main/res/values-fr/text_strings.xml
rename to android-app/src/main/res/values-fr/text_strings.xml
diff --git a/android-app-core/src/main/res/values-fr/text_vars.xml b/android-app/src/main/res/values-fr/text_vars.xml
similarity index 100%
rename from android-app-core/src/main/res/values-fr/text_vars.xml
rename to android-app/src/main/res/values-fr/text_vars.xml
diff --git a/android-app-core/src/main/res/values-fr/text_wizard.xml b/android-app/src/main/res/values-fr/text_wizard.xml
similarity index 100%
rename from android-app-core/src/main/res/values-fr/text_wizard.xml
rename to android-app/src/main/res/values-fr/text_wizard.xml
diff --git a/android-app-core/src/main/res/values-it/text_about.xml b/android-app/src/main/res/values-it/text_about.xml
similarity index 100%
rename from android-app-core/src/main/res/values-it/text_about.xml
rename to android-app/src/main/res/values-it/text_about.xml
diff --git a/android-app-core/src/main/res/values-it/text_functions.xml b/android-app/src/main/res/values-it/text_functions.xml
similarity index 100%
rename from android-app-core/src/main/res/values-it/text_functions.xml
rename to android-app/src/main/res/values-it/text_functions.xml
diff --git a/android-app-core/src/main/res/values-it/text_operators.xml b/android-app/src/main/res/values-it/text_operators.xml
similarity index 100%
rename from android-app-core/src/main/res/values-it/text_operators.xml
rename to android-app/src/main/res/values-it/text_operators.xml
diff --git a/android-app-core/src/main/res/values-it/text_preferences.xml b/android-app/src/main/res/values-it/text_preferences.xml
similarity index 100%
rename from android-app-core/src/main/res/values-it/text_preferences.xml
rename to android-app/src/main/res/values-it/text_preferences.xml
diff --git a/android-app-core/src/main/res/values-it/text_strings.xml b/android-app/src/main/res/values-it/text_strings.xml
similarity index 100%
rename from android-app-core/src/main/res/values-it/text_strings.xml
rename to android-app/src/main/res/values-it/text_strings.xml
diff --git a/android-app-core/src/main/res/values-it/text_vars.xml b/android-app/src/main/res/values-it/text_vars.xml
similarity index 100%
rename from android-app-core/src/main/res/values-it/text_vars.xml
rename to android-app/src/main/res/values-it/text_vars.xml
diff --git a/android-app-core/src/main/res/values-it/text_wizard.xml b/android-app/src/main/res/values-it/text_wizard.xml
similarity index 100%
rename from android-app-core/src/main/res/values-it/text_wizard.xml
rename to android-app/src/main/res/values-it/text_wizard.xml
diff --git a/android-app-core/src/main/res/values-ja/text_about.xml b/android-app/src/main/res/values-ja/text_about.xml
similarity index 100%
rename from android-app-core/src/main/res/values-ja/text_about.xml
rename to android-app/src/main/res/values-ja/text_about.xml
diff --git a/android-app-core/src/main/res/values-ja/text_functions.xml b/android-app/src/main/res/values-ja/text_functions.xml
similarity index 100%
rename from android-app-core/src/main/res/values-ja/text_functions.xml
rename to android-app/src/main/res/values-ja/text_functions.xml
diff --git a/android-app-core/src/main/res/values-ja/text_operators.xml b/android-app/src/main/res/values-ja/text_operators.xml
similarity index 100%
rename from android-app-core/src/main/res/values-ja/text_operators.xml
rename to android-app/src/main/res/values-ja/text_operators.xml
diff --git a/android-app-core/src/main/res/values-ja/text_preferences.xml b/android-app/src/main/res/values-ja/text_preferences.xml
similarity index 100%
rename from android-app-core/src/main/res/values-ja/text_preferences.xml
rename to android-app/src/main/res/values-ja/text_preferences.xml
diff --git a/android-app-core/src/main/res/values-ja/text_strings.xml b/android-app/src/main/res/values-ja/text_strings.xml
similarity index 100%
rename from android-app-core/src/main/res/values-ja/text_strings.xml
rename to android-app/src/main/res/values-ja/text_strings.xml
diff --git a/android-app-core/src/main/res/values-ja/text_vars.xml b/android-app/src/main/res/values-ja/text_vars.xml
similarity index 100%
rename from android-app-core/src/main/res/values-ja/text_vars.xml
rename to android-app/src/main/res/values-ja/text_vars.xml
diff --git a/android-app-core/src/main/res/values-ja/text_wizard.xml b/android-app/src/main/res/values-ja/text_wizard.xml
similarity index 100%
rename from android-app-core/src/main/res/values-ja/text_wizard.xml
rename to android-app/src/main/res/values-ja/text_wizard.xml
diff --git a/android-app-core/src/main/res/values-nl/text_about.xml b/android-app/src/main/res/values-nl/text_about.xml
similarity index 100%
rename from android-app-core/src/main/res/values-nl/text_about.xml
rename to android-app/src/main/res/values-nl/text_about.xml
diff --git a/android-app-core/src/main/res/values-nl/text_functions.xml b/android-app/src/main/res/values-nl/text_functions.xml
similarity index 100%
rename from android-app-core/src/main/res/values-nl/text_functions.xml
rename to android-app/src/main/res/values-nl/text_functions.xml
diff --git a/android-app-core/src/main/res/values-nl/text_operators.xml b/android-app/src/main/res/values-nl/text_operators.xml
similarity index 100%
rename from android-app-core/src/main/res/values-nl/text_operators.xml
rename to android-app/src/main/res/values-nl/text_operators.xml
diff --git a/android-app-core/src/main/res/values-nl/text_preferences.xml b/android-app/src/main/res/values-nl/text_preferences.xml
similarity index 100%
rename from android-app-core/src/main/res/values-nl/text_preferences.xml
rename to android-app/src/main/res/values-nl/text_preferences.xml
diff --git a/android-app-core/src/main/res/values-nl/text_strings.xml b/android-app/src/main/res/values-nl/text_strings.xml
similarity index 100%
rename from android-app-core/src/main/res/values-nl/text_strings.xml
rename to android-app/src/main/res/values-nl/text_strings.xml
diff --git a/android-app-core/src/main/res/values-nl/text_vars.xml b/android-app/src/main/res/values-nl/text_vars.xml
similarity index 100%
rename from android-app-core/src/main/res/values-nl/text_vars.xml
rename to android-app/src/main/res/values-nl/text_vars.xml
diff --git a/android-app-core/src/main/res/values-nl/text_wizard.xml b/android-app/src/main/res/values-nl/text_wizard.xml
similarity index 100%
rename from android-app-core/src/main/res/values-nl/text_wizard.xml
rename to android-app/src/main/res/values-nl/text_wizard.xml
diff --git a/android-app-core/src/main/res/values-pl/text_about.xml b/android-app/src/main/res/values-pl/text_about.xml
similarity index 100%
rename from android-app-core/src/main/res/values-pl/text_about.xml
rename to android-app/src/main/res/values-pl/text_about.xml
diff --git a/android-app-core/src/main/res/values-pl/text_functions.xml b/android-app/src/main/res/values-pl/text_functions.xml
similarity index 100%
rename from android-app-core/src/main/res/values-pl/text_functions.xml
rename to android-app/src/main/res/values-pl/text_functions.xml
diff --git a/android-app-core/src/main/res/values-pl/text_operators.xml b/android-app/src/main/res/values-pl/text_operators.xml
similarity index 100%
rename from android-app-core/src/main/res/values-pl/text_operators.xml
rename to android-app/src/main/res/values-pl/text_operators.xml
diff --git a/android-app-core/src/main/res/values-pl/text_preferences.xml b/android-app/src/main/res/values-pl/text_preferences.xml
similarity index 100%
rename from android-app-core/src/main/res/values-pl/text_preferences.xml
rename to android-app/src/main/res/values-pl/text_preferences.xml
diff --git a/android-app-core/src/main/res/values-pl/text_strings.xml b/android-app/src/main/res/values-pl/text_strings.xml
similarity index 100%
rename from android-app-core/src/main/res/values-pl/text_strings.xml
rename to android-app/src/main/res/values-pl/text_strings.xml
diff --git a/android-app-core/src/main/res/values-pl/text_vars.xml b/android-app/src/main/res/values-pl/text_vars.xml
similarity index 100%
rename from android-app-core/src/main/res/values-pl/text_vars.xml
rename to android-app/src/main/res/values-pl/text_vars.xml
diff --git a/android-app-core/src/main/res/values-pl/text_wizard.xml b/android-app/src/main/res/values-pl/text_wizard.xml
similarity index 100%
rename from android-app-core/src/main/res/values-pl/text_wizard.xml
rename to android-app/src/main/res/values-pl/text_wizard.xml
diff --git a/android-app-core/src/main/res/values-pt-rbr/text_about.xml b/android-app/src/main/res/values-pt-rbr/text_about.xml
similarity index 100%
rename from android-app-core/src/main/res/values-pt-rbr/text_about.xml
rename to android-app/src/main/res/values-pt-rbr/text_about.xml
diff --git a/android-app-core/src/main/res/values-pt-rbr/text_functions.xml b/android-app/src/main/res/values-pt-rbr/text_functions.xml
similarity index 100%
rename from android-app-core/src/main/res/values-pt-rbr/text_functions.xml
rename to android-app/src/main/res/values-pt-rbr/text_functions.xml
diff --git a/android-app-core/src/main/res/values-pt-rbr/text_operators.xml b/android-app/src/main/res/values-pt-rbr/text_operators.xml
similarity index 100%
rename from android-app-core/src/main/res/values-pt-rbr/text_operators.xml
rename to android-app/src/main/res/values-pt-rbr/text_operators.xml
diff --git a/android-app-core/src/main/res/values-pt-rbr/text_preferences.xml b/android-app/src/main/res/values-pt-rbr/text_preferences.xml
similarity index 100%
rename from android-app-core/src/main/res/values-pt-rbr/text_preferences.xml
rename to android-app/src/main/res/values-pt-rbr/text_preferences.xml
diff --git a/android-app-core/src/main/res/values-pt-rbr/text_strings.xml b/android-app/src/main/res/values-pt-rbr/text_strings.xml
similarity index 100%
rename from android-app-core/src/main/res/values-pt-rbr/text_strings.xml
rename to android-app/src/main/res/values-pt-rbr/text_strings.xml
diff --git a/android-app-core/src/main/res/values-pt-rbr/text_vars.xml b/android-app/src/main/res/values-pt-rbr/text_vars.xml
similarity index 100%
rename from android-app-core/src/main/res/values-pt-rbr/text_vars.xml
rename to android-app/src/main/res/values-pt-rbr/text_vars.xml
diff --git a/android-app-core/src/main/res/values-pt-rbr/text_wizard.xml b/android-app/src/main/res/values-pt-rbr/text_wizard.xml
similarity index 100%
rename from android-app-core/src/main/res/values-pt-rbr/text_wizard.xml
rename to android-app/src/main/res/values-pt-rbr/text_wizard.xml
diff --git a/android-app-core/src/main/res/values-ru/text_about.xml b/android-app/src/main/res/values-ru/text_about.xml
similarity index 100%
rename from android-app-core/src/main/res/values-ru/text_about.xml
rename to android-app/src/main/res/values-ru/text_about.xml
diff --git a/android-app-core/src/main/res/values-ru/text_functions.xml b/android-app/src/main/res/values-ru/text_functions.xml
similarity index 100%
rename from android-app-core/src/main/res/values-ru/text_functions.xml
rename to android-app/src/main/res/values-ru/text_functions.xml
diff --git a/android-app-core/src/main/res/values-ru/text_operators.xml b/android-app/src/main/res/values-ru/text_operators.xml
similarity index 100%
rename from android-app-core/src/main/res/values-ru/text_operators.xml
rename to android-app/src/main/res/values-ru/text_operators.xml
diff --git a/android-app-core/src/main/res/values-ru/text_preferences.xml b/android-app/src/main/res/values-ru/text_preferences.xml
similarity index 100%
rename from android-app-core/src/main/res/values-ru/text_preferences.xml
rename to android-app/src/main/res/values-ru/text_preferences.xml
diff --git a/android-app-core/src/main/res/values-ru/text_release_notes.xml b/android-app/src/main/res/values-ru/text_release_notes.xml
similarity index 100%
rename from android-app-core/src/main/res/values-ru/text_release_notes.xml
rename to android-app/src/main/res/values-ru/text_release_notes.xml
diff --git a/android-app-core/src/main/res/values-ru/text_strings.xml b/android-app/src/main/res/values-ru/text_strings.xml
similarity index 100%
rename from android-app-core/src/main/res/values-ru/text_strings.xml
rename to android-app/src/main/res/values-ru/text_strings.xml
diff --git a/android-app-core/src/main/res/values-ru/text_vars.xml b/android-app/src/main/res/values-ru/text_vars.xml
similarity index 100%
rename from android-app-core/src/main/res/values-ru/text_vars.xml
rename to android-app/src/main/res/values-ru/text_vars.xml
diff --git a/android-app-core/src/main/res/values-ru/text_wizard.xml b/android-app/src/main/res/values-ru/text_wizard.xml
similarity index 100%
rename from android-app-core/src/main/res/values-ru/text_wizard.xml
rename to android-app/src/main/res/values-ru/text_wizard.xml
diff --git a/android-app-core/src/main/res/values-uk/text_about.xml b/android-app/src/main/res/values-uk/text_about.xml
similarity index 100%
rename from android-app-core/src/main/res/values-uk/text_about.xml
rename to android-app/src/main/res/values-uk/text_about.xml
diff --git a/android-app-core/src/main/res/values-uk/text_functions.xml b/android-app/src/main/res/values-uk/text_functions.xml
similarity index 100%
rename from android-app-core/src/main/res/values-uk/text_functions.xml
rename to android-app/src/main/res/values-uk/text_functions.xml
diff --git a/android-app-core/src/main/res/values-uk/text_operators.xml b/android-app/src/main/res/values-uk/text_operators.xml
similarity index 100%
rename from android-app-core/src/main/res/values-uk/text_operators.xml
rename to android-app/src/main/res/values-uk/text_operators.xml
diff --git a/android-app-core/src/main/res/values-uk/text_preferences.xml b/android-app/src/main/res/values-uk/text_preferences.xml
similarity index 100%
rename from android-app-core/src/main/res/values-uk/text_preferences.xml
rename to android-app/src/main/res/values-uk/text_preferences.xml
diff --git a/android-app-core/src/main/res/values-uk/text_strings.xml b/android-app/src/main/res/values-uk/text_strings.xml
similarity index 100%
rename from android-app-core/src/main/res/values-uk/text_strings.xml
rename to android-app/src/main/res/values-uk/text_strings.xml
diff --git a/android-app-core/src/main/res/values-uk/text_vars.xml b/android-app/src/main/res/values-uk/text_vars.xml
similarity index 100%
rename from android-app-core/src/main/res/values-uk/text_vars.xml
rename to android-app/src/main/res/values-uk/text_vars.xml
diff --git a/android-app-core/src/main/res/values-uk/text_wizard.xml b/android-app/src/main/res/values-uk/text_wizard.xml
similarity index 100%
rename from android-app-core/src/main/res/values-uk/text_wizard.xml
rename to android-app/src/main/res/values-uk/text_wizard.xml
diff --git a/android-app-core/src/main/res/values-vi/text_about.xml b/android-app/src/main/res/values-vi/text_about.xml
similarity index 100%
rename from android-app-core/src/main/res/values-vi/text_about.xml
rename to android-app/src/main/res/values-vi/text_about.xml
diff --git a/android-app-core/src/main/res/values-vi/text_functions.xml b/android-app/src/main/res/values-vi/text_functions.xml
similarity index 100%
rename from android-app-core/src/main/res/values-vi/text_functions.xml
rename to android-app/src/main/res/values-vi/text_functions.xml
diff --git a/android-app-core/src/main/res/values-vi/text_operators.xml b/android-app/src/main/res/values-vi/text_operators.xml
similarity index 100%
rename from android-app-core/src/main/res/values-vi/text_operators.xml
rename to android-app/src/main/res/values-vi/text_operators.xml
diff --git a/android-app-core/src/main/res/values-vi/text_preferences.xml b/android-app/src/main/res/values-vi/text_preferences.xml
similarity index 100%
rename from android-app-core/src/main/res/values-vi/text_preferences.xml
rename to android-app/src/main/res/values-vi/text_preferences.xml
diff --git a/android-app-core/src/main/res/values-vi/text_strings.xml b/android-app/src/main/res/values-vi/text_strings.xml
similarity index 100%
rename from android-app-core/src/main/res/values-vi/text_strings.xml
rename to android-app/src/main/res/values-vi/text_strings.xml
diff --git a/android-app-core/src/main/res/values-vi/text_vars.xml b/android-app/src/main/res/values-vi/text_vars.xml
similarity index 100%
rename from android-app-core/src/main/res/values-vi/text_vars.xml
rename to android-app/src/main/res/values-vi/text_vars.xml
diff --git a/android-app-core/src/main/res/values-vi/text_wizard.xml b/android-app/src/main/res/values-vi/text_wizard.xml
similarity index 100%
rename from android-app-core/src/main/res/values-vi/text_wizard.xml
rename to android-app/src/main/res/values-vi/text_wizard.xml
diff --git a/android-app-core/src/main/res/values-zh-rcn/text_about.xml b/android-app/src/main/res/values-zh-rcn/text_about.xml
similarity index 100%
rename from android-app-core/src/main/res/values-zh-rcn/text_about.xml
rename to android-app/src/main/res/values-zh-rcn/text_about.xml
diff --git a/android-app-core/src/main/res/values-zh-rcn/text_functions.xml b/android-app/src/main/res/values-zh-rcn/text_functions.xml
similarity index 100%
rename from android-app-core/src/main/res/values-zh-rcn/text_functions.xml
rename to android-app/src/main/res/values-zh-rcn/text_functions.xml
diff --git a/android-app-core/src/main/res/values-zh-rcn/text_operators.xml b/android-app/src/main/res/values-zh-rcn/text_operators.xml
similarity index 100%
rename from android-app-core/src/main/res/values-zh-rcn/text_operators.xml
rename to android-app/src/main/res/values-zh-rcn/text_operators.xml
diff --git a/android-app-core/src/main/res/values-zh-rcn/text_preferences.xml b/android-app/src/main/res/values-zh-rcn/text_preferences.xml
similarity index 100%
rename from android-app-core/src/main/res/values-zh-rcn/text_preferences.xml
rename to android-app/src/main/res/values-zh-rcn/text_preferences.xml
diff --git a/android-app-core/src/main/res/values-zh-rcn/text_strings.xml b/android-app/src/main/res/values-zh-rcn/text_strings.xml
similarity index 100%
rename from android-app-core/src/main/res/values-zh-rcn/text_strings.xml
rename to android-app/src/main/res/values-zh-rcn/text_strings.xml
diff --git a/android-app-core/src/main/res/values-zh-rcn/text_vars.xml b/android-app/src/main/res/values-zh-rcn/text_vars.xml
similarity index 100%
rename from android-app-core/src/main/res/values-zh-rcn/text_vars.xml
rename to android-app/src/main/res/values-zh-rcn/text_vars.xml
diff --git a/android-app-core/src/main/res/values-zh-rcn/text_wizard.xml b/android-app/src/main/res/values-zh-rcn/text_wizard.xml
similarity index 100%
rename from android-app-core/src/main/res/values-zh-rcn/text_wizard.xml
rename to android-app/src/main/res/values-zh-rcn/text_wizard.xml
diff --git a/android-app-core/src/main/res/values-zh-rtw/text_about.xml b/android-app/src/main/res/values-zh-rtw/text_about.xml
similarity index 100%
rename from android-app-core/src/main/res/values-zh-rtw/text_about.xml
rename to android-app/src/main/res/values-zh-rtw/text_about.xml
diff --git a/android-app-core/src/main/res/values-zh-rtw/text_functions.xml b/android-app/src/main/res/values-zh-rtw/text_functions.xml
similarity index 100%
rename from android-app-core/src/main/res/values-zh-rtw/text_functions.xml
rename to android-app/src/main/res/values-zh-rtw/text_functions.xml
diff --git a/android-app-core/src/main/res/values-zh-rtw/text_operators.xml b/android-app/src/main/res/values-zh-rtw/text_operators.xml
similarity index 100%
rename from android-app-core/src/main/res/values-zh-rtw/text_operators.xml
rename to android-app/src/main/res/values-zh-rtw/text_operators.xml
diff --git a/android-app-core/src/main/res/values-zh-rtw/text_preferences.xml b/android-app/src/main/res/values-zh-rtw/text_preferences.xml
similarity index 100%
rename from android-app-core/src/main/res/values-zh-rtw/text_preferences.xml
rename to android-app/src/main/res/values-zh-rtw/text_preferences.xml
diff --git a/android-app-core/src/main/res/values-zh-rtw/text_strings.xml b/android-app/src/main/res/values-zh-rtw/text_strings.xml
similarity index 100%
rename from android-app-core/src/main/res/values-zh-rtw/text_strings.xml
rename to android-app/src/main/res/values-zh-rtw/text_strings.xml
diff --git a/android-app-core/src/main/res/values-zh-rtw/text_vars.xml b/android-app/src/main/res/values-zh-rtw/text_vars.xml
similarity index 100%
rename from android-app-core/src/main/res/values-zh-rtw/text_vars.xml
rename to android-app/src/main/res/values-zh-rtw/text_vars.xml
diff --git a/android-app-core/src/main/res/values-zh-rtw/text_wizard.xml b/android-app/src/main/res/values-zh-rtw/text_wizard.xml
similarity index 100%
rename from android-app-core/src/main/res/values-zh-rtw/text_wizard.xml
rename to android-app/src/main/res/values-zh-rtw/text_wizard.xml
diff --git a/android-app-core/src/main/res/values/admob.xml b/android-app/src/main/res/values/admob.xml
similarity index 100%
rename from android-app-core/src/main/res/values/admob.xml
rename to android-app/src/main/res/values/admob.xml
diff --git a/android-app/src/main/res/values/arrays.xml b/android-app/src/main/res/values/arrays.xml
index 23de9ed4..ee30e48f 100644
--- a/android-app/src/main/res/values/arrays.xml
+++ b/android-app/src/main/res/values/arrays.xml
@@ -101,4 +101,36 @@
- bin
+
+
+ - @string/cpp_solid_line_style
+ - @string/cpp_dashed_line_style
+ - @string/cpp_dotted_line_style
+ - @string/cpp_dash_dotted_line_style
+
+
+
+ - @string/cpp_monochrome_line_color_type
+ - @string/cpp_color_map_line_color_type
+
+
+
+ - @string/p_white_line_color
+ - @string/p_blue_line_color
+ - @string/p_red_line_color
+ - @string/p_green_line_color
+ - @string/p_grey_line_color
+
+
+ - white
+ - blue
+ - red
+ - green
+ - grey
+
\ No newline at end of file
diff --git a/android-app-core/src/main/res/values/attributes.xml b/android-app/src/main/res/values/attributes.xml
similarity index 100%
rename from android-app-core/src/main/res/values/attributes.xml
rename to android-app/src/main/res/values/attributes.xml
diff --git a/android-app-core/src/main/res/values/colors.xml b/android-app/src/main/res/values/colors.xml
similarity index 96%
rename from android-app-core/src/main/res/values/colors.xml
rename to android-app/src/main/res/values/colors.xml
index e7fed57d..1917354d 100644
--- a/android-app-core/src/main/res/values/colors.xml
+++ b/android-app/src/main/res/values/colors.xml
@@ -36,4 +36,5 @@
#088e3a
#651456
#393939
+ #ff707070
\ No newline at end of file
diff --git a/android-app-core/src/main/res/values/dimens.xml b/android-app/src/main/res/values/dimens.xml
similarity index 60%
rename from android-app-core/src/main/res/values/dimens.xml
rename to android-app/src/main/res/values/dimens.xml
index 96f59461..9390fec6 100644
--- a/android-app-core/src/main/res/values/dimens.xml
+++ b/android-app/src/main/res/values/dimens.xml
@@ -1,26 +1,11 @@
-
-
+
+ 16sp
+ 25sp
+ 16sp
+ 25sp
+ 6dp
+ 300dp
20sp
0.5dp
2.5dp
diff --git a/android-app-core/src/main/res/values/ids.xml b/android-app/src/main/res/values/ids.xml
similarity index 95%
rename from android-app-core/src/main/res/values/ids.xml
rename to android-app/src/main/res/values/ids.xml
index aa8c5264..e21a5ace 100644
--- a/android-app-core/src/main/res/values/ids.xml
+++ b/android-app/src/main/res/values/ids.xml
@@ -60,7 +60,4 @@
-
-
-
\ No newline at end of file
diff --git a/android-app-core/src/main/res/values/styles.xml b/android-app/src/main/res/values/styles.xml
similarity index 86%
rename from android-app-core/src/main/res/values/styles.xml
rename to android-app/src/main/res/values/styles.xml
index 25a17c9b..5822e305 100644
--- a/android-app-core/src/main/res/values/styles.xml
+++ b/android-app/src/main/res/values/styles.xml
@@ -122,4 +122,23 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/android-app-core/src/main/res/values/text_about.xml b/android-app/src/main/res/values/text_about.xml
similarity index 100%
rename from android-app-core/src/main/res/values/text_about.xml
rename to android-app/src/main/res/values/text_about.xml
diff --git a/android-app-core/src/main/res/values/text_functions.xml b/android-app/src/main/res/values/text_functions.xml
similarity index 100%
rename from android-app-core/src/main/res/values/text_functions.xml
rename to android-app/src/main/res/values/text_functions.xml
diff --git a/android-app-core/src/main/res/values/text_operators.xml b/android-app/src/main/res/values/text_operators.xml
similarity index 100%
rename from android-app-core/src/main/res/values/text_operators.xml
rename to android-app/src/main/res/values/text_operators.xml
diff --git a/android-app-core/src/main/res/values/text_preferences.xml b/android-app/src/main/res/values/text_preferences.xml
similarity index 100%
rename from android-app-core/src/main/res/values/text_preferences.xml
rename to android-app/src/main/res/values/text_preferences.xml
diff --git a/android-app-core/src/main/res/values/text_release_notes.xml b/android-app/src/main/res/values/text_release_notes.xml
similarity index 100%
rename from android-app-core/src/main/res/values/text_release_notes.xml
rename to android-app/src/main/res/values/text_release_notes.xml
diff --git a/android-app-core/src/main/res/values/text_strings.xml b/android-app/src/main/res/values/text_strings.xml
similarity index 100%
rename from android-app-core/src/main/res/values/text_strings.xml
rename to android-app/src/main/res/values/text_strings.xml
diff --git a/android-app-core/src/main/res/values/text_vars.xml b/android-app/src/main/res/values/text_vars.xml
similarity index 100%
rename from android-app-core/src/main/res/values/text_vars.xml
rename to android-app/src/main/res/values/text_vars.xml
diff --git a/android-app-core/src/main/res/values/text_wizard.xml b/android-app/src/main/res/values/text_wizard.xml
similarity index 100%
rename from android-app-core/src/main/res/values/text_wizard.xml
rename to android-app/src/main/res/values/text_wizard.xml
diff --git a/android-app-core/src/main/res/values/theme_gray.xml b/android-app/src/main/res/values/theme_gray.xml
similarity index 100%
rename from android-app-core/src/main/res/values/theme_gray.xml
rename to android-app/src/main/res/values/theme_gray.xml
diff --git a/android-app-core/src/main/res/values/theme_light_blue.xml b/android-app/src/main/res/values/theme_light_blue.xml
similarity index 100%
rename from android-app-core/src/main/res/values/theme_light_blue.xml
rename to android-app/src/main/res/values/theme_light_blue.xml
diff --git a/android-app-core/src/main/res/values/theme_metro_blue.xml b/android-app/src/main/res/values/theme_metro_blue.xml
similarity index 100%
rename from android-app-core/src/main/res/values/theme_metro_blue.xml
rename to android-app/src/main/res/values/theme_metro_blue.xml
diff --git a/android-app-core/src/main/res/values/theme_metro_green.xml b/android-app/src/main/res/values/theme_metro_green.xml
similarity index 100%
rename from android-app-core/src/main/res/values/theme_metro_green.xml
rename to android-app/src/main/res/values/theme_metro_green.xml
diff --git a/android-app-core/src/main/res/values/theme_metro_purple.xml b/android-app/src/main/res/values/theme_metro_purple.xml
similarity index 100%
rename from android-app-core/src/main/res/values/theme_metro_purple.xml
rename to android-app/src/main/res/values/theme_metro_purple.xml
diff --git a/android-app-core/src/main/res/values/theme_violet.xml b/android-app/src/main/res/values/theme_violet.xml
similarity index 100%
rename from android-app-core/src/main/res/values/theme_violet.xml
rename to android-app/src/main/res/values/theme_violet.xml
diff --git a/settings.gradle b/settings.gradle
index 14f05a24..a957f493 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1,2 +1,2 @@
-include ':core', ':android-app-core', ':android-app-widget', ':android-app-onscreen', ':android-app'
-include ':android-app-core-tests', ':android-app-tests'
+include ':core', ':android-app'
+include ':android-app-tests'