From 802b2f46eee900f9783c9d5450338ccf2d7b6854 Mon Sep 17 00:00:00 2001 From: Caleb Fontenot Date: Wed, 17 Apr 2024 15:26:13 -0500 Subject: [PATCH] tfw you forget to push changes :upside_down: --- Assignments/CriminalIntent13/.gitignore | 15 ++ .../CriminalIntent13/CriminalIntent.zip | Bin 0 -> 117534 bytes Assignments/CriminalIntent13/app/.gitignore | 1 + .../CriminalIntent13/app/build.gradle.kts | 40 ++++ .../CriminalIntent13/app/proguard-rules.pro | 21 ++ .../ExampleInstrumentedTest.java | 26 +++ .../app/src/main/AndroidManifest.xml | 31 +++ .../asdv/lisset/criminalintent/Crime.java | 49 +++++ .../lisset/criminalintent/CrimeActivity.java | 35 +++ .../lisset/criminalintent/CrimeFragment.java | 189 ++++++++++++++++ .../asdv/lisset/criminalintent/CrimeLab.java | 100 +++++++++ .../criminalintent/CrimeListActivity.java | 10 + .../criminalintent/CrimeListFragment.java | 207 ++++++++++++++++++ .../criminalintent/CrimePagerActivity.java | 70 ++++++ .../criminalintent/DatePickerFragment.java | 87 ++++++++ .../SingleFragmentActivity.java | 28 +++ .../criminalintent/TimePickerFragment.java | 84 +++++++ .../database/CrimeBaseHelper.java | 30 +++ .../database/CrimeCursorWrapper.java | 32 +++ .../database/CrimeDbSchema.java | 15 ++ .../main/res/drawable-anydpi/ic_menu_add.xml | 11 + .../main/res/drawable-hdpi/ic_menu_add.png | Bin 0 -> 198 bytes .../main/res/drawable-mdpi/ic_menu_add.png | Bin 0 -> 138 bytes .../drawable-v24/ic_launcher_foreground.xml | 30 +++ .../main/res/drawable-xhdpi/ic_menu_add.png | Bin 0 -> 159 bytes .../main/res/drawable-xxhdpi/ic_menu_add.png | Bin 0 -> 260 bytes .../res/drawable/ic_launcher_background.xml | 170 ++++++++++++++ .../main/res/layout-land/fragment_crime.xml | 51 +++++ .../main/res/layout/activity_crime_pager.xml | 5 + .../src/main/res/layout/activity_fragment.xml | 10 + .../app/src/main/res/layout/dialog_date.xml | 8 + .../app/src/main/res/layout/dialog_time.xml | 9 + .../src/main/res/layout/fragment_crime.xml | 44 ++++ .../main/res/layout/fragment_crime_list.xml | 5 + .../src/main/res/layout/list_item_crime.xml | 42 ++++ .../src/main/res/menu/fragment_crime_list.xml | 14 ++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 6 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 6 + .../src/main/res/mipmap-hdpi/ic_launcher.webp | Bin 0 -> 1404 bytes .../res/mipmap-hdpi/ic_launcher_round.webp | Bin 0 -> 2898 bytes .../src/main/res/mipmap-mdpi/ic_launcher.webp | Bin 0 -> 982 bytes .../res/mipmap-mdpi/ic_launcher_round.webp | Bin 0 -> 1772 bytes .../main/res/mipmap-xhdpi/ic_launcher.webp | Bin 0 -> 1900 bytes .../res/mipmap-xhdpi/ic_launcher_round.webp | Bin 0 -> 3918 bytes .../main/res/mipmap-xxhdpi/ic_launcher.webp | Bin 0 -> 2884 bytes .../res/mipmap-xxhdpi/ic_launcher_round.webp | Bin 0 -> 5914 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.webp | Bin 0 -> 3844 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.webp | Bin 0 -> 7778 bytes .../app/src/main/res/values-night/themes.xml | 7 + .../app/src/main/res/values/colors.xml | 5 + .../app/src/main/res/values/strings.xml | 13 ++ .../app/src/main/res/values/themes.xml | 9 + .../app/src/main/res/xml/backup_rules.xml | 13 ++ .../main/res/xml/data_extraction_rules.xml | 19 ++ .../criminalintent/ExampleUnitTest.java | 17 ++ Assignments/CriminalIntent13/build.gradle.kts | 5 + .../CriminalIntent13/gradle.properties | 21 ++ .../gradle/libs.versions.toml | 22 ++ .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 59203 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 + Assignments/CriminalIntent13/gradlew | 185 ++++++++++++++++ Assignments/CriminalIntent13/gradlew.bat | 89 ++++++++ .../CriminalIntent13/settings.gradle.kts | 23 ++ Assignments/CriminalIntent3-1.zip | Bin 0 -> 226719 bytes Assignments/QuizChapter2/ch14-sql/.gitignore | 15 ++ .../QuizChapter2/ch14-sql/CriminalIntent.zip | Bin 0 -> 117534 bytes .../QuizChapter2/ch14-sql/app/.gitignore | 1 + .../ch14-sql/app/build.gradle.kts | 40 ++++ .../ch14-sql/app/proguard-rules.pro | 21 ++ .../ExampleInstrumentedTest.java | 26 +++ .../ch14-sql/app/src/main/AndroidManifest.xml | 34 +++ .../asdv/lisset/criminalintent/Crime.java | 43 ++++ .../lisset/criminalintent/CrimeFragment.java | 125 +++++++++++ .../asdv/lisset/criminalintent/CrimeLab.java | 37 ++++ .../criminalintent/CrimeListActivity.java | 10 + .../criminalintent/CrimeListFragment.java | 190 ++++++++++++++++ .../criminalintent/CrimePagerActivity.java | 68 ++++++ .../criminalintent/DatePickerFragment.java | 85 +++++++ .../SingleFragmentActivity.java | 28 +++ .../main/res/drawable-anydpi/ic_menu_add.xml | 16 ++ .../main/res/drawable-hdpi/ic_menu_add.png | Bin 0 -> 178 bytes .../main/res/drawable-mdpi/ic_menu_add.png | Bin 0 -> 117 bytes .../drawable-v24/ic_launcher_foreground.xml | 30 +++ .../main/res/drawable-xhdpi/ic_menu_add.png | Bin 0 -> 188 bytes .../main/res/drawable-xxhdpi/ic_menu_add.png | Bin 0 -> 411 bytes .../res/drawable/ic_launcher_background.xml | 170 ++++++++++++++ .../main/res/layout-land/fragment_crime.xml | 47 ++++ .../main/res/layout/activity_crime_pager.xml | 10 + .../src/main/res/layout/activity_fragment.xml | 10 + .../app/src/main/res/layout/dialog_date.xml | 8 + .../src/main/res/layout/fragment_crime.xml | 35 +++ .../main/res/layout/fragment_crime_list.xml | 5 + .../src/main/res/layout/list_item_crime.xml | 43 ++++ .../src/main/res/menu/fragment_crime_list.xml | 14 ++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 6 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 6 + .../src/main/res/mipmap-hdpi/ic_launcher.webp | Bin 0 -> 1404 bytes .../res/mipmap-hdpi/ic_launcher_round.webp | Bin 0 -> 2898 bytes .../src/main/res/mipmap-mdpi/ic_launcher.webp | Bin 0 -> 982 bytes .../res/mipmap-mdpi/ic_launcher_round.webp | Bin 0 -> 1772 bytes .../main/res/mipmap-xhdpi/ic_launcher.webp | Bin 0 -> 1900 bytes .../res/mipmap-xhdpi/ic_launcher_round.webp | Bin 0 -> 3918 bytes .../main/res/mipmap-xxhdpi/ic_launcher.webp | Bin 0 -> 2884 bytes .../res/mipmap-xxhdpi/ic_launcher_round.webp | Bin 0 -> 5914 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.webp | Bin 0 -> 3844 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.webp | Bin 0 -> 7778 bytes .../app/src/main/res/values-night/themes.xml | 7 + .../app/src/main/res/values/colors.xml | 5 + .../app/src/main/res/values/strings.xml | 15 ++ .../app/src/main/res/values/themes.xml | 9 + .../app/src/main/res/xml/backup_rules.xml | 13 ++ .../main/res/xml/data_extraction_rules.xml | 19 ++ .../criminalintent/ExampleUnitTest.java | 17 ++ .../QuizChapter2/ch14-sql/build.gradle.kts | 4 + .../QuizChapter2/ch14-sql/gradle.properties | 21 ++ .../ch14-sql/gradle/libs.versions.toml | 22 ++ .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 59203 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 + Assignments/QuizChapter2/ch14-sql/gradlew | 185 ++++++++++++++++ Assignments/QuizChapter2/ch14-sql/gradlew.bat | 89 ++++++++ .../QuizChapter2/ch14-sql/settings.gradle.kts | 23 ++ Assignments/ch14-sql/.gitignore | 15 ++ Assignments/ch14-sql/.idea/.name | 1 + .../ch14-sql/.idea/appInsightsSettings.xml | 26 +++ Assignments/ch14-sql/.idea/compiler.xml | 6 + .../.idea/deploymentTargetDropDown.xml | 10 + Assignments/ch14-sql/.idea/discord.xml | 7 + Assignments/ch14-sql/.idea/gradle.xml | 18 ++ Assignments/ch14-sql/.idea/migrations.xml | 10 + Assignments/ch14-sql/.idea/misc.xml | 10 + Assignments/ch14-sql/.idea/vcs.xml | 6 + Assignments/ch14-sql/CriminalIntent.zip | Bin 0 -> 117534 bytes Assignments/ch14-sql/app/.gitignore | 1 + Assignments/ch14-sql/app/build.gradle.kts | 40 ++++ Assignments/ch14-sql/app/proguard-rules.pro | 21 ++ .../ExampleInstrumentedTest.java | 26 +++ .../ch14-sql/app/src/main/AndroidManifest.xml | 34 +++ .../asdv/lisset/criminalintent/Crime.java | 43 ++++ .../lisset/criminalintent/CrimeFragment.java | 125 +++++++++++ .../asdv/lisset/criminalintent/CrimeLab.java | 37 ++++ .../criminalintent/CrimeListActivity.java | 10 + .../criminalintent/CrimeListFragment.java | 192 ++++++++++++++++ .../criminalintent/CrimePagerActivity.java | 68 ++++++ .../criminalintent/DatePickerFragment.java | 85 +++++++ .../SingleFragmentActivity.java | 28 +++ .../main/res/drawable-anydpi/ic_menu_add.xml | 16 ++ .../main/res/drawable-hdpi/ic_menu_add.png | Bin 0 -> 178 bytes .../main/res/drawable-mdpi/ic_menu_add.png | Bin 0 -> 117 bytes .../drawable-v24/ic_launcher_foreground.xml | 30 +++ .../main/res/drawable-xhdpi/ic_menu_add.png | Bin 0 -> 188 bytes .../main/res/drawable-xxhdpi/ic_menu_add.png | Bin 0 -> 411 bytes .../res/drawable/ic_launcher_background.xml | 170 ++++++++++++++ .../main/res/layout-land/fragment_crime.xml | 47 ++++ .../main/res/layout/activity_crime_pager.xml | 10 + .../src/main/res/layout/activity_fragment.xml | 10 + .../app/src/main/res/layout/dialog_date.xml | 8 + .../src/main/res/layout/fragment_crime.xml | 35 +++ .../main/res/layout/fragment_crime_list.xml | 5 + .../src/main/res/layout/list_item_crime.xml | 43 ++++ .../src/main/res/menu/fragment_crime_list.xml | 14 ++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 6 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 6 + .../src/main/res/mipmap-hdpi/ic_launcher.webp | Bin 0 -> 1404 bytes .../res/mipmap-hdpi/ic_launcher_round.webp | Bin 0 -> 2898 bytes .../src/main/res/mipmap-mdpi/ic_launcher.webp | Bin 0 -> 982 bytes .../res/mipmap-mdpi/ic_launcher_round.webp | Bin 0 -> 1772 bytes .../main/res/mipmap-xhdpi/ic_launcher.webp | Bin 0 -> 1900 bytes .../res/mipmap-xhdpi/ic_launcher_round.webp | Bin 0 -> 3918 bytes .../main/res/mipmap-xxhdpi/ic_launcher.webp | Bin 0 -> 2884 bytes .../res/mipmap-xxhdpi/ic_launcher_round.webp | Bin 0 -> 5914 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.webp | Bin 0 -> 3844 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.webp | Bin 0 -> 7778 bytes .../app/src/main/res/values-night/themes.xml | 7 + .../app/src/main/res/values/colors.xml | 5 + .../app/src/main/res/values/strings.xml | 15 ++ .../app/src/main/res/values/themes.xml | 9 + .../app/src/main/res/xml/backup_rules.xml | 13 ++ .../main/res/xml/data_extraction_rules.xml | 19 ++ .../criminalintent/ExampleUnitTest.java | 17 ++ Assignments/ch14-sql/build.gradle.kts | 4 + Assignments/ch14-sql/gradle.properties | 21 ++ .../ch14-sql/gradle/libs.versions.toml | 22 ++ .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 59203 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 + Assignments/ch14-sql/gradlew | 185 ++++++++++++++++ Assignments/ch14-sql/gradlew.bat | 89 ++++++++ Assignments/ch14-sql/settings.gradle.kts | 23 ++ Assignments/inheritance1.zip | Bin 0 -> 17908 bytes 188 files changed, 5127 insertions(+) create mode 100644 Assignments/CriminalIntent13/.gitignore create mode 100644 Assignments/CriminalIntent13/CriminalIntent.zip create mode 100644 Assignments/CriminalIntent13/app/.gitignore create mode 100644 Assignments/CriminalIntent13/app/build.gradle.kts create mode 100644 Assignments/CriminalIntent13/app/proguard-rules.pro create mode 100644 Assignments/CriminalIntent13/app/src/androidTest/java/asdv/lisset/criminalintent/ExampleInstrumentedTest.java create mode 100644 Assignments/CriminalIntent13/app/src/main/AndroidManifest.xml create mode 100644 Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/Crime.java create mode 100644 Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/CrimeActivity.java create mode 100644 Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/CrimeFragment.java create mode 100644 Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/CrimeLab.java create mode 100644 Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/CrimeListActivity.java create mode 100644 Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/CrimeListFragment.java create mode 100644 Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/CrimePagerActivity.java create mode 100644 Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/DatePickerFragment.java create mode 100644 Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/SingleFragmentActivity.java create mode 100644 Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/TimePickerFragment.java create mode 100644 Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/database/CrimeBaseHelper.java create mode 100644 Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/database/CrimeCursorWrapper.java create mode 100644 Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/database/CrimeDbSchema.java create mode 100644 Assignments/CriminalIntent13/app/src/main/res/drawable-anydpi/ic_menu_add.xml create mode 100644 Assignments/CriminalIntent13/app/src/main/res/drawable-hdpi/ic_menu_add.png create mode 100644 Assignments/CriminalIntent13/app/src/main/res/drawable-mdpi/ic_menu_add.png create mode 100644 Assignments/CriminalIntent13/app/src/main/res/drawable-v24/ic_launcher_foreground.xml create mode 100644 Assignments/CriminalIntent13/app/src/main/res/drawable-xhdpi/ic_menu_add.png create mode 100644 Assignments/CriminalIntent13/app/src/main/res/drawable-xxhdpi/ic_menu_add.png create mode 100644 Assignments/CriminalIntent13/app/src/main/res/drawable/ic_launcher_background.xml create mode 100644 Assignments/CriminalIntent13/app/src/main/res/layout-land/fragment_crime.xml create mode 100644 Assignments/CriminalIntent13/app/src/main/res/layout/activity_crime_pager.xml create mode 100644 Assignments/CriminalIntent13/app/src/main/res/layout/activity_fragment.xml create mode 100644 Assignments/CriminalIntent13/app/src/main/res/layout/dialog_date.xml create mode 100644 Assignments/CriminalIntent13/app/src/main/res/layout/dialog_time.xml create mode 100644 Assignments/CriminalIntent13/app/src/main/res/layout/fragment_crime.xml create mode 100644 Assignments/CriminalIntent13/app/src/main/res/layout/fragment_crime_list.xml create mode 100644 Assignments/CriminalIntent13/app/src/main/res/layout/list_item_crime.xml create mode 100644 Assignments/CriminalIntent13/app/src/main/res/menu/fragment_crime_list.xml create mode 100644 Assignments/CriminalIntent13/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 Assignments/CriminalIntent13/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 Assignments/CriminalIntent13/app/src/main/res/mipmap-hdpi/ic_launcher.webp create mode 100644 Assignments/CriminalIntent13/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp create mode 100644 Assignments/CriminalIntent13/app/src/main/res/mipmap-mdpi/ic_launcher.webp create mode 100644 Assignments/CriminalIntent13/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp create mode 100644 Assignments/CriminalIntent13/app/src/main/res/mipmap-xhdpi/ic_launcher.webp create mode 100644 Assignments/CriminalIntent13/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp create mode 100644 Assignments/CriminalIntent13/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp create mode 100644 Assignments/CriminalIntent13/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp create mode 100644 Assignments/CriminalIntent13/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp create mode 100644 Assignments/CriminalIntent13/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp create mode 100644 Assignments/CriminalIntent13/app/src/main/res/values-night/themes.xml create mode 100644 Assignments/CriminalIntent13/app/src/main/res/values/colors.xml create mode 100644 Assignments/CriminalIntent13/app/src/main/res/values/strings.xml create mode 100644 Assignments/CriminalIntent13/app/src/main/res/values/themes.xml create mode 100644 Assignments/CriminalIntent13/app/src/main/res/xml/backup_rules.xml create mode 100644 Assignments/CriminalIntent13/app/src/main/res/xml/data_extraction_rules.xml create mode 100644 Assignments/CriminalIntent13/app/src/test/java/asdv/lisset/criminalintent/ExampleUnitTest.java create mode 100644 Assignments/CriminalIntent13/build.gradle.kts create mode 100644 Assignments/CriminalIntent13/gradle.properties create mode 100644 Assignments/CriminalIntent13/gradle/libs.versions.toml create mode 100644 Assignments/CriminalIntent13/gradle/wrapper/gradle-wrapper.jar create mode 100644 Assignments/CriminalIntent13/gradle/wrapper/gradle-wrapper.properties create mode 100644 Assignments/CriminalIntent13/gradlew create mode 100644 Assignments/CriminalIntent13/gradlew.bat create mode 100644 Assignments/CriminalIntent13/settings.gradle.kts create mode 100644 Assignments/CriminalIntent3-1.zip create mode 100644 Assignments/QuizChapter2/ch14-sql/.gitignore create mode 100644 Assignments/QuizChapter2/ch14-sql/CriminalIntent.zip create mode 100644 Assignments/QuizChapter2/ch14-sql/app/.gitignore create mode 100644 Assignments/QuizChapter2/ch14-sql/app/build.gradle.kts create mode 100644 Assignments/QuizChapter2/ch14-sql/app/proguard-rules.pro create mode 100644 Assignments/QuizChapter2/ch14-sql/app/src/androidTest/java/asdv/lisset/criminalintent/ExampleInstrumentedTest.java create mode 100644 Assignments/QuizChapter2/ch14-sql/app/src/main/AndroidManifest.xml create mode 100644 Assignments/QuizChapter2/ch14-sql/app/src/main/java/asdv/lisset/criminalintent/Crime.java create mode 100644 Assignments/QuizChapter2/ch14-sql/app/src/main/java/asdv/lisset/criminalintent/CrimeFragment.java create mode 100644 Assignments/QuizChapter2/ch14-sql/app/src/main/java/asdv/lisset/criminalintent/CrimeLab.java create mode 100644 Assignments/QuizChapter2/ch14-sql/app/src/main/java/asdv/lisset/criminalintent/CrimeListActivity.java create mode 100644 Assignments/QuizChapter2/ch14-sql/app/src/main/java/asdv/lisset/criminalintent/CrimeListFragment.java create mode 100644 Assignments/QuizChapter2/ch14-sql/app/src/main/java/asdv/lisset/criminalintent/CrimePagerActivity.java create mode 100644 Assignments/QuizChapter2/ch14-sql/app/src/main/java/asdv/lisset/criminalintent/DatePickerFragment.java create mode 100644 Assignments/QuizChapter2/ch14-sql/app/src/main/java/asdv/lisset/criminalintent/SingleFragmentActivity.java create mode 100644 Assignments/QuizChapter2/ch14-sql/app/src/main/res/drawable-anydpi/ic_menu_add.xml create mode 100644 Assignments/QuizChapter2/ch14-sql/app/src/main/res/drawable-hdpi/ic_menu_add.png create mode 100644 Assignments/QuizChapter2/ch14-sql/app/src/main/res/drawable-mdpi/ic_menu_add.png create mode 100644 Assignments/QuizChapter2/ch14-sql/app/src/main/res/drawable-v24/ic_launcher_foreground.xml create mode 100644 Assignments/QuizChapter2/ch14-sql/app/src/main/res/drawable-xhdpi/ic_menu_add.png create mode 100644 Assignments/QuizChapter2/ch14-sql/app/src/main/res/drawable-xxhdpi/ic_menu_add.png create mode 100644 Assignments/QuizChapter2/ch14-sql/app/src/main/res/drawable/ic_launcher_background.xml create mode 100644 Assignments/QuizChapter2/ch14-sql/app/src/main/res/layout-land/fragment_crime.xml create mode 100644 Assignments/QuizChapter2/ch14-sql/app/src/main/res/layout/activity_crime_pager.xml create mode 100644 Assignments/QuizChapter2/ch14-sql/app/src/main/res/layout/activity_fragment.xml create mode 100644 Assignments/QuizChapter2/ch14-sql/app/src/main/res/layout/dialog_date.xml create mode 100644 Assignments/QuizChapter2/ch14-sql/app/src/main/res/layout/fragment_crime.xml create mode 100644 Assignments/QuizChapter2/ch14-sql/app/src/main/res/layout/fragment_crime_list.xml create mode 100644 Assignments/QuizChapter2/ch14-sql/app/src/main/res/layout/list_item_crime.xml create mode 100644 Assignments/QuizChapter2/ch14-sql/app/src/main/res/menu/fragment_crime_list.xml create mode 100644 Assignments/QuizChapter2/ch14-sql/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 Assignments/QuizChapter2/ch14-sql/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 Assignments/QuizChapter2/ch14-sql/app/src/main/res/mipmap-hdpi/ic_launcher.webp create mode 100644 Assignments/QuizChapter2/ch14-sql/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp create mode 100644 Assignments/QuizChapter2/ch14-sql/app/src/main/res/mipmap-mdpi/ic_launcher.webp create mode 100644 Assignments/QuizChapter2/ch14-sql/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp create mode 100644 Assignments/QuizChapter2/ch14-sql/app/src/main/res/mipmap-xhdpi/ic_launcher.webp create mode 100644 Assignments/QuizChapter2/ch14-sql/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp create mode 100644 Assignments/QuizChapter2/ch14-sql/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp create mode 100644 Assignments/QuizChapter2/ch14-sql/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp create mode 100644 Assignments/QuizChapter2/ch14-sql/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp create mode 100644 Assignments/QuizChapter2/ch14-sql/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp create mode 100644 Assignments/QuizChapter2/ch14-sql/app/src/main/res/values-night/themes.xml create mode 100644 Assignments/QuizChapter2/ch14-sql/app/src/main/res/values/colors.xml create mode 100644 Assignments/QuizChapter2/ch14-sql/app/src/main/res/values/strings.xml create mode 100644 Assignments/QuizChapter2/ch14-sql/app/src/main/res/values/themes.xml create mode 100644 Assignments/QuizChapter2/ch14-sql/app/src/main/res/xml/backup_rules.xml create mode 100644 Assignments/QuizChapter2/ch14-sql/app/src/main/res/xml/data_extraction_rules.xml create mode 100644 Assignments/QuizChapter2/ch14-sql/app/src/test/java/asdv/lisset/criminalintent/ExampleUnitTest.java create mode 100644 Assignments/QuizChapter2/ch14-sql/build.gradle.kts create mode 100644 Assignments/QuizChapter2/ch14-sql/gradle.properties create mode 100644 Assignments/QuizChapter2/ch14-sql/gradle/libs.versions.toml create mode 100644 Assignments/QuizChapter2/ch14-sql/gradle/wrapper/gradle-wrapper.jar create mode 100644 Assignments/QuizChapter2/ch14-sql/gradle/wrapper/gradle-wrapper.properties create mode 100644 Assignments/QuizChapter2/ch14-sql/gradlew create mode 100644 Assignments/QuizChapter2/ch14-sql/gradlew.bat create mode 100644 Assignments/QuizChapter2/ch14-sql/settings.gradle.kts create mode 100644 Assignments/ch14-sql/.gitignore create mode 100644 Assignments/ch14-sql/.idea/.name create mode 100644 Assignments/ch14-sql/.idea/appInsightsSettings.xml create mode 100644 Assignments/ch14-sql/.idea/compiler.xml create mode 100644 Assignments/ch14-sql/.idea/deploymentTargetDropDown.xml create mode 100644 Assignments/ch14-sql/.idea/discord.xml create mode 100644 Assignments/ch14-sql/.idea/gradle.xml create mode 100644 Assignments/ch14-sql/.idea/migrations.xml create mode 100644 Assignments/ch14-sql/.idea/misc.xml create mode 100644 Assignments/ch14-sql/.idea/vcs.xml create mode 100644 Assignments/ch14-sql/CriminalIntent.zip create mode 100644 Assignments/ch14-sql/app/.gitignore create mode 100644 Assignments/ch14-sql/app/build.gradle.kts create mode 100644 Assignments/ch14-sql/app/proguard-rules.pro create mode 100644 Assignments/ch14-sql/app/src/androidTest/java/asdv/lisset/criminalintent/ExampleInstrumentedTest.java create mode 100644 Assignments/ch14-sql/app/src/main/AndroidManifest.xml create mode 100644 Assignments/ch14-sql/app/src/main/java/asdv/lisset/criminalintent/Crime.java create mode 100644 Assignments/ch14-sql/app/src/main/java/asdv/lisset/criminalintent/CrimeFragment.java create mode 100644 Assignments/ch14-sql/app/src/main/java/asdv/lisset/criminalintent/CrimeLab.java create mode 100644 Assignments/ch14-sql/app/src/main/java/asdv/lisset/criminalintent/CrimeListActivity.java create mode 100644 Assignments/ch14-sql/app/src/main/java/asdv/lisset/criminalintent/CrimeListFragment.java create mode 100644 Assignments/ch14-sql/app/src/main/java/asdv/lisset/criminalintent/CrimePagerActivity.java create mode 100644 Assignments/ch14-sql/app/src/main/java/asdv/lisset/criminalintent/DatePickerFragment.java create mode 100644 Assignments/ch14-sql/app/src/main/java/asdv/lisset/criminalintent/SingleFragmentActivity.java create mode 100644 Assignments/ch14-sql/app/src/main/res/drawable-anydpi/ic_menu_add.xml create mode 100644 Assignments/ch14-sql/app/src/main/res/drawable-hdpi/ic_menu_add.png create mode 100644 Assignments/ch14-sql/app/src/main/res/drawable-mdpi/ic_menu_add.png create mode 100644 Assignments/ch14-sql/app/src/main/res/drawable-v24/ic_launcher_foreground.xml create mode 100644 Assignments/ch14-sql/app/src/main/res/drawable-xhdpi/ic_menu_add.png create mode 100644 Assignments/ch14-sql/app/src/main/res/drawable-xxhdpi/ic_menu_add.png create mode 100644 Assignments/ch14-sql/app/src/main/res/drawable/ic_launcher_background.xml create mode 100644 Assignments/ch14-sql/app/src/main/res/layout-land/fragment_crime.xml create mode 100644 Assignments/ch14-sql/app/src/main/res/layout/activity_crime_pager.xml create mode 100644 Assignments/ch14-sql/app/src/main/res/layout/activity_fragment.xml create mode 100644 Assignments/ch14-sql/app/src/main/res/layout/dialog_date.xml create mode 100644 Assignments/ch14-sql/app/src/main/res/layout/fragment_crime.xml create mode 100644 Assignments/ch14-sql/app/src/main/res/layout/fragment_crime_list.xml create mode 100644 Assignments/ch14-sql/app/src/main/res/layout/list_item_crime.xml create mode 100644 Assignments/ch14-sql/app/src/main/res/menu/fragment_crime_list.xml create mode 100644 Assignments/ch14-sql/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 Assignments/ch14-sql/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 Assignments/ch14-sql/app/src/main/res/mipmap-hdpi/ic_launcher.webp create mode 100644 Assignments/ch14-sql/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp create mode 100644 Assignments/ch14-sql/app/src/main/res/mipmap-mdpi/ic_launcher.webp create mode 100644 Assignments/ch14-sql/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp create mode 100644 Assignments/ch14-sql/app/src/main/res/mipmap-xhdpi/ic_launcher.webp create mode 100644 Assignments/ch14-sql/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp create mode 100644 Assignments/ch14-sql/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp create mode 100644 Assignments/ch14-sql/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp create mode 100644 Assignments/ch14-sql/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp create mode 100644 Assignments/ch14-sql/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp create mode 100644 Assignments/ch14-sql/app/src/main/res/values-night/themes.xml create mode 100644 Assignments/ch14-sql/app/src/main/res/values/colors.xml create mode 100644 Assignments/ch14-sql/app/src/main/res/values/strings.xml create mode 100644 Assignments/ch14-sql/app/src/main/res/values/themes.xml create mode 100644 Assignments/ch14-sql/app/src/main/res/xml/backup_rules.xml create mode 100644 Assignments/ch14-sql/app/src/main/res/xml/data_extraction_rules.xml create mode 100644 Assignments/ch14-sql/app/src/test/java/asdv/lisset/criminalintent/ExampleUnitTest.java create mode 100644 Assignments/ch14-sql/build.gradle.kts create mode 100644 Assignments/ch14-sql/gradle.properties create mode 100644 Assignments/ch14-sql/gradle/libs.versions.toml create mode 100644 Assignments/ch14-sql/gradle/wrapper/gradle-wrapper.jar create mode 100644 Assignments/ch14-sql/gradle/wrapper/gradle-wrapper.properties create mode 100644 Assignments/ch14-sql/gradlew create mode 100644 Assignments/ch14-sql/gradlew.bat create mode 100644 Assignments/ch14-sql/settings.gradle.kts create mode 100644 Assignments/inheritance1.zip diff --git a/Assignments/CriminalIntent13/.gitignore b/Assignments/CriminalIntent13/.gitignore new file mode 100644 index 0000000..aa724b7 --- /dev/null +++ b/Assignments/CriminalIntent13/.gitignore @@ -0,0 +1,15 @@ +*.iml +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +/build +/captures +.externalNativeBuild +.cxx +local.properties diff --git a/Assignments/CriminalIntent13/CriminalIntent.zip b/Assignments/CriminalIntent13/CriminalIntent.zip new file mode 100644 index 0000000000000000000000000000000000000000..11b9e6996e88884b488f1dd05e51f1073a99e77c GIT binary patch literal 117534 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

