Bläddra i källkod

CRUD Riser

master
Flo Smilari 3 år sedan
förälder
incheckning
6d1b4368cb
30 ändrade filer med 907 tillägg och 64 borttagningar
  1. Binär
      .gradle/7.3.3/executionHistory/executionHistory.bin
  2. Binär
      .gradle/7.3.3/executionHistory/executionHistory.lock
  3. Binär
      .gradle/7.3.3/fileHashes/fileHashes.bin
  4. Binär
      .gradle/7.3.3/fileHashes/fileHashes.lock
  5. Binär
      .gradle/7.3.3/fileHashes/resourceHashesCache.bin
  6. Binär
      .gradle/buildOutputCleanup/buildOutputCleanup.lock
  7. 2
    2
      .idea/assetWizardSettings.xml
  8. 4
    1
      .idea/misc.xml
  9. 70
    31
      .idea/workspace.xml
  10. 9
    0
      app/src/main/AndroidManifest.xml
  11. 1
    1
      app/src/main/java/ch/spherIC/recurvebowsight/database/dao/DAO.java
  12. 15
    0
      app/src/main/java/ch/spherIC/recurvebowsight/model/ArcherySetup.java
  13. 16
    0
      app/src/main/java/ch/spherIC/recurvebowsight/model/Riser.java
  14. 13
    0
      app/src/main/java/ch/spherIC/recurvebowsight/model/Sight.java
  15. 31
    0
      app/src/main/java/ch/spherIC/recurvebowsight/ui/configuration/EquipmentConfigurationActivity.java
  16. 182
    0
      app/src/main/java/ch/spherIC/recurvebowsight/ui/configuration/RiserConfigurationActivity.java
  17. 101
    0
      app/src/main/java/ch/spherIC/recurvebowsight/ui/configuration/RiserConfigurationViewModel.java
  18. 31
    0
      app/src/main/java/ch/spherIC/recurvebowsight/ui/configuration/SightConfigurationActivity.java
  19. 54
    24
      app/src/main/java/ch/spherIC/recurvebowsight/ui/equipment/AddEquipmentFragment.java
  20. 0
    2
      app/src/main/java/ch/spherIC/recurvebowsight/ui/equipment/ChooseEquipmentFragment.java
  21. 77
    0
      app/src/main/java/ch/spherIC/recurvebowsight/utilities/PlatformUtils.java
  22. 5
    0
      app/src/main/res/drawable/ic_icon_add.xml
  23. 5
    0
      app/src/main/res/drawable/ic_icon_delete.xml
  24. 5
    0
      app/src/main/res/drawable/ic_icon_save.xml
  25. 9
    0
      app/src/main/res/layout/activity_equipment_configuration.xml
  26. 206
    0
      app/src/main/res/layout/activity_riser_configuration.xml
  27. 9
    0
      app/src/main/res/layout/activity_sight_configuration.xml
  28. 2
    0
      app/src/main/res/layout/fragment_equipment_add_list.xml
  29. 30
    1
      app/src/main/res/values-de/strings.xml
  30. 30
    2
      app/src/main/res/values/strings.xml

Binär
.gradle/7.3.3/executionHistory/executionHistory.bin Visa fil


Binär
.gradle/7.3.3/executionHistory/executionHistory.lock Visa fil


Binär
.gradle/7.3.3/fileHashes/fileHashes.bin Visa fil


Binär
.gradle/7.3.3/fileHashes/fileHashes.lock Visa fil


Binär
.gradle/7.3.3/fileHashes/resourceHashesCache.bin Visa fil


Binär
.gradle/buildOutputCleanup/buildOutputCleanup.lock Visa fil


+ 2
- 2
.idea/assetWizardSettings.xml Visa fil

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

+ 4
- 1
.idea/misc.xml Visa fil

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

+ 70
- 31
.idea/workspace.xml Visa fil

@@ -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&#10;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&#10;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&#10;1920" />
<property name="android-custom-viewC:/Users/FSmilari/AppData/Local/Android/Sdk/sources/android-32/android/widget/AutoCompleteTextView.java_AutoCompleteTextView_DIMENSIONS" value="1080&#10;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&#10;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&#10;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>

+ 9
- 0
app/src/main/AndroidManifest.xml Visa fil

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

+ 1
- 1
app/src/main/java/ch/spherIC/recurvebowsight/database/dao/DAO.java Visa fil

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

+ 15
- 0
app/src/main/java/ch/spherIC/recurvebowsight/model/ArcherySetup.java Visa fil

@@ -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);
}
}

+ 16
- 0
app/src/main/java/ch/spherIC/recurvebowsight/model/Riser.java Visa fil

@@ -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);
}
}

+ 13
- 0
app/src/main/java/ch/spherIC/recurvebowsight/model/Sight.java Visa fil

@@ -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);
}
}

+ 31
- 0
app/src/main/java/ch/spherIC/recurvebowsight/ui/configuration/EquipmentConfigurationActivity.java Visa fil

@@ -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);
}

}

+ 182
- 0
app/src/main/java/ch/spherIC/recurvebowsight/ui/configuration/RiserConfigurationActivity.java Visa fil

@@ -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();
}
}
}

+ 101
- 0
app/src/main/java/ch/spherIC/recurvebowsight/ui/configuration/RiserConfigurationViewModel.java Visa fil

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

+ 31
- 0
app/src/main/java/ch/spherIC/recurvebowsight/ui/configuration/SightConfigurationActivity.java Visa fil

@@ -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);
}

}

+ 54
- 24
app/src/main/java/ch/spherIC/recurvebowsight/ui/equipment/AddEquipmentFragment.java Visa fil

@@ -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;
}
});
}
}
}

+ 0
- 2
app/src/main/java/ch/spherIC/recurvebowsight/ui/equipment/ChooseEquipmentFragment.java Visa fil

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

/**

+ 77
- 0
app/src/main/java/ch/spherIC/recurvebowsight/utilities/PlatformUtils.java Visa fil

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

+ 5
- 0
app/src/main/res/drawable/ic_icon_add.xml Visa fil

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

+ 5
- 0
app/src/main/res/drawable/ic_icon_delete.xml Visa fil

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

+ 5
- 0
app/src/main/res/drawable/ic_icon_save.xml Visa fil

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

+ 9
- 0
app/src/main/res/layout/activity_equipment_configuration.xml Visa fil

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

+ 206
- 0
app/src/main/res/layout/activity_riser_configuration.xml Visa fil

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

+ 9
- 0
app/src/main/res/layout/activity_sight_configuration.xml Visa fil

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

+ 2
- 0
app/src/main/res/layout/fragment_equipment_add_list.xml Visa fil

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

+ 30
- 1
app/src/main/res/values-de/strings.xml Visa fil

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

+ 30
- 2
app/src/main/res/values/strings.xml Visa fil

@@ -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&#8230;</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>

Laddar…
Avbryt
Spara