From 7a519ea493c2c38d602dcd3045da81d4d4c0ce2c Mon Sep 17 00:00:00 2001
From: Jacek Kowalski <Jacek@jacekk.info>
Date: Sat, 17 Jan 2015 21:10:28 +0000
Subject: [PATCH] Switch to Android Studio IDE and use English as the default language.
---
app/src/main/res/layout/main.xml | 195 ++++++++++
.gitignore | 6
app/src/main/java/net/jacekk/bridge/BridgeResult.java | 2
app/src/main/res/values/styles.xml | 5
app/src/main/java/net/jacekk/bridge/android/MainActivity.java | 140 +++---
gradle/wrapper/gradle-wrapper.properties | 6
.idea/misc.xml | 21
app/src/main/java/net/jacekk/bridge/BridgeCompute.java | 224 +++++++++++
app/src/main/res/drawable-mdpi/icon.png | 0
.idea/modules.xml | 3
.idea/gradle.xml | 19 +
build.gradle | 19 +
Bridge.iml | 21 +
app/build.gradle | 24 +
app/src/main/res/drawable-xxhdpi/icon.png | 0
app/app.iml | 91 ++++
app/.gitignore | 1
settings.gradle | 1
app/src/main/res/values/strings.xml | 37 +
.idea/copyright/profiles_settings.xml | 4
app/src/androidTest/java/net/jacekk/bridge/ApplicationTest.java | 10
app/src/main/AndroidManifest.xml | 12
app/src/main/res/values-pl/strings.xml | 37 +
app/src/main/res/drawable-xhdpi/icon.png | 0
/dev/null | 196 ----------
app/src/main/res/drawable-ldpi/icon.png | 0
.idea/.name | 2
app/src/main/res/drawable-hdpi/icon.png | 0
app/proguard-rules.pro | 9
29 files changed, 804 insertions(+), 281 deletions(-)
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..afbdab3
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,6 @@
+.gradle
+/local.properties
+/.idea/workspace.xml
+/.idea/libraries
+.DS_Store
+/build
diff --git a/.idea/.name b/.idea/.name
index cc9ea0d..7697dfa 100644
--- a/.idea/.name
+++ b/.idea/.name
@@ -1 +1 @@
-Obliczenia brydżowe
\ No newline at end of file
+Bridge
\ No newline at end of file
diff --git a/.idea/codeStyleSettings.xml b/.idea/codeStyleSettings.xml
deleted file mode 100644
index cab819f..0000000
--- a/.idea/codeStyleSettings.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="ProjectCodeStyleSettingsManager">
- <option name="PER_PROJECT_SETTINGS">
- <value>
- <XML>
- <option name="XML_LEGACY_SETTINGS_IMPORTED" value="true" />
- </XML>
- </value>
- </option>
- <option name="PREFERRED_PROJECT_CODE_STYLE" value="Default (1)" />
- </component>
-</project>
-
diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml
index 3572571..e7bedf3 100644
--- a/.idea/copyright/profiles_settings.xml
+++ b/.idea/copyright/profiles_settings.xml
@@ -1,5 +1,3 @@
<component name="CopyrightManager">
- <settings default="">
- <module2copyright />
- </settings>
+ <settings default="" />
</component>
\ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
new file mode 100644
index 0000000..490397e
--- /dev/null
+++ b/.idea/gradle.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="GradleSettings">
+ <option name="linkedExternalProjectsSettings">
+ <GradleProjectSettings>
+ <option name="distributionType" value="DEFAULT_WRAPPED" />
+ <option name="externalProjectPath" value="$PROJECT_DIR$" />
+ <option name="gradleHome" value="$APPLICATION_HOME_DIR$/plugins/gradle" />
+ <option name="modules">
+ <set>
+ <option value="$PROJECT_DIR$" />
+ <option value="$PROJECT_DIR$/app" />
+ </set>
+ </option>
+ </GradleProjectSettings>
+ </option>
+ </component>
+</project>
+
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
deleted file mode 100644
index 9df8655..0000000
--- a/.idea/inspectionProfiles/Project_Default.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<component name="InspectionProjectProfileManager">
- <profile version="1.0" is_locked="false">
- <option name="myName" value="Project Default" />
- <option name="myLocal" value="false" />
- <inspection_tool class="AndroidLintNewApi" enabled="false" level="ERROR" enabled_by_default="false" />
- </profile>
-</component>
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml
deleted file mode 100644
index 3b31283..0000000
--- a/.idea/inspectionProfiles/profiles_settings.xml
+++ /dev/null
@@ -1,7 +0,0 @@
-<component name="InspectionProjectProfileManager">
- <settings>
- <option name="PROJECT_PROFILE" value="Project Default" />
- <option name="USE_PROJECT_PROFILE" value="true" />
- <version value="1.0" />
- </settings>
-</component>
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 6832b13..1f6b7aa 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,10 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
- <component name="EntryPointsManager">
- <entry_points version="2.0" />
+ <component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" assert-keyword="true" jdk-15="true" project-jdk-name="1.7" project-jdk-type="JavaSDK">
+ <output url="file://$PROJECT_DIR$/classes" />
</component>
- <component name="ProjectRootManager" version="2" languageLevel="JDK_1_6" assert-keyword="true" jdk-15="true" project-jdk-name="Android SDK" project-jdk-type="Android SDK">
- <output url="file://$PROJECT_DIR$/out" />
+ <component name="masterDetails">
+ <states>
+ <state key="ProjectJDKs.UI">
+ <settings>
+ <last-edited>1.7</last-edited>
+ <splitter-proportions>
+ <option name="proportions">
+ <list>
+ <option value="0.2" />
+ </list>
+ </option>
+ </splitter-proportions>
+ </settings>
+ </state>
+ </states>
</component>
</project>
diff --git a/.idea/modules.xml b/.idea/modules.xml
index 746019c..52e1b34 100644
--- a/.idea/modules.xml
+++ b/.idea/modules.xml
@@ -2,7 +2,8 @@
<project version="4">
<component name="ProjectModuleManager">
<modules>
- <module fileurl="file://$PROJECT_DIR$/Android.iml" filepath="$PROJECT_DIR$/Android.iml" />
+ <module fileurl="file://$PROJECT_DIR$/Bridge.iml" filepath="$PROJECT_DIR$/Bridge.iml" />
+ <module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" />
</modules>
</component>
</project>
diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml
deleted file mode 100644
index 3b00020..0000000
--- a/.idea/uiDesigner.xml
+++ /dev/null
@@ -1,125 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="Palette2">
- <group name="Swing">
- <item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
- <default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
- </item>
- <item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
- <default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
- </item>
- <item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false">
- <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
- </item>
- <item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true">
- <default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
- </item>
- <item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false">
- <default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
- <initial-values>
- <property name="text" value="Button" />
- </initial-values>
- </item>
- <item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false">
- <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
- <initial-values>
- <property name="text" value="RadioButton" />
- </initial-values>
- </item>
- <item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false">
- <default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
- <initial-values>
- <property name="text" value="CheckBox" />
- </initial-values>
- </item>
- <item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false">
- <default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
- <initial-values>
- <property name="text" value="Label" />
- </initial-values>
- </item>
- <item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true">
- <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
- <preferred-size width="150" height="-1" />
- </default-constraints>
- </item>
- <item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true">
- <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
- <preferred-size width="150" height="-1" />
- </default-constraints>
- </item>
- <item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true">
- <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
- <preferred-size width="150" height="-1" />
- </default-constraints>
- </item>
- <item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true">
- <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
- <preferred-size width="150" height="50" />
- </default-constraints>
- </item>
- <item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
- <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
- <preferred-size width="150" height="50" />
- </default-constraints>
- </item>
- <item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
- <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
- <preferred-size width="150" height="50" />
- </default-constraints>
- </item>
- <item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true">
- <default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
- </item>
- <item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false">
- <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
- <preferred-size width="150" height="50" />
- </default-constraints>
- </item>
- <item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false">
- <default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
- <preferred-size width="150" height="50" />
- </default-constraints>
- </item>
- <item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false">
- <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
- <preferred-size width="150" height="50" />
- </default-constraints>
- </item>
- <item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false">
- <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
- <preferred-size width="200" height="200" />
- </default-constraints>
- </item>
- <item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false">
- <default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
- <preferred-size width="200" height="200" />
- </default-constraints>
- </item>
- <item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true">
- <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
- </item>
- <item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false">
- <default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
- </item>
- <item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false">
- <default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
- </item>
- <item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
- <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
- </item>
- <item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false">
- <default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
- <preferred-size width="-1" height="20" />
- </default-constraints>
- </item>
- <item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false">
- <default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
- </item>
- <item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
- <default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
- </item>
- </group>
- </component>
-</project>
-
diff --git a/Android.iml b/Android.iml
deleted file mode 100644
index 08a9591..0000000
--- a/Android.iml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module type="JAVA_MODULE" version="4">
- <component name="FacetManager">
- <facet type="android" name="Android">
- <configuration>
- <option name="UPDATE_PROPERTY_FILES" value="true" />
- </configuration>
- </facet>
- </component>
- <component name="NewModuleRootManager" inherit-compiler-output="true">
- <exclude-output />
- <content url="file://$MODULE_DIR$">
- <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/gen" isTestSource="false" generated="true" />
- </content>
- <orderEntry type="inheritedJdk" />
- <orderEntry type="sourceFolder" forTests="false" />
- </component>
-</module>
-
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
deleted file mode 100644
index bff0dc9..0000000
--- a/AndroidManifest.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="net.jacekk.brydz.android"
- android:versionCode="1"
- android:versionName="1.0">
- <uses-sdk android:minSdkVersion="14"/>
- <application android:label="@string/app_name" android:icon="@drawable/icon">
- <activity android:name="MainActivity"
- android:label="@string/app_name">
- <intent-filter>
- <action android:name="android.intent.action.MAIN"/>
- <category android:name="android.intent.category.LAUNCHER"/>
- </intent-filter>
- </activity>
- </application>
-</manifest>
diff --git a/Bridge.iml b/Bridge.iml
new file mode 100644
index 0000000..2a02201
--- /dev/null
+++ b/Bridge.iml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" type="JAVA_MODULE" version="4">
+ <component name="FacetManager">
+ <facet type="java-gradle" name="Java-Gradle">
+ <configuration>
+ <option name="BUILD_FOLDER_PATH" value="$MODULE_DIR$/build" />
+ </configuration>
+ </facet>
+ </component>
+ <component name="NewModuleRootManager" inherit-compiler-output="false">
+ <output url="file://$MODULE_DIR$/build/classes/main" />
+ <output-test url="file://$MODULE_DIR$/build/classes/test" />
+ <exclude-output />
+ <content url="file://$MODULE_DIR$">
+ <excludeFolder url="file://$MODULE_DIR$/.gradle" />
+ </content>
+ <orderEntry type="inheritedJdk" />
+ <orderEntry type="sourceFolder" forTests="false" />
+ </component>
+</module>
+
diff --git a/ant.properties b/ant.properties
deleted file mode 100644
index b0971e8..0000000
--- a/ant.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-# This file is used to override default values used by the Ant build system.
-#
-# This file must be checked into Version Control Systems, as it is
-# integral to the build system of your project.
-
-# This file is only used by the Ant script.
-
-# You can use this to override default values such as
-# 'source.dir' for the location of your java source folder and
-# 'out.dir' for the location of your output folder.
-
-# You can also use it define how the release builds are signed by declaring
-# the following properties:
-# 'key.store' for the location of your keystore and
-# 'key.alias' for the name of the key to use.
-# The password will be asked during the build when you use the 'release' target.
-
diff --git a/app/.gitignore b/app/.gitignore
new file mode 100644
index 0000000..796b96d
--- /dev/null
+++ b/app/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/app/app.iml b/app/app.iml
new file mode 100644
index 0000000..c6c55c4
--- /dev/null
+++ b/app/app.iml
@@ -0,0 +1,91 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" type="JAVA_MODULE" version="4">
+ <component name="FacetManager">
+ <facet type="android-gradle" name="Android-Gradle">
+ <configuration>
+ <option name="GRADLE_PROJECT_PATH" value=":app" />
+ </configuration>
+ </facet>
+ <facet type="android" name="Android">
+ <configuration>
+ <option name="SELECTED_BUILD_VARIANT" value="debug" />
+ <option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
+ <option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" />
+ <option name="ASSEMBLE_TEST_TASK_NAME" value="assembleDebugTest" />
+ <option name="SOURCE_GEN_TASK_NAME" value="generateDebugSources" />
+ <option name="TEST_SOURCE_GEN_TASK_NAME" value="generateDebugTestSources" />
+ <option name="ALLOW_USER_CONFIGURATION" value="false" />
+ <option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" />
+ <option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" />
+ <option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/src/main/res" />
+ <option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
+ </configuration>
+ </facet>
+ </component>
+ <component name="NewModuleRootManager" inherit-compiler-output="false">
+ <output url="file://$MODULE_DIR$/build/intermediates/classes/debug" />
+ <exclude-output />
+ <content url="file://$MODULE_DIR$">
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/debug" isTestSource="false" generated="true" />
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/debug" isTestSource="false" generated="true" />
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" />
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/debug" isTestSource="false" generated="true" />
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/res/generated/debug" type="java-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/test/debug" isTestSource="true" generated="true" />
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/test/debug" isTestSource="true" generated="true" />
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/test/debug" isTestSource="true" generated="true" />
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/test/debug" isTestSource="true" generated="true" />
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/test/debug" type="java-test-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/res/generated/test/debug" type="java-test-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/src/debug/jni" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/src/main/aidl" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
+ <sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
+ <sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
+ <sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundles" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/coverage-instrumented-classes" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dependency-cache" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex-cache" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/jacoco" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/javaResources" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/libs" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/lint" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/ndk" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/pre-dexed" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/proguard" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
+ <excludeFolder url="file://$MODULE_DIR$/build/outputs" />
+ <excludeFolder url="file://$MODULE_DIR$/build/tmp" />
+ </content>
+ <orderEntry type="jdk" jdkName="Android API 21 Platform" jdkType="Android SDK" />
+ <orderEntry type="sourceFolder" forTests="false" />
+ <orderEntry type="library" exported="" name="appcompat-v7-21.0.3" level="project" />
+ <orderEntry type="library" exported="" name="support-annotations-21.0.3" level="project" />
+ <orderEntry type="library" exported="" name="support-v4-21.0.3" level="project" />
+ </component>
+</module>
+
diff --git a/app/build.gradle b/app/build.gradle
new file mode 100644
index 0000000..2d32d42
--- /dev/null
+++ b/app/build.gradle
@@ -0,0 +1,24 @@
+apply plugin: 'com.android.application'
+
+android {
+ compileSdkVersion 21
+ buildToolsVersion "21.1.2"
+
+ defaultConfig {
+ applicationId "net.jacekk.bridge"
+ minSdkVersion 14
+ targetSdkVersion 21
+ versionCode 1
+ versionName "1.0"
+ }
+ buildTypes {
+ release {
+ minifyEnabled false
+ }
+ }
+}
+
+dependencies {
+ compile fileTree(dir: 'libs', include: ['*.jar'])
+ compile 'com.android.support:appcompat-v7:21.0.3'
+}
diff --git a/proguard-project.txt b/app/proguard-rules.pro
similarity index 61%
rename from proguard-project.txt
rename to app/proguard-rules.pro
index f2fe155..5a22a40 100644
--- a/proguard-project.txt
+++ b/app/proguard-rules.pro
@@ -1,11 +1,8 @@
-# To enable ProGuard in your project, edit project.properties
-# to define the proguard.config property as described in that file.
-#
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
-# in ${sdk.dir}/tools/proguard/proguard-android.txt
-# You can edit the include path and order by changing the ProGuard
-# include property in project.properties.
+# in /home/jacek/Android/Sdk/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the proguardFiles
+# directive in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
diff --git a/app/src/androidTest/java/net/jacekk/bridge/ApplicationTest.java b/app/src/androidTest/java/net/jacekk/bridge/ApplicationTest.java
new file mode 100644
index 0000000..ace8b75
--- /dev/null
+++ b/app/src/androidTest/java/net/jacekk/bridge/ApplicationTest.java
@@ -0,0 +1,10 @@
+package net.jacekk.bridge;
+
+import android.app.Application;
+import android.test.ApplicationTestCase;
+
+public class ApplicationTest extends ApplicationTestCase<Application> {
+ public ApplicationTest() {
+ super(Application.class);
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..407198c
--- /dev/null
+++ b/app/src/main/AndroidManifest.xml
@@ -0,0 +1,12 @@
+<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="net.jacekk.bridge">
+ <application android:allowBackup="true" android:label="@string/app_name"
+ android:icon="@drawable/icon" android:theme="@style/AppTheme">
+ <activity android:name="net.jacekk.bridge.android.MainActivity"
+ android:label="@string/app_name">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN"/>
+ <category android:name="android.intent.category.LAUNCHER"/>
+ </intent-filter>
+ </activity>
+ </application>
+</manifest>
diff --git a/app/src/main/java/net/jacekk/bridge/BridgeCompute.java b/app/src/main/java/net/jacekk/bridge/BridgeCompute.java
new file mode 100644
index 0000000..57fd304
--- /dev/null
+++ b/app/src/main/java/net/jacekk/bridge/BridgeCompute.java
@@ -0,0 +1,224 @@
+package net.jacekk.bridge;
+
+public class BridgeCompute {
+ // Points for tricks
+ protected int tricks[][] = {
+ {0, 20, 40, 60, 80, 100, 120, 140}, // minor suits
+ {0, 30, 60, 90, 120, 150, 180, 210}, // major suits
+ {0, 40, 70, 100, 130, 160, 190, 220} // no trump
+ };
+
+ // Points for [i] undertricks
+ protected int undertricks[][][] = {
+ { // non vulnerable
+ {0, 50, 100, 150, 200, 250, 300, 350, 400, 450, 500, 550, 600, 650}, // normal
+ {0, 100, 300, 500, 700, 900, 1100, 1300, 1500, 1700, 1900, 2100, 2300, 2500}, // double
+ {0, 200, 600, 1000, 1400, 1800, 2200, 2600, 3000, 3400, 3800, 4200, 4600, 5000} // redouble
+ },
+ { // vulnerable
+ {0, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 1100, 1200, 1300}, // normal
+ {0, 200, 500, 800, 1100, 1400, 1700, 2000, 2300, 2600, 2900, 3200, 3500, 3800}, // double
+ {0, 400, 1000, 1600, 2200, 2800, 3400, 4000, 4600, 5200, 5800, 6400, 7000, 7600}// redouble
+ }
+ };
+
+ // Points required per Milton Work Point Count
+ protected int PC[][][] = {
+ { // We: non vulnerable, they: non vulnerable
+ {-1400, -1400, -1400, -1400, -1200, -1100, -1000, -900, -700, -600, -490,
+ -460, -430, -400, -350, -300, -200, -110, -70, -50, 0,
+ 50, 70, 110, 200, 300, 350, 400, 430, 460, 490,
+ 600, 700, 900, 1000, 1100, 1200, 1400, 1400, 1400, 1400},
+ // We: non vulnerable, they: vulnerable
+ {-2100, -2100, -2100, -2100, -1800, -1650, -1500, -1350, -1050, -800, -690,
+ -660, -630, -600, -520, -440, -290, -110, -70, -50, 0,
+ 50, 70, 110, 200, 300, 350, 400, 430, 460, 490,
+ 600, 700, 900, 1000, 1100, 1200, 1400, 1400, 1400, 1400}
+ },
+ { // We: vulnerable, they: non vulnerable
+ {-1400, -1400, -1400, -1400, -1200, -1100, -1000, -900, -700, -600, -490,
+ -460, -430, -400, -350, -300, -200, -110, -70, -50, 0,
+ 50, 70, 110, 290, 440, 520, 600, 630, 660, 690,
+ 800, 1050, 1350, 1500, 1650, 1800, 2100, 2100, 2100, 2100},
+ // We: vulnerable, they: vulnerable
+ {-2100, -2100, -2100, -2100, -1800, -1650, -1500, -1350, -1050, -800, -690,
+ -660, -630, -600, -520, -440, -290, -110, -70, -50, 0,
+ 50, 70, 110, 290, 440, 520, 600, 630, 660, 690,
+ 800, 1050, 1350, 1500, 1650, 1800, 2100, 2100, 2100, 2100}
+ }
+ };
+
+ // Points required for [i] IMPs
+ protected int IMPs[] = { 0, 20, 50, 90, 130, 170, 220, 270, 320, 370, 430, 500, 600, 750, 900,
+ 1100, 1300, 1500, 1750, 2000, 2250, 2500, 3000, 3500, 4000, 9999999};
+
+
+ // percent* properties are related to scoring system by Adam Królik
+ // See: http://www.gplewniak.republika.pl/strony/zapis.html
+
+ // Points received - [i] used to access row from percent variable
+ protected int percent_points[][] = {
+ {0, 50, 90, 120, 150, 180, 210, 300, 400, 430, 460, 490, 520, 800, 920, 940, 980, 990,
+ 1020, 1400, 1440, 1520, 1530, 9999999}, // non vulnerable
+ {0, 50, 90, 120, 150, 180, 210, 500, 600, 360, 660, 690, 720, 810, 1370, 1390, 1430,
+ 1440, 1470, 1700, 2000, 2220, 2230, 9999999} // vulnerable
+ };
+
+ // Work Point Count - [i] used to access column from property percent
+ protected int percent_PC[] = {0, 6, 10, 16, 21, 25, 31, 35, 9999999};
+
+ // Percent score per [i] - points scored, [j] - PC had
+ protected int percent[][] = {
+ {-1, -1, -1, 50, 44, 26, 8, 0},
+ {83, 74, 65, 56, 47, 29, 11, 0},
+ {86, 77, 68, 59, 50, 32, 14, 0},
+ {89, 80, 71, 62, 53, 35, 17, 0},
+ {92, 83, 74, 65, 56, 38, 20, 2},
+ {95, 86, 77, 68, 59, 41, 23, 5},
+ {98, 89, 80, 71, 62, 44, 26, 8},
+ {100, 92, 83, 74, 65, 47, 29, 11},
+ {100, 95, 86, 77, 68, 50, 32, 14},
+ {100, 98, 89, 80, 71, 53, 35, 17},
+ {100, 100, 92, 83, 74, 56, 38, 20},
+ {100, 100, 95, 86, 77, 59, 41, 23},
+ {100, 100, 98, 89, 80, 62, 44, 26},
+ {100, 100, 100, 92, 83, 65, 47, 29},
+ {100, 100, 100, 95, 86, 68, 50, 32},
+ {100, 100, 100, 98, 89, 71, 53, 35},
+ {100, 100, 100, 100, 92, 74, 56, 38},
+ {100, 100, 100, 100, 95, 77, 59, 41},
+ {100, 100, 100, 100, 98, 80, 62, 44},
+ {100, 100, 100, 100, 100, 83, 65, 47},
+ {100, 100, 100, 100, 100, 86, 68, 50},
+ {100, 100, 100, 100, 100, 89, 71, 53},
+ {100, 100, 100, 100, 100, 100, 95, 90}
+ };
+
+ // Finds IMP score for points given (using IMPs property)
+ protected int IMP(int points) {
+ int i = 0;
+ while (IMPs[i + 1] <= points) {
+ i++;
+ }
+ return i;
+ }
+
+ // Finds percent score for data given (using percent* properties)
+ protected int percent(int PC, int points, int vulnerability) {
+ int points_i = 0;
+ int PC_i = 0;
+
+ while (this.percent_points[vulnerability][points_i + 1] <= points) {
+ points_i++;
+ }
+
+ while (this.percent_PC[PC_i + 1] <= PC) {
+ PC_i++;
+ }
+
+ return this.percent[points_i][PC_i];
+ }
+
+ public BridgeResult compute(int bid, int color, int dbl, int vulnerability, int PC, int tricks) {
+ BridgeResult result = new BridgeResult();
+ int weVulnerable = vulnerability / 2;
+ int theyVulnerable = vulnerability % 2;
+
+ // 4 passes
+ if (bid == 0) {
+ result.pointsFor = BridgeResult.PointsFor.Them;
+ result.points = this.PC[weVulnerable][theyVulnerable][PC];
+ result.IMPs = this.IMP(result.points);
+ result.percent = 100 - this.percent(PC, 0, weVulnerable);
+
+ return result;
+ }
+
+
+ // Result in points
+ int resultPoints;
+ // Points for tricks
+ int pointsForTricks;
+ // Result minus points required, according to PC property
+ int pointsForScoring;
+
+ // Number of overtricks (or undertricks if negative)
+ int additionalTricks = tricks - 6 - bid;
+
+ // Double/redouble multiplier
+ int multiplier = dbl + 1;
+ if (multiplier == 3) {
+ multiplier = 4;
+ }
+
+ // Contract made
+ if (additionalTricks >= 0) {
+ // Ordinary contract
+ if (multiplier == 1) {
+ pointsForTricks = this.tricks[color][bid];
+ resultPoints = this.tricks[color][tricks - 6];
+ }
+ // Contract doubled/redoubled
+ else {
+ pointsForTricks = this.tricks[color][bid] * multiplier;
+ resultPoints = pointsForTricks;
+
+ // Bonus for winning doubled/redoubled contract
+ resultPoints += 25 * multiplier;
+ // For overtricks
+ resultPoints += additionalTricks * (weVulnerable == 0 ? 50 : 100) * multiplier;
+ }
+
+ if (bid == 6) {
+ // Bonus for small slam
+ resultPoints += (weVulnerable == 0 ? 500 : 750);
+ } else if (bid == 7) {
+ // Bonus for grand slam
+ resultPoints += (weVulnerable == 0 ? 1000 : 1500);
+ }
+
+ if (pointsForTricks >= 100) {
+ // Bonus for game
+ resultPoints += (weVulnerable == 0 ? 300 : 500);
+ } else {
+ // Bonus for part-game
+ resultPoints += 50;
+ }
+ }
+ // Contract defeated
+ else {
+ // Points for undertricks (for defending side)
+ resultPoints = -1 * this.undertricks[weVulnerable][dbl][-1 * additionalTricks];
+ }
+
+ // Deduct points required
+ pointsForScoring = resultPoints - this.PC[weVulnerable][theyVulnerable][PC];
+
+ // Score for defeaters
+ if (pointsForScoring < 0) {
+ result.pointsFor = BridgeResult.PointsFor.Them;
+ result.pointsBefore = -1 * resultPoints;
+ result.points = -1 * pointsForScoring;
+ result.IMPs = IMP(result.points);
+ if (resultPoints < 0) {
+ result.percent = percent(40 - PC, -1 * resultPoints, theyVulnerable);
+ } else {
+ result.percent = 100 - percent(PC, resultPoints, weVulnerable);
+ }
+ }
+ // Score for declarers
+ else {
+ result.pointsFor = BridgeResult.PointsFor.Us;
+ result.pointsBefore = resultPoints;
+ result.points = pointsForScoring;
+ result.IMPs = IMP(result.points);
+ if (resultPoints > 0) {
+ result.percent = percent(PC, resultPoints, weVulnerable);
+ } else {
+ result.percent = 100 - percent(40 - PC, -1 * resultPoints, theyVulnerable);
+ }
+ }
+
+ return result;
+ }
+}
diff --git a/src/net/jacekk/brydz/BridgeResult.java b/app/src/main/java/net/jacekk/bridge/BridgeResult.java
similarity index 88%
rename from src/net/jacekk/brydz/BridgeResult.java
rename to app/src/main/java/net/jacekk/bridge/BridgeResult.java
index fb80371..090cc20 100644
--- a/src/net/jacekk/brydz/BridgeResult.java
+++ b/app/src/main/java/net/jacekk/bridge/BridgeResult.java
@@ -1,4 +1,4 @@
-package net.jacekk.brydz;
+package net.jacekk.bridge;
public class BridgeResult {
public enum PointsFor {
diff --git a/src/net/jacekk/brydz/android/MainActivity.java b/app/src/main/java/net/jacekk/bridge/android/MainActivity.java
similarity index 61%
rename from src/net/jacekk/brydz/android/MainActivity.java
rename to app/src/main/java/net/jacekk/bridge/android/MainActivity.java
index e33375f..744ecd6 100644
--- a/src/net/jacekk/brydz/android/MainActivity.java
+++ b/app/src/main/java/net/jacekk/bridge/android/MainActivity.java
@@ -1,4 +1,4 @@
-package net.jacekk.brydz.android;
+package net.jacekk.bridge.android;
import android.app.Activity;
import android.os.Bundle;
@@ -9,25 +9,27 @@
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.ToggleButton;
-import net.jacekk.brydz.BridgeCompute;
-import net.jacekk.brydz.BridgeResult;
+
+import net.jacekk.bridge.R;
+import net.jacekk.bridge.BridgeCompute;
+import net.jacekk.bridge.BridgeResult;
public class MainActivity extends Activity {
private SeekBar BidSlider;
private TextView BidText;
- private ToggleButton CDToggle;
- private ToggleButton HSToggle;
- private ToggleButton NTToggle;
+ private ToggleButton MinorSuitsToggle;
+ private ToggleButton MajorSuitsToggle;
+ private ToggleButton NoTrumpToggle;
- private ToggleButton NormToggle;
- private ToggleButton DblToggle;
- private ToggleButton ReDblToggle;
+ private ToggleButton ContractToggle;
+ private ToggleButton DoubleToggle;
+ private ToggleButton RedoubleToggle;
- private ToggleButton BBToggle;
- private ToggleButton BAToggle;
- private ToggleButton ABToggle;
- private ToggleButton AAToggle;
+ private ToggleButton NNToggle;
+ private ToggleButton NVToggle;
+ private ToggleButton VNToggle;
+ private ToggleButton VVToggle;
private EditText PCInput;
private EditText TricksInput;
@@ -53,23 +55,23 @@
BidSlider = (SeekBar) findViewById(R.id.BidSlider);
BidText = (TextView) findViewById(R.id.BidText);
- CDToggle = (ToggleButton) findViewById(R.id.CDToggle);
- HSToggle = (ToggleButton) findViewById(R.id.HSToggle);
- NTToggle = (ToggleButton) findViewById(R.id.NTToggle);
+ MinorSuitsToggle = (ToggleButton) findViewById(R.id.MinorSuitsToggle);
+ MajorSuitsToggle = (ToggleButton) findViewById(R.id.MajorSuitsToggle);
+ NoTrumpToggle = (ToggleButton) findViewById(R.id.NoTrumpToggle);
- NormToggle = (ToggleButton) findViewById(R.id.NormToggle);
- DblToggle = (ToggleButton) findViewById(R.id.DblToggle);
- ReDblToggle = (ToggleButton) findViewById(R.id.ReDblToggle);
+ ContractToggle = (ToggleButton) findViewById(R.id.ContractToggle);
+ DoubleToggle = (ToggleButton) findViewById(R.id.DoubleToggle);
+ RedoubleToggle = (ToggleButton) findViewById(R.id.RedoubleToggle);
- BBToggle = (ToggleButton) findViewById(R.id.BBToggle);
- BAToggle = (ToggleButton) findViewById(R.id.BAToggle);
- ABToggle = (ToggleButton) findViewById(R.id.ABToggle);
- AAToggle = (ToggleButton) findViewById(R.id.AAToggle);
+ NNToggle = (ToggleButton) findViewById(R.id.NNToggle);
+ NVToggle = (ToggleButton) findViewById(R.id.NVToggle);
+ VNToggle = (ToggleButton) findViewById(R.id.VNToggle);
+ VVToggle = (ToggleButton) findViewById(R.id.VVToggle);
PCInput = (EditText) findViewById(R.id.PCInput);
TricksInput = (EditText) findViewById(R.id.TricksInput);
- resultText = (TextView) findViewById(R.id.resultText);
+ resultText = (TextView) findViewById(R.id.ResultsText);
BidSlider.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
@@ -92,62 +94,62 @@
public void onClick(View view) {
ToggleButton toggle = (ToggleButton) view;
- if (!toggle.equals(CDToggle))
- CDToggle.setChecked(false);
- if (!toggle.equals(HSToggle))
- HSToggle.setChecked(false);
- if (!toggle.equals(NTToggle))
- NTToggle.setChecked(false);
+ if (!toggle.equals(MinorSuitsToggle))
+ MinorSuitsToggle.setChecked(false);
+ if (!toggle.equals(MajorSuitsToggle))
+ MajorSuitsToggle.setChecked(false);
+ if (!toggle.equals(NoTrumpToggle))
+ NoTrumpToggle.setChecked(false);
updateResults();
}
};
- CDToggle.setOnClickListener(colorClickListener);
- HSToggle.setOnClickListener(colorClickListener);
- NTToggle.setOnClickListener(colorClickListener);
+ MinorSuitsToggle.setOnClickListener(colorClickListener);
+ MajorSuitsToggle.setOnClickListener(colorClickListener);
+ NoTrumpToggle.setOnClickListener(colorClickListener);
ToggleButton.OnClickListener bidClickListener = new ToggleButton.OnClickListener() {
@Override
public void onClick(View view) {
ToggleButton toggle = (ToggleButton) view;
- if (!toggle.equals(NormToggle))
- NormToggle.setChecked(false);
- if (!toggle.equals(DblToggle))
- DblToggle.setChecked(false);
- if (!toggle.equals(ReDblToggle))
- ReDblToggle.setChecked(false);
+ if (!toggle.equals(ContractToggle))
+ ContractToggle.setChecked(false);
+ if (!toggle.equals(DoubleToggle))
+ DoubleToggle.setChecked(false);
+ if (!toggle.equals(RedoubleToggle))
+ RedoubleToggle.setChecked(false);
updateResults();
}
};
- NormToggle.setOnClickListener(bidClickListener);
- DblToggle.setOnClickListener(bidClickListener);
- ReDblToggle.setOnClickListener(bidClickListener);
+ ContractToggle.setOnClickListener(bidClickListener);
+ DoubleToggle.setOnClickListener(bidClickListener);
+ RedoubleToggle.setOnClickListener(bidClickListener);
ToggleButton.OnClickListener baClickListener = new ToggleButton.OnClickListener() {
public void onClick(View view) {
ToggleButton toggle = (ToggleButton) view;
- if (!toggle.equals(AAToggle))
- AAToggle.setChecked(false);
- if (!toggle.equals(ABToggle))
- ABToggle.setChecked(false);
- if (!toggle.equals(BAToggle))
- BAToggle.setChecked(false);
- if (!toggle.equals(BBToggle))
- BBToggle.setChecked(false);
+ if (!toggle.equals(VVToggle))
+ VVToggle.setChecked(false);
+ if (!toggle.equals(VNToggle))
+ VNToggle.setChecked(false);
+ if (!toggle.equals(NVToggle))
+ NVToggle.setChecked(false);
+ if (!toggle.equals(NNToggle))
+ NNToggle.setChecked(false);
updateResults();
}
};
- AAToggle.setOnClickListener(baClickListener);
- ABToggle.setOnClickListener(baClickListener);
- BAToggle.setOnClickListener(baClickListener);
- BBToggle.setOnClickListener(baClickListener);
+ VVToggle.setOnClickListener(baClickListener);
+ VNToggle.setOnClickListener(baClickListener);
+ NVToggle.setOnClickListener(baClickListener);
+ NNToggle.setOnClickListener(baClickListener);
PCInput.addTextChangedListener(
new TextWatcher() {
@@ -188,35 +190,35 @@
int bid = BidSlider.getProgress();
int color = 0;
- if (HSToggle.isChecked())
+ if (MajorSuitsToggle.isChecked())
color = 1;
- if (NTToggle.isChecked())
+ if (NoTrumpToggle.isChecked())
color = 2;
int dbl = 0;
- if (DblToggle.isChecked())
+ if (DoubleToggle.isChecked())
dbl = 1;
- if (ReDblToggle.isChecked())
+ if (RedoubleToggle.isChecked())
dbl = 2;
- int baba = 0;
- if (BAToggle.isChecked())
- baba = 1;
- if (ABToggle.isChecked())
- baba = 2;
- if (AAToggle.isChecked())
- baba = 3;
+ int vulnerability = 0;
+ if (NVToggle.isChecked())
+ vulnerability = 1;
+ if (VNToggle.isChecked())
+ vulnerability = 2;
+ if (VVToggle.isChecked())
+ vulnerability = 3;
int PC = -1;
try {
PC = Integer.parseInt(PCInput.getText().toString());
- } catch (NumberFormatException e) {
+ } catch (NumberFormatException ignored) {
}
int tricks = -1;
try {
tricks = Integer.parseInt(TricksInput.getText().toString());
- } catch (NumberFormatException e) {
+ } catch (NumberFormatException ignored) {
}
if (bid < 0 || bid > 7) {
@@ -234,7 +236,7 @@
return;
}
- if (baba < 0 || baba > 3) {
+ if (vulnerability < 0 || vulnerability > 3) {
resultText.setText(getString(R.string.invalid_baba));
return;
}
@@ -254,7 +256,7 @@
return;
}
- BridgeResult result = bridgeCompute.compute(bid, color, dbl, baba, PC, tricks);
+ BridgeResult result = bridgeCompute.compute(bid, color, dbl, vulnerability, PC, tricks);
resultText.setText(
(result.pointsFor == BridgeResult.PointsFor.Us ? getString(R.string.result_for_us) : getString(R.string.result_for_them)) +
"\n" + getString(R.string.result_pts_wo_pc) + " " + result.pointsBefore +
diff --git a/res/drawable-hdpi/icon.png b/app/src/main/res/drawable-hdpi/icon.png
similarity index 100%
rename from res/drawable-hdpi/icon.png
rename to app/src/main/res/drawable-hdpi/icon.png
Binary files differ
diff --git a/res/drawable-ldpi/icon.png b/app/src/main/res/drawable-ldpi/icon.png
similarity index 100%
rename from res/drawable-ldpi/icon.png
rename to app/src/main/res/drawable-ldpi/icon.png
Binary files differ
diff --git a/res/drawable-mdpi/icon.png b/app/src/main/res/drawable-mdpi/icon.png
similarity index 100%
rename from res/drawable-mdpi/icon.png
rename to app/src/main/res/drawable-mdpi/icon.png
Binary files differ
diff --git a/res/drawable-xhdpi/icon.png b/app/src/main/res/drawable-xhdpi/icon.png
similarity index 100%
rename from res/drawable-xhdpi/icon.png
rename to app/src/main/res/drawable-xhdpi/icon.png
Binary files differ
diff --git a/app/src/main/res/drawable-xxhdpi/icon.png b/app/src/main/res/drawable-xxhdpi/icon.png
new file mode 100644
index 0000000..48377b4
--- /dev/null
+++ b/app/src/main/res/drawable-xxhdpi/icon.png
Binary files differ
diff --git a/app/src/main/res/layout/main.xml b/app/src/main/res/layout/main.xml
new file mode 100644
index 0000000..6683a97
--- /dev/null
+++ b/app/src/main/res/layout/main.xml
@@ -0,0 +1,195 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="fill_parent"
+ android:layout_height="fill_parent"
+ android:layout_margin="10dp"
+ android:orientation="vertical">
+
+ <SeekBar
+ android:id="@+id/BidSlider"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:indeterminate="false"
+ android:max="7" />
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:gravity="center_vertical"
+ android:orientation="horizontal"
+ android:weightSum="1">
+
+ <TextView
+ android:id="@+id/BidText"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:layout_weight="0.25"
+ android:text="0"
+ android:textAlignment="gravity"
+ android:textAppearance="?android:attr/textAppearanceLarge" />
+
+ <ToggleButton
+ android:id="@+id/MinorSuitsToggle"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_weight="0.25"
+ android:checked="true"
+ android:text="@string/minor_suits"
+ android:textOff="@string/minor_suits"
+ android:textOn="@string/minor_suits" />
+
+ <ToggleButton
+ android:id="@+id/MajorSuitsToggle"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_weight="0.25"
+ android:checked="false"
+ android:text="@string/major_suits"
+ android:textOff="@string/major_suits"
+ android:textOn="@string/major_suits" />
+
+ <ToggleButton
+ android:id="@+id/NoTrumpToggle"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_weight="0.25"
+ android:checked="false"
+ android:text="@string/no_trumph"
+ android:textOff="@string/no_trumph"
+ android:textOn="@string/no_trumph" />
+ </LinearLayout>
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal">
+
+ <ToggleButton
+ android:id="@+id/ContractToggle"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:checked="true"
+ android:text="@string/bid_normal"
+ android:textOff="@string/bid_normal"
+ android:textOn="@string/bid_normal" />
+
+ <ToggleButton
+ android:id="@+id/DoubleToggle"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:checked="false"
+ android:text="@string/bid_double"
+ android:textOff="@string/bid_double"
+ android:textOn="@string/bid_double" />
+
+ <ToggleButton
+ android:id="@+id/RedoubleToggle"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:checked="false"
+ android:text="@string/bid_redouble"
+ android:textOff="@string/bid_redouble"
+ android:textOn="@string/bid_redouble" />
+ </LinearLayout>
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal">
+
+ <ToggleButton
+ android:id="@+id/NNToggle"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:checked="true"
+ android:text="@string/before_before"
+ android:textOff="@string/before_before"
+ android:textOn="@string/before_before" />
+
+ <ToggleButton
+ android:id="@+id/NVToggle"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:checked="false"
+ android:text="@string/before_after"
+ android:textOff="@string/before_after"
+ android:textOn="@string/before_after" />
+
+ <ToggleButton
+ android:id="@+id/VNToggle"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:checked="false"
+ android:text="@string/after_before"
+ android:textOff="@string/after_before"
+ android:textOn="@string/after_before" />
+
+ <ToggleButton
+ android:id="@+id/VVToggle"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_weight="1"
+ android:checked="false"
+ android:text="@string/after_after"
+ android:textOff="@string/after_after"
+ android:textOn="@string/after_after" />
+ </LinearLayout>
+
+ <LinearLayout
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="horizontal">
+
+ <TextView
+ android:id="@+id/PCText"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginRight="10dp"
+ android:labelFor="@+id/PCInput"
+ android:text="@string/pc"
+ android:textAppearance="?android:attr/textAppearanceLarge" />
+
+ <EditText
+ android:id="@+id/PCInput"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:ems="4"
+ android:inputType="number" />
+
+ <Space
+ android:layout_width="20dp"
+ android:layout_height="wrap_content" />
+
+ <TextView
+ android:id="@+id/TricksText"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginRight="10dp"
+ android:labelFor="@+id/TricksInput"
+ android:text="@string/tricks"
+ android:textAppearance="?android:attr/textAppearanceLarge" />
+
+ <EditText
+ android:id="@+id/TricksInput"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:ems="4"
+ android:inputType="number" />
+ </LinearLayout>
+
+ <TextView
+ android:id="@+id/ResultsText"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_marginTop="10dp"
+ android:text="@string/invalid_empty"
+ android:textAppearance="?android:attr/textAppearanceMedium" />
+</LinearLayout>
+
diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml
new file mode 100644
index 0000000..b607da1
--- /dev/null
+++ b/app/src/main/res/values-pl/strings.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string name="app_name">Obliczenia brydżowe</string>
+
+ <string name="minor_suits">♣ / ♦</string>
+ <string name="major_suits">♥ / ♠</string>
+ <string name="no_trumph">NT</string>
+
+ <string name="before_before">przed/przed</string>
+ <string name="before_after">przed/po</string>
+ <string name="after_before">po/przed</string>
+ <string name="after_after">po/po</string>
+
+ <string name="bid_normal">norm.</string>
+ <string name="bid_double">ktr.</string>
+ <string name="bid_redouble">rektr.</string>
+
+ <string name="pc">PC:</string>
+ <string name="tricks">Lew:</string>
+
+ <string name="invalid_empty">Podaj wszystkie dane.</string>
+ <string name="invalid_bid">Niepoprawny kontrakt.</string>
+ <string name="invalid_color">Niepoprawny kolor kontraktu.</string>
+ <string name="invalid_dbl">Niepoprawna informacja o kontrze.</string>
+ <string name="invalid_baba">Niepoprawna informacja o partii.</string>
+ <string name="invalid_pc">Niepoprawna ilość punktów.</string>
+ <string name="invalid_tricks">Niepoprawna ilość wziętych lew.</string>
+ <string name="invalid_pass">Przy czterech pasach podaj większą liczę punktów.</string>
+
+ <string name="result_for_us">Zapis dla rozgrywających.</string>
+ <string name="result_for_them">Zapis dla przeciwników.</string>
+
+ <string name="result_pts_wo_pc">Punktów (bez PC):</string>
+ <string name="result_pts">Punktów (z PC):</string>
+ <string name="result_imps">IMP-ów:</string>
+ <string name="result_percent">Procent:</string>
+</resources>
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
new file mode 100644
index 0000000..6ffd67e
--- /dev/null
+++ b/app/src/main/res/values/strings.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string name="app_name">Bridge scoring</string>
+
+ <string name="minor_suits">♣ / ♦</string>
+ <string name="major_suits">♥ / ♠</string>
+ <string name="no_trumph">NT</string>
+
+ <string name="before_before">non./non</string>
+ <string name="before_after">non./vuln.</string>
+ <string name="after_before">vunl./non.</string>
+ <string name="after_after">vuln./vuln.</string>
+
+ <string name="bid_normal">norm.</string>
+ <string name="bid_double">dbl.</string>
+ <string name="bid_redouble">redbl.</string>
+
+ <string name="pc">PC:</string>
+ <string name="tricks">Tricks:</string>
+
+ <string name="invalid_empty">Enter required information.</string>
+ <string name="invalid_bid">Invalid contract level.</string>
+ <string name="invalid_color">Invalid contract color.</string>
+ <string name="invalid_dbl">Invalid information about doubling/redoubling.</string>
+ <string name="invalid_baba">Invalid information about vulnerability.</string>
+ <string name="invalid_pc">Invalid number for Milton Work Point Count.</string>
+ <string name="invalid_tricks">Invalid number of tricks taken.</string>
+ <string name="invalid_pass">For four passes enter data for side with more PCs.</string>
+
+ <string name="result_for_us">Score for declaring side.</string>
+ <string name="result_for_them">Score for defending side.</string>
+
+ <string name="result_pts_wo_pc">Points (excl. PC):</string>
+ <string name="result_pts">Points (incl. PC):</string>
+ <string name="result_imps">IMPs:</string>
+ <string name="result_percent">Percent:</string>
+</resources>
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
new file mode 100644
index 0000000..0c332ef
--- /dev/null
+++ b/app/src/main/res/values/styles.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <style name="AppTheme" parent="android:Theme.Holo">
+ </style>
+</resources>
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
new file mode 100644
index 0000000..6356aab
--- /dev/null
+++ b/build.gradle
@@ -0,0 +1,19 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+
+buildscript {
+ repositories {
+ jcenter()
+ }
+ dependencies {
+ classpath 'com.android.tools.build:gradle:1.0.0'
+
+ // NOTE: Do not place your application dependencies here; they belong
+ // in the individual module build.gradle files
+ }
+}
+
+allprojects {
+ repositories {
+ jcenter()
+ }
+}
diff --git a/build.xml b/build.xml
deleted file mode 100644
index 58ac6f0..0000000
--- a/build.xml
+++ /dev/null
@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="Android" default="help">
-
- <!-- The local.properties file is created and updated by the 'android' tool.
- It contains the path to the SDK. It should *NOT* be checked into
- Version Control Systems. -->
- <property file="local.properties"/>
-
- <!-- The ant.properties file can be created by you. It is only edited by the
- 'android' tool to add properties to it.
- This is the place to change some Ant specific build properties.
- Here are some properties you may want to change/update:
-
- source.dir
- The name of the source directory. Default is 'src'.
- out.dir
- The name of the output directory. Default is 'bin'.
-
- For other overridable properties, look at the beginning of the rules
- files in the SDK, at tools/ant/build.xml
-
- Properties related to the SDK location or the project target should
- be updated using the 'android' tool with the 'update' action.
-
- This file is an integral part of the build system for your
- application and should be checked into Version Control Systems.
-
- -->
- <property file="ant.properties"/>
-
- <!-- if sdk.dir was not set from one of the property file, then
- get it from the ANDROID_HOME env var.
- This must be done before we load project.properties since
- the proguard config can use sdk.dir -->
- <property environment="env"/>
- <condition property="sdk.dir" value="${env.ANDROID_HOME}">
- <isset property="env.ANDROID_HOME"/>
- </condition>
-
- <!-- The project.properties file is created and updated by the 'android'
- tool, as well as ADT.
-
- This contains project specific properties such as project target, and library
- dependencies. Lower level build properties are stored in ant.properties
- (or in .classpath for Eclipse projects).
-
- This file is an integral part of the build system for your
- application and should be checked into Version Control Systems. -->
- <loadproperties srcFile="project.properties"/>
-
- <!-- quick check on sdk.dir -->
- <fail
- message="sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through the ANDROID_HOME environment variable."
- unless="sdk.dir"
- />
-
- <!--
- Import per project custom build rules if present at the root of the project.
- This is the place to put custom intermediary targets such as:
- -pre-build
- -pre-compile
- -post-compile (This is typically used for code obfuscation.
- Compiled code location: ${out.classes.absolute.dir}
- If this is not done in place, override ${out.dex.input.absolute.dir})
- -post-package
- -post-build
- -pre-clean
- -->
- <import file="custom_rules.xml" optional="true"/>
-
- <!-- Import the actual build file.
-
- To customize existing targets, there are two options:
- - Customize only one target:
- - copy/paste the target into this file, *before* the
- <import> task.
- - customize it to your needs.
- - Customize the whole content of build.xml
- - copy/paste the content of the rules files (minus the top node)
- into this file, replacing the <import> task.
- - customize to your needs.
-
- ***********************
- ****** IMPORTANT ******
- ***********************
- In all cases you must update the value of version-tag below to read 'custom' instead of an integer,
- in order to avoid having your file be overridden by tools such as "android update project"
- -->
- <!-- version-tag: 1 -->
- <import file="${sdk.dir}/tools/ant/build.xml"/>
-
-</project>
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..0c71e76
--- /dev/null
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Wed Apr 10 15:27:10 PDT 2013
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip
diff --git a/project.properties b/project.properties
deleted file mode 100644
index 4ab1256..0000000
--- a/project.properties
+++ /dev/null
@@ -1,14 +0,0 @@
-# This file is automatically generated by Android Tools.
-# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
-#
-# This file must be checked in Version Control Systems.
-#
-# To customize properties used by the Ant build system edit
-# "ant.properties", and override values to adapt the script to your
-# project structure.
-#
-# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
-#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
-
-# Project target.
-target=android-19
diff --git a/res/layout/main.xml b/res/layout/main.xml
deleted file mode 100644
index 42861a8..0000000
--- a/res/layout/main.xml
+++ /dev/null
@@ -1,137 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- <LinearLayout
- android:orientation="vertical"
- android:layout_width="match_parent"
- android:layout_height="match_parent" android:layout_margin="10dp">
- <SeekBar
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:id="@+id/BidSlider" android:max="7" android:indeterminate="false"
- />
- <LinearLayout
- android:orientation="horizontal"
- android:layout_width="match_parent"
- android:layout_height="wrap_content" android:gravity="center_vertical" android:weightSum="1"
- >
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textAppearance="?android:attr/textAppearanceLarge"
- android:text="0"
- android:id="@+id/BidText" android:layout_weight="0.25" android:textAlignment="gravity"
- android:layout_gravity="center"/>
- <ToggleButton
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/clubs_or_diamonds"
- android:id="@+id/CDToggle" android:textOff="@string/clubs_or_diamonds"
- android:textOn="@string/clubs_or_diamonds" android:checked="true" android:layout_weight="0.25"/>
- <ToggleButton
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/hearts_or_spades"
- android:id="@+id/HSToggle" android:textOff="@string/hearts_or_spades"
- android:textOn="@string/hearts_or_spades" android:layout_weight="0.25" android:checked="false"/>
- <ToggleButton
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/no_trumph"
- android:id="@+id/NTToggle" android:textOff="@string/no_trumph"
- android:textOn="@string/no_trumph" android:layout_weight="0.25" android:checked="false"/>
- </LinearLayout>
- <LinearLayout
- android:orientation="horizontal"
- android:layout_width="match_parent"
- android:layout_height="wrap_content">
- <ToggleButton
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/bid_normal"
- android:id="@+id/NormToggle" android:textOff="@string/bid_normal"
- android:textOn="@string/bid_normal" android:checked="true" android:layout_weight="1"/>
- <ToggleButton
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/bid_double"
- android:id="@+id/DblToggle" android:textOff="@string/bid_double"
- android:textOn="@string/bid_double" android:layout_weight="1" android:checked="false"/>
- <ToggleButton
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/bid_redouble"
- android:id="@+id/ReDblToggle" android:textOff="@string/bid_redouble"
- android:textOn="@string/bid_redouble" android:layout_weight="1" android:checked="false"/>
- </LinearLayout>
- <LinearLayout
- android:orientation="horizontal"
- android:layout_width="match_parent"
- android:layout_height="wrap_content">
- <ToggleButton
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/before_before"
- android:id="@+id/BBToggle" android:textOff="@string/before_before"
- android:textOn="@string/before_before" android:layout_weight="1" android:checked="true"/>
- <ToggleButton
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/before_after"
- android:id="@+id/BAToggle" android:textOff="@string/before_after"
- android:textOn="@string/before_after" android:layout_weight="1" android:checked="false"/>
- <ToggleButton
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/after_before"
- android:id="@+id/ABToggle" android:textOff="@string/after_before"
- android:textOn="@string/after_before" android:layout_weight="1" android:checked="false"/>
- <ToggleButton
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/after_after"
- android:id="@+id/AAToggle" android:textOff="@string/after_after"
- android:textOn="@string/after_after" android:layout_weight="1" android:checked="false"/>
- </LinearLayout>
- <LinearLayout
- android:orientation="horizontal"
- android:layout_width="match_parent"
- android:layout_height="wrap_content">
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textAppearance="?android:attr/textAppearanceLarge"
- android:text="@string/pc"
- android:id="@+id/PCText" android:labelFor="@+id/PCInput" android:layout_marginRight="10dp"/>
- <EditText
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:inputType="number"
- android:id="@+id/PCInput" android:editable="false" android:ems="4"/>
- <Space
- android:layout_width="20dp"
- android:layout_height="wrap_content"
- />
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:textAppearance="?android:attr/textAppearanceLarge"
- android:text="@string/tricks"
- android:id="@+id/TricksText" android:labelFor="@+id/TricksInput" android:layout_marginRight="10dp"/>
- <EditText
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:inputType="number"
- android:id="@+id/TricksInput" android:ems="4"/>
- </LinearLayout>
- <TextView
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:id="@+id/resultText" android:text="@string/invalid_empty" android:layout_marginTop="10dp"/>
- </LinearLayout>
-</LinearLayout>
-
diff --git a/res/values/strings.xml b/res/values/strings.xml
deleted file mode 100644
index 9cb668a..0000000
--- a/res/values/strings.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
- <string name="app_name">Obliczenia brydżowe</string>
-
- <string name="clubs_or_diamonds">♣ / ♦</string>
- <string name="hearts_or_spades">♥ / ♠</string>
- <string name="no_trumph">NT</string>
-
- <string name="before_before">przed/przed</string>
- <string name="before_after">przed/po</string>
- <string name="after_before">po/przed</string>
- <string name="after_after">po/po</string>
-
- <string name="bid_normal">norm.</string>
- <string name="bid_double">ktr.</string>
- <string name="bid_redouble">rektr.</string>
-
- <string name="pc">PC:</string>
- <string name="tricks">Lew:</string>
-
- <string name="invalid_empty">Podaj wszystkie dane.</string>
- <string name="invalid_bid">Niepoprawny kontrakt.</string>
- <string name="invalid_color">Niepoprawny kolor kontraktu.</string>
- <string name="invalid_dbl">Niepoprawna informacja o kontrze.</string>
- <string name="invalid_baba">Niepoprawna informacja o partii.</string>
- <string name="invalid_pc">Niepoprawna ilość punktów.</string>
- <string name="invalid_tricks">Niepoprawna ilość wziętych lew.</string>
- <string name="invalid_pass">Przy czterech pasach podaj większą liczę punktów.</string>
-
- <string name="result_for_us">Zapis dla rozgrywających.</string>
- <string name="result_for_them">Zapis dla przeciwników.</string>
-
- <string name="result_pts_wo_pc">Punktów (bez PC):</string>
- <string name="result_pts">Punktów (z PC):</string>
- <string name="result_imps">IMP-ów:</string>
- <string name="result_percent">Procent:</string>
-</resources>
diff --git a/settings.gradle b/settings.gradle
new file mode 100644
index 0000000..e7b4def
--- /dev/null
+++ b/settings.gradle
@@ -0,0 +1 @@
+include ':app'
diff --git a/src/net/jacekk/brydz/BridgeCompute.java b/src/net/jacekk/brydz/BridgeCompute.java
deleted file mode 100644
index 9428009..0000000
--- a/src/net/jacekk/brydz/BridgeCompute.java
+++ /dev/null
@@ -1,196 +0,0 @@
-package net.jacekk.brydz;
-
-public class BridgeCompute {
- protected int tricks[][] = {
- {0, 20, 40, 60, 80, 100, 120, 140}, // młodsze
- {0, 30, 60, 90, 120, 150, 180, 210}, // starsze
- {0, 40, 70, 100, 130, 160, 190, 220} // bez atu
- };
-
- protected int wpadki[][][] = {
- { // przed partią
- {0, 50, 100, 150, 200, 250, 300, 350, 400, 450, 500, 550, 600, 650}, // normalnie
- {0, 100, 300, 500, 700, 900, 1100, 1300, 1500, 1700, 1900, 2100, 2300, 2500}, // kontra
- {0, 200, 600, 1000, 1400, 1800, 2200, 2600, 3000, 3400, 3800, 4200, 4600, 5000} // rekontra
- },
- { // po partii
- {0, 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 1100, 1200, 1300}, // normalnie
- {0, 200, 500, 800, 1100, 1400, 1700, 2000, 2300, 2600, 2900, 3200, 3500, 3800}, // kontra
- {0, 400, 1000, 1600, 2200, 2800, 3400, 4000, 4600, 5200, 5800, 6400, 7000, 7600} // rekontra
- }
- };
-
- protected int PC[][][] = {
- { // MY: przed, WY: przed partią
- {-1400, -1400, -1400, -1400, -1200, -1100, -1000, -900, -700, -600, -490, -460, -430, -400, -350, -300, -200, -110, -70, -50, 0, 50, 70, 110, 200, 300, 350, 400, 430, 460, 490, 600, 700, 900, 1000, 1100, 1200, 1400, 1400, 1400, 1400},
- // MY: przed, WY: po partii
- {-2100, -2100, -2100, -2100, -1800, -1650, -1500, -1350, -1050, -800, -690, -660, -630, -600, -520, -440, -290, -110, -70, -50, 0, 50, 70, 110, 200, 300, 350, 400, 430, 460, 490, 600, 700, 900, 1000, 1100, 1200, 1400, 1400, 1400, 1400}
- },
- { // MY: po, WY: przed partią
- {-1400, -1400, -1400, -1400, -1200, -1100, -1000, -900, -700, -600, -490, -460, -430, -400, -350, -300, -200, -110, -70, -50, 0, 50, 70, 110, 290, 440, 520, 600, 630, 660, 690, 800, 1050, 1350, 1500, 1650, 1800, 2100, 2100, 2100, 2100},
- // MY: po, WY: po partii
- {-2100, -2100, -2100, -2100, -1800, -1650, -1500, -1350, -1050, -800, -690, -660, -630, -600, -520, -440, -290, -110, -70, -50, 0, 50, 70, 110, 290, 440, 520, 600, 630, 660, 690, 800, 1050, 1350, 1500, 1650, 1800, 2100, 2100, 2100, 2100}
- }
- };
-
- protected int IMPs[] = {0, 20, 50, 90, 130, 170, 220, 270, 320, 370, 430, 500, 600, 750, 900, 1100, 1300, 1500, 1750, 2000, 2250, 2500, 3000, 3500, 4000, 9999999};
-
- protected int percent_points[][] = {
- {0, 50, 90, 120, 150, 180, 210, 300, 400, 430, 460, 490, 520, 800, 920, 940, 980, 990, 1020, 1400, 1440, 1520, 1530, 9999999}, // przed
- {0, 50, 90, 120, 150, 180, 210, 500, 600, 360, 660, 690, 720, 810, 1370, 1390, 1430, 1440, 1470, 1700, 2000, 2220, 2230, 9999999} //po
- };
-
- protected int percent_PC[] = {0, 6, 10, 16, 21, 25, 31, 35, 9999999};
-
- protected int percent[][] = {
- {-1, -1, -1, 50, 44, 26, 8, 0},
- {83, 74, 65, 56, 47, 29, 11, 0},
- {86, 77, 68, 59, 50, 32, 14, 0},
- {89, 80, 71, 62, 53, 35, 17, 0},
- {92, 83, 74, 65, 56, 38, 20, 2},
- {95, 86, 77, 68, 59, 41, 23, 5},
- {98, 89, 80, 71, 62, 44, 26, 8},
- {100, 92, 83, 74, 65, 47, 29, 11},
- {100, 95, 86, 77, 68, 50, 32, 14},
- {100, 98, 89, 80, 71, 53, 35, 17},
- {100, 100, 92, 83, 74, 56, 38, 20},
- {100, 100, 95, 86, 77, 59, 41, 23},
- {100, 100, 98, 89, 80, 62, 44, 26},
- {100, 100, 100, 92, 83, 65, 47, 29},
- {100, 100, 100, 95, 86, 68, 50, 32},
- {100, 100, 100, 98, 89, 71, 53, 35},
- {100, 100, 100, 100, 92, 74, 56, 38},
- {100, 100, 100, 100, 95, 77, 59, 41},
- {100, 100, 100, 100, 98, 80, 62, 44},
- {100, 100, 100, 100, 100, 83, 65, 47},
- {100, 100, 100, 100, 100, 86, 68, 50},
- {100, 100, 100, 100, 100, 89, 71, 53},
- {100, 100, 100, 100, 100, 100, 95, 90}
- };
-
- protected int IMP(int points) {
- int i = 0;
- while (IMPs[i + 1] <= points) {
- i++;
- }
- return i;
- }
-
- protected int percent(int PC, int points, int ba) {
- int points_i = 0;
- int PC_i = 0;
-
- while (this.percent_points[ba][points_i + 1] <= points) {
- points_i++;
- }
-
- while (this.percent_PC[PC_i + 1] <= PC) {
- PC_i++;
- }
-
- return this.percent[points_i][PC_i];
- }
-
- public BridgeResult compute(int bid, int color, int dbl, int baba, int PC, int tricks) {
- BridgeResult result = new BridgeResult();
- int we_ba = baba / 2;
- int you_ba = baba % 2;
-
- // 4 pasy
- if (bid == 0) {
- result.pointsFor = BridgeResult.PointsFor.Them;
- result.points = this.PC[we_ba][you_ba][PC];
- result.IMPs = this.IMP(result.points);
- result.percent = 100 - this.percent(PC, 0, we_ba);
-
- return result;
- }
-
-
- // Wynik w punktach
- int result_points;
- // Punkty za lewy kontraktowe
- int result_tricks;
- // Wynik w punktach, uwzględniając ilość PC
- int result_tricks_w_PC;
-
- // Ilość nadróbek
- int additional_tricks = tricks - 6 - bid;
-
- // Mnożnik przy kontrze
- int multiplier = dbl + 1;
- if (multiplier == 3) {
- multiplier = 4;
- }
-
- // Kontrakt ugrany
- if (additional_tricks >= 0) {
- // "Nadróbki: jak za lewy"
- if (multiplier == 1) {
- result_tricks = this.tricks[color][bid];
- result_points = this.tricks[color][tricks - 6];
- }
- // Kontra lub rekontra
- else {
- result_tricks = this.tricks[color][bid] * multiplier;
- result_points = result_tricks;
-
- // Za wygranie z kontrą
- result_points += 25 * multiplier;
- // Za nadróbki
- result_points += additional_tricks * (we_ba == 0 ? 50 : 100) * multiplier;
- }
-
- if (bid == 6) {
- // Za szlemika
- result_points += (we_ba == 0 ? 500 : 750);
- } else if (bid == 7) {
- // Za szlema
- result_points += (we_ba == 0 ? 1000 : 1500);
- }
-
- if (result_tricks >= 100) {
- // Za partię
- result_points += (we_ba == 0 ? 300 : 500);
- } else {
- // Za częściówkę
- result_points += 50;
- }
- }
- // Wpadka
- else {
- // Punkty za wpadkę
- result_points = -1 * this.wpadki[we_ba][dbl][-1 * additional_tricks];
- }
-
- // Uwzględniamy ilość punktów, którą trzeba było zdobyć
- result_tricks_w_PC = result_points - this.PC[we_ba][you_ba][PC];
-
- // Zapis dla przeciwników
- if (result_tricks_w_PC < 0) {
- result.pointsFor = BridgeResult.PointsFor.Them;
- result.pointsBefore = -1 * result_points;
- result.points = -1 * result_tricks_w_PC;
- result.IMPs = IMP(result.points);
- if (result_points < 0) {
- result.percent = percent(40 - PC, -1 * result_points, you_ba);
- } else {
- result.percent = 100 - percent(PC, result_points, we_ba);
- }
- }
- // Zapis dla rozgrywających
- else {
- result.pointsFor = BridgeResult.PointsFor.Us;
- result.pointsBefore = result_points;
- result.points = result_tricks_w_PC;
- result.IMPs = IMP(result.points);
- if (result_points > 0) {
- result.percent = percent(PC, result_points, we_ba);
- } else {
- result.percent = 100 - percent(40 - PC, -1 * result_points, you_ba);
- }
- }
-
- return result;
- }
-}
--
Gitblit v1.9.1