| @@ -303,7 +303,7 @@ | |||
| <PersistentState> | |||
| <option name="values"> | |||
| <map> | |||
| <entry key="url" value="file:/$USER_HOME$/AppData/Local/Android/Sdk/icons/material/materialiconsoutlined/thumb_up/outline_thumb_up_24.xml" /> | |||
| <entry key="url" value="file:/$USER_HOME$/AppData/Local/Android/Sdk/icons/material/materialiconsoutlined/save/outline_save_24.xml" /> | |||
| </map> | |||
| </option> | |||
| </PersistentState> | |||
| @@ -313,7 +313,7 @@ | |||
| </option> | |||
| <option name="values"> | |||
| <map> | |||
| <entry key="outputName" value="ic_outline_thumb_up_24" /> | |||
| <entry key="outputName" value="ic_icon_save" /> | |||
| <entry key="sourceFile" value="Z:\Work\Java Projects\Android\RecurveBowSight\archery_equipment_choose.svg" /> | |||
| </map> | |||
| </option> | |||
| @@ -20,7 +20,10 @@ | |||
| <entry key="..\:/Work/Java Projects/Android/RecurveBowSight/V2/app/src/main/res/drawable/ic_outline_handshake_24.xml" value="0.2675" /> | |||
| <entry key="..\:/Work/Java Projects/Android/RecurveBowSight/V2/app/src/main/res/drawable/ic_outline_thumb_up_24.xml" value="0.2675" /> | |||
| <entry key="..\:/Work/Java Projects/Android/RecurveBowSight/V2/app/src/main/res/drawable/side_nav_bar.xml" value="0.285" /> | |||
| <entry key="..\:/Work/Java Projects/Android/RecurveBowSight/V2/app/src/main/res/layout/activity_equipment_configuration.xml" value="0.1994535519125683" /> | |||
| <entry key="..\:/Work/Java Projects/Android/RecurveBowSight/V2/app/src/main/res/layout/activity_main.xml" value="0.28072916666666664" /> | |||
| <entry key="..\:/Work/Java Projects/Android/RecurveBowSight/V2/app/src/main/res/layout/activity_riser_configuration.xml" value="0.25" /> | |||
| <entry key="..\:/Work/Java Projects/Android/RecurveBowSight/V2/app/src/main/res/layout/activity_sight_configuration.xml" value="0.1994535519125683" /> | |||
| <entry key="..\:/Work/Java Projects/Android/RecurveBowSight/V2/app/src/main/res/layout/app_bar_main.xml" value="0.1480978260869565" /> | |||
| <entry key="..\:/Work/Java Projects/Android/RecurveBowSight/V2/app/src/main/res/layout/content_main.xml" value="0.3625" /> | |||
| <entry key="..\:/Work/Java Projects/Android/RecurveBowSight/V2/app/src/main/res/layout/fragment_about.xml" value="0.15812841530054644" /> | |||
| @@ -30,7 +33,7 @@ | |||
| <entry key="..\:/Work/Java Projects/Android/RecurveBowSight/V2/app/src/main/res/layout/fragment_calcsight_trajectory.xml" value="0.1840846994535519" /> | |||
| <entry key="..\:/Work/Java Projects/Android/RecurveBowSight/V2/app/src/main/res/layout/fragment_equipment.xml" value="0.12361111111111112" /> | |||
| <entry key="..\:/Work/Java Projects/Android/RecurveBowSight/V2/app/src/main/res/layout/fragment_equipment_add.xml" value="0.15812841530054644" /> | |||
| <entry key="..\:/Work/Java Projects/Android/RecurveBowSight/V2/app/src/main/res/layout/fragment_equipment_add_list.xml" value="0.25" /> | |||
| <entry key="..\:/Work/Java Projects/Android/RecurveBowSight/V2/app/src/main/res/layout/fragment_equipment_add_list.xml" value="0.33" /> | |||
| <entry key="..\:/Work/Java Projects/Android/RecurveBowSight/V2/app/src/main/res/layout/fragment_equipment_choose.xml" value="0.33" /> | |||
| <entry key="..\:/Work/Java Projects/Android/RecurveBowSight/V2/app/src/main/res/layout/fragment_equipment_choose_list.xml" value="0.25" /> | |||
| <entry key="..\:/Work/Java Projects/Android/RecurveBowSight/V2/app/src/main/res/layout/fragment_gallery.xml" value="0.1480978260869565" /> | |||
| @@ -21,14 +21,17 @@ | |||
| </component> | |||
| <component name="ChangeListManager"> | |||
| <list default="true" id="41369230-c648-4299-baf3-de5f13bcb18c" name="Changes" comment=""> | |||
| <change afterPath="$PROJECT_DIR$/app/src/main/java/ch/spherIC/recurvebowsight/ui/calcsight/CalculateSightSightSettingFragment.java" afterDir="false" /> | |||
| <change afterPath="$PROJECT_DIR$/app/src/main/java/ch/spherIC/recurvebowsight/ui/calcsight/CalculateSightSightSettingViewModel.java" afterDir="false" /> | |||
| <change afterPath="$PROJECT_DIR$/app/src/main/java/ch/spherIC/recurvebowsight/ui/calcsight/CalculateSightTrajectoryFragment.java" afterDir="false" /> | |||
| <change afterPath="$PROJECT_DIR$/app/src/main/java/ch/spherIC/recurvebowsight/ui/calcsight/CalculateSightTrajectoryViewModel.java" afterDir="false" /> | |||
| <change afterPath="$PROJECT_DIR$/app/src/main/res/drawable/ic_cfg_riser.xml" afterDir="false" /> | |||
| <change afterPath="$PROJECT_DIR$/app/src/main/res/layout/fragment_calcsight_sightsetting.xml" afterDir="false" /> | |||
| <change afterPath="$PROJECT_DIR$/app/src/main/res/layout/fragment_calcsight_trajectory.xml" afterDir="false" /> | |||
| <change afterPath="$PROJECT_DIR$/app/src/main/res/values/string_arrays.xml" afterDir="false" /> | |||
| <change afterPath="$PROJECT_DIR$/app/src/main/java/ch/spherIC/recurvebowsight/ui/configuration" afterDir="true" /> | |||
| <change afterPath="$PROJECT_DIR$/app/src/main/java/ch/spherIC/recurvebowsight/ui/configuration/EquipmentConfigurationActivity.java" afterDir="false" /> | |||
| <change afterPath="$PROJECT_DIR$/app/src/main/java/ch/spherIC/recurvebowsight/ui/configuration/RiserConfigurationActivity.java" afterDir="false" /> | |||
| <change afterPath="$PROJECT_DIR$/app/src/main/java/ch/spherIC/recurvebowsight/ui/configuration/RiserConfigurationViewModel.java" afterDir="false" /> | |||
| <change afterPath="$PROJECT_DIR$/app/src/main/java/ch/spherIC/recurvebowsight/ui/configuration/SightConfigurationActivity.java" afterDir="false" /> | |||
| <change afterPath="$PROJECT_DIR$/app/src/main/res/drawable/ic_icon_add.xml" afterDir="false" /> | |||
| <change afterPath="$PROJECT_DIR$/app/src/main/res/drawable/ic_icon_delete.xml" afterDir="false" /> | |||
| <change afterPath="$PROJECT_DIR$/app/src/main/res/drawable/ic_icon_save.xml" afterDir="false" /> | |||
| <change afterPath="$PROJECT_DIR$/app/src/main/res/layout/activity_equipment_configuration.xml" afterDir="false" /> | |||
| <change afterPath="$PROJECT_DIR$/app/src/main/res/layout/activity_riser_configuration.xml" afterDir="false" /> | |||
| <change afterPath="$PROJECT_DIR$/app/src/main/res/layout/activity_sight_configuration.xml" afterDir="false" /> | |||
| <change beforePath="$PROJECT_DIR$/.gradle/7.3.3/executionHistory/executionHistory.bin" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/7.3.3/executionHistory/executionHistory.bin" afterDir="false" /> | |||
| <change beforePath="$PROJECT_DIR$/.gradle/7.3.3/executionHistory/executionHistory.lock" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/7.3.3/executionHistory/executionHistory.lock" afterDir="false" /> | |||
| <change beforePath="$PROJECT_DIR$/.gradle/7.3.3/fileHashes/fileHashes.bin" beforeDir="false" afterPath="$PROJECT_DIR$/.gradle/7.3.3/fileHashes/fileHashes.bin" afterDir="false" /> | |||
| @@ -38,20 +41,15 @@ | |||
| <change beforePath="$PROJECT_DIR$/.idea/assetWizardSettings.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/assetWizardSettings.xml" afterDir="false" /> | |||
| <change beforePath="$PROJECT_DIR$/.idea/misc.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/misc.xml" afterDir="false" /> | |||
| <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> | |||
| <change beforePath="$PROJECT_DIR$/app/src/main/java/ch/spherIC/recurvebowsight/ui/calcsight/CalculateSightCollectionAdapter.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/ch/spherIC/recurvebowsight/ui/calcsight/CalculateSightCollectionAdapter.java" afterDir="false" /> | |||
| <change beforePath="$PROJECT_DIR$/app/src/main/java/ch/spherIC/recurvebowsight/ui/calcsight/CalculateSightParametersFragment.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/ch/spherIC/recurvebowsight/ui/calcsight/CalculateSightParametersFragment.java" afterDir="false" /> | |||
| <change beforePath="$PROJECT_DIR$/app/src/main/java/ch/spherIC/recurvebowsight/ui/calcsight/CalculateSightParametersViewModel.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/ch/spherIC/recurvebowsight/ui/calcsight/CalculateSightParametersViewModel.java" afterDir="false" /> | |||
| <change beforePath="$PROJECT_DIR$/app/src/main/AndroidManifest.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/AndroidManifest.xml" afterDir="false" /> | |||
| <change beforePath="$PROJECT_DIR$/app/src/main/java/ch/spherIC/recurvebowsight/database/dao/DAO.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/ch/spherIC/recurvebowsight/database/dao/DAO.java" afterDir="false" /> | |||
| <change beforePath="$PROJECT_DIR$/app/src/main/java/ch/spherIC/recurvebowsight/model/ArcherySetup.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/ch/spherIC/recurvebowsight/model/ArcherySetup.java" afterDir="false" /> | |||
| <change beforePath="$PROJECT_DIR$/app/src/main/java/ch/spherIC/recurvebowsight/model/Riser.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/ch/spherIC/recurvebowsight/model/Riser.java" afterDir="false" /> | |||
| <change beforePath="$PROJECT_DIR$/app/src/main/java/ch/spherIC/recurvebowsight/model/Sight.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/ch/spherIC/recurvebowsight/model/Sight.java" afterDir="false" /> | |||
| <change beforePath="$PROJECT_DIR$/app/src/main/java/ch/spherIC/recurvebowsight/ui/equipment/AddEquipmentFragment.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/ch/spherIC/recurvebowsight/ui/equipment/AddEquipmentFragment.java" afterDir="false" /> | |||
| <change beforePath="$PROJECT_DIR$/app/src/main/java/ch/spherIC/recurvebowsight/ui/equipment/EquipmentFragment.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/ch/spherIC/recurvebowsight/ui/equipment/ChooseEquipmentFragment.java" afterDir="false" /> | |||
| <change beforePath="$PROJECT_DIR$/app/src/main/java/ch/spherIC/recurvebowsight/ui/equipment/EquipmentRecyclerViewAdapter.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/ch/spherIC/recurvebowsight/ui/equipment/EquipmentRecyclerViewAdapter.java" afterDir="false" /> | |||
| <change beforePath="$PROJECT_DIR$/app/src/main/res/drawable/ic_menu_calcsight.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/drawable/ic_menu_calcsight.xml" afterDir="false" /> | |||
| <change beforePath="$PROJECT_DIR$/app/src/main/res/layout/fragment_calcsight.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/layout/fragment_calcsight.xml" afterDir="false" /> | |||
| <change beforePath="$PROJECT_DIR$/app/src/main/res/layout/fragment_calcsight_parameters.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/layout/fragment_calcsight_parameters.xml" afterDir="false" /> | |||
| <change beforePath="$PROJECT_DIR$/app/src/main/res/layout/fragment_equipment_add.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/layout/fragment_equipment_add_list.xml" afterDir="false" /> | |||
| <change beforePath="$PROJECT_DIR$/app/src/main/res/layout/fragment_equipment_choose_list.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/layout/fragment_equipment_choose_list.xml" afterDir="false" /> | |||
| <change beforePath="$PROJECT_DIR$/app/src/main/res/navigation/mobile_navigation.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/navigation/mobile_navigation.xml" afterDir="false" /> | |||
| <change beforePath="$PROJECT_DIR$/app/src/main/java/ch/spherIC/recurvebowsight/ui/equipment/ChooseEquipmentFragment.java" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/java/ch/spherIC/recurvebowsight/ui/equipment/ChooseEquipmentFragment.java" afterDir="false" /> | |||
| <change beforePath="$PROJECT_DIR$/app/src/main/res/layout/fragment_equipment_add_list.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/layout/fragment_equipment_add_list.xml" afterDir="false" /> | |||
| <change beforePath="$PROJECT_DIR$/app/src/main/res/values-de/strings.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/values-de/strings.xml" afterDir="false" /> | |||
| <change beforePath="$PROJECT_DIR$/app/src/main/res/values/dimens.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/values/dimens.xml" afterDir="false" /> | |||
| <change beforePath="$PROJECT_DIR$/app/src/main/res/values/strings.xml" beforeDir="false" afterPath="$PROJECT_DIR$/app/src/main/res/values/strings.xml" afterDir="false" /> | |||
| </list> | |||
| <option name="SHOW_DIALOG" value="false" /> | |||
| @@ -74,6 +72,14 @@ | |||
| </list> | |||
| </option> | |||
| </component> | |||
| <component name="GitSEFilterConfiguration"> | |||
| <file-type-list> | |||
| <filtered-out-file-type name="LOCAL_BRANCH" /> | |||
| <filtered-out-file-type name="REMOTE_BRANCH" /> | |||
| <filtered-out-file-type name="TAG" /> | |||
| <filtered-out-file-type name="COMMIT_BY_MESSAGE" /> | |||
| </file-type-list> | |||
| </component> | |||
| <component name="ProjectId" id="2CtkRh68cCgVducVNKsBVO29cSE" /> | |||
| <component name="ProjectViewState"> | |||
| <option name="hideEmptyMiddlePackages" value="true" /> | |||
| @@ -90,10 +96,16 @@ | |||
| <property name="android-custom-viewC:/Users/FSmilari/.gradle/caches/modules-2/files-2.1/androidx.viewpager2/viewpager2/1.0.0/3c3569044e6969f1ee5c3aa03b08e6717a2d782f/viewpager2-1.0.0-sources.jar!/androidx/viewpager2/widget/ViewPager2.java_SELECTED" value="ViewPager2" /> | |||
| <property name="android-custom-viewC:/Users/FSmilari/.gradle/caches/modules-2/files-2.1/androidx.viewpager2/viewpager2/1.0.0/3c3569044e6969f1ee5c3aa03b08e6717a2d782f/viewpager2-1.0.0-sources.jar!/androidx/viewpager2/widget/ViewPager2.java_ViewPager2_DIMENSIONS" value="1080 1920" /> | |||
| <property name="android-custom-viewC:/Users/FSmilari/AppData/Local/Android/Sdk/sources/android-29/android/view/View.java_SELECTED" value="View" /> | |||
| <property name="android-custom-viewC:/Users/FSmilari/AppData/Local/Android/Sdk/sources/android-29/android/widget/EditText.java_SELECTED" value="EditText" /> | |||
| <property name="android-custom-viewC:/Users/FSmilari/AppData/Local/Android/Sdk/sources/android-29/android/widget/TextView.java_SELECTED" value="TextView" /> | |||
| <property name="android-custom-viewC:/Users/FSmilari/AppData/Local/Android/Sdk/sources/android-32/android/view/View.java_SELECTED" value="View" /> | |||
| <property name="android-custom-viewC:/Users/FSmilari/AppData/Local/Android/Sdk/sources/android-32/android/view/View.java_View_DIMENSIONS" value="1080 1920" /> | |||
| <property name="android-custom-viewC:/Users/FSmilari/AppData/Local/Android/Sdk/sources/android-32/android/view/ViewGroup.java_SELECTED" value="ViewGroup" /> | |||
| <property name="android-custom-viewC:/Users/FSmilari/AppData/Local/Android/Sdk/sources/android-32/android/view/ViewGroup.java_ViewGroup_DIMENSIONS" value="1080 1920" /> | |||
| <property name="android-custom-viewC:/Users/FSmilari/AppData/Local/Android/Sdk/sources/android-32/android/widget/AutoCompleteTextView.java_AutoCompleteTextView_DIMENSIONS" value="1080 1920" /> | |||
| <property name="android-custom-viewC:/Users/FSmilari/AppData/Local/Android/Sdk/sources/android-32/android/widget/AutoCompleteTextView.java_SELECTED" value="AutoCompleteTextView" /> | |||
| <property name="android-custom-viewC:/Users/FSmilari/AppData/Local/Android/Sdk/sources/android-32/android/widget/EditText.java_EditText_DIMENSIONS" value="1080 1920" /> | |||
| <property name="android-custom-viewC:/Users/FSmilari/AppData/Local/Android/Sdk/sources/android-32/android/widget/EditText.java_SELECTED" value="EditText" /> | |||
| <property name="android-custom-viewC:/Users/FSmilari/AppData/Local/Android/Sdk/sources/android-32/android/widget/TextView.java_SELECTED" value="TextView" /> | |||
| <property name="android-custom-viewC:/Users/FSmilari/AppData/Local/Android/Sdk/sources/android-32/android/widget/TextView.java_TextView_DIMENSIONS" value="1080 1920" /> | |||
| <property name="cidr.known.project.marker" value="true" /> | |||
| @@ -104,6 +116,9 @@ | |||
| <property name="settings.editor.selected.configurable" value="preferences.keymap" /> | |||
| </component> | |||
| <component name="RecentsManager"> | |||
| <key name="android.template.-1377507120"> | |||
| <recent name="ch.spherIC.recurvebowsight.ui.configuration" /> | |||
| </key> | |||
| <key name="CopyFile.RECENT_KEYS"> | |||
| <recent name="Z:\Work\Java Projects\Android\RecurveBowSight\V2\app\src\main\java\ch\spherIC\recurvebowsight\ui\calcsight" /> | |||
| <recent name="Z:\Work\Java Projects\Android\RecurveBowSight\V2\app\src\main\res\layout" /> | |||
| @@ -114,10 +129,18 @@ | |||
| <key name="android.template.1093395407"> | |||
| <recent name="ch.spherIC.recurvebowsight" /> | |||
| </key> | |||
| <key name="android.template.1734690915"> | |||
| <recent name="ch.spherIC.recurvebowsight.ui.configuration" /> | |||
| </key> | |||
| <key name="android.template.170908341"> | |||
| <recent name="ch.spherIC.recurvebowsight" /> | |||
| </key> | |||
| <key name="android.template.-1136685790"> | |||
| <recent name="ch.spherIC.recurvebowsight.ui.configuration" /> | |||
| <recent name="ch.spherIC.recurvebowsight" /> | |||
| </key> | |||
| <key name="CopyClassDialog.RECENTS_KEY"> | |||
| <recent name="ch.spherIC.recurvebowsight.ui.configuration" /> | |||
| <recent name="ch.spherIC.recurvebowsight.ui.calcsight" /> | |||
| <recent name="ch.spherIC.recurvebowsight.ui.equipment" /> | |||
| </key> | |||
| @@ -232,29 +255,45 @@ | |||
| <line>48</line> | |||
| <option name="timeStamp" value="10" /> | |||
| </line-breakpoint> | |||
| <line-breakpoint enabled="true" suspend="THREAD" type="java-line"> | |||
| <url>file://$PROJECT_DIR$/app/src/main/java/ch/spherIC/recurvebowsight/ui/equipment/EquipmentRecyclerViewAdapter.java</url> | |||
| <line>51</line> | |||
| <option name="timeStamp" value="13" /> | |||
| </line-breakpoint> | |||
| <line-breakpoint enabled="true" suspend="THREAD" type="java-line"> | |||
| <url>file://$PROJECT_DIR$/app/src/main/java/ch/spherIC/recurvebowsight/ui/equipment/AddEquipmentFragment.java</url> | |||
| <line>26</line> | |||
| <option name="timeStamp" value="11" /> | |||
| <line>75</line> | |||
| <option name="timeStamp" value="25" /> | |||
| </line-breakpoint> | |||
| <line-breakpoint enabled="true" suspend="THREAD" type="java-line"> | |||
| <url>file://$PROJECT_DIR$/app/src/main/java/ch/spherIC/recurvebowsight/ui/equipment/AddEquipmentFragment.java</url> | |||
| <line>30</line> | |||
| <option name="timeStamp" value="12" /> | |||
| <line>80</line> | |||
| <option name="timeStamp" value="26" /> | |||
| </line-breakpoint> | |||
| <line-breakpoint enabled="true" suspend="THREAD" type="java-line"> | |||
| <url>file://$PROJECT_DIR$/app/src/main/java/ch/spherIC/recurvebowsight/ui/equipment/EquipmentRecyclerViewAdapter.java</url> | |||
| <line>51</line> | |||
| <option name="timeStamp" value="13" /> | |||
| <url>file://$PROJECT_DIR$/app/src/main/java/ch/spherIC/recurvebowsight/ui/configuration/RiserConfigurationActivity.java</url> | |||
| <line>95</line> | |||
| <option name="timeStamp" value="37" /> | |||
| </line-breakpoint> | |||
| <line-breakpoint enabled="true" suspend="THREAD" type="java-line"> | |||
| <url>file://$PROJECT_DIR$/app/src/main/java/ch/spherIC/recurvebowsight/ui/configuration/RiserConfigurationActivity.java</url> | |||
| <line>168</line> | |||
| <option name="timeStamp" value="40" /> | |||
| </line-breakpoint> | |||
| <line-breakpoint enabled="true" suspend="THREAD" type="java-line"> | |||
| <url>file://$PROJECT_DIR$/app/src/main/java/ch/spherIC/recurvebowsight/ui/configuration/RiserConfigurationActivity.java</url> | |||
| <line>124</line> | |||
| <option name="timeStamp" value="42" /> | |||
| </line-breakpoint> | |||
| </breakpoints> | |||
| </breakpoint-manager> | |||
| <watches-manager> | |||
| <configuration name="app"> | |||
| <watch expression="getArguments()" /> | |||
| <watch expression="this.selectedArcherySetup.getName()" language="JAVA" /> | |||
| <watch expression="tab.getPosition()" language="JAVA" /> | |||
| <watch expression="v.findViewById(R.id.card_view_riser_setup)" language="JAVA" /> | |||
| <watch expression="textView.getAdapter().getCount()" language="JAVA" /> | |||
| <watch expression="textView.getAdapter().getItem(2)" language="JAVA" /> | |||
| <watch expression="this.riserConfigurationViewModel.getManufacturer().getValue()" language="JAVA" /> | |||
| <watch expression="this.riserConfigurationViewModel.getVVisH().getValue()" language="JAVA" /> | |||
| <watch expression="adapter.getCount()" language="JAVA" /> | |||
| </configuration> | |||
| </watches-manager> | |||
| </component> | |||
| @@ -13,6 +13,15 @@ | |||
| android:supportsRtl="true" | |||
| android:theme="@style/Theme.RecurveBowSight" | |||
| tools:targetApi="31"> | |||
| <activity | |||
| android:name=".ui.configuration.EquipmentConfigurationActivity" | |||
| android:exported="false" /> | |||
| <activity | |||
| android:name=".ui.configuration.SightConfigurationActivity" | |||
| android:exported="false" /> | |||
| <activity | |||
| android:name=".ui.configuration.RiserConfigurationActivity" | |||
| android:exported="false" /> | |||
| <activity | |||
| android:name=".RBSMainActivity" | |||
| android:exported="true" | |||
| @@ -82,7 +82,7 @@ public abstract class DAO<E extends IEntity> { | |||
| } | |||
| /** | |||
| * F�gt eine Entit�t in die DB ein. | |||
| * Fügt eine Entität in die DB ein. | |||
| * | |||
| * @param entity | |||
| * @return | |||
| @@ -5,6 +5,8 @@ package ch.spherIC.recurvebowsight.model; | |||
| import android.os.Parcel; | |||
| import java.util.Objects; | |||
| /** | |||
| * @author F. Smilari | |||
| */ | |||
| @@ -377,4 +379,17 @@ public class ArcherySetup implements IArcherySetup { | |||
| @Override | |||
| public void writeToParcel(Parcel dest, int flags) { | |||
| } | |||
| @Override | |||
| public boolean equals(Object o) { | |||
| if (this == o) return true; | |||
| if (o == null || getClass() != o.getClass()) return false; | |||
| ArcherySetup that = (ArcherySetup) o; | |||
| return id == that.id && name.equals(that.name); | |||
| } | |||
| @Override | |||
| public int hashCode() { | |||
| return Objects.hash(id, name); | |||
| } | |||
| } | |||
| @@ -4,6 +4,7 @@ | |||
| package ch.spherIC.recurvebowsight.model; | |||
| import java.text.DecimalFormat; | |||
| import java.util.Objects; | |||
| /** | |||
| @@ -146,4 +147,19 @@ public class Riser implements IRiser { | |||
| return getManufacturer() + " " + getModel() + " " + DF.format(getSize()) + "\""; | |||
| } | |||
| //TODO: equals and hashCode | |||
| @Override | |||
| public boolean equals(Object o) { | |||
| if (this == o) return true; | |||
| if (o == null || getClass() != o.getClass()) return false; | |||
| Riser riser = (Riser) o; | |||
| return id == riser.id && manufacturer.equals(riser.manufacturer) && model.equals(riser.model); | |||
| } | |||
| @Override | |||
| public int hashCode() { | |||
| return Objects.hash(id, manufacturer, model); | |||
| } | |||
| } | |||
| @@ -5,6 +5,7 @@ package ch.spherIC.recurvebowsight.model; | |||
| import java.util.ArrayList; | |||
| import java.util.List; | |||
| import java.util.Objects; | |||
| import java.util.StringTokenizer; | |||
| @@ -188,4 +189,16 @@ public class Sight implements ISight { | |||
| return getManufacturer() + " " + getModel(); | |||
| } | |||
| @Override | |||
| public boolean equals(Object o) { | |||
| if (this == o) return true; | |||
| if (o == null || getClass() != o.getClass()) return false; | |||
| Sight sight = (Sight) o; | |||
| return id == sight.id && manufacturer.equals(sight.manufacturer) && model.equals(sight.model); | |||
| } | |||
| @Override | |||
| public int hashCode() { | |||
| return Objects.hash(id, manufacturer, model); | |||
| } | |||
| } | |||
| @@ -0,0 +1,31 @@ | |||
| package ch.spherIC.recurvebowsight.ui.configuration; | |||
| import android.os.Bundle; | |||
| import android.view.MenuItem; | |||
| import androidx.annotation.NonNull; | |||
| import androidx.appcompat.app.AppCompatActivity; | |||
| import ch.spherIC.recurvebowsight.R; | |||
| public class EquipmentConfigurationActivity extends AppCompatActivity { | |||
| @Override | |||
| protected void onCreate(Bundle savedInstanceState) { | |||
| super.onCreate(savedInstanceState); | |||
| setContentView(R.layout.activity_equipment_configuration); | |||
| getSupportActionBar().setDisplayHomeAsUpEnabled(true); | |||
| getSupportActionBar().setTitle(R.string.title_activity_archery_setup_configuration); | |||
| } | |||
| @Override | |||
| public boolean onOptionsItemSelected(@NonNull MenuItem item) { | |||
| switch (item.getItemId()) { | |||
| case android.R.id.home: | |||
| this.finish(); | |||
| return true; | |||
| } | |||
| return super.onOptionsItemSelected(item); | |||
| } | |||
| } | |||
| @@ -0,0 +1,182 @@ | |||
| package ch.spherIC.recurvebowsight.ui.configuration; | |||
| import android.app.AlertDialog; | |||
| import android.content.DialogInterface; | |||
| import android.os.Bundle; | |||
| import android.view.MenuItem; | |||
| import android.widget.ArrayAdapter; | |||
| import android.widget.AutoCompleteTextView; | |||
| import android.widget.Button; | |||
| import java.text.DecimalFormat; | |||
| import java.util.List; | |||
| import androidx.annotation.NonNull; | |||
| import androidx.appcompat.app.AppCompatActivity; | |||
| import androidx.lifecycle.ViewModelProvider; | |||
| import ch.spherIC.recurvebowsight.R; | |||
| import ch.spherIC.recurvebowsight.database.dao.RiserDao; | |||
| import ch.spherIC.recurvebowsight.databinding.ActivityRiserConfigurationBinding; | |||
| import ch.spherIC.recurvebowsight.model.IRiser; | |||
| import ch.spherIC.recurvebowsight.model.Riser; | |||
| import ch.spherIC.recurvebowsight.utilities.PlatformUtils; | |||
| public class RiserConfigurationActivity extends AppCompatActivity { | |||
| private ActivityRiserConfigurationBinding binding; | |||
| private RiserConfigurationViewModel riserConfigurationViewModel; | |||
| @Override | |||
| protected void onCreate(Bundle savedInstanceState) { | |||
| super.onCreate(savedInstanceState); | |||
| setContentView(R.layout.activity_riser_configuration); | |||
| getSupportActionBar().setDisplayHomeAsUpEnabled(true); | |||
| getSupportActionBar().setTitle(R.string.title_activity_riser_configuration); | |||
| this.riserConfigurationViewModel = new ViewModelProvider(this).get(RiserConfigurationViewModel.class); | |||
| this.binding = ActivityRiserConfigurationBinding.bind(findViewById(R.id.activity_riser_configuration)); | |||
| addObservers(); | |||
| addRiserSpinnerListener(); | |||
| addButtonListeners(); | |||
| loadRisers(); | |||
| } | |||
| @Override | |||
| public boolean onOptionsItemSelected(@NonNull MenuItem item) { | |||
| switch (item.getItemId()) { | |||
| case android.R.id.home: | |||
| this.finish(); | |||
| return true; | |||
| } | |||
| return super.onOptionsItemSelected(item); | |||
| } | |||
| private void addObservers() { | |||
| DecimalFormat dF = new DecimalFormat("#.#"); | |||
| this.riserConfigurationViewModel.getManufacturer().observe(this, manufacturer -> this.binding.rcManufacturerTxt.setText(manufacturer)); | |||
| this.riserConfigurationViewModel.getModel().observe(this, model -> this.binding.rcModelTxt.setText(model)); | |||
| this.riserConfigurationViewModel.getSize().observe(this, size -> this.binding.rcSizeTxt.setText(size != null ? dF.format(size) : "")); | |||
| this.riserConfigurationViewModel.getVVisH().observe(this, vVisH -> this.binding.rcVvisHTxt.setText(vVisH != null ? dF.format(vVisH) : "")); | |||
| this.riserConfigurationViewModel.getVVisV().observe(this, vVisV -> this.binding.rcVvisVTxt.setText(vVisV != null ? dF.format(vVisV) : "")); | |||
| } | |||
| private void addRiserSpinnerListener() { | |||
| AutoCompleteTextView textView = findViewById(R.id.riserSelectionTxt); | |||
| textView.setOnItemClickListener((parent, view, position, id) -> { | |||
| IRiser selectedRiser = (IRiser) textView.getAdapter().getItem(position); | |||
| if (selectedRiser != null) { | |||
| riserConfigurationViewModel.setRiser(selectedRiser); | |||
| } | |||
| }); | |||
| } | |||
| private void addButtonListeners() { | |||
| Button newButton = findViewById(R.id.risercfg_button_new); | |||
| newButton.setOnClickListener(v -> addNewRiser()); | |||
| Button deleteButton = findViewById(R.id.risercfg_button_delete); | |||
| deleteButton.setOnClickListener(v -> deleteRiser()); | |||
| Button saveButton = findViewById(R.id.risercfg_button_save); | |||
| saveButton.setOnClickListener(v -> saveRiserConfiguration()); | |||
| } | |||
| private void loadRisers() { | |||
| List<IRiser> risers = RiserDao.getInstance().loadAll(); | |||
| ArrayAdapter<IRiser> adapter = new ArrayAdapter<IRiser>(this, android.R.layout.simple_dropdown_item_1line, risers); | |||
| AutoCompleteTextView textView = binding.riserSelectionTxt; | |||
| textView.setAdapter(adapter); | |||
| textView.invalidate(); | |||
| } | |||
| private void addNewRiser() { | |||
| IRiser newRiser = new Riser(0, "", "", null, null, null); | |||
| this.riserConfigurationViewModel.setRiser(newRiser); | |||
| String strMandatory = getString(R.string.caption_mandatory); | |||
| this.binding.riserSelectionTxt.setText(null); | |||
| this.binding.rcManufacturerTxt.setError(strMandatory); | |||
| this.binding.rcModelTxt.setError(strMandatory); | |||
| this.binding.rcSizeTxt.setError(strMandatory); | |||
| this.binding.rcVvisHTxt.setError(strMandatory); | |||
| this.binding.rcVvisVTxt.setError(strMandatory); | |||
| AutoCompleteTextView textView = binding.riserSelectionTxt; | |||
| ((ArrayAdapter<IRiser>) textView.getAdapter()).insert(newRiser, 0); | |||
| textView.setAdapter((ArrayAdapter<IRiser>) textView.getAdapter()); | |||
| textView.setSelection(0); | |||
| } | |||
| private void saveRiserConfiguration() { | |||
| if (!validateInputs()) { | |||
| return; | |||
| } | |||
| this.riserConfigurationViewModel.setManufacturerText(this.binding.rcManufacturerTxt.getText().toString()); | |||
| this.riserConfigurationViewModel.setModelText(this.binding.rcModelTxt.getText().toString()); | |||
| this.riserConfigurationViewModel.setSize(Double.parseDouble(this.binding.rcSizeTxt.getText().toString())); | |||
| this.riserConfigurationViewModel.setVVisH(Double.parseDouble(this.binding.rcVvisHTxt.getText().toString())); | |||
| this.riserConfigurationViewModel.setVVisV(Double.parseDouble(this.binding.rcVvisVTxt.getText().toString())); | |||
| IRiser lRiser = this.riserConfigurationViewModel.getRiser().getValue(); | |||
| if (lRiser.getId() > 0) { | |||
| RiserDao.getInstance().update(lRiser); | |||
| } else { | |||
| lRiser = RiserDao.getInstance().insert(lRiser); | |||
| loadRisers(); | |||
| AutoCompleteTextView textView = this.binding.riserSelectionTxt; | |||
| final int position = ((ArrayAdapter<IRiser>) textView.getAdapter()).getPosition(lRiser); | |||
| textView.setListSelection(position); | |||
| textView.setText(lRiser.toString()); | |||
| ((ArrayAdapter<IRiser>) textView.getAdapter()).getFilter().filter(null); | |||
| PlatformUtils.toast(RiserConfigurationActivity.this, String.format(getString(R.string.caption_Cfg_SaveSuccessful), lRiser)).show(); | |||
| } | |||
| } | |||
| private boolean validateInputs() { | |||
| int invalidFields = 0; | |||
| if (this.binding.rcManufacturerTxt.getText().toString().isEmpty() || this.binding.rcManufacturerTxt.getText().toString().equals("*")) { | |||
| invalidFields++; | |||
| } | |||
| if (this.binding.rcModelTxt.getText().toString().isEmpty() || this.binding.rcModelTxt.getText().toString().equals("*")) { | |||
| invalidFields++; | |||
| } | |||
| if (this.binding.rcSizeTxt.getText() == null || this.binding.rcSizeTxt.getText().toString().equals("")) { | |||
| invalidFields++; | |||
| } | |||
| if (this.binding.rcVvisHTxt.getText() == null || this.binding.rcVvisHTxt.getText().toString().equals("")) { | |||
| invalidFields++; | |||
| } | |||
| if (this.binding.rcVvisVTxt.getText() == null || this.binding.rcVvisVTxt.getText().toString().equals("")) { | |||
| invalidFields++; | |||
| } | |||
| if (invalidFields > 0) { | |||
| PlatformUtils.toast(this, getResources().getString(R.string.caption_Cfg_FillAllMandatoryFields)).show(); | |||
| return false; | |||
| } | |||
| return true; | |||
| } | |||
| private void deleteRiser() { | |||
| IRiser lRiser = this.riserConfigurationViewModel.getRiser().getValue(); | |||
| if (lRiser != null) { | |||
| AlertDialog dlg = PlatformUtils.getDeleteConfirmDialog(this, lRiser.toString(), new DialogInterface.OnClickListener() { | |||
| @Override | |||
| public void onClick(final DialogInterface dialog, final int which) { | |||
| String message = String.format(getString(R.string.caption_Cfg_DeleteSuccessful), lRiser); | |||
| try { | |||
| RiserDao.getInstance().delete(lRiser); | |||
| loadRisers(); | |||
| riserConfigurationViewModel.setRiser(null); | |||
| binding.riserSelectionTxt.setText(null); | |||
| } catch (Exception e) { | |||
| message = getString(R.string.caption_Cfg_DeleteNotPossible); | |||
| } | |||
| PlatformUtils.toast(RiserConfigurationActivity.this, message).show(); | |||
| } | |||
| }); | |||
| dlg.show(); | |||
| } | |||
| } | |||
| } | |||
| @@ -0,0 +1,101 @@ | |||
| package ch.spherIC.recurvebowsight.ui.configuration; | |||
| import androidx.lifecycle.LiveData; | |||
| import androidx.lifecycle.MutableLiveData; | |||
| import androidx.lifecycle.ViewModel; | |||
| import ch.spherIC.recurvebowsight.model.IRiser; | |||
| public class RiserConfigurationViewModel extends ViewModel { | |||
| private final MutableLiveData<IRiser> mRiser; | |||
| private final MutableLiveData<String> mManufacturer; | |||
| private final MutableLiveData<String> mModel; | |||
| private final MutableLiveData<Double> mSize; | |||
| private final MutableLiveData<Double> mVVisH; | |||
| private final MutableLiveData<Double> mVVisV; | |||
| public RiserConfigurationViewModel() { | |||
| this.mRiser = new MutableLiveData<>(); | |||
| this.mManufacturer = new MutableLiveData<>(); | |||
| this.mModel = new MutableLiveData<>(); | |||
| this.mSize = new MutableLiveData<>(); | |||
| this.mVVisH = new MutableLiveData<>(); | |||
| this.mVVisV = new MutableLiveData<>(); | |||
| this.mRiser.setValue(null); | |||
| this.mManufacturer.setValue(""); | |||
| this.mModel.setValue(""); | |||
| this.mSize.setValue(null); | |||
| this.mVVisH.setValue(null); | |||
| this.mVVisV.setValue(null); | |||
| } | |||
| public void setRiser(IRiser aRiser) { | |||
| this.mRiser.setValue(aRiser); | |||
| this.mManufacturer.setValue(aRiser != null ? aRiser.getManufacturer() : ""); | |||
| this.mModel.setValue(aRiser != null ? aRiser.getModel() : ""); | |||
| this.mSize.setValue(aRiser != null ? aRiser.getSize() : null); | |||
| this.mVVisH.setValue(aRiser != null ? aRiser.getVVisH() : null); | |||
| this.mVVisV.setValue(aRiser != null ? aRiser.getVVisV() : null); | |||
| } | |||
| public void setManufacturerText(String manufacturerText) { | |||
| if (this.mRiser.getValue() != null) { | |||
| this.mRiser.getValue().setManufacturer(manufacturerText); | |||
| } | |||
| this.mManufacturer.setValue(manufacturerText); | |||
| } | |||
| public void setModelText(String modelText) { | |||
| if (this.mRiser.getValue() != null) { | |||
| this.mRiser.getValue().setModel(modelText); | |||
| } | |||
| this.mModel.setValue(modelText); | |||
| } | |||
| public void setSize(Double aSize) { | |||
| if (this.mRiser.getValue() != null) { | |||
| this.mRiser.getValue().setSize(aSize); | |||
| } | |||
| this.mSize.setValue(aSize); | |||
| } | |||
| public void setVVisH(Double aVVisH) { | |||
| if (this.mRiser.getValue() != null) { | |||
| this.mRiser.getValue().setVVisH(aVVisH); | |||
| } | |||
| this.mVVisH.setValue(aVVisH); | |||
| } | |||
| public void setVVisV(Double aVVisV) { | |||
| if (this.mRiser.getValue() != null) { | |||
| this.mRiser.getValue().setVVisV(aVVisV); | |||
| } | |||
| this.mVVisV.setValue(aVVisV); | |||
| } | |||
| public LiveData<String> getManufacturer() { | |||
| return this.mManufacturer; | |||
| } | |||
| public LiveData<IRiser> getRiser() { | |||
| return mRiser; | |||
| } | |||
| public LiveData<String> getModel() { | |||
| return mModel; | |||
| } | |||
| public LiveData<Double> getSize() { | |||
| return mSize; | |||
| } | |||
| public LiveData<Double> getVVisH() { | |||
| return mVVisH; | |||
| } | |||
| public LiveData<Double> getVVisV() { | |||
| return mVVisV; | |||
| } | |||
| } | |||
| @@ -0,0 +1,31 @@ | |||
| package ch.spherIC.recurvebowsight.ui.configuration; | |||
| import android.os.Bundle; | |||
| import android.view.MenuItem; | |||
| import androidx.annotation.NonNull; | |||
| import androidx.appcompat.app.AppCompatActivity; | |||
| import ch.spherIC.recurvebowsight.R; | |||
| public class SightConfigurationActivity extends AppCompatActivity { | |||
| @Override | |||
| protected void onCreate(Bundle savedInstanceState) { | |||
| super.onCreate(savedInstanceState); | |||
| setContentView(R.layout.activity_sight_configuration); | |||
| getSupportActionBar().setDisplayHomeAsUpEnabled(true); | |||
| getSupportActionBar().setTitle(R.string.title_activity_sight_configuration); | |||
| } | |||
| @Override | |||
| public boolean onOptionsItemSelected(@NonNull MenuItem item) { | |||
| switch (item.getItemId()) { | |||
| case android.R.id.home: | |||
| this.finish(); | |||
| return true; | |||
| } | |||
| return super.onOptionsItemSelected(item); | |||
| } | |||
| } | |||
| @@ -1,5 +1,6 @@ | |||
| package ch.spherIC.recurvebowsight.ui.equipment; | |||
| import android.content.Intent; | |||
| import android.os.Bundle; | |||
| import android.view.LayoutInflater; | |||
| import android.view.MotionEvent; | |||
| @@ -13,39 +14,22 @@ import androidx.fragment.app.Fragment; | |||
| import androidx.lifecycle.ViewModelProvider; | |||
| import ch.spherIC.recurvebowsight.R; | |||
| import ch.spherIC.recurvebowsight.databinding.FragmentEquipmentAddListBinding; | |||
| import ch.spherIC.recurvebowsight.ui.configuration.EquipmentConfigurationActivity; | |||
| import ch.spherIC.recurvebowsight.ui.configuration.RiserConfigurationActivity; | |||
| import ch.spherIC.recurvebowsight.ui.configuration.SightConfigurationActivity; | |||
| public class AddEquipmentFragment extends Fragment { | |||
| private FragmentEquipmentAddListBinding binding; | |||
| public View onCreateView(@NonNull LayoutInflater inflater, | |||
| ViewGroup container, Bundle savedInstanceState) { | |||
| public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { | |||
| AddEquipmentViewModel homeViewModel = new ViewModelProvider(this).get(AddEquipmentViewModel.class); | |||
| binding = FragmentEquipmentAddListBinding.inflate(inflater, container, false); | |||
| View root = binding.getRoot(); | |||
| View view = root.findViewById(R.id.card_view_riser_border); | |||
| view.setOnTouchListener(new View.OnTouchListener() { | |||
| @Override | |||
| public boolean onTouch(View v, MotionEvent event) { | |||
| float alpha = 1.0f; | |||
| int horzMargin = v.getResources().getDimensionPixelSize(R.dimen.nav_header_horizontal_spacing); | |||
| int vertMargin = v.getResources().getDimensionPixelSize(R.dimen.nav_header_vertical_spacing); | |||
| if (event.getAction() == MotionEvent.ACTION_DOWN) { | |||
| alpha = 0.9f; | |||
| horzMargin = v.getResources().getDimensionPixelSize(R.dimen.nav_header_horizontal_spacing_onclick); | |||
| vertMargin = v.getResources().getDimensionPixelSize(R.dimen.nav_header_vertical_spacing_onclick); | |||
| } | |||
| View setupCardView = v.findViewById(R.id.card_view_riser_setup); | |||
| setupCardView.setAlpha(alpha); | |||
| ConstraintLayout.LayoutParams layoutParams = (ConstraintLayout.LayoutParams) v.getLayoutParams(); | |||
| layoutParams.setMargins(horzMargin, vertMargin, horzMargin, vertMargin); | |||
| v.requestLayout(); | |||
| return true; | |||
| } | |||
| }); | |||
| attachTouchListener(root, R.id.card_view_riser_border, R.id.card_view_riser_setup); | |||
| attachTouchListener(root, R.id.card_view_sight_border, R.id.card_view_sight_setup); | |||
| attachTouchListener(root, R.id.card_view_equipment_border, R.id.card_view_equipment_setup); | |||
| final TextView textView = binding.textEquipment; | |||
| homeViewModel.getText().observe(getViewLifecycleOwner(), textView::setText); | |||
| @@ -58,5 +42,51 @@ public class AddEquipmentFragment extends Fragment { | |||
| binding = null; | |||
| } | |||
| private void attachTouchListener(View root, int borderCardViewId, int setupCardViewId) { | |||
| View borderCardView = root.findViewById(borderCardViewId); | |||
| View setupCardView = root.findViewById(setupCardViewId); | |||
| if (borderCardView != null && setupCardView != null) { | |||
| borderCardView.setOnTouchListener(new View.OnTouchListener() { | |||
| @Override | |||
| public boolean onTouch(View v, MotionEvent event) { | |||
| float alpha = 1.0f; | |||
| int horzMargin = v.getResources().getDimensionPixelSize(R.dimen.nav_header_horizontal_spacing); | |||
| int vertMargin = v.getResources().getDimensionPixelSize(R.dimen.nav_header_vertical_spacing); | |||
| if (event.getAction() == MotionEvent.ACTION_DOWN) { | |||
| alpha = 0.95f; | |||
| horzMargin = v.getResources().getDimensionPixelSize(R.dimen.nav_header_horizontal_spacing_onclick); | |||
| vertMargin = v.getResources().getDimensionPixelSize(R.dimen.nav_header_vertical_spacing_onclick); | |||
| } | |||
| setupCardView.setAlpha(alpha); | |||
| ConstraintLayout.LayoutParams layoutParams = (ConstraintLayout.LayoutParams) v.getLayoutParams(); | |||
| layoutParams.setMargins(horzMargin, vertMargin, horzMargin, vertMargin); | |||
| v.requestLayout(); | |||
| if (event.getAction() == MotionEvent.ACTION_UP) { | |||
| if (v.getId() == R.id.card_view_riser_border) { | |||
| /* Toast.makeText(v.getContext(), | |||
| "Geklickt: " + v.getId(), | |||
| Toast.LENGTH_SHORT).show();*/ | |||
| // TODO: CALL RISER CONFIG ACTIVITY | |||
| Intent riserConfigurationIntent = new Intent(v.getContext(), RiserConfigurationActivity.class); | |||
| startActivity(riserConfigurationIntent); | |||
| } else if (v.getId() == R.id.card_view_sight_border) { | |||
| // TODO: CALL SIGHT CONFIG ACTIVITY | |||
| Intent sightConfigurationIntent = new Intent(v.getContext(), SightConfigurationActivity.class); | |||
| startActivity(sightConfigurationIntent); | |||
| } else if (v.getId() == R.id.card_view_equipment_border) { | |||
| // TODO: CALL EQUIPMENT CONFIG ACTIVITY | |||
| Intent equipmentConfigurationIntent = new Intent(v.getContext(), EquipmentConfigurationActivity.class); | |||
| startActivity(equipmentConfigurationIntent); | |||
| } | |||
| } | |||
| return true; | |||
| } | |||
| }); | |||
| } | |||
| } | |||
| } | |||
| @@ -23,9 +23,7 @@ import ch.spherIC.recurvebowsight.model.IArcherySetup; | |||
| */ | |||
| public class ChooseEquipmentFragment extends Fragment { | |||
| // TODO: Customize parameter argument names | |||
| private static final String ARG_COLUMN_COUNT = "column-count"; | |||
| // TODO: Customize parameters | |||
| private int mColumnCount = 1; | |||
| /** | |||
| @@ -0,0 +1,77 @@ | |||
| /** | |||
| * Copyright (C) 2022 - Florindo Smilari (spherIC) | |||
| */ | |||
| package ch.spherIC.recurvebowsight.utilities; | |||
| import android.app.AlertDialog; | |||
| import android.content.Context; | |||
| import android.content.DialogInterface; | |||
| import android.view.Gravity; | |||
| import android.widget.Toast; | |||
| import ch.spherIC.recurvebowsight.R; | |||
| /** | |||
| * @author FC Smilari | |||
| */ | |||
| public class PlatformUtils { | |||
| // public static int platformSelectionColor; | |||
| /* public static int getPlatformSelectionColor(final Context ctx) { | |||
| Bitmap bitmap = BitmapFactory.decodeResource(ctx.getResources(), android.R.drawable.list_selector_background); | |||
| int redBucket = 0; | |||
| int greenBucket = 0; | |||
| int blueBucket = 0; | |||
| int pixelCount = 0; | |||
| if (bitmap != null) { | |||
| for (int y = 0; y < bitmap.getHeight(); y++) { | |||
| for (int x = 0; x < bitmap.getWidth(); x++) { | |||
| int c = bitmap.getPixel(x, y); | |||
| pixelCount++; | |||
| redBucket += Color.red(c); | |||
| greenBucket += Color.green(c); | |||
| blueBucket += Color.blue(c); | |||
| // does alpha matter? | |||
| } | |||
| } | |||
| platformSelectionColor = Color.rgb(redBucket / pixelCount, greenBucket / pixelCount, blueBucket / pixelCount); | |||
| return platformSelectionColor; | |||
| } | |||
| return 0; | |||
| }*/ | |||
| public static AlertDialog getDeleteConfirmDialog(final Context context, final String itemToDelete, | |||
| final DialogInterface.OnClickListener okListener) { | |||
| AlertDialog.Builder builder = new AlertDialog.Builder(context); | |||
| String msg = context.getResources().getString(R.string.caption_DeleteMsg, itemToDelete); | |||
| builder = builder.setTitle(R.string.caption_ConfirmDelete).setMessage(msg); | |||
| builder = builder.setPositiveButton(R.string.caption_Delete, okListener).setNegativeButton(android.R.string.cancel, null); | |||
| // Create the AlertDialog object and return it | |||
| return builder.create(); | |||
| } | |||
| public static Toast toast(Context context, String message) { | |||
| Toast toast = Toast.makeText(context, message, Toast.LENGTH_LONG); | |||
| toast.setGravity(Gravity.CENTER, 0, 0); | |||
| return toast; | |||
| } | |||
| public static Toast toast(Context context, String message, int length, int gravity, int xOffset, int yOffset) { | |||
| Toast toast = Toast.makeText(context, message, length); | |||
| toast.setGravity(gravity, xOffset, yOffset); | |||
| return toast; | |||
| } | |||
| } | |||
| @@ -0,0 +1,5 @@ | |||
| <vector android:height="24dp" android:tint="#000000" | |||
| android:viewportHeight="24" android:viewportWidth="24" | |||
| android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> | |||
| <path android:fillColor="@android:color/white" android:pathData="M19,13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"/> | |||
| </vector> | |||
| @@ -0,0 +1,5 @@ | |||
| <vector android:height="24dp" android:tint="#000000" | |||
| android:viewportHeight="24" android:viewportWidth="24" | |||
| android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> | |||
| <path android:fillColor="@android:color/white" android:pathData="M16,9v10H8V9h8m-1.5,-6h-5l-1,1H5v2h14V4h-3.5l-1,-1zM18,7H6v12c0,1.1 0.9,2 2,2h8c1.1,0 2,-0.9 2,-2V7z"/> | |||
| </vector> | |||
| @@ -0,0 +1,5 @@ | |||
| <vector android:height="24dp" android:tint="#000000" | |||
| android:viewportHeight="24" android:viewportWidth="24" | |||
| android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> | |||
| <path android:fillColor="@android:color/white" android:pathData="M17,3L5,3c-1.11,0 -2,0.9 -2,2v14c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2L21,7l-4,-4zM19,19L5,19L5,5h11.17L19,7.83L19,19zM12,12c-1.66,0 -3,1.34 -3,3s1.34,3 3,3 3,-1.34 3,-3 -1.34,-3 -3,-3zM6,6h9v4L6,10z"/> | |||
| </vector> | |||
| @@ -0,0 +1,9 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | |||
| <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" | |||
| xmlns:tools="http://schemas.android.com/tools" | |||
| android:id="@+id/activity_equipment_configuration" | |||
| android:layout_width="match_parent" | |||
| android:layout_height="match_parent" | |||
| tools:context=".ui.configuration.EquipmentConfigurationActivity"> | |||
| </androidx.constraintlayout.widget.ConstraintLayout> | |||
| @@ -0,0 +1,206 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | |||
| <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" | |||
| xmlns:app="http://schemas.android.com/apk/res-auto" | |||
| xmlns:tools="http://schemas.android.com/tools" | |||
| android:id="@+id/activity_riser_configuration" | |||
| android:layout_width="match_parent" | |||
| android:layout_height="match_parent" | |||
| tools:context=".ui.configuration.RiserConfigurationActivity"> | |||
| <ScrollView | |||
| android:layout_width="0dp" | |||
| android:layout_height="0dp" | |||
| app:layout_constraintBottom_toBottomOf="parent" | |||
| app:layout_constraintEnd_toEndOf="parent" | |||
| app:layout_constraintStart_toStartOf="parent" | |||
| app:layout_constraintTop_toTopOf="parent"> | |||
| <androidx.constraintlayout.widget.ConstraintLayout | |||
| android:layout_width="match_parent" | |||
| android:layout_height="wrap_content"> | |||
| <TextView | |||
| android:id="@+id/configRiserLbl" | |||
| style="@style/Widget.AppCompat.TextView" | |||
| android:layout_width="0dp" | |||
| android:layout_height="wrap_content" | |||
| android:layout_marginEnd="8dp" | |||
| android:layout_marginStart="8dp" | |||
| android:layout_marginTop="16dp" | |||
| android:background="@color/purple_700" | |||
| android:padding="4dp" | |||
| android:text="@string/rcTitleRiserConfig" | |||
| android:textAppearance="@style/TextAppearance.AppCompat.Large" | |||
| android:textColor="@color/white" | |||
| app:layout_constraintEnd_toEndOf="parent" | |||
| app:layout_constraintHorizontal_bias="1.0" | |||
| app:layout_constraintStart_toStartOf="parent" | |||
| app:layout_constraintTop_toTopOf="parent" /> | |||
| <com.google.android.material.textfield.TextInputLayout | |||
| style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox.ExposedDropdownMenu" | |||
| android:id="@+id/riserSelectionLayout" | |||
| android:layout_width="0dp" | |||
| android:layout_height="wrap_content" | |||
| android:layout_marginEnd="8dp" | |||
| android:layout_marginStart="8dp" | |||
| android:layout_marginTop="8dp" | |||
| app:layout_constraintEnd_toEndOf="parent" | |||
| app:layout_constraintStart_toStartOf="parent" | |||
| app:layout_constraintTop_toBottomOf="@+id/configRiserLbl"> | |||
| <AutoCompleteTextView | |||
| android:id="@+id/riserSelectionTxt" | |||
| android:layout_width="match_parent" | |||
| android:layout_height="wrap_content" | |||
| android:hint="@string/rcRiserLbl" | |||
| android:singleLine="true" /> | |||
| </com.google.android.material.textfield.TextInputLayout> | |||
| <com.google.android.material.textfield.TextInputLayout | |||
| android:id="@+id/rcManufacturerLayout" | |||
| style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox" | |||
| android:layout_width="0dp" | |||
| android:layout_height="wrap_content" | |||
| android:layout_marginEnd="8dp" | |||
| android:layout_marginStart="8dp" | |||
| android:layout_marginTop="8dp" | |||
| app:layout_constraintEnd_toEndOf="parent" | |||
| app:layout_constraintStart_toStartOf="parent" | |||
| app:layout_constraintTop_toBottomOf="@+id/riserSelectionLayout"> | |||
| <com.google.android.material.textfield.TextInputEditText | |||
| android:id="@+id/rcManufacturerTxt" | |||
| android:layout_width="match_parent" | |||
| android:layout_height="wrap_content" | |||
| android:hint="@string/rcManufacturerLbl" | |||
| android:singleLine="true" /> | |||
| </com.google.android.material.textfield.TextInputLayout> | |||
| <com.google.android.material.textfield.TextInputLayout | |||
| android:id="@+id/rcModelLayout" | |||
| style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox" | |||
| android:layout_width="0dp" | |||
| android:layout_height="wrap_content" | |||
| android:layout_marginEnd="8dp" | |||
| android:layout_marginStart="8dp" | |||
| android:layout_marginTop="8dp" | |||
| app:layout_constraintEnd_toEndOf="parent" | |||
| app:layout_constraintStart_toStartOf="parent" | |||
| app:layout_constraintTop_toBottomOf="@+id/rcManufacturerLayout"> | |||
| <com.google.android.material.textfield.TextInputEditText | |||
| android:id="@+id/rcModelTxt" | |||
| android:layout_width="match_parent" | |||
| android:layout_height="wrap_content" | |||
| android:hint="@string/rcModelLbl" | |||
| android:singleLine="true" /> | |||
| </com.google.android.material.textfield.TextInputLayout> | |||
| <com.google.android.material.textfield.TextInputLayout | |||
| android:id="@+id/rcSizeLayout" | |||
| style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox" | |||
| android:layout_width="0dp" | |||
| android:layout_height="wrap_content" | |||
| android:layout_marginEnd="8dp" | |||
| android:layout_marginStart="8dp" | |||
| android:layout_marginTop="8dp" | |||
| app:layout_constraintEnd_toEndOf="parent" | |||
| app:layout_constraintStart_toStartOf="parent" | |||
| app:layout_constraintTop_toBottomOf="@+id/rcModelLayout"> | |||
| <com.google.android.material.textfield.TextInputEditText | |||
| android:id="@+id/rcSizeTxt" | |||
| android:layout_width="match_parent" | |||
| android:layout_height="wrap_content" | |||
| android:hint="@string/rcSizeLbl" | |||
| android:singleLine="true" /> | |||
| </com.google.android.material.textfield.TextInputLayout> | |||
| <com.google.android.material.textfield.TextInputLayout | |||
| android:id="@+id/rcVvisHLayout" | |||
| style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox" | |||
| android:layout_width="0dp" | |||
| android:layout_height="wrap_content" | |||
| android:layout_marginEnd="8dp" | |||
| android:layout_marginStart="8dp" | |||
| android:layout_marginTop="8dp" | |||
| app:layout_constraintEnd_toEndOf="parent" | |||
| app:layout_constraintStart_toStartOf="parent" | |||
| app:layout_constraintTop_toBottomOf="@+id/rcSizeLayout"> | |||
| <com.google.android.material.textfield.TextInputEditText | |||
| android:id="@+id/rcVvisHTxt" | |||
| android:layout_width="match_parent" | |||
| android:layout_height="wrap_content" | |||
| android:hint="@string/rcVvisHLbl" | |||
| android:singleLine="true" /> | |||
| </com.google.android.material.textfield.TextInputLayout> | |||
| <com.google.android.material.textfield.TextInputLayout | |||
| android:id="@+id/rcVvisVLayout" | |||
| style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox" | |||
| android:layout_width="0dp" | |||
| android:layout_height="wrap_content" | |||
| android:layout_marginEnd="8dp" | |||
| android:layout_marginStart="8dp" | |||
| android:layout_marginTop="8dp" | |||
| app:layout_constraintEnd_toEndOf="parent" | |||
| app:layout_constraintStart_toStartOf="parent" | |||
| app:layout_constraintTop_toBottomOf="@+id/rcVvisHLayout"> | |||
| <com.google.android.material.textfield.TextInputEditText | |||
| android:id="@+id/rcVvisVTxt" | |||
| android:layout_width="match_parent" | |||
| android:layout_height="wrap_content" | |||
| android:hint="@string/rcVvisVLbl" | |||
| android:singleLine="true" /> | |||
| </com.google.android.material.textfield.TextInputLayout> | |||
| <LinearLayout | |||
| android:layout_width="fill_parent" | |||
| android:layout_height="wrap_content" | |||
| android:layout_marginTop="24dp" | |||
| android:orientation="horizontal" | |||
| app:layout_constraintEnd_toEndOf="parent" | |||
| app:layout_constraintStart_toStartOf="parent" | |||
| app:layout_constraintTop_toBottomOf="@+id/rcVvisVLayout"> | |||
| <Button | |||
| android:id="@+id/risercfg_button_new" | |||
| android:layout_width="fill_parent" | |||
| android:layout_height="wrap_content" | |||
| android:layout_marginHorizontal="8dp" | |||
| android:layout_weight="1" | |||
| android:text="@string/caption_New" | |||
| app:icon="@drawable/ic_icon_add" | |||
| app:iconPadding="-8dp" /> | |||
| <Button | |||
| android:id="@+id/risercfg_button_delete" | |||
| android:layout_width="fill_parent" | |||
| android:layout_height="wrap_content" | |||
| android:layout_marginHorizontal="8dp" | |||
| android:layout_weight="1" | |||
| android:paddingLeft="4dp" | |||
| android:paddingRight="4dp" | |||
| android:text="@string/caption_Delete" | |||
| app:icon="@drawable/ic_icon_delete" | |||
| app:iconPadding="-8dp" /> | |||
| <Button | |||
| android:id="@+id/risercfg_button_save" | |||
| android:layout_width="fill_parent" | |||
| android:layout_height="wrap_content" | |||
| android:layout_marginHorizontal="8dp" | |||
| android:layout_weight="1" | |||
| android:paddingLeft="4dp" | |||
| android:paddingRight="4dp" | |||
| android:text="@string/caption_Save" | |||
| app:icon="@drawable/ic_icon_save" | |||
| app:iconPadding="0dp" /> | |||
| </LinearLayout> | |||
| </androidx.constraintlayout.widget.ConstraintLayout> | |||
| </ScrollView> | |||
| </androidx.constraintlayout.widget.ConstraintLayout> | |||
| @@ -0,0 +1,9 @@ | |||
| <?xml version="1.0" encoding="utf-8"?> | |||
| <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" | |||
| xmlns:tools="http://schemas.android.com/tools" | |||
| android:id="@+id/activity_sight_configuration" | |||
| android:layout_width="match_parent" | |||
| android:layout_height="match_parent" | |||
| tools:context=".ui.configuration.SightConfigurationActivity"> | |||
| </androidx.constraintlayout.widget.ConstraintLayout> | |||
| @@ -159,6 +159,7 @@ | |||
| android:layout_width="wrap_content" | |||
| android:layout_height="wrap_content" | |||
| android:layout_margin="@dimen/text_margin" | |||
| android:layout_marginStart="16dp" | |||
| android:layout_marginTop="20dp" | |||
| android:text="@string/caption_MainCfg_Sight_MainText" | |||
| android:textAppearance="@style/TextAppearance.AppCompat.Large" | |||
| @@ -261,6 +262,7 @@ | |||
| android:layout_width="wrap_content" | |||
| android:layout_height="wrap_content" | |||
| android:layout_margin="@dimen/text_margin" | |||
| android:layout_marginStart="16dp" | |||
| android:layout_marginTop="20dp" | |||
| android:text="@string/caption_MainCfg_ArcerySetup_MainText" | |||
| android:textAppearance="@style/TextAppearance.AppCompat.Large" | |||
| @@ -7,11 +7,15 @@ | |||
| <string name="nav_header_subtitle">Entwickelt von spherIC (F.Smilari)</string> | |||
| <string name="nav_header_desc">Navigation header</string> | |||
| <string name="action_settings">Settings</string> | |||
| <string name="title_activity_main_configuration">RBS Konfiguration Bogen/Visier/Ausrüstung</string> | |||
| <string name="title_activity_riser_configuration">RBS Konfiguration Griffstück</string> | |||
| <string name="title_activity_sight_configuration">RBS Konfiguration Visier</string> | |||
| <string name="title_activity_archery_setup_configuration">RBS Konfiguration Ausrüstung</string> | |||
| <string name="menu_equipment">Ausrüstung</string> | |||
| <string name="menu_about">Über RBS...</string> | |||
| <string name="menu_userguide">Benutzeranleitung</string> | |||
| <string name="menu_equipment_add">Ausrüstung hinzufügen</string> | |||
| <string name="menu_equipment_add">Ausrüstung verwalten</string> | |||
| <string name="menu_equipment_choose">Ausrüstung wählen</string> | |||
| <string name="menu_calculate_sight">Visiereinstellung berechnen</string> | |||
| <string name="caption_NoSelection">Keine Auswahl...</string> | |||
| @@ -51,4 +55,29 @@ | |||
| <string name="caption_MainCfg_ArcerySetup_MainText">Ausrüstung</string> | |||
| <string name="caption_MainCfg_ArcerySetup_SubText">Hier klicken um eine Ausrüstung zu Editieren, zu Löschen oder Einzufügen</string> | |||
| <string name="rcTitleRiserConfig">Konfiguration Griffstück</string> | |||
| <string name="rcRiserLbl">Griffstück</string> | |||
| <string name="rcManufacturerLbl">Hersteller</string> | |||
| <string name="rcModelLbl">Modell</string> | |||
| <string name="rcSizeLbl">Größe</string> | |||
| <string name="rcVvisHLbl">VvisH [mm]</string> | |||
| <string name="rcVvisVLbl">VvisV [mm]</string> | |||
| <string name="caption_Ok">OK</string> | |||
| <string name="caption_Cancel">Abbrechen</string> | |||
| <string name="caption_New">Neu</string> | |||
| <string name="caption_Save">Speichern</string> | |||
| <string name="caption_Delete">Löschen</string> | |||
| <string name="caption_Close">Schliessen</string> | |||
| <string name="caption_Cfg_DeleteNotPossible">Löschen nicht möglich. Die Entität wird vermutlich von einer anderen Entität referenziert.</string> | |||
| <string name="caption_Cfg_ArcherySetup_SaveNotPossible">Speichern nicht möglich. Diese Kombination Griffstück/Visier existiert bereits.</string> | |||
| <string name="caption_Cfg_FillAllMandatoryFields">Bitte alle Parameterfelder abfüllen.</string> | |||
| <string name="caption_ConfirmDelete">Löschen bestätigen</string> | |||
| <string name="caption_DeleteMsg">Wollen Sie \'%s\' wirklich löschen?</string> | |||
| <string name="caption_FillAllMandatoryFields">Um die Berechnung durchzuführen, müssen alle Parameterfelder abgefüllt sein.</string> | |||
| <string name="caption_mandatory">Erforderlich</string> | |||
| <string name="caption_Cfg_DeleteSuccessful">\'%s\' erfolgreich gelöscht!</string> | |||
| <string name="caption_Cfg_SaveSuccessful">\'%s\' erfolgreich gespeichert!</string> | |||
| </resources> | |||
| @@ -6,14 +6,18 @@ | |||
| <string name="nav_header_subtitle">developed by spherIC (F.Smilari)</string> | |||
| <string name="nav_header_desc">Navigation header</string> | |||
| <string name="action_settings">Settings</string> | |||
| <string name="title_activity_main_configuration">RBS Riser/Sight/Equipment Configuration</string> | |||
| <string name="title_activity_riser_configuration">RBS Riser Configuration</string> | |||
| <string name="title_activity_sight_configuration">RBS Sight Configuration</string> | |||
| <string name="title_activity_archery_setup_configuration">RBS Archery Setup Configuration</string> | |||
| <string name="menu_equipment">Equipment</string> | |||
| <string name="menu_about">About RBS...</string> | |||
| <string name="menu_userguide">User Guide</string> | |||
| <string name="menu_equipment_add">Add Equipment</string> | |||
| <string name="menu_equipment_add">Manage Equipment</string> | |||
| <string name="menu_equipment_choose">Choose Equipment</string> | |||
| <string name="menu_calculate_sight">Calculate Sight</string> | |||
| <string name="caption_NoSelection">No Selection...</string> | |||
| <string name="caption_NoSelection">No Selection…</string> | |||
| <string name="caption_setup_choosen">"Selected Setup: "</string> | |||
| <string name="viewParams">Parameters</string> | |||
| @@ -51,4 +55,28 @@ | |||
| <string name="caption_MainCfg_ArcerySetup_MainText">Equipment</string> | |||
| <string name="caption_MainCfg_ArcerySetup_SubText">Tab to edit, delete or insert a equipment setup</string> | |||
| <string name="rcTitleRiserConfig">Riser Configuration</string> | |||
| <string name="rcRiserLbl">Riser</string> | |||
| <string name="rcManufacturerLbl">Manufacturer</string> | |||
| <string name="rcModelLbl">Model</string> | |||
| <string name="rcSizeLbl">Size</string> | |||
| <string name="rcVvisHLbl">VvisH [mm]</string> | |||
| <string name="rcVvisVLbl">VvisV [mm]</string> | |||
| <string name="caption_Ok">OK</string> | |||
| <string name="caption_Cancel">Cancel</string> | |||
| <string name="caption_New">New</string> | |||
| <string name="caption_Save">Save</string> | |||
| <string name="caption_Delete">Delete</string> | |||
| <string name="caption_Close">Close</string> | |||
| <string name="caption_Cfg_DeleteNotPossible">Unable to delete. Most probably the item is referenced by an other entity.</string> | |||
| <string name="caption_Cfg_ArcherySetup_SaveNotPossible">Unable to save. This combination of sight und riser is already stored.</string> | |||
| <string name="caption_Cfg_FillAllMandatoryFields">Please fill in all parameter fields.</string> | |||
| <string name="caption_ConfirmDelete">Confirm Deletion</string> | |||
| <string name="caption_DeleteMsg">Are you sure you want delete \'%s\'?</string> | |||
| <string name="caption_FillAllMandatoryFields">To start the calculation all parameter fields must be filled.</string> | |||
| <string name="caption_mandatory">Mandatory</string> | |||
| <string name="caption_Cfg_DeleteSuccessful">\'%s\' was successfully deleted!</string> | |||
| <string name="caption_Cfg_SaveSuccessful">\'%s\' was saved successfully!</string> | |||
| </resources> | |||