tbnBn@UupAgJd|F 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 I>@wK@0KgOybpQYW literal 0 HcmV?d00001 diff --git a/Assignments/CriminalIntent13/app/.gitignore b/Assignments/CriminalIntent13/app/.gitignore new file mode 100644 index 0000000..42afabf --- /dev/null +++ b/Assignments/CriminalIntent13/app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/Assignments/CriminalIntent13/app/build.gradle.kts b/Assignments/CriminalIntent13/app/build.gradle.kts new file mode 100644 index 0000000..f9c6fb5 --- /dev/null +++ b/Assignments/CriminalIntent13/app/build.gradle.kts @@ -0,0 +1,40 @@ +plugins { + alias(libs.plugins.androidApplication) +} + +android { + namespace = "asdv.lisset.criminalintent" + compileSdk = 34 + + defaultConfig { + applicationId = "asdv.lisset.criminalintent13_toolbar" + minSdk = 21 + targetSdk = 34 + versionCode = 1 + versionName = "1.0" + + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + isMinifyEnabled = false + proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") + } + } + compileOptions { + sourceCompatibility = JavaVersion.VERSION_1_8 + targetCompatibility = JavaVersion.VERSION_1_8 + } +} + +dependencies { + + implementation(libs.appcompat) + implementation(libs.material) + implementation(libs.activity) + implementation(libs.constraintlayout) + testImplementation(libs.junit) + androidTestImplementation(libs.ext.junit) + androidTestImplementation(libs.espresso.core) +} \ No newline at end of file diff --git a/Assignments/CriminalIntent13/app/proguard-rules.pro b/Assignments/CriminalIntent13/app/proguard-rules.pro new file mode 100644 index 0000000..481bb43 --- /dev/null +++ b/Assignments/CriminalIntent13/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/Assignments/CriminalIntent13/app/src/androidTest/java/asdv/lisset/criminalintent/ExampleInstrumentedTest.java b/Assignments/CriminalIntent13/app/src/androidTest/java/asdv/lisset/criminalintent/ExampleInstrumentedTest.java new file mode 100644 index 0000000..bf28542 --- /dev/null +++ b/Assignments/CriminalIntent13/app/src/androidTest/java/asdv/lisset/criminalintent/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package asdv.lisset.criminalintent; + +import android.content.Context; + +import androidx.test.platform.app.InstrumentationRegistry; +import androidx.test.ext.junit.runners.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.*; + +/** + * Instrumented test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); + assertEquals("asdv.lisset.criminalintent", appContext.getPackageName()); + } +} \ No newline at end of file diff --git a/Assignments/CriminalIntent13/app/src/main/AndroidManifest.xml b/Assignments/CriminalIntent13/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..154348e --- /dev/null +++ b/Assignments/CriminalIntent13/app/src/main/AndroidManifest.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/Crime.java b/Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/Crime.java new file mode 100644 index 0000000..ee23ff3 --- /dev/null +++ b/Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/Crime.java @@ -0,0 +1,49 @@ +package asdv.lisset.criminalintent; + +import java.util.Date; +import java.util.UUID; + +public class Crime { + private UUID id; + private String title; + private Date date; + private boolean solved; + public Crime() { + this(UUID.randomUUID()); + //this.id = UUID.randomUUID(); + //this.date = new Date(); + } + + public Crime(UUID uuid) { + id = uuid; + date = new Date(); + } + + public UUID getId() { + return id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public Date getDate() { + return date; + } + + public void setDate(Date date) { + this.date = date; + } + + public boolean isSolved() { + return solved; + } + + public void setSolved(boolean solved) { + this.solved = solved; + } +} diff --git a/Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/CrimeActivity.java b/Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/CrimeActivity.java new file mode 100644 index 0000000..82543ea --- /dev/null +++ b/Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/CrimeActivity.java @@ -0,0 +1,35 @@ +package asdv.lisset.criminalintent; + +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; + +import androidx.appcompat.app.AppCompatActivity; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentTransaction; + +import java.io.Serializable; +import java.util.UUID; + +public class CrimeActivity extends SingleFragmentActivity { + + @Override + protected Fragment createFragment() { +// return new CrimeFragment(); + UUID crimeId = (UUID) getIntent() + .getSerializableExtra(EXTRA_CRIME_ID); + return CrimeFragment.newInstance(crimeId); + } + + //To know which crime we create a fragment for + public static final String EXTRA_CRIME_ID = + "com.bignerdranch.android.criminalintent.crime_id"; + public static Intent newIntent(Context + packageContext, UUID crimeId) { + Intent intent = new Intent(packageContext, + CrimeActivity.class); + intent.putExtra(EXTRA_CRIME_ID,(Serializable) crimeId); + return intent; + } +} \ No newline at end of file diff --git a/Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/CrimeFragment.java b/Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/CrimeFragment.java new file mode 100644 index 0000000..fc04060 --- /dev/null +++ b/Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/CrimeFragment.java @@ -0,0 +1,189 @@ +package asdv.lisset.criminalintent; + +import android.app.Activity; +import android.content.Intent; +import android.os.Bundle; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; + +import android.text.Editable; +import android.text.TextWatcher; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; +import android.widget.CheckBox; +import android.widget.CompoundButton; +import android.widget.EditText; + +import java.sql.Time; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; +import java.util.Locale; +import java.util.UUID; + +public class CrimeFragment extends Fragment { + private Crime crime; + private EditText titleField; + private Button dateButton; + private CheckBox solvedCheckBox; + private Button timeButton; + private static final String ARG_CRIME_ID = + "crime_id"; + private static final String DIALOG_DATE = + "DialogDate"; + private static final String DIALOG_TIME = + "DialogTime"; + private static final int REQUEST_DATE = 0; + + private static final int REQUEST_TIME = 888; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + UUID crimeId = (UUID)getArguments().getSerializable(ARG_CRIME_ID); + crime = CrimeLab.get(getActivity()).getCrime(crimeId); + } + + @Override + public void onPause() { + super.onPause(); + CrimeLab.get(getActivity()) + .updateCrime(crime); + } + + @Override + public View onCreateView( LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + View v = inflater.inflate(R.layout.fragment_crime, container, false); + + //date button + SimpleDateFormat dt = new SimpleDateFormat("EEEE, MMMM d, yyyy"); + String s = dt.format(this.crime.getDate()); + this.dateButton = v.findViewById(R.id.button_crime_date); + this.dateButton.setText(s); + + //Date Listener + dateButton.setOnClickListener(new View.OnClickListener() + { + @Override + public void onClick(View v) + { + FragmentManager manager = getFragmentManager(); + DatePickerFragment dialog = DatePickerFragment.newInstance(crime.getDate()); + //Sets target fragment here + dialog.setTargetFragment(CrimeFragment.this, REQUEST_DATE); + dialog.show(manager, DIALOG_DATE); + } + }); + + this.timeButton = v.findViewById(R.id.button_crime_time); + this.timeButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + FragmentManager manager = getFragmentManager(); + TimePickerFragment dialog = TimePickerFragment.newInstance(crime.getDate()); + //Sets target fragment here + dialog.setTargetFragment(CrimeFragment.this, REQUEST_TIME); + dialog.show(manager, DIALOG_TIME); + } + }); + + //checkbox + this.solvedCheckBox = v.findViewById(R.id.checkBox_crime_solved); + this.solvedCheckBox.setChecked(crime.isSolved()); + //Checkbox Listener + this.solvedCheckBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + CrimeFragment.this.crime.setSolved(isChecked); + } + }); + + //title + this.titleField= v.findViewById(R.id.edit_text_crime_title); + this.titleField.setText(crime.getTitle()); + //Title Listener + titleField.addTextChangedListener(new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + //left blank + } + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + crime.setTitle(s.toString()); + } + @Override + public void afterTextChanged(Editable s) { + //left blank + } + + }); + return v; + } + + //Create Instance of Crime Fragment using Crime Id + public static CrimeFragment newInstance(UUID crimeId){ + Bundle args = new Bundle(); + args.putSerializable(ARG_CRIME_ID, crimeId); + CrimeFragment fragment = new CrimeFragment(); + fragment.setArguments(args); + return fragment; + + } + + //Retrieve date change from DatePickerFragment + @Override + public void onActivityResult(int requestCode, int resultCode, Intent data) { + + if (requestCode == REQUEST_DATE) { + Date date = (Date) data + .getSerializableExtra(DatePickerFragment.EXTRA_DATE); + crime.setDate(date); + updateDate(); + updateTime(); + } + if (requestCode == REQUEST_TIME) + { + Date time = (Date) data.getSerializableExtra(TimePickerFragment.EXTRA_TIME); + + // Create a new Date with the updated time + Date updatedDateTime = new Date(crime.getDate().getTime()); // Create a copy of the original date + updatedDateTime.setHours(time.getHours()); + updatedDateTime.setMinutes(time.getMinutes()); + + //change crime data + crime.setDate(updatedDateTime); + updateTime(); + } + } + private void updateDate() + { + Log.d("TIME: " , crime.getDate().toString()); + SimpleDateFormat dateFormat = new SimpleDateFormat("EEEE, MMMM d, yyyy", Locale.getDefault()); + String formattedDate = dateFormat.format(crime.getDate()); + dateButton.setText(crime.getDate().toString()); + } + private void updateTime() { + + int hour = crime.getDate().getHours(); + int minute = crime.getDate().getMinutes(); + + String amPm = (hour >= 12) ? "PM" : "AM"; + if (hour > 12) { + hour -= 12; // Convert to 12-hour + } else if (hour == 0) { + hour = 12; // Midnight 12 AM in 12-hour + } + + String formattedTime = String.format( + Locale.getDefault(), + "%02d:%02d %s", + hour, minute, amPm); + // Update the timeButton text + timeButton.setText(formattedTime); + } +} \ No newline at end of file diff --git a/Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/CrimeLab.java b/Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/CrimeLab.java new file mode 100644 index 0000000..ea4ae3c --- /dev/null +++ b/Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/CrimeLab.java @@ -0,0 +1,100 @@ +package asdv.lisset.criminalintent; + +import android.content.ContentValues; +import android.content.Context; +import android.database.Cursor; +import android.database.sqlite.SQLiteDatabase; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +import asdv.lisset.criminalintent.database.CrimeBaseHelper; +import asdv.lisset.criminalintent.database.CrimeCursorWrapper; +import asdv.lisset.criminalintent.database.CrimeDbSchema; + +public class CrimeLab { + private static CrimeLab crimeLab; + private List crimes; + private Context mContext; + private SQLiteDatabase mDatabase; + public static CrimeLab get(Context context) { + if (crimeLab == null) { + crimeLab = new CrimeLab(context); + } + return crimeLab; + } + private CrimeLab(Context context) { + mContext = context.getApplicationContext(); + mDatabase = new CrimeBaseHelper(mContext).getWritableDatabase(); + //crimes = new ArrayList<>(); + } + public void addCrime(Crime c) { + //crimes.add(c); + ContentValues values = getContentValues(c); + mDatabase.insert(CrimeDbSchema.CrimeTable.NAME, null, values); + } + public List getCrimes() { + //return crimes; + List crimes = new ArrayList<>(); + CrimeCursorWrapper cursor = queryCrimes(null, null); + try { + cursor.moveToFirst(); + while (!cursor.isAfterLast()) { + crimes.add(cursor.getCrime()); + cursor.moveToNext(); + } + } finally { + cursor.close(); + } + return crimes; + } + public Crime getCrime(UUID id) { + CrimeCursorWrapper cursor = queryCrimes( + CrimeDbSchema.CrimeTable.Cols.UUID + " = ?", + new String[] { id.toString() } + ); + try { + if (cursor.getCount() == 0) { + return null; + } + } finally { + cursor.close(); + } + cursor.moveToFirst(); + return cursor.getCrime(); + } + + public void updateCrime(Crime crime) { + String uuidString = crime.getId().toString(); + ContentValues values = getContentValues(crime); + + mDatabase.update(CrimeDbSchema.CrimeTable.NAME, values, + CrimeDbSchema.CrimeTable.Cols.UUID + " = ?", + new String[] {uuidString}); + } + private CrimeCursorWrapper queryCrimes(String whereClause, String[] whereArgs) { + Cursor cursor = mDatabase.query( + CrimeDbSchema.CrimeTable.NAME, + null, // columns - null selects all columns + whereClause, + whereArgs, + null, // groupBy + null, // having + null // orderBy + ); + return new CrimeCursorWrapper(cursor); + } + private static ContentValues getContentValues(Crime crime) { + ContentValues values = new ContentValues(); + values.put(CrimeDbSchema.CrimeTable.Cols.UUID, + crime.getId().toString()); + values.put(CrimeDbSchema.CrimeTable.Cols.TITLE, + crime.getTitle()); + values.put(CrimeDbSchema.CrimeTable.Cols.DATE, + crime.getDate().getTime()); + values.put(CrimeDbSchema.CrimeTable.Cols.SOLVED, + crime.isSolved() ? 1 : 0); + return values; + } +} diff --git a/Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/CrimeListActivity.java b/Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/CrimeListActivity.java new file mode 100644 index 0000000..53932f2 --- /dev/null +++ b/Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/CrimeListActivity.java @@ -0,0 +1,10 @@ +package asdv.lisset.criminalintent; + +import androidx.fragment.app.Fragment; + +public class CrimeListActivity extends SingleFragmentActivity{ + @Override + protected Fragment createFragment() { + return new CrimeListFragment(); + } +} diff --git a/Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/CrimeListFragment.java b/Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/CrimeListFragment.java new file mode 100644 index 0000000..0c6036f --- /dev/null +++ b/Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/CrimeListFragment.java @@ -0,0 +1,207 @@ +package asdv.lisset.criminalintent; + +import android.content.Intent; +import android.os.Bundle; +import android.text.Layout; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; +import android.widget.Toast; + +import androidx.annotation.NonNull; +import androidx.appcompat.app.AppCompatActivity; +import androidx.fragment.app.Fragment; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import java.util.List; + +public class CrimeListFragment extends Fragment { + private RecyclerView crimeRecyclerView; + private CrimeAdapter adapter; + private boolean subtitleVisible; + + private static final String SAVED_SUBTITLE_VISIBLE = "subtitle"; + + private void updateSubtitle() { + CrimeLab crimeLab = CrimeLab.get(getActivity()); + int crimeCount = crimeLab.getCrimes().size(); + String subtitle = getString(R.string.subtitle_format, crimeCount); + if (!subtitleVisible) { + subtitle = null; + } + AppCompatActivity activity = (AppCompatActivity)getActivity(); + activity.getSupportActionBar().setSubtitle(subtitle); + } + + private void updateUI(){ + CrimeLab crimeLab = CrimeLab.get(getActivity()); + List crimes = crimeLab.getCrimes(); + if(this.adapter == null) { + adapter = new CrimeAdapter(crimes); + crimeRecyclerView.setAdapter(adapter); + } + else { + adapter.setCrimes(crimes); + adapter.notifyDataSetChanged(); + } + updateSubtitle(); + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setHasOptionsMenu(true); + } + + @Override + public View onCreateView(LayoutInflater inflater, + ViewGroup container, + Bundle savedInstanceState) { + View view = + inflater.inflate(R.layout.fragment_crime_list, + container, false); + crimeRecyclerView = (RecyclerView) view + .findViewById(R.id.crime_recycler_view); + crimeRecyclerView.setLayoutManager( + new LinearLayoutManager(getActivity())); + + if (savedInstanceState != null) { + subtitleVisible = + savedInstanceState.getBoolean(SAVED_SUBTITLE_VISIBLE); + } + + updateUI(); + return view; + } + + @Override + public void onResume() { + super.onResume(); + updateUI(); + } + + @Override + public void onSaveInstanceState(Bundle outState) + { + super.onSaveInstanceState(outState); + outState.putBoolean(SAVED_SUBTITLE_VISIBLE, + subtitleVisible); + } + + //CRIME HOLDER + private class CrimeHolder extends RecyclerView.ViewHolder implements View.OnClickListener{ + private Crime crime; + private TextView titleTextView; + private TextView dateTextView; + private ImageView solvedImageView; + public void bind(Crime crime){ + this.crime = crime; + titleTextView.setText(this.crime.getTitle()); + dateTextView.setText(this.crime.getDate().toString()); + solvedImageView.setVisibility(crime.isSolved() ? View.VISIBLE : View.GONE); + } + public CrimeHolder(LayoutInflater inflater, ViewGroup parent){ + super(inflater.inflate(R.layout.list_item_crime, parent ,false)); + itemView.setOnClickListener(this); + titleTextView = itemView.findViewById(R.id.crime_title); + dateTextView = itemView.findViewById(R.id.crime_date); + solvedImageView =itemView.findViewById(R.id.imageView_green_cross); + } + + @Override + public void onClick(View v) { + //CHAPTER10 +// Intent intent = CrimeActivity.newIntent(getActivity(), +// crime.getId()); + + //CHAPTER11 + Intent intent = + CrimePagerActivity.newIntent(getActivity(), + crime.getId()); + startActivity(intent); + + } + //CHAPTER8 +// Intent intent = new Intent(getActivity(), CrimeActivity.class); +// startActivity(intent); +// Toast.makeText(getActivity(), +// this.crime.getTitle() + " clicked!", +// Toast.LENGTH_SHORT) +// .show(); + + } + //ADAPTER + private class CrimeAdapter extends RecyclerView.Adapter{ + private List crimes; + + public CrimeAdapter(List crimes) { + this.crimes = crimes; + } + + @NonNull + @Override + public CrimeHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + LayoutInflater layoutInflater = LayoutInflater.from(getActivity()); + return new CrimeHolder(layoutInflater, parent); + } + + @Override + public void onBindViewHolder(@NonNull CrimeHolder holder, int position) { + Crime crime = crimes.get(position); + holder.bind(crime); + } + + @Override + public int getItemCount() { + return crimes.size(); + } + + public void setCrimes(List whatCrimes) { + crimes = whatCrimes; + } + + } + + @Override + public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) { + super.onCreateOptionsMenu(menu, inflater); + inflater.inflate(R.menu.fragment_crime_list,menu); + MenuItem subtitleItem = + menu.findItem(R.id.show_subtitle); + if (subtitleVisible) { + subtitleItem.setTitle(R.string.hide_subtitle); + } else { + subtitleItem.setTitle(R.string.show_subtitle); + } + } + + @Override + public boolean onOptionsItemSelected(@NonNull MenuItem item) { + if (item.getItemId() == R.id.new_crime) { + Crime crime = new Crime(); + + CrimeLab.get(getActivity()).addCrime(crime); + Intent intent = CrimePagerActivity + .newIntent(getActivity(), + crime.getId()); + startActivity(intent); + return true; + } + else if(item.getItemId() == R.id.show_subtitle) + { + subtitleVisible = !subtitleVisible; + getActivity().invalidateOptionsMenu(); + updateSubtitle(); + return true; + } + else + return super.onOptionsItemSelected(item); + } + +} diff --git a/Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/CrimePagerActivity.java b/Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/CrimePagerActivity.java new file mode 100644 index 0000000..4a6dcea --- /dev/null +++ b/Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/CrimePagerActivity.java @@ -0,0 +1,70 @@ +package asdv.lisset.criminalintent; + +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; + +import androidx.activity.EdgeToEdge; +import androidx.appcompat.app.AppCompatActivity; +import androidx.core.graphics.Insets; +import androidx.core.view.ViewCompat; +import androidx.core.view.WindowInsetsCompat; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentStatePagerAdapter; +import androidx.viewpager.widget.ViewPager; + +import java.util.List; +import java.util.UUID; +//Chapter 11 +public class CrimePagerActivity extends AppCompatActivity { + + private ViewPager viewPager; + private List crimes; + public static final String EXTRA_CRIME_ID = + "com.bignerdranch.android.criminalintent.crime_id"; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_crime_pager); + + + UUID crimeId = (UUID) getIntent() + .getSerializableExtra(EXTRA_CRIME_ID); + + viewPager = (ViewPager)findViewById(R.id.crime_view_pager); + crimes = CrimeLab.get(this).getCrimes(); + FragmentManager fragmentManager = getSupportFragmentManager(); + viewPager.setAdapter(new FragmentStatePagerAdapter(fragmentManager) { + @Override + public Fragment getItem(int position) + { + Crime crime = crimes.get(position); + return + CrimeFragment.newInstance(crime.getId()); + } + @Override + public int getCount() { + return crimes.size(); + } + }); + //to select proper crime instead of default first crime + for (int i = 0; i < crimes.size(); i++) { + if + (crimes.get(i).getId().equals(crimeId)) { + viewPager.setCurrentItem(i); + break; } + } + + + } + + public static Intent newIntent(Context + packageContext, UUID crimeId) { + Intent intent = new Intent(packageContext, + CrimePagerActivity.class); + intent.putExtra(EXTRA_CRIME_ID, crimeId); + return intent; + } +} diff --git a/Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/DatePickerFragment.java b/Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/DatePickerFragment.java new file mode 100644 index 0000000..587db57 --- /dev/null +++ b/Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/DatePickerFragment.java @@ -0,0 +1,87 @@ +package asdv.lisset.criminalintent; + +import android.app.Activity; +import android.app.AlertDialog; +import android.app.Dialog; +import android.content.DialogInterface; +import android.content.Intent; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.DatePicker; + +import androidx.fragment.app.DialogFragment; + +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; + +public class DatePickerFragment extends DialogFragment +{ + private static final String ARG_DATE = "date"; + private DatePicker mDatePicker; + + public static final String EXTRA_DATE = "com.bignerdranch.android.criminalintent.date"; + public static DatePickerFragment newInstance(Date date) + { + Bundle args = new Bundle(); + args.putSerializable(ARG_DATE, date); + DatePickerFragment fragment = new DatePickerFragment(); + fragment.setArguments(args); + return fragment; + } + + private void sendResult(int resultCode, Date date) + { + //Gets Target Fragment here from CrimeFragment + if (getTargetFragment() == null) + { + return; + } + Intent intent = new Intent(); + intent.putExtra(EXTRA_DATE, date); + getTargetFragment().onActivityResult(getTargetRequestCode(), resultCode, intent); + } + + + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) + { + Date date = (Date) + getArguments().getSerializable(ARG_DATE); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + int year = calendar.get(Calendar.YEAR); + int month = calendar.get(Calendar.MONTH); + int day = calendar.get(Calendar.DAY_OF_MONTH); + calendar.setTimeInMillis(500); + + View v = LayoutInflater.from(getActivity()).inflate(R.layout.dialog_date, null); + + mDatePicker = (DatePicker) + v.findViewById(R.id.dialog_date_picker); + mDatePicker.init(year, month, day, null); + + + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + builder = builder.setTitle(R.string.date_picker_title); + builder = builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() + { + @Override + public void onClick(DialogInterface dialog, int which) + { + int year = mDatePicker.getYear(); + int month = mDatePicker.getMonth(); + int day = mDatePicker.getDayOfMonth(); + Date date = new GregorianCalendar(year, month, day).getTime(); + sendResult(Activity.RESULT_OK, date); + } + }); + builder = builder.setView(v); + return builder.create(); + + //return new AlertDialog.Builder(getActivity()).setTitle(R.string.date_picker_title) + // .setPositiveButton(android.R.string.ok,null).create(); + } + +} diff --git a/Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/SingleFragmentActivity.java b/Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/SingleFragmentActivity.java new file mode 100644 index 0000000..585d634 --- /dev/null +++ b/Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/SingleFragmentActivity.java @@ -0,0 +1,28 @@ +package asdv.lisset.criminalintent; + +import android.os.Bundle; + +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; + +public abstract class SingleFragmentActivity extends AppCompatActivity { + protected abstract Fragment createFragment(); + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + setContentView(R.layout.activity_fragment); + FragmentManager fm = + getSupportFragmentManager(); + Fragment fragment = + fm.findFragmentById(R.id.fragment_container); + if (fragment == null) { + fragment = createFragment(); + fm.beginTransaction().add( + R.id.fragment_container, fragment).commit(); + } + } +} diff --git a/Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/TimePickerFragment.java b/Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/TimePickerFragment.java new file mode 100644 index 0000000..3fdd7f1 --- /dev/null +++ b/Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/TimePickerFragment.java @@ -0,0 +1,84 @@ +package asdv.lisset.criminalintent; + +import android.app.Activity; +import android.app.AlertDialog; +import android.app.Dialog; +import android.content.DialogInterface; +import android.content.Intent; +import android.os.Build; +import android.os.Bundle; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.DatePicker; +import android.widget.TimePicker; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.DialogFragment; + +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; + +public class TimePickerFragment extends DialogFragment +{ private static final String ARG_TIME = "time"; + private TimePicker mTimePicker; + + public static final String EXTRA_TIME = "com.bignerdranch.android.criminalintent.time"; + + public static TimePickerFragment newInstance(Date time) { + Bundle args = new Bundle(); + args.putSerializable(ARG_TIME, time); + TimePickerFragment fragment = new TimePickerFragment(); + fragment.setArguments(args); + return fragment; + } + + private void sendResult(int resultCode, Date time) { + if (getTargetFragment() == null) { + return; + } + Intent intent = new Intent(); + intent.putExtra(EXTRA_TIME, time); + getTargetFragment().onActivityResult(getTargetRequestCode(), resultCode, intent); + } + + @NonNull + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + View v = LayoutInflater.from(getActivity()).inflate(R.layout.dialog_time, null); + + mTimePicker = v.findViewById(R.id.dialog_time_picker); +// mTimePicker.setIs24HourView(false); // Set to 12-hour format + + Date date = (Date) getArguments().getSerializable(ARG_TIME); + Calendar calendar = Calendar.getInstance(); + calendar.setTime(date); + + // Set the initial time in the TimePicker + mTimePicker.setCurrentHour(calendar.get(Calendar.HOUR_OF_DAY)); // Set current hour + mTimePicker.setCurrentMinute(calendar.get(Calendar.MINUTE)); // Set current minute + + AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); + builder.setTitle(R.string.time_picker_title) + .setView(v) + .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + int hour = mTimePicker.getCurrentHour(); + int minute = mTimePicker.getCurrentMinute(); + + Calendar calendar = Calendar.getInstance(); + calendar.set(Calendar.HOUR_OF_DAY, hour); + calendar.set(Calendar.MINUTE, minute); + + Date time = calendar.getTime(); + sendResult(Activity.RESULT_OK, time); + } + }); + return builder.create(); + } + +} diff --git a/Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/database/CrimeBaseHelper.java b/Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/database/CrimeBaseHelper.java new file mode 100644 index 0000000..8dd9252 --- /dev/null +++ b/Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/database/CrimeBaseHelper.java @@ -0,0 +1,30 @@ +package asdv.lisset.criminalintent.database; + +import android.content.Context; +import android.database.sqlite.SQLiteDatabase; +import android.database.sqlite.SQLiteOpenHelper; +import asdv.lisset.criminalintent.database.CrimeDbSchema; + +public class CrimeBaseHelper extends SQLiteOpenHelper { + private static final int VERSION = 1; + private static final String DATABASE_NAME = "crimeBase.db"; + public CrimeBaseHelper(Context context) { + super(context, DATABASE_NAME, null, VERSION); + } + + @Override + public void onCreate(SQLiteDatabase db) { + String executionString = "create table " + CrimeDbSchema.CrimeTable.NAME; + executionString += " _id integer primary key autoincrement" + + CrimeDbSchema.CrimeTable.Cols.UUID + ", " + + CrimeDbSchema.CrimeTable.Cols.TITLE + ", " + + CrimeDbSchema.CrimeTable.Cols.DATE + ", " + + CrimeDbSchema.CrimeTable.Cols.SOLVED; + db.execSQL(executionString); + } + + @Override + public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { + + } +} diff --git a/Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/database/CrimeCursorWrapper.java b/Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/database/CrimeCursorWrapper.java new file mode 100644 index 0000000..8572afd --- /dev/null +++ b/Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/database/CrimeCursorWrapper.java @@ -0,0 +1,32 @@ +package asdv.lisset.criminalintent.database; + +import android.database.Cursor; +import android.database.CursorWrapper; + +import java.util.Date; +import java.util.UUID; + +import asdv.lisset.criminalintent.Crime; + +public class CrimeCursorWrapper extends CursorWrapper { + public CrimeCursorWrapper(Cursor cursor) { + super(cursor); + } + public Crime getCrime() { + String uuidString = + getString(getColumnIndex(CrimeDbSchema.CrimeTable.Cols.UUID)); + String title = + getString(getColumnIndex(CrimeDbSchema.CrimeTable.Cols.TITLE)); + long date = + getLong(getColumnIndex(CrimeDbSchema.CrimeTable.Cols.DATE)); + int isSolved = + getInt(getColumnIndex(CrimeDbSchema.CrimeTable.Cols.SOLVED)); + Crime crime = new Crime(UUID.fromString(uuidString)); + crime.setTitle(title); + crime.setDate(new Date(date)); + crime.setSolved(isSolved != 0); + return crime; + } + + +} diff --git a/Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/database/CrimeDbSchema.java b/Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/database/CrimeDbSchema.java new file mode 100644 index 0000000..e222bb5 --- /dev/null +++ b/Assignments/CriminalIntent13/app/src/main/java/asdv/lisset/criminalintent/database/CrimeDbSchema.java @@ -0,0 +1,15 @@ +package asdv.lisset.criminalintent.database; + +public class CrimeDbSchema { + public static final class CrimeTable { + public static final String NAME = "crimes"; + + public static final class Cols { + public static final String UUID = "UUID"; + public static final String TITLE = "title"; + public static final String DATE = "date"; + public static final String SOLVED = "solved"; + + } + } +} diff --git a/Assignments/CriminalIntent13/app/src/main/res/drawable-anydpi/ic_menu_add.xml b/Assignments/CriminalIntent13/app/src/main/res/drawable-anydpi/ic_menu_add.xml new file mode 100644 index 0000000..672478e --- /dev/null +++ b/Assignments/CriminalIntent13/app/src/main/res/drawable-anydpi/ic_menu_add.xml @@ -0,0 +1,11 @@ + + + diff --git a/Assignments/CriminalIntent13/app/src/main/res/drawable-hdpi/ic_menu_add.png b/Assignments/CriminalIntent13/app/src/main/res/drawable-hdpi/ic_menu_add.png new file mode 100644 index 0000000000000000000000000000000000000000..8707b00855027deda54c465ab8d40be82c5443bd GIT binary patch literal 198 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k1|%Oc%$NbBdOcknLn`9lPBG+aFc4t*EUU`$ zr@Ob6Ln&;ZyU6}0^UrAqwI~+|CUI&`>TAc$hCv`~A^}9i4mkcJC2q zca-9|DV8?2y_^Or>mdKI;Vst08l$h=Kufz literal 0 HcmV?d00001 diff --git a/Assignments/CriminalIntent13/app/src/main/res/drawable-mdpi/ic_menu_add.png b/Assignments/CriminalIntent13/app/src/main/res/drawable-mdpi/ic_menu_add.png new file mode 100644 index 0000000000000000000000000000000000000000..c0fb2bb0b17073742b22a67fe5faedf8e0d29297 GIT binary patch literal 138 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gjfu1goAr*1S2@ + + + + + + + + + + \ No newline at end of file diff --git a/Assignments/CriminalIntent13/app/src/main/res/drawable-xhdpi/ic_menu_add.png b/Assignments/CriminalIntent13/app/src/main/res/drawable-xhdpi/ic_menu_add.png new file mode 100644 index 0000000000000000000000000000000000000000..6eedadfb9b9cca1d530861d75511ac14c8bf6e3c GIT binary patch literal 159 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpUtG*1`Dkczms=MDK940u=${`sH# z=j4_bS`$*u7Ra6q?K-_q)pJtaidB8DpZ@;Fvp~|pxFL<Qo8W-*#DXRux1Sx{@|FiGWZ0h7pn;X02xuiZc!89ZJ6T-G@yGywqF CT0bWM literal 0 HcmV?d00001 diff --git a/Assignments/CriminalIntent13/app/src/main/res/drawable-xxhdpi/ic_menu_add.png b/Assignments/CriminalIntent13/app/src/main/res/drawable-xxhdpi/ic_menu_add.png new file mode 100644 index 0000000000000000000000000000000000000000..7a27534d671f7ece8e1519e5c720707ce535c5c3 GIT binary patch literal 260 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!r#)R9Ln`9lUNGc4Y{0|f`2T{g)a2caIWnCX!`dU>E+JW$t(4^?7~M SOCdmSF?hQAxvX + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Assignments/CriminalIntent13/app/src/main/res/layout-land/fragment_crime.xml b/Assignments/CriminalIntent13/app/src/main/res/layout-land/fragment_crime.xml new file mode 100644 index 0000000..f9d51ff --- /dev/null +++ b/Assignments/CriminalIntent13/app/src/main/res/layout-land/fragment_crime.xml @@ -0,0 +1,51 @@ + + + + + + + + + + +