├── .gitmodules ├── LICENSE ├── README.md ├── android ├── MyApplication │ ├── .gitignore │ ├── .idea │ │ ├── .gitignore │ │ ├── .name │ │ ├── compiler.xml │ │ ├── gradle.xml │ │ └── misc.xml │ ├── app │ │ ├── .gitignore │ │ ├── build.gradle │ │ ├── proguard-rules.pro │ │ └── src │ │ │ ├── androidTest │ │ │ └── java │ │ │ │ └── cn │ │ │ │ └── magicalsheep │ │ │ │ └── myapplication │ │ │ │ └── ExampleInstrumentedTest.kt │ │ │ ├── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── java │ │ │ │ └── cn │ │ │ │ │ └── magicalsheep │ │ │ │ │ └── myapplication │ │ │ │ │ ├── ActivityA.kt │ │ │ │ │ ├── ActivityB.kt │ │ │ │ │ ├── ActivityC.kt │ │ │ │ │ ├── Observer.kt │ │ │ │ │ ├── Repository.kt │ │ │ │ │ └── SimpleDialog.kt │ │ │ └── res │ │ │ │ ├── drawable-v24 │ │ │ │ └── ic_launcher_foreground.xml │ │ │ │ ├── drawable │ │ │ │ └── ic_launcher_background.xml │ │ │ │ ├── layout │ │ │ │ ├── activity_a.xml │ │ │ │ ├── activity_b.xml │ │ │ │ └── activity_c.xml │ │ │ │ ├── mipmap-anydpi-v26 │ │ │ │ ├── ic_launcher.xml │ │ │ │ └── ic_launcher_round.xml │ │ │ │ ├── mipmap-hdpi │ │ │ │ ├── ic_launcher.webp │ │ │ │ └── ic_launcher_round.webp │ │ │ │ ├── mipmap-mdpi │ │ │ │ ├── ic_launcher.webp │ │ │ │ └── ic_launcher_round.webp │ │ │ │ ├── mipmap-xhdpi │ │ │ │ ├── ic_launcher.webp │ │ │ │ └── ic_launcher_round.webp │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ ├── ic_launcher.webp │ │ │ │ └── ic_launcher_round.webp │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ ├── ic_launcher.webp │ │ │ │ └── ic_launcher_round.webp │ │ │ │ ├── values-night │ │ │ │ └── themes.xml │ │ │ │ ├── values │ │ │ │ ├── colors.xml │ │ │ │ ├── strings.xml │ │ │ │ └── themes.xml │ │ │ │ └── xml │ │ │ │ ├── backup_rules.xml │ │ │ │ └── data_extraction_rules.xml │ │ │ └── test │ │ │ └── java │ │ │ └── cn │ │ │ └── magicalsheep │ │ │ └── myapplication │ │ │ └── ExampleUnitTest.kt │ ├── build.gradle │ ├── gradle.properties │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ └── settings.gradle ├── MyApplication2 │ ├── .gitignore │ ├── .idea │ │ ├── .gitignore │ │ ├── .name │ │ ├── compiler.xml │ │ ├── deploymentTargetDropDown.xml │ │ ├── gradle.xml │ │ └── misc.xml │ ├── app │ │ ├── .gitignore │ │ ├── build.gradle │ │ ├── proguard-rules.pro │ │ ├── release │ │ │ ├── app-release.apk │ │ │ └── output-metadata.json │ │ └── src │ │ │ ├── androidTest │ │ │ └── java │ │ │ │ └── cn │ │ │ │ └── magicalsheep │ │ │ │ └── myapplication │ │ │ │ └── ExampleInstrumentedTest.kt │ │ │ ├── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── java │ │ │ │ └── cn │ │ │ │ │ └── magicalsheep │ │ │ │ │ └── myapplication │ │ │ │ │ ├── MainActivity.kt │ │ │ │ │ ├── MainHandler.kt │ │ │ │ │ ├── RecyclerViewAdapter.kt │ │ │ │ │ └── data │ │ │ │ │ ├── PhotoDbHelper.kt │ │ │ │ │ ├── PhotoService.kt │ │ │ │ │ └── model │ │ │ │ │ ├── Camera.kt │ │ │ │ │ ├── Photo.kt │ │ │ │ │ ├── PhotoEntry.kt │ │ │ │ │ ├── Photos.kt │ │ │ │ │ └── Rover.kt │ │ │ └── res │ │ │ │ ├── drawable-v24 │ │ │ │ └── ic_launcher_foreground.xml │ │ │ │ ├── drawable │ │ │ │ └── ic_launcher_background.xml │ │ │ │ ├── layout │ │ │ │ ├── activity_main.xml │ │ │ │ └── image_item.xml │ │ │ │ ├── mipmap-anydpi-v26 │ │ │ │ ├── ic_launcher.xml │ │ │ │ └── ic_launcher_round.xml │ │ │ │ ├── mipmap-hdpi │ │ │ │ ├── ic_launcher.webp │ │ │ │ └── ic_launcher_round.webp │ │ │ │ ├── mipmap-mdpi │ │ │ │ ├── ic_launcher.webp │ │ │ │ └── ic_launcher_round.webp │ │ │ │ ├── mipmap-xhdpi │ │ │ │ ├── ic_launcher.webp │ │ │ │ └── ic_launcher_round.webp │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ ├── ic_launcher.webp │ │ │ │ └── ic_launcher_round.webp │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ ├── ic_launcher.webp │ │ │ │ └── ic_launcher_round.webp │ │ │ │ ├── values-night │ │ │ │ └── themes.xml │ │ │ │ ├── values │ │ │ │ ├── colors.xml │ │ │ │ ├── strings.xml │ │ │ │ └── themes.xml │ │ │ │ └── xml │ │ │ │ ├── backup_rules.xml │ │ │ │ └── data_extraction_rules.xml │ │ │ └── test │ │ │ └── java │ │ │ └── cn │ │ │ └── magicalsheep │ │ │ └── myapplication │ │ │ └── ExampleUnitTest.kt │ ├── build.gradle │ ├── gradle.properties │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ └── settings.gradle ├── MyApplication3 │ ├── .gitignore │ ├── .idea │ │ ├── .gitignore │ │ ├── .name │ │ ├── compiler.xml │ │ ├── gradle.xml │ │ └── misc.xml │ ├── app │ │ ├── .gitignore │ │ ├── build.gradle │ │ ├── proguard-rules.pro │ │ ├── release │ │ │ ├── app-release.apk │ │ │ └── output-metadata.json │ │ └── src │ │ │ ├── androidTest │ │ │ └── java │ │ │ │ └── cn │ │ │ │ └── magicalsheep │ │ │ │ └── myapplication │ │ │ │ └── ExampleInstrumentedTest.kt │ │ │ ├── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── java │ │ │ │ └── cn │ │ │ │ │ └── magicalsheep │ │ │ │ │ └── myapplication │ │ │ │ │ ├── AlaramBroadcastReceiver.kt │ │ │ │ │ ├── MainActivity.kt │ │ │ │ │ ├── data │ │ │ │ │ ├── WeatherDbHelper.kt │ │ │ │ │ ├── entity │ │ │ │ │ │ ├── City.kt │ │ │ │ │ │ ├── CityEntry.kt │ │ │ │ │ │ ├── Report.kt │ │ │ │ │ │ ├── Weather.kt │ │ │ │ │ │ └── WeatherEntry.kt │ │ │ │ │ └── repository │ │ │ │ │ │ └── WeatherRepository.kt │ │ │ │ │ └── ui │ │ │ │ │ ├── SettingsFragment.kt │ │ │ │ │ ├── WeatherDetailFragment.kt │ │ │ │ │ ├── WeatherListFragment.kt │ │ │ │ │ ├── adapter │ │ │ │ │ └── WeatherListAdapter.kt │ │ │ │ │ └── model │ │ │ │ │ └── WeatherViewModel.kt │ │ │ └── res │ │ │ │ ├── drawable-v24 │ │ │ │ └── ic_launcher_foreground.xml │ │ │ │ ├── drawable │ │ │ │ ├── cloud_white_24dp.xml │ │ │ │ ├── ic_launcher_background.xml │ │ │ │ ├── icon100.xml │ │ │ │ ├── icon1001.xml │ │ │ │ ├── icon1002.xml │ │ │ │ ├── icon1003.xml │ │ │ │ ├── icon1004.xml │ │ │ │ ├── icon1005.xml │ │ │ │ ├── icon1006.xml │ │ │ │ ├── icon1007.xml │ │ │ │ ├── icon1008.xml │ │ │ │ ├── icon1009.xml │ │ │ │ ├── icon100_fill.xml │ │ │ │ ├── icon101.xml │ │ │ │ ├── icon1010.xml │ │ │ │ ├── icon1011.xml │ │ │ │ ├── icon1012.xml │ │ │ │ ├── icon1013.xml │ │ │ │ ├── icon1014.xml │ │ │ │ ├── icon1015.xml │ │ │ │ ├── icon1016.xml │ │ │ │ ├── icon1017.xml │ │ │ │ ├── icon1018.xml │ │ │ │ ├── icon1019.xml │ │ │ │ ├── icon101_fill.xml │ │ │ │ ├── icon102.xml │ │ │ │ ├── icon1020.xml │ │ │ │ ├── icon1021.xml │ │ │ │ ├── icon1022.xml │ │ │ │ ├── icon1023.xml │ │ │ │ ├── icon1024.xml │ │ │ │ ├── icon1025.xml │ │ │ │ ├── icon1026.xml │ │ │ │ ├── icon1027.xml │ │ │ │ ├── icon1028.xml │ │ │ │ ├── icon1029.xml │ │ │ │ ├── icon102_fill.xml │ │ │ │ ├── icon103.xml │ │ │ │ ├── icon1030.xml │ │ │ │ ├── icon1031.xml │ │ │ │ ├── icon1032.xml │ │ │ │ ├── icon1033.xml │ │ │ │ ├── icon1034.xml │ │ │ │ ├── icon1035.xml │ │ │ │ ├── icon1036.xml │ │ │ │ ├── icon1037.xml │ │ │ │ ├── icon1038.xml │ │ │ │ ├── icon1039.xml │ │ │ │ ├── icon103_fill.xml │ │ │ │ ├── icon104.xml │ │ │ │ ├── icon1040.xml │ │ │ │ ├── icon1041.xml │ │ │ │ ├── icon1042.xml │ │ │ │ ├── icon1043.xml │ │ │ │ ├── icon1044.xml │ │ │ │ ├── icon1045.xml │ │ │ │ ├── icon1046.xml │ │ │ │ ├── icon1047.xml │ │ │ │ ├── icon1048.xml │ │ │ │ ├── icon1049.xml │ │ │ │ ├── icon104_fill.xml │ │ │ │ ├── icon1050.xml │ │ │ │ ├── icon1051.xml │ │ │ │ ├── icon1052.xml │ │ │ │ ├── icon1053.xml │ │ │ │ ├── icon1054.xml │ │ │ │ ├── icon1055.xml │ │ │ │ ├── icon1056.xml │ │ │ │ ├── icon1057.xml │ │ │ │ ├── icon1058.xml │ │ │ │ ├── icon1059.xml │ │ │ │ ├── icon1061.xml │ │ │ │ ├── icon1064.xml │ │ │ │ ├── icon1101.xml │ │ │ │ ├── icon1302.xml │ │ │ │ ├── icon1402.xml │ │ │ │ ├── icon150.xml │ │ │ │ ├── icon150_fill.xml │ │ │ │ ├── icon151.xml │ │ │ │ ├── icon151_fill.xml │ │ │ │ ├── icon152.xml │ │ │ │ ├── icon152_fill.xml │ │ │ │ ├── icon153.xml │ │ │ │ ├── icon153_fill.xml │ │ │ │ ├── icon1601.xml │ │ │ │ ├── icon1602.xml │ │ │ │ ├── icon1603.xml │ │ │ │ ├── icon1604.xml │ │ │ │ ├── icon1605.xml │ │ │ │ ├── icon1606.xml │ │ │ │ ├── icon1607.xml │ │ │ │ ├── icon2001.xml │ │ │ │ ├── icon2002.xml │ │ │ │ ├── icon2003.xml │ │ │ │ ├── icon2004.xml │ │ │ │ ├── icon2005.xml │ │ │ │ ├── icon2006.xml │ │ │ │ ├── icon2007.xml │ │ │ │ ├── icon2008.xml │ │ │ │ ├── icon2009.xml │ │ │ │ ├── icon2010.xml │ │ │ │ ├── icon2011.xml │ │ │ │ ├── icon2012.xml │ │ │ │ ├── icon2013.xml │ │ │ │ ├── icon2014.xml │ │ │ │ ├── icon2015.xml │ │ │ │ ├── icon2016.xml │ │ │ │ ├── icon2017.xml │ │ │ │ ├── icon2018.xml │ │ │ │ ├── icon2019.xml │ │ │ │ ├── icon2020.xml │ │ │ │ ├── icon2021.xml │ │ │ │ ├── icon2022.xml │ │ │ │ ├── icon2023.xml │ │ │ │ ├── icon2024.xml │ │ │ │ ├── icon2025.xml │ │ │ │ ├── icon2026.xml │ │ │ │ ├── icon2027.xml │ │ │ │ ├── icon2028.xml │ │ │ │ ├── icon300.xml │ │ │ │ ├── icon300_fill.xml │ │ │ │ ├── icon301.xml │ │ │ │ ├── icon301_fill.xml │ │ │ │ ├── icon302.xml │ │ │ │ ├── icon302_fill.xml │ │ │ │ ├── icon303.xml │ │ │ │ ├── icon303_fill.xml │ │ │ │ ├── icon304.xml │ │ │ │ ├── icon304_fill.xml │ │ │ │ ├── icon305.xml │ │ │ │ ├── icon305_fill.xml │ │ │ │ ├── icon306.xml │ │ │ │ ├── icon306_fill.xml │ │ │ │ ├── icon307.xml │ │ │ │ ├── icon307_fill.xml │ │ │ │ ├── icon308.xml │ │ │ │ ├── icon308_fill.xml │ │ │ │ ├── icon309.xml │ │ │ │ ├── icon309_fill.xml │ │ │ │ ├── icon310.xml │ │ │ │ ├── icon310_fill.xml │ │ │ │ ├── icon311.xml │ │ │ │ ├── icon311_fill.xml │ │ │ │ ├── icon312.xml │ │ │ │ ├── icon312_fill.xml │ │ │ │ ├── icon313.xml │ │ │ │ ├── icon313_fill.xml │ │ │ │ ├── icon314.xml │ │ │ │ ├── icon314_fill.xml │ │ │ │ ├── icon315.xml │ │ │ │ ├── icon315_fill.xml │ │ │ │ ├── icon316.xml │ │ │ │ ├── icon316_fill.xml │ │ │ │ ├── icon317.xml │ │ │ │ ├── icon317_fill.xml │ │ │ │ ├── icon318.xml │ │ │ │ ├── icon318_fill.xml │ │ │ │ ├── icon350.xml │ │ │ │ ├── icon350_fill.xml │ │ │ │ ├── icon351.xml │ │ │ │ ├── icon351_fill.xml │ │ │ │ ├── icon399.xml │ │ │ │ ├── icon399_fill.xml │ │ │ │ ├── icon400.xml │ │ │ │ ├── icon400_fill.xml │ │ │ │ ├── icon401.xml │ │ │ │ ├── icon401_fill.xml │ │ │ │ ├── icon402.xml │ │ │ │ ├── icon402_fill.xml │ │ │ │ ├── icon403.xml │ │ │ │ ├── icon403_fill.xml │ │ │ │ ├── icon404.xml │ │ │ │ ├── icon404_fill.xml │ │ │ │ ├── icon405.xml │ │ │ │ ├── icon405_fill.xml │ │ │ │ ├── icon406.xml │ │ │ │ ├── icon406_fill.xml │ │ │ │ ├── icon407.xml │ │ │ │ ├── icon407_fill.xml │ │ │ │ ├── icon408.xml │ │ │ │ ├── icon408_fill.xml │ │ │ │ ├── icon409.xml │ │ │ │ ├── icon409_fill.xml │ │ │ │ ├── icon410.xml │ │ │ │ ├── icon410_fill.xml │ │ │ │ ├── icon456.xml │ │ │ │ ├── icon456_fill.xml │ │ │ │ ├── icon457.xml │ │ │ │ ├── icon457_fill.xml │ │ │ │ ├── icon499.xml │ │ │ │ ├── icon499_fill.xml │ │ │ │ ├── icon500.xml │ │ │ │ ├── icon500_fill.xml │ │ │ │ ├── icon501.xml │ │ │ │ ├── icon501_fill.xml │ │ │ │ ├── icon502.xml │ │ │ │ ├── icon502_fill.xml │ │ │ │ ├── icon503.xml │ │ │ │ ├── icon503_fill.xml │ │ │ │ ├── icon504.xml │ │ │ │ ├── icon504_fill.xml │ │ │ │ ├── icon507.xml │ │ │ │ ├── icon507_fill.xml │ │ │ │ ├── icon508.xml │ │ │ │ ├── icon508_fill.xml │ │ │ │ ├── icon509.xml │ │ │ │ ├── icon509_fill.xml │ │ │ │ ├── icon510.xml │ │ │ │ ├── icon510_fill.xml │ │ │ │ ├── icon511.xml │ │ │ │ ├── icon511_fill.xml │ │ │ │ ├── icon512.xml │ │ │ │ ├── icon512_fill.xml │ │ │ │ ├── icon513.xml │ │ │ │ ├── icon513_fill.xml │ │ │ │ ├── icon514.xml │ │ │ │ ├── icon514_fill.xml │ │ │ │ ├── icon515.xml │ │ │ │ ├── icon515_fill.xml │ │ │ │ ├── icon800.xml │ │ │ │ ├── icon801.xml │ │ │ │ ├── icon802.xml │ │ │ │ ├── icon803.xml │ │ │ │ ├── icon804.xml │ │ │ │ ├── icon805.xml │ │ │ │ ├── icon806.xml │ │ │ │ ├── icon807.xml │ │ │ │ ├── icon900.xml │ │ │ │ ├── icon900_fill.xml │ │ │ │ ├── icon901.xml │ │ │ │ ├── icon901_fill.xml │ │ │ │ ├── icon999.xml │ │ │ │ ├── icon9998.xml │ │ │ │ ├── icon9999.xml │ │ │ │ ├── icon999_fill.xml │ │ │ │ └── share_white_24dp.xml │ │ │ │ ├── layout-sw600dp │ │ │ │ ├── fragment_item_detail.xml │ │ │ │ └── fragment_item_list.xml │ │ │ │ ├── layout │ │ │ │ ├── activity_item_detail.xml │ │ │ │ ├── fragment_item_detail.xml │ │ │ │ ├── fragment_item_list.xml │ │ │ │ └── item_list_content.xml │ │ │ │ ├── menu │ │ │ │ └── toolbar_menu.xml │ │ │ │ ├── mipmap-anydpi-v26 │ │ │ │ ├── ic_launcher.xml │ │ │ │ └── ic_launcher_round.xml │ │ │ │ ├── mipmap-hdpi │ │ │ │ ├── ic_launcher.webp │ │ │ │ └── ic_launcher_round.webp │ │ │ │ ├── mipmap-mdpi │ │ │ │ ├── ic_launcher.webp │ │ │ │ └── ic_launcher_round.webp │ │ │ │ ├── mipmap-xhdpi │ │ │ │ ├── ic_launcher.webp │ │ │ │ └── ic_launcher_round.webp │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ ├── ic_launcher.webp │ │ │ │ └── ic_launcher_round.webp │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ ├── ic_launcher.webp │ │ │ │ └── ic_launcher_round.webp │ │ │ │ ├── navigation │ │ │ │ ├── primary_details_nav_graph.xml │ │ │ │ └── primary_details_sub_nav_graph.xml │ │ │ │ ├── raw │ │ │ │ └── city.json │ │ │ │ ├── values-land │ │ │ │ └── dimens.xml │ │ │ │ ├── values-night │ │ │ │ └── themes.xml │ │ │ │ ├── values-w600dp │ │ │ │ └── dimens.xml │ │ │ │ ├── values │ │ │ │ ├── arrays.xml │ │ │ │ ├── colors.xml │ │ │ │ ├── dimens.xml │ │ │ │ ├── strings.xml │ │ │ │ └── themes.xml │ │ │ │ └── xml │ │ │ │ ├── backup_rules.xml │ │ │ │ ├── data_extraction_rules.xml │ │ │ │ └── root_preferences.xml │ │ │ └── test │ │ │ └── java │ │ │ └── cn │ │ │ └── magicalsheep │ │ │ └── myapplication │ │ │ └── ExampleUnitTest.kt │ ├── build.gradle │ ├── gradle.properties │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ └── settings.gradle └── README.md ├── express ├── Expressui │ ├── .gitignore │ ├── .idea │ │ ├── .gitignore │ │ ├── .name │ │ ├── compiler.xml │ │ ├── gradle.xml │ │ ├── inspectionProfiles │ │ │ └── Project_Default.xml │ │ └── misc.xml │ ├── app │ │ ├── .gitignore │ │ ├── build.gradle │ │ ├── proguard-rules.pro │ │ ├── release │ │ │ ├── app-release.apk │ │ │ └── output-metadata.json │ │ └── src │ │ │ ├── androidTest │ │ │ └── java │ │ │ │ └── cn │ │ │ │ └── magicalsheep │ │ │ │ └── expressui │ │ │ │ └── ExampleInstrumentedTest.kt │ │ │ ├── main │ │ │ ├── AndroidManifest.xml │ │ │ ├── java │ │ │ │ └── cn │ │ │ │ │ └── magicalsheep │ │ │ │ │ └── expressui │ │ │ │ │ ├── MainActivity.kt │ │ │ │ │ ├── data │ │ │ │ │ ├── QrCodeAnalyser.kt │ │ │ │ │ ├── UnauthorizedException.kt │ │ │ │ │ ├── entity │ │ │ │ │ │ ├── EncodedPackage.kt │ │ │ │ │ │ ├── Package.kt │ │ │ │ │ │ ├── Result.kt │ │ │ │ │ │ ├── User.kt │ │ │ │ │ │ └── UserDto.kt │ │ │ │ │ └── repository │ │ │ │ │ │ ├── PackageRepository.kt │ │ │ │ │ │ └── UserRepository.kt │ │ │ │ │ └── ui │ │ │ │ │ ├── EditPackageActivity.kt │ │ │ │ │ ├── LoginActivity.kt │ │ │ │ │ ├── QrCodeActivity.kt │ │ │ │ │ ├── components │ │ │ │ │ ├── AppBar.kt │ │ │ │ │ ├── BottomBar.kt │ │ │ │ │ ├── EditPackageInfo.kt │ │ │ │ │ ├── EmptyContent.kt │ │ │ │ │ ├── PackageInfo.kt │ │ │ │ │ ├── PropItem.kt │ │ │ │ │ ├── SwipeRefreshList.kt │ │ │ │ │ └── UserInfo.kt │ │ │ │ │ ├── page │ │ │ │ │ ├── AppContent.kt │ │ │ │ │ ├── HomePage.kt │ │ │ │ │ ├── PackagesPage.kt │ │ │ │ │ └── UsersPage.kt │ │ │ │ │ ├── paging │ │ │ │ │ ├── PackageSource.kt │ │ │ │ │ └── UserSource.kt │ │ │ │ │ └── theme │ │ │ │ │ ├── Color.kt │ │ │ │ │ ├── Theme.kt │ │ │ │ │ └── Type.kt │ │ │ └── res │ │ │ │ ├── drawable-v24 │ │ │ │ ├── baseline_login_24.xml │ │ │ │ ├── baseline_logout_24.xml │ │ │ │ ├── baseline_qr_code_scanner_24.xml │ │ │ │ └── ic_launcher_foreground.xml │ │ │ │ ├── drawable │ │ │ │ └── ic_launcher_background.xml │ │ │ │ ├── mipmap-anydpi-v26 │ │ │ │ ├── ic_launcher.xml │ │ │ │ └── ic_launcher_round.xml │ │ │ │ ├── mipmap-hdpi │ │ │ │ ├── ic_launcher.webp │ │ │ │ └── ic_launcher_round.webp │ │ │ │ ├── mipmap-mdpi │ │ │ │ ├── ic_launcher.webp │ │ │ │ └── ic_launcher_round.webp │ │ │ │ ├── mipmap-xhdpi │ │ │ │ ├── ic_launcher.webp │ │ │ │ └── ic_launcher_round.webp │ │ │ │ ├── mipmap-xxhdpi │ │ │ │ ├── ic_launcher.webp │ │ │ │ └── ic_launcher_round.webp │ │ │ │ ├── mipmap-xxxhdpi │ │ │ │ ├── ic_launcher.webp │ │ │ │ └── ic_launcher_round.webp │ │ │ │ ├── values │ │ │ │ ├── colors.xml │ │ │ │ ├── strings.xml │ │ │ │ └── themes.xml │ │ │ │ └── xml │ │ │ │ ├── backup_rules.xml │ │ │ │ └── data_extraction_rules.xml │ │ │ └── test │ │ │ └── java │ │ │ └── cn │ │ │ └── magicalsheep │ │ │ └── expressui │ │ │ └── ExampleUnitTest.kt │ ├── build.gradle │ ├── gradle.properties │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ └── settings.gradle └── express-server │ ├── .gitignore │ ├── build.gradle.kts │ ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ ├── settings.gradle.kts │ └── src │ ├── main │ ├── kotlin │ │ └── cn │ │ │ └── magicalsheep │ │ │ └── expressserver │ │ │ ├── ExpressServerApplication.kt │ │ │ ├── controller │ │ │ ├── PackageController.kt │ │ │ └── UserController.kt │ │ │ ├── entity │ │ │ ├── DefaultException.kt │ │ │ ├── EncodedPackage.kt │ │ │ ├── Result.kt │ │ │ ├── UnauthorizedException.kt │ │ │ ├── dto │ │ │ │ ├── PackageDto.kt │ │ │ │ └── UserDto.kt │ │ │ ├── pojo │ │ │ │ ├── Package.kt │ │ │ │ └── User.kt │ │ │ └── vo │ │ │ │ ├── PackageVo.kt │ │ │ │ └── UserVo.kt │ │ │ └── repository │ │ │ ├── PackageRepository.kt │ │ │ └── UserRepository.kt │ └── resources │ │ ├── application.properties.example │ │ └── psw4j.properties │ └── test │ └── kotlin │ └── cn │ └── magicalsheep │ └── expressserver │ └── ExpressServerApplicationTests.kt ├── flight-ui ├── .gitignore ├── pom.xml └── src │ ├── META-INF │ └── MANIFEST.MF │ └── main │ ├── java │ └── cn │ │ └── magicalsheep │ │ ├── CallBackInterface.java │ │ ├── Main.java │ │ ├── backend │ │ ├── FlightFactory.java │ │ ├── TicketFactory.java │ │ └── UserFactory.java │ │ ├── frontend │ │ ├── FlightHandler.java │ │ ├── TicketHandler.java │ │ └── UserHandler.java │ │ ├── model │ │ ├── Plane.java │ │ ├── Ticket.java │ │ └── User.java │ │ ├── ui │ │ ├── MainFrame.form │ │ └── MainFrame.java │ │ └── utils │ │ └── DateUtils.java │ └── resources │ ├── data.json │ └── log4j2.xml ├── java ├── CET6-Game │ ├── .gitignore │ ├── .idea │ │ ├── gradle.xml │ │ ├── jpa-buddy.xml │ │ ├── misc.xml │ │ ├── vcs.xml │ │ └── workspace.xml │ ├── build.gradle.kts │ ├── gradle │ │ └── wrapper │ │ │ ├── gradle-wrapper.jar │ │ │ └── gradle-wrapper.properties │ ├── gradlew │ ├── gradlew.bat │ ├── settings.gradle.kts │ └── src │ │ └── main │ │ ├── java │ │ └── cn │ │ │ └── magicalsheep │ │ │ ├── client │ │ │ ├── ClientMain.java │ │ │ ├── Utils.java │ │ │ ├── core │ │ │ │ ├── Mode1Worker.java │ │ │ │ ├── Mode2Worker.java │ │ │ │ └── Timer.java │ │ │ └── ui │ │ │ │ ├── MainFrame.form │ │ │ │ ├── MainFrame.java │ │ │ │ ├── Mode1Frame.form │ │ │ │ ├── Mode1Frame.java │ │ │ │ ├── Mode2Frame.form │ │ │ │ └── Mode2Frame.java │ │ │ ├── common │ │ │ ├── Utils.java │ │ │ ├── Validate.java │ │ │ ├── request │ │ │ │ ├── Mode1AnswerRequest.java │ │ │ │ ├── Mode2AnswerRequest.java │ │ │ │ └── ModeRequest.java │ │ │ └── response │ │ │ │ ├── Mode1Question.java │ │ │ │ ├── Mode2Question.java │ │ │ │ └── ModeResult.java │ │ │ └── server │ │ │ ├── ServerMain.java │ │ │ ├── Utils.java │ │ │ ├── Worker.java │ │ │ ├── core │ │ │ ├── ModeCore.java │ │ │ └── impl │ │ │ │ ├── Mode1Impl.java │ │ │ │ └── Mode2Impl.java │ │ │ └── model │ │ │ ├── ChTrans.java │ │ │ └── DictEntry.java │ │ └── resources │ │ ├── CET6-Words.json │ │ └── log4j2.xml ├── README.md └── hjw-lab │ ├── 1 │ ├── build │ │ ├── Five.class │ │ ├── Four.class │ │ ├── One.class │ │ ├── Three.class │ │ └── Two.class │ ├── code │ │ ├── Five.java │ │ ├── Four.java │ │ ├── One.java │ │ ├── Three.java │ │ └── Two.java │ ├── compile.bat │ └── run.bat │ ├── 2 │ ├── build │ │ ├── Main.class │ │ └── Student.class │ ├── code │ │ ├── Main.java │ │ └── Student.java │ ├── compile.bat │ └── run.bat │ ├── 3 │ ├── build │ │ ├── Circle.class │ │ ├── Cylinder.class │ │ ├── Main.class │ │ └── Sphere.class │ ├── code │ │ ├── Circle.java │ │ ├── Cylinder.java │ │ ├── Main.java │ │ └── Sphere.java │ ├── compile.bat │ └── run.bat │ ├── 4 │ ├── build │ │ ├── Circle.class │ │ ├── Graduate.class │ │ ├── Main.class │ │ ├── Rectangle.class │ │ ├── Shape.class │ │ ├── StudentInterface.class │ │ └── TeacherInterface.class │ ├── code │ │ ├── Circle.java │ │ ├── Graduate.java │ │ ├── Main.java │ │ ├── Rectangle.java │ │ ├── Shape.java │ │ ├── StudentInterface.java │ │ └── TeacherInterface.java │ ├── compile.bat │ └── run.bat │ ├── 5 │ ├── build │ │ ├── IllegalAgeException.class │ │ ├── Main.class │ │ └── Person.class │ ├── code │ │ ├── IllegalAgeException.java │ │ ├── Main.java │ │ └── Person.java │ ├── compile.bat │ └── run.bat │ ├── 6 │ ├── build │ │ ├── One.class │ │ ├── Task.class │ │ ├── TaskOne.class │ │ ├── TaskTwo.class │ │ └── Two.class │ ├── code │ │ ├── One.java │ │ └── Two.java │ ├── compile.bat │ └── run.bat │ ├── 7 │ ├── build │ │ ├── Five.class │ │ ├── Four.class │ │ ├── One.class │ │ ├── Six.class │ │ ├── Three.class │ │ └── Two.class │ ├── code │ │ ├── Five.java │ │ ├── Four.java │ │ ├── One.java │ │ ├── Six.java │ │ ├── Three.java │ │ └── Two.java │ ├── compile.bat │ └── run.bat │ └── 8 │ ├── build │ ├── Four.class │ ├── One.class │ ├── PRIME.DAT │ ├── STUDENT.DAT │ ├── Student.class │ ├── Three.class │ └── Two.class │ ├── code │ ├── Four.java │ ├── One.java │ ├── Student.java │ ├── Three.java │ └── Two.java │ ├── compile.bat │ └── run.bat ├── network ├── README.md ├── httpserver │ ├── .gitignore │ ├── CMakeLists.txt │ ├── README.md │ ├── img │ │ ├── 1.png │ │ ├── 2.png │ │ └── 3.png │ ├── include │ │ ├── picohttpparser.h │ │ └── worker.h │ ├── main.c │ ├── public │ │ ├── index.html │ │ └── theme │ │ │ ├── css │ │ │ ├── main.css │ │ │ └── normalize.css │ │ │ ├── fonts │ │ │ ├── oswald-regular-webfont.woff2 │ │ │ ├── oxygen-regular-webfont.woff │ │ │ └── oxygen-regular-webfont.woff2 │ │ │ └── images │ │ │ ├── icons │ │ │ └── downloadarrow_small.png │ │ │ └── logos │ │ │ ├── constellix-green-logo.png │ │ │ ├── equinix-metal.png │ │ │ ├── fastly-logo.png │ │ │ ├── favicon.png │ │ │ ├── google.png │ │ │ ├── purestorage.png │ │ │ ├── redhat-community.png │ │ │ ├── thelinuxfoundation.png │ │ │ └── tux.png │ └── src │ │ ├── picohttpparser.c │ │ └── worker.c └── proxy │ ├── .gitignore │ ├── CMakeLists.txt │ ├── README.md │ ├── img │ ├── 1.png │ └── 2.png │ ├── include │ ├── picohttpparser.h │ ├── request.h │ └── worker.h │ ├── main.c │ └── src │ ├── picohttpparser.c │ ├── request.c │ └── worker.c └── weibo ├── Wbclient ├── .gitignore ├── .idea │ ├── .gitignore │ ├── compiler.xml │ ├── gradle.xml │ ├── inspectionProfiles │ │ └── Project_Default.xml │ └── misc.xml ├── app │ ├── .gitignore │ ├── build.gradle │ ├── proguard-rules.pro │ └── src │ │ ├── androidTest │ │ └── java │ │ │ └── cn │ │ │ └── magicalsheep │ │ │ └── wbclient │ │ │ └── ExampleInstrumentedTest.kt │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── java │ │ │ └── cn │ │ │ │ └── magicalsheep │ │ │ │ └── wbclient │ │ │ │ ├── MainActivity.kt │ │ │ │ ├── data │ │ │ │ ├── AjaxResult.kt │ │ │ │ ├── Blog.kt │ │ │ │ ├── Comment.kt │ │ │ │ ├── User.kt │ │ │ │ ├── local │ │ │ │ │ ├── LocalBlogDataProvider.kt │ │ │ │ │ └── LocalCommentDataProvider.kt │ │ │ │ ├── remote │ │ │ │ │ ├── BlogInterface.kt │ │ │ │ │ ├── CommentInterface.kt │ │ │ │ │ ├── RetrofitBuilder.kt │ │ │ │ │ ├── Token.kt │ │ │ │ │ ├── UserInterface.kt │ │ │ │ │ └── model │ │ │ │ │ │ ├── BlogRequestBody.kt │ │ │ │ │ │ ├── CommentRequestBody.kt │ │ │ │ │ │ ├── GoodRequestBody.kt │ │ │ │ │ │ └── LoginBody.kt │ │ │ │ └── repository │ │ │ │ │ ├── BlogRepository.kt │ │ │ │ │ ├── CommentRepository.kt │ │ │ │ │ ├── UserRepository.kt │ │ │ │ │ └── impl │ │ │ │ │ ├── BlogRepositoryImpl.kt │ │ │ │ │ ├── CommentRepositoryImpl.kt │ │ │ │ │ └── UserRepositoryImpl.kt │ │ │ │ └── ui │ │ │ │ ├── App.kt │ │ │ │ ├── components │ │ │ │ ├── Avatar.kt │ │ │ │ ├── BlogItem.kt │ │ │ │ ├── CommentItem.kt │ │ │ │ ├── EmptyPage.kt │ │ │ │ ├── ListLoadingIndicator.kt │ │ │ │ ├── ProfileCard.kt │ │ │ │ ├── ReplyCard.kt │ │ │ │ └── SwipeRefreshList.kt │ │ │ │ ├── model │ │ │ │ ├── HomeViewModel.kt │ │ │ │ └── ProfileViewModel.kt │ │ │ │ ├── navigation │ │ │ │ ├── NavigationActions.kt │ │ │ │ └── NavigationComponents.kt │ │ │ │ ├── paging │ │ │ │ ├── BlogSource.kt │ │ │ │ ├── CommentSource.kt │ │ │ │ └── MyBlogSource.kt │ │ │ │ ├── theme │ │ │ │ ├── Color.kt │ │ │ │ ├── Theme.kt │ │ │ │ └── Type.kt │ │ │ │ └── views │ │ │ │ ├── AboutPage.kt │ │ │ │ ├── BlogDetailPage.kt │ │ │ │ ├── EditBlogPage.kt │ │ │ │ ├── HomePage.kt │ │ │ │ ├── LoginPage.kt │ │ │ │ ├── ProfilePage.kt │ │ │ │ ├── SettingsPage.kt │ │ │ │ └── SheepBlogPage.kt │ │ └── res │ │ │ ├── drawable-v24 │ │ │ ├── baseline_account_circle_24.xml │ │ │ ├── baseline_emoji_emotions_24.xml │ │ │ ├── baseline_image_24.xml │ │ │ └── ic_launcher_foreground.xml │ │ │ ├── drawable │ │ │ ├── baseline_comment_24.xml │ │ │ ├── baseline_open_in_new_24.xml │ │ │ ├── baseline_thumb_up_off_alt_24.xml │ │ │ ├── ic_launcher_background.xml │ │ │ └── sheep_avatar.jpg │ │ │ ├── mipmap-anydpi-v26 │ │ │ ├── ic_launcher.xml │ │ │ └── ic_launcher_round.xml │ │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.webp │ │ │ └── ic_launcher_round.webp │ │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.webp │ │ │ └── ic_launcher_round.webp │ │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.webp │ │ │ └── ic_launcher_round.webp │ │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.webp │ │ │ └── ic_launcher_round.webp │ │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.webp │ │ │ └── ic_launcher_round.webp │ │ │ ├── values │ │ │ ├── colors.xml │ │ │ ├── strings.xml │ │ │ └── themes.xml │ │ │ └── xml │ │ │ ├── backup_rules.xml │ │ │ └── data_extraction_rules.xml │ │ └── test │ │ └── java │ │ └── cn │ │ └── magicalsheep │ │ └── wbclient │ │ └── ExampleUnitTest.kt ├── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat └── settings.gradle └── wb-server ├── .gitignore ├── Cargo.lock ├── Cargo.toml ├── config.yaml ├── resources └── wb_server.sql └── src ├── entity ├── blog.rs ├── comment.rs ├── goods.rs ├── mod.rs ├── prelude.rs └── user.rs ├── errors.rs ├── filters.rs ├── handlers ├── blog.rs ├── comment.rs ├── goods.rs ├── mod.rs └── user.rs ├── main.rs ├── packets.rs ├── repository ├── blog.rs ├── comment.rs ├── goods.rs ├── mod.rs └── user.rs └── util.rs /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "scheduler"] 2 | path = scheduler 3 | url = https://github.com/MagicalSheep/scheduler.git 4 | [submodule "notepad"] 5 | path = notepad 6 | url = https://github.com/MagicalSheep/notepad.git 7 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 课程实验合集 2 | 3 | 中南大学计算机学院部分专业课程及大作业的实验合集。因经历过硬盘损坏,部分实验代码已丢失。 4 | 5 | ## 目录 6 | 7 | - [android](/android/):阳旺老师的《移动应用开发》课程实验代码。 8 | - [flight-ui](/flight-ui/):大二上《高级程序设计实践》的航空机票订票系统。 9 | - [network](/network/):桂劲松老师的《计算机网络》课程实验代码,含简单 Web 服务器端程序实现与简单 HTTP 代理实现。 10 | - [notepad](https://github.com/MagicalSheep/notepad):大一上《计算机程序设计实践》的文本编辑器代码。 11 | - [scheduler](https://github.com/MagicalSheep/scheduler):李玺老师的《操作系统原理》课程实验代码。 12 | - [weibo](/weibo/):大三上《应用基础实践二》的微博应用程序代码。 13 | - [express](/express/):大三上《应用基础实践二》的基于二维码的快递信息保护系统程序代码。 14 | - [java](/java/):郭克华、黄家玮老师的《Java语言与系统设计》课程大作业代码。 15 | 16 | ## 说明 17 | 18 | 1. 部分目录中还含有多个子文件夹,用以区分“实验一”、“实验二”等或区分前端、后端代码。具体见各文件夹中的 `README.md`。另外部分实验c代码由于先前已上传至 GitHub 仓库上,故此处作为子模块引入,将此仓库代码 clone 至本地时注意添加相关参数以拉取子模块。 19 | 2. 大三上《应用基础实践一》摆烂开抄了[学长的代码](https://github.com/leo6033/Java_Project),因此该仓库中不含此实验。 20 | 3. 一部分实验代码可能暂未找到,或需要脱敏检查,会较晚上传。 21 | 4. 不为使用该仓库代码而引起的各种问题负责,仅供学习参考。 -------------------------------------------------------------------------------- /android/MyApplication/.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/caches 5 | /.idea/libraries 6 | /.idea/modules.xml 7 | /.idea/workspace.xml 8 | /.idea/navEditor.xml 9 | /.idea/assetWizardSettings.xml 10 | .DS_Store 11 | /build 12 | /captures 13 | .externalNativeBuild 14 | .cxx 15 | local.properties 16 | -------------------------------------------------------------------------------- /android/MyApplication/.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | -------------------------------------------------------------------------------- /android/MyApplication/.idea/.name: -------------------------------------------------------------------------------- 1 | My Application -------------------------------------------------------------------------------- /android/MyApplication/.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /android/MyApplication/.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 20 | 21 | -------------------------------------------------------------------------------- /android/MyApplication/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 10 | -------------------------------------------------------------------------------- /android/MyApplication/app/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /android/MyApplication/app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /android/MyApplication/app/src/androidTest/java/cn/magicalsheep/myapplication/ExampleInstrumentedTest.kt: -------------------------------------------------------------------------------- 1 | package cn.magicalsheep.myapplication 2 | 3 | import androidx.test.platform.app.InstrumentationRegistry 4 | import androidx.test.ext.junit.runners.AndroidJUnit4 5 | 6 | import org.junit.Test 7 | import org.junit.runner.RunWith 8 | 9 | import org.junit.Assert.* 10 | 11 | /** 12 | * Instrumented test, which will execute on an Android device. 13 | * 14 | * See [testing documentation](http://d.android.com/tools/testing). 15 | */ 16 | @RunWith(AndroidJUnit4::class) 17 | class ExampleInstrumentedTest { 18 | @Test 19 | fun useAppContext() { 20 | // Context of the app under test. 21 | val appContext = InstrumentationRegistry.getInstrumentation().targetContext 22 | assertEquals("cn.magicalsheep.myapplication", appContext.packageName) 23 | } 24 | } -------------------------------------------------------------------------------- /android/MyApplication/app/src/main/java/cn/magicalsheep/myapplication/Repository.kt: -------------------------------------------------------------------------------- 1 | package cn.magicalsheep.myapplication 2 | 3 | object Repository { 4 | val methodList = StringBuilder() 5 | val status = HashMap() 6 | } -------------------------------------------------------------------------------- /android/MyApplication/app/src/main/java/cn/magicalsheep/myapplication/SimpleDialog.kt: -------------------------------------------------------------------------------- 1 | package cn.magicalsheep.myapplication 2 | 3 | import android.app.AlertDialog 4 | import android.app.Dialog 5 | import android.os.Bundle 6 | import androidx.fragment.app.DialogFragment 7 | 8 | class SimpleDialog : DialogFragment() { 9 | 10 | override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { 11 | return activity?.let { 12 | val builder = AlertDialog.Builder(it) 13 | builder.setMessage(R.string.simple_dialog) 14 | .setNeutralButton(R.string.close) { _, _ -> } 15 | builder.create() 16 | } ?: throw IllegalStateException("Activity cannot be null") 17 | } 18 | } -------------------------------------------------------------------------------- /android/MyApplication/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /android/MyApplication/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /android/MyApplication/app/src/main/res/mipmap-hdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MagicalSheep/lab/e36800d386c4805ea20f4256e86ed4bb85f95738/android/MyApplication/app/src/main/res/mipmap-hdpi/ic_launcher.webp -------------------------------------------------------------------------------- /android/MyApplication/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MagicalSheep/lab/e36800d386c4805ea20f4256e86ed4bb85f95738/android/MyApplication/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /android/MyApplication/app/src/main/res/mipmap-mdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MagicalSheep/lab/e36800d386c4805ea20f4256e86ed4bb85f95738/android/MyApplication/app/src/main/res/mipmap-mdpi/ic_launcher.webp -------------------------------------------------------------------------------- /android/MyApplication/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MagicalSheep/lab/e36800d386c4805ea20f4256e86ed4bb85f95738/android/MyApplication/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /android/MyApplication/app/src/main/res/mipmap-xhdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MagicalSheep/lab/e36800d386c4805ea20f4256e86ed4bb85f95738/android/MyApplication/app/src/main/res/mipmap-xhdpi/ic_launcher.webp -------------------------------------------------------------------------------- /android/MyApplication/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MagicalSheep/lab/e36800d386c4805ea20f4256e86ed4bb85f95738/android/MyApplication/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /android/MyApplication/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MagicalSheep/lab/e36800d386c4805ea20f4256e86ed4bb85f95738/android/MyApplication/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp -------------------------------------------------------------------------------- /android/MyApplication/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MagicalSheep/lab/e36800d386c4805ea20f4256e86ed4bb85f95738/android/MyApplication/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /android/MyApplication/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MagicalSheep/lab/e36800d386c4805ea20f4256e86ed4bb85f95738/android/MyApplication/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp -------------------------------------------------------------------------------- /android/MyApplication/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MagicalSheep/lab/e36800d386c4805ea20f4256e86ed4bb85f95738/android/MyApplication/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /android/MyApplication/app/src/main/res/values-night/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16 | -------------------------------------------------------------------------------- /android/MyApplication/app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FFBB86FC 4 | #FF6200EE 5 | #FF3700B3 6 | #FF03DAC5 7 | #FF018786 8 | #FF000000 9 | #FFFFFFFF 10 | -------------------------------------------------------------------------------- /android/MyApplication/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Activity Lifecycle 3 | Start A 4 | Start B 5 | Start C 6 | Finish A 7 | Finish B 8 | Finish C 9 | Dialog 10 | Activity A 11 | Activity B 12 | Activity C 13 | Lifecycle Method List 14 | Activity Status 15 | Simple Dialog 16 | Close 17 | -------------------------------------------------------------------------------- /android/MyApplication/app/src/main/res/values/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16 | -------------------------------------------------------------------------------- /android/MyApplication/app/src/main/res/xml/backup_rules.xml: -------------------------------------------------------------------------------- 1 | 8 | 9 | 13 | -------------------------------------------------------------------------------- /android/MyApplication/app/src/main/res/xml/data_extraction_rules.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 12 | 13 | 19 | -------------------------------------------------------------------------------- /android/MyApplication/app/src/test/java/cn/magicalsheep/myapplication/ExampleUnitTest.kt: -------------------------------------------------------------------------------- 1 | package cn.magicalsheep.myapplication 2 | 3 | import org.junit.Test 4 | 5 | import org.junit.Assert.* 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * See [testing documentation](http://d.android.com/tools/testing). 11 | */ 12 | class ExampleUnitTest { 13 | @Test 14 | fun addition_isCorrect() { 15 | assertEquals(4, 2 + 2) 16 | } 17 | } -------------------------------------------------------------------------------- /android/MyApplication/build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | plugins { 3 | id 'com.android.application' version '7.3.0' apply false 4 | id 'com.android.library' version '7.3.0' apply false 5 | id 'org.jetbrains.kotlin.android' version '1.7.10' apply false 6 | } -------------------------------------------------------------------------------- /android/MyApplication/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MagicalSheep/lab/e36800d386c4805ea20f4256e86ed4bb85f95738/android/MyApplication/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /android/MyApplication/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Tue Oct 25 10:11:13 CST 2022 2 | distributionBase=GRADLE_USER_HOME 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip 4 | distributionPath=wrapper/dists 5 | zipStorePath=wrapper/dists 6 | zipStoreBase=GRADLE_USER_HOME 7 | -------------------------------------------------------------------------------- /android/MyApplication/settings.gradle: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | gradlePluginPortal() 4 | google() 5 | mavenCentral() 6 | } 7 | } 8 | dependencyResolutionManagement { 9 | repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) 10 | repositories { 11 | google() 12 | mavenCentral() 13 | } 14 | } 15 | rootProject.name = "My Application" 16 | include ':app' 17 | -------------------------------------------------------------------------------- /android/MyApplication2/.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/caches 5 | /.idea/libraries 6 | /.idea/modules.xml 7 | /.idea/workspace.xml 8 | /.idea/navEditor.xml 9 | /.idea/assetWizardSettings.xml 10 | .DS_Store 11 | /build 12 | /captures 13 | .externalNativeBuild 14 | .cxx 15 | local.properties 16 | -------------------------------------------------------------------------------- /android/MyApplication2/.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | -------------------------------------------------------------------------------- /android/MyApplication2/.idea/.name: -------------------------------------------------------------------------------- 1 | My Application -------------------------------------------------------------------------------- /android/MyApplication2/.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /android/MyApplication2/.idea/deploymentTargetDropDown.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /android/MyApplication2/.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 20 | 21 | -------------------------------------------------------------------------------- /android/MyApplication2/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 10 | -------------------------------------------------------------------------------- /android/MyApplication2/app/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /android/MyApplication2/app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /android/MyApplication2/app/release/app-release.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MagicalSheep/lab/e36800d386c4805ea20f4256e86ed4bb85f95738/android/MyApplication2/app/release/app-release.apk -------------------------------------------------------------------------------- /android/MyApplication2/app/release/output-metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "artifactType": { 4 | "type": "APK", 5 | "kind": "Directory" 6 | }, 7 | "applicationId": "cn.magicalsheep.myapplication", 8 | "variantName": "release", 9 | "elements": [ 10 | { 11 | "type": "SINGLE", 12 | "filters": [], 13 | "attributes": [], 14 | "versionCode": 1, 15 | "versionName": "1.0", 16 | "outputFile": "app-release.apk" 17 | } 18 | ], 19 | "elementType": "File" 20 | } -------------------------------------------------------------------------------- /android/MyApplication2/app/src/androidTest/java/cn/magicalsheep/myapplication/ExampleInstrumentedTest.kt: -------------------------------------------------------------------------------- 1 | package cn.magicalsheep.myapplication 2 | 3 | import androidx.test.platform.app.InstrumentationRegistry 4 | import androidx.test.ext.junit.runners.AndroidJUnit4 5 | 6 | import org.junit.Test 7 | import org.junit.runner.RunWith 8 | 9 | import org.junit.Assert.* 10 | 11 | /** 12 | * Instrumented test, which will execute on an Android device. 13 | * 14 | * See [testing documentation](http://d.android.com/tools/testing). 15 | */ 16 | @RunWith(AndroidJUnit4::class) 17 | class ExampleInstrumentedTest { 18 | @Test 19 | fun useAppContext() { 20 | // Context of the app under test. 21 | val appContext = InstrumentationRegistry.getInstrumentation().targetContext 22 | assertEquals("cn.magicalsheep.myapplication", appContext.packageName) 23 | } 24 | } -------------------------------------------------------------------------------- /android/MyApplication2/app/src/main/java/cn/magicalsheep/myapplication/data/PhotoService.kt: -------------------------------------------------------------------------------- 1 | package cn.magicalsheep.myapplication.data 2 | 3 | import cn.magicalsheep.myapplication.data.model.Photos 4 | import okhttp3.ResponseBody 5 | import retrofit2.Call 6 | import retrofit2.Retrofit 7 | import retrofit2.converter.gson.GsonConverterFactory 8 | import retrofit2.http.GET 9 | import retrofit2.http.Query 10 | import retrofit2.http.Url 11 | 12 | const val baseUrl = "https://api.nasa.gov/" 13 | val photoService: PhotoService = Retrofit.Builder() 14 | .baseUrl(baseUrl) 15 | .addConverterFactory(GsonConverterFactory.create()) 16 | .build() 17 | .create(PhotoService::class.java); 18 | 19 | interface PhotoService { 20 | @GET("mars-photos/api/v1/rovers/curiosity/photos") 21 | fun allPhotos(@Query("sol") sol: Int, @Query("api_key") apiKey: String): Call 22 | 23 | @GET 24 | fun downloadPhoto(@Url url: String): Call 25 | } -------------------------------------------------------------------------------- /android/MyApplication2/app/src/main/java/cn/magicalsheep/myapplication/data/model/Camera.kt: -------------------------------------------------------------------------------- 1 | package cn.magicalsheep.myapplication.data.model 2 | 3 | import com.google.gson.annotations.SerializedName 4 | 5 | data class Camera( 6 | val id: Int, 7 | val name: String, 8 | @SerializedName("rover_id") 9 | val roverId: Int, 10 | @SerializedName("full_name") 11 | val fullName: String, 12 | ) 13 | -------------------------------------------------------------------------------- /android/MyApplication2/app/src/main/java/cn/magicalsheep/myapplication/data/model/Photo.kt: -------------------------------------------------------------------------------- 1 | package cn.magicalsheep.myapplication.data.model 2 | 3 | import com.google.gson.annotations.SerializedName 4 | 5 | data class Photo( 6 | val id: Int, 7 | val sol: Int, 8 | val camera: Camera, 9 | @SerializedName("img_src") 10 | val imgSrc: String, 11 | @SerializedName("earth_date") 12 | val earthDate: String, 13 | val rover: Rover, 14 | ) 15 | -------------------------------------------------------------------------------- /android/MyApplication2/app/src/main/java/cn/magicalsheep/myapplication/data/model/PhotoEntry.kt: -------------------------------------------------------------------------------- 1 | package cn.magicalsheep.myapplication.data.model 2 | 3 | import android.provider.BaseColumns 4 | 5 | object PhotoEntry : BaseColumns { 6 | const val TABLE_NAME = "photo_cache" 7 | const val COLUMN_NAME_URL = "url" 8 | const val COLUMN_NAME_IMAGE = "image" 9 | } -------------------------------------------------------------------------------- /android/MyApplication2/app/src/main/java/cn/magicalsheep/myapplication/data/model/Photos.kt: -------------------------------------------------------------------------------- 1 | package cn.magicalsheep.myapplication.data.model 2 | 3 | data class Photos( 4 | val photos: List 5 | ) 6 | -------------------------------------------------------------------------------- /android/MyApplication2/app/src/main/java/cn/magicalsheep/myapplication/data/model/Rover.kt: -------------------------------------------------------------------------------- 1 | package cn.magicalsheep.myapplication.data.model 2 | 3 | import com.google.gson.annotations.SerializedName 4 | 5 | data class Rover( 6 | val id: Int, 7 | val name: String, 8 | @SerializedName("landing_date") 9 | val landingDate: String, 10 | @SerializedName("launch_date") 11 | val launchDate: String, 12 | val status: String, 13 | ) 14 | -------------------------------------------------------------------------------- /android/MyApplication2/app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 13 | 14 | -------------------------------------------------------------------------------- /android/MyApplication2/app/src/main/res/layout/image_item.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 16 | -------------------------------------------------------------------------------- /android/MyApplication2/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /android/MyApplication2/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /android/MyApplication2/app/src/main/res/mipmap-hdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MagicalSheep/lab/e36800d386c4805ea20f4256e86ed4bb85f95738/android/MyApplication2/app/src/main/res/mipmap-hdpi/ic_launcher.webp -------------------------------------------------------------------------------- /android/MyApplication2/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MagicalSheep/lab/e36800d386c4805ea20f4256e86ed4bb85f95738/android/MyApplication2/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /android/MyApplication2/app/src/main/res/mipmap-mdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MagicalSheep/lab/e36800d386c4805ea20f4256e86ed4bb85f95738/android/MyApplication2/app/src/main/res/mipmap-mdpi/ic_launcher.webp -------------------------------------------------------------------------------- /android/MyApplication2/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MagicalSheep/lab/e36800d386c4805ea20f4256e86ed4bb85f95738/android/MyApplication2/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /android/MyApplication2/app/src/main/res/mipmap-xhdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MagicalSheep/lab/e36800d386c4805ea20f4256e86ed4bb85f95738/android/MyApplication2/app/src/main/res/mipmap-xhdpi/ic_launcher.webp -------------------------------------------------------------------------------- /android/MyApplication2/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MagicalSheep/lab/e36800d386c4805ea20f4256e86ed4bb85f95738/android/MyApplication2/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /android/MyApplication2/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MagicalSheep/lab/e36800d386c4805ea20f4256e86ed4bb85f95738/android/MyApplication2/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp -------------------------------------------------------------------------------- /android/MyApplication2/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MagicalSheep/lab/e36800d386c4805ea20f4256e86ed4bb85f95738/android/MyApplication2/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /android/MyApplication2/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MagicalSheep/lab/e36800d386c4805ea20f4256e86ed4bb85f95738/android/MyApplication2/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp -------------------------------------------------------------------------------- /android/MyApplication2/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MagicalSheep/lab/e36800d386c4805ea20f4256e86ed4bb85f95738/android/MyApplication2/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /android/MyApplication2/app/src/main/res/values-night/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16 | -------------------------------------------------------------------------------- /android/MyApplication2/app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FFBB86FC 4 | #FF6200EE 5 | #FF3700B3 6 | #FF03DAC5 7 | #FF018786 8 | #FF000000 9 | #FFFFFFFF 10 | -------------------------------------------------------------------------------- /android/MyApplication2/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | NASA Curiosity 3 | Failed to get meta information from API 4 | -------------------------------------------------------------------------------- /android/MyApplication2/app/src/main/res/values/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16 | -------------------------------------------------------------------------------- /android/MyApplication2/app/src/main/res/xml/backup_rules.xml: -------------------------------------------------------------------------------- 1 | 8 | 9 | 13 | -------------------------------------------------------------------------------- /android/MyApplication2/app/src/main/res/xml/data_extraction_rules.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 12 | 13 | 19 | -------------------------------------------------------------------------------- /android/MyApplication2/app/src/test/java/cn/magicalsheep/myapplication/ExampleUnitTest.kt: -------------------------------------------------------------------------------- 1 | package cn.magicalsheep.myapplication 2 | 3 | import org.junit.Test 4 | 5 | import org.junit.Assert.* 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * See [testing documentation](http://d.android.com/tools/testing). 11 | */ 12 | class ExampleUnitTest { 13 | @Test 14 | fun addition_isCorrect() { 15 | assertEquals(4, 2 + 2) 16 | } 17 | } -------------------------------------------------------------------------------- /android/MyApplication2/build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | plugins { 3 | id 'com.android.application' version '7.3.0' apply false 4 | id 'com.android.library' version '7.3.0' apply false 5 | id 'org.jetbrains.kotlin.android' version '1.7.10' apply false 6 | } -------------------------------------------------------------------------------- /android/MyApplication2/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MagicalSheep/lab/e36800d386c4805ea20f4256e86ed4bb85f95738/android/MyApplication2/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /android/MyApplication2/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Wed Nov 16 10:49:49 CST 2022 2 | distributionBase=GRADLE_USER_HOME 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip 4 | distributionPath=wrapper/dists 5 | zipStorePath=wrapper/dists 6 | zipStoreBase=GRADLE_USER_HOME 7 | -------------------------------------------------------------------------------- /android/MyApplication2/settings.gradle: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | gradlePluginPortal() 4 | google() 5 | mavenCentral() 6 | } 7 | } 8 | dependencyResolutionManagement { 9 | repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) 10 | repositories { 11 | google() 12 | mavenCentral() 13 | } 14 | } 15 | rootProject.name = "My Application" 16 | include ':app' 17 | -------------------------------------------------------------------------------- /android/MyApplication3/.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/caches 5 | /.idea/libraries 6 | /.idea/modules.xml 7 | /.idea/workspace.xml 8 | /.idea/navEditor.xml 9 | /.idea/assetWizardSettings.xml 10 | .DS_Store 11 | /build 12 | /captures 13 | .externalNativeBuild 14 | .cxx 15 | local.properties 16 | -------------------------------------------------------------------------------- /android/MyApplication3/.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | -------------------------------------------------------------------------------- /android/MyApplication3/.idea/.name: -------------------------------------------------------------------------------- 1 | My Application -------------------------------------------------------------------------------- /android/MyApplication3/.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /android/MyApplication3/.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 19 | 20 | -------------------------------------------------------------------------------- /android/MyApplication3/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 10 | -------------------------------------------------------------------------------- /android/MyApplication3/app/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /android/MyApplication3/app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /android/MyApplication3/app/release/app-release.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MagicalSheep/lab/e36800d386c4805ea20f4256e86ed4bb85f95738/android/MyApplication3/app/release/app-release.apk -------------------------------------------------------------------------------- /android/MyApplication3/app/release/output-metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "artifactType": { 4 | "type": "APK", 5 | "kind": "Directory" 6 | }, 7 | "applicationId": "cn.magicalsheep.myapplication", 8 | "variantName": "release", 9 | "elements": [ 10 | { 11 | "type": "SINGLE", 12 | "filters": [], 13 | "attributes": [], 14 | "versionCode": 1, 15 | "versionName": "1.0", 16 | "outputFile": "app-release.apk" 17 | } 18 | ], 19 | "elementType": "File" 20 | } -------------------------------------------------------------------------------- /android/MyApplication3/app/src/androidTest/java/cn/magicalsheep/myapplication/ExampleInstrumentedTest.kt: -------------------------------------------------------------------------------- 1 | package cn.magicalsheep.myapplication 2 | 3 | import androidx.test.platform.app.InstrumentationRegistry 4 | import androidx.test.ext.junit.runners.AndroidJUnit4 5 | 6 | import org.junit.Test 7 | import org.junit.runner.RunWith 8 | 9 | import org.junit.Assert.* 10 | 11 | /** 12 | * Instrumented test, which will execute on an Android device. 13 | * 14 | * See [testing documentation](http://d.android.com/tools/testing). 15 | */ 16 | @RunWith(AndroidJUnit4::class) 17 | class ExampleInstrumentedTest { 18 | @Test 19 | fun useAppContext() { 20 | // Context of the app under test. 21 | val appContext = InstrumentationRegistry.getInstrumentation().targetContext 22 | assertEquals("cn.magicalsheep.myapplication", appContext.packageName) 23 | } 24 | } -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/java/cn/magicalsheep/myapplication/data/entity/Report.kt: -------------------------------------------------------------------------------- 1 | package cn.magicalsheep.myapplication.data.entity 2 | 3 | import java.util.Date 4 | 5 | data class Refer( 6 | val sources: List, 7 | val license: List 8 | ) 9 | 10 | data class Report( 11 | val code: String, 12 | val updateTime: Date, 13 | val fxLink: String, 14 | val daily: List, 15 | val refer: Refer 16 | ) 17 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/drawable/cloud_white_24dp.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/drawable/icon1001.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/drawable/icon1006.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/drawable/icon1014.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/drawable/icon1017.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/drawable/icon1019.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/drawable/icon1021.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/drawable/icon1037.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 13 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/drawable/icon1041.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/drawable/icon1042.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/drawable/icon1302.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/drawable/icon1402.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/drawable/icon150.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/drawable/icon150_fill.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/drawable/icon1605.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/drawable/icon2001.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/drawable/icon2003.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/drawable/icon2006.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 11 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/drawable/icon2011.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/drawable/icon2016.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 13 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/drawable/icon2023.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/drawable/icon305_fill.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 11 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/drawable/icon306_fill.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 11 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/drawable/icon313_fill.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/drawable/icon314_fill.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/drawable/icon399.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/drawable/icon399_fill.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/drawable/icon404_fill.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/drawable/icon500_fill.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/drawable/icon501_fill.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/drawable/icon502.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/drawable/icon502_fill.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/drawable/icon509_fill.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/drawable/icon510_fill.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/drawable/icon514_fill.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/drawable/icon800.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/drawable/icon801.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/drawable/icon802.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/drawable/icon803.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/drawable/icon804.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/drawable/icon805.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/drawable/icon806.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/drawable/icon807.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/drawable/icon900.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 13 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/drawable/icon900_fill.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/drawable/icon901.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 12 | 13 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/drawable/icon901_fill.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/drawable/icon999.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/drawable/icon9998.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/drawable/icon9999.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/menu/toolbar_menu.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 11 | 12 | 16 | 17 | 21 | 22 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/mipmap-hdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MagicalSheep/lab/e36800d386c4805ea20f4256e86ed4bb85f95738/android/MyApplication3/app/src/main/res/mipmap-hdpi/ic_launcher.webp -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MagicalSheep/lab/e36800d386c4805ea20f4256e86ed4bb85f95738/android/MyApplication3/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/mipmap-mdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MagicalSheep/lab/e36800d386c4805ea20f4256e86ed4bb85f95738/android/MyApplication3/app/src/main/res/mipmap-mdpi/ic_launcher.webp -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MagicalSheep/lab/e36800d386c4805ea20f4256e86ed4bb85f95738/android/MyApplication3/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/mipmap-xhdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MagicalSheep/lab/e36800d386c4805ea20f4256e86ed4bb85f95738/android/MyApplication3/app/src/main/res/mipmap-xhdpi/ic_launcher.webp -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MagicalSheep/lab/e36800d386c4805ea20f4256e86ed4bb85f95738/android/MyApplication3/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MagicalSheep/lab/e36800d386c4805ea20f4256e86ed4bb85f95738/android/MyApplication3/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MagicalSheep/lab/e36800d386c4805ea20f4256e86ed4bb85f95738/android/MyApplication3/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MagicalSheep/lab/e36800d386c4805ea20f4256e86ed4bb85f95738/android/MyApplication3/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MagicalSheep/lab/e36800d386c4805ea20f4256e86ed4bb85f95738/android/MyApplication3/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/navigation/primary_details_sub_nav_graph.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 12 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/values-land/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 48dp 4 | 48dp 5 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/values-night/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/values-w600dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 48dp 4 | 48dp 5 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/values/arrays.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Celsius 4 | Fahrenheit 5 | 6 | 7 | 8 | celsius 9 | fahrenheit 10 | 11 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FFBB86FC 4 | #FF6200EE 5 | #FF3700B3 6 | #FF03DAC5 7 | #FF018786 8 | #FF000000 9 | #FFFFFFFF 10 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16dp 4 | 200dp 5 | 200dp 6 | 16dp 7 | 8dp 8 | 16dp 9 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Sunshine 3 | Detail 4 | Weather icon 5 | Settings 6 | Map Location 7 | Weather Notifications 8 | Temperature Units 9 | Celsius 10 | Fahrenheit 11 | Location 12 | 长沙 13 | Share 14 | Default Channel 15 | Default Channel Description 16 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/xml/backup_rules.xml: -------------------------------------------------------------------------------- 1 | 8 | 9 | 13 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/xml/data_extraction_rules.xml: -------------------------------------------------------------------------------- 1 | 6 | 7 | 8 | 12 | 13 | 19 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/main/res/xml/root_preferences.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 8 | 9 | 16 | 17 | 20 | 21 | -------------------------------------------------------------------------------- /android/MyApplication3/app/src/test/java/cn/magicalsheep/myapplication/ExampleUnitTest.kt: -------------------------------------------------------------------------------- 1 | package cn.magicalsheep.myapplication 2 | 3 | import org.junit.Test 4 | 5 | import org.junit.Assert.* 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * See [testing documentation](http://d.android.com/tools/testing). 11 | */ 12 | class ExampleUnitTest { 13 | @Test 14 | fun addition_isCorrect() { 15 | assertEquals(4, 2 + 2) 16 | } 17 | } -------------------------------------------------------------------------------- /android/MyApplication3/build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | plugins { 3 | id 'com.android.application' version '7.3.1' apply false 4 | id 'com.android.library' version '7.3.1' apply false 5 | id 'org.jetbrains.kotlin.android' version '1.7.20' apply false 6 | } -------------------------------------------------------------------------------- /android/MyApplication3/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MagicalSheep/lab/e36800d386c4805ea20f4256e86ed4bb85f95738/android/MyApplication3/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /android/MyApplication3/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Mon Nov 28 16:13:31 CST 2022 2 | distributionBase=GRADLE_USER_HOME 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip 4 | distributionPath=wrapper/dists 5 | zipStorePath=wrapper/dists 6 | zipStoreBase=GRADLE_USER_HOME 7 | -------------------------------------------------------------------------------- /android/MyApplication3/settings.gradle: -------------------------------------------------------------------------------- 1 | pluginManagement { 2 | repositories { 3 | gradlePluginPortal() 4 | google() 5 | mavenCentral() 6 | } 7 | } 8 | dependencyResolutionManagement { 9 | repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) 10 | repositories { 11 | google() 12 | mavenCentral() 13 | } 14 | } 15 | rootProject.name = "My Application" 16 | include ':app' 17 | -------------------------------------------------------------------------------- /android/README.md: -------------------------------------------------------------------------------- 1 | - [MyApplication](/android/MyApplication/):实验一 Activity的生命周期及Intent 2 | - [MyApplication2](/android/MyApplication2/):实验二 火星探测车拍摄照片展示应用实现 3 | - [MyApplication3](/android/MyApplication3/):实验三 天气预报应用实现 -------------------------------------------------------------------------------- /express/Expressui/.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/caches 5 | /.idea/libraries 6 | /.idea/modules.xml 7 | /.idea/workspace.xml 8 | /.idea/navEditor.xml 9 | /.idea/assetWizardSettings.xml 10 | .DS_Store 11 | /build 12 | /captures 13 | .externalNativeBuild 14 | .cxx 15 | local.properties 16 | -------------------------------------------------------------------------------- /express/Expressui/.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | -------------------------------------------------------------------------------- /express/Expressui/.idea/.name: -------------------------------------------------------------------------------- 1 | Express-ui -------------------------------------------------------------------------------- /express/Expressui/.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /express/Expressui/.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 20 | 21 | -------------------------------------------------------------------------------- /express/Expressui/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 10 | -------------------------------------------------------------------------------- /express/Expressui/app/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /express/Expressui/app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile -------------------------------------------------------------------------------- /express/Expressui/app/release/app-release.apk: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MagicalSheep/lab/e36800d386c4805ea20f4256e86ed4bb85f95738/express/Expressui/app/release/app-release.apk -------------------------------------------------------------------------------- /express/Expressui/app/release/output-metadata.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "artifactType": { 4 | "type": "APK", 5 | "kind": "Directory" 6 | }, 7 | "applicationId": "cn.magicalsheep.expressui", 8 | "variantName": "release", 9 | "elements": [ 10 | { 11 | "type": "SINGLE", 12 | "filters": [], 13 | "attributes": [], 14 | "versionCode": 1, 15 | "versionName": "1.0", 16 | "outputFile": "app-release.apk" 17 | } 18 | ], 19 | "elementType": "File" 20 | } -------------------------------------------------------------------------------- /express/Expressui/app/src/androidTest/java/cn/magicalsheep/expressui/ExampleInstrumentedTest.kt: -------------------------------------------------------------------------------- 1 | package cn.magicalsheep.expressui 2 | 3 | import androidx.test.platform.app.InstrumentationRegistry 4 | import androidx.test.ext.junit.runners.AndroidJUnit4 5 | 6 | import org.junit.Test 7 | import org.junit.runner.RunWith 8 | 9 | import org.junit.Assert.* 10 | 11 | /** 12 | * Instrumented test, which will execute on an Android device. 13 | * 14 | * See [testing documentation](http://d.android.com/tools/testing). 15 | */ 16 | @RunWith(AndroidJUnit4::class) 17 | class ExampleInstrumentedTest { 18 | @Test 19 | fun useAppContext() { 20 | // Context of the app under test. 21 | val appContext = InstrumentationRegistry.getInstrumentation().targetContext 22 | assertEquals("cn.magicalsheep.expressui", appContext.packageName) 23 | } 24 | } -------------------------------------------------------------------------------- /express/Expressui/app/src/main/java/cn/magicalsheep/expressui/data/UnauthorizedException.kt: -------------------------------------------------------------------------------- 1 | package cn.magicalsheep.expressui.data 2 | 3 | class UnauthorizedException : Exception() -------------------------------------------------------------------------------- /express/Expressui/app/src/main/java/cn/magicalsheep/expressui/data/entity/Package.kt: -------------------------------------------------------------------------------- 1 | package cn.magicalsheep.expressui.data.entity 2 | 3 | import java.io.Serializable 4 | import java.util.* 5 | 6 | data class Package( 7 | val id: Long, 8 | var senderName: String, 9 | var senderAddress: String, 10 | var senderPhone: String, 11 | var receiverName: String, 12 | var receiverAddress: String, 13 | var receiverPhone: String, 14 | var description: String, 15 | var weight: Double, 16 | var freight: Double, 17 | var position: String, 18 | var sendTime: Date, 19 | var isRecv: Boolean, 20 | var recvTime: Date? = null 21 | ) : Serializable -------------------------------------------------------------------------------- /express/Expressui/app/src/main/java/cn/magicalsheep/expressui/data/entity/Result.kt: -------------------------------------------------------------------------------- 1 | package cn.magicalsheep.expressui.data.entity 2 | 3 | import java.io.Serializable 4 | 5 | data class Result ( 6 | val status: Int, 7 | val message: String, 8 | val data: T? = null 9 | ) : Serializable 10 | -------------------------------------------------------------------------------- /express/Expressui/app/src/main/java/cn/magicalsheep/expressui/data/entity/User.kt: -------------------------------------------------------------------------------- 1 | package cn.magicalsheep.expressui.data.entity 2 | 3 | import java.io.Serializable 4 | 5 | data class User( 6 | val account: String, 7 | val role: String, 8 | val name: String? = null, 9 | val address: String? = null, 10 | val phone: String? = null, 11 | val gender: String? = null 12 | ) : Serializable 13 | -------------------------------------------------------------------------------- /express/Expressui/app/src/main/java/cn/magicalsheep/expressui/data/entity/UserDto.kt: -------------------------------------------------------------------------------- 1 | package cn.magicalsheep.expressui.data.entity 2 | 3 | import java.io.Serializable 4 | 5 | data class UserDto( 6 | val account: String, 7 | val pwd: String ?= null, 8 | val name: String? = null, 9 | val address: String? = null, 10 | val phone: String? = null, 11 | val gender: String? = null 12 | ) : Serializable 13 | -------------------------------------------------------------------------------- /express/Expressui/app/src/main/java/cn/magicalsheep/expressui/ui/theme/Color.kt: -------------------------------------------------------------------------------- 1 | package cn.magicalsheep.expressui.ui.theme 2 | 3 | import androidx.compose.ui.graphics.Color 4 | 5 | val Purple80 = Color(0xFFD0BCFF) 6 | val PurpleGrey80 = Color(0xFFCCC2DC) 7 | val Pink80 = Color(0xFFEFB8C8) 8 | 9 | val Purple40 = Color(0xFF6650a4) 10 | val PurpleGrey40 = Color(0xFF625b71) 11 | val Pink40 = Color(0xFF7D5260) -------------------------------------------------------------------------------- /express/Expressui/app/src/main/res/drawable-v24/baseline_login_24.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /express/Expressui/app/src/main/res/drawable-v24/baseline_logout_24.xml: -------------------------------------------------------------------------------- 1 | 8 | 11 | 12 | -------------------------------------------------------------------------------- /express/Expressui/app/src/main/res/drawable-v24/baseline_qr_code_scanner_24.xml: -------------------------------------------------------------------------------- 1 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /express/Expressui/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /express/Expressui/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /express/Expressui/app/src/main/res/mipmap-hdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MagicalSheep/lab/e36800d386c4805ea20f4256e86ed4bb85f95738/express/Expressui/app/src/main/res/mipmap-hdpi/ic_launcher.webp -------------------------------------------------------------------------------- /express/Expressui/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MagicalSheep/lab/e36800d386c4805ea20f4256e86ed4bb85f95738/express/Expressui/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /express/Expressui/app/src/main/res/mipmap-mdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MagicalSheep/lab/e36800d386c4805ea20f4256e86ed4bb85f95738/express/Expressui/app/src/main/res/mipmap-mdpi/ic_launcher.webp -------------------------------------------------------------------------------- /express/Expressui/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MagicalSheep/lab/e36800d386c4805ea20f4256e86ed4bb85f95738/express/Expressui/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /express/Expressui/app/src/main/res/mipmap-xhdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MagicalSheep/lab/e36800d386c4805ea20f4256e86ed4bb85f95738/express/Expressui/app/src/main/res/mipmap-xhdpi/ic_launcher.webp -------------------------------------------------------------------------------- /express/Expressui/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MagicalSheep/lab/e36800d386c4805ea20f4256e86ed4bb85f95738/express/Expressui/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /express/Expressui/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MagicalSheep/lab/e36800d386c4805ea20f4256e86ed4bb85f95738/express/Expressui/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp -------------------------------------------------------------------------------- /express/Expressui/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MagicalSheep/lab/e36800d386c4805ea20f4256e86ed4bb85f95738/express/Expressui/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /express/Expressui/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MagicalSheep/lab/e36800d386c4805ea20f4256e86ed4bb85f95738/express/Expressui/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp -------------------------------------------------------------------------------- /express/Expressui/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MagicalSheep/lab/e36800d386c4805ea20f4256e86ed4bb85f95738/express/Expressui/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp -------------------------------------------------------------------------------- /express/Expressui/app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #FFBB86FC 4 | #FF6200EE 5 | #FF3700B3 6 | #FF03DAC5 7 | #FF018786 8 | #FF000000 9 | #FFFFFFFF 10 | -------------------------------------------------------------------------------- /express/Expressui/app/src/main/res/values/themes.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 |