From 7719d76f3fd57d19cfab054c43073a74077604f2 Mon Sep 17 00:00:00 2001 From: hmalik144 Date: Fri, 27 Nov 2020 16:11:47 +0000 Subject: [PATCH 1/3] Completion of weather app with new api - MVVM - SOLID - Atlas Weather Views ported to kotlin --- .idea/assetWizardSettings.xml | 38 +++++ .idea/caches/build_file_checksums.ser | Bin 537 -> 537 bytes .idea/codeStyles/Project.xml | 152 ++++++++++++++--- .idea/gradle.xml | 2 + .idea/jarRepositories.xml | 40 +++++ .idea/misc.xml | 18 +- .idea/modules.xml | 2 + .idea/navEditor.xml | 102 +++++++++++ app/build.gradle | 86 ++++++++-- .../ExampleInstrumentedTest.java | 26 --- .../mvvm/utils/DateUtilsKtTest.kt | 25 +++ app/src/main/AndroidManifest.xml | 57 ++++--- .../AppWidget/MyWidgetRemoteViewsFactory.java | 18 +- .../{ => legacy}/AppWidget/NewAppWidget.java | 35 ++-- .../AppWidget/WidgetRemoteViewsService.java | 2 +- .../{ => legacy}/ForecastLoader.java | 14 +- .../data/network}/RetrieveJSON.java | 25 +-- .../data/sql}/ForecastContract.java | 2 +- .../data/sql}/ForecastDBHelper.java | 4 +- .../data/sql}/ForecastProvider.java | 9 +- .../{ => legacy/model}/CurrentForecast.java | 2 +- .../{ => legacy/model}/Forecast.java | 22 +-- .../{ => legacy/model}/ForecastItem.java | 2 +- .../{ => legacy/model}/infopageItem.java | 9 +- .../services/location}/getLatLong.java | 33 ++-- .../notifcation}/NotificationReceiver.java | 27 +-- .../ui/AddForecastActivity.java} | 22 +-- .../{ => legacy/ui}/FurtherInfoActivity.java | 12 +- .../{ => legacy/ui}/InfoActivity.java | 8 +- .../ui/UnitSettingsActivity.java} | 11 +- .../{ => legacy/ui}/WorldItemActivity.java | 27 +-- .../ui/adapters}/CurrentForecastAdapter.java | 18 +- .../ui/adapters}/RecyclerViewAdapter.java | 20 ++- .../ui/home/FragmentHome.java} | 51 +++--- .../ui/home/FragmentTwo.java} | 61 +++---- .../{ => legacy/ui/home}/MainActivity.java | 33 ++-- .../mvvm/application/AppClass.kt | 46 +++++ .../mvvm/data/location/LocationProvider.kt | 55 ++++++ .../mvvm/data/network/ResponseUnwrap.kt | 33 ++++ .../mvvm/data/network/WeatherApi.kt | 51 ++++++ .../NetworkConnectionInterceptor.kt | 38 +++++ .../interceptors/QueryParamsInterceptor.kt | 31 ++++ .../data/network/response/forecast/Current.kt | 48 ++++++ .../network/response/forecast/DailyItem.kt | 51 ++++++ .../network/response/forecast/FeelsLike.kt | 18 ++ .../network/response/forecast/Response.kt | 24 +++ .../data/network/response/forecast/Temp.kt | 24 +++ .../network/response/forecast/WeatherItem.kt | 18 ++ .../response/forecast/WeatherResponse.kt | 25 +++ .../mvvm/data/prefs/PreferencesProvider.kt | 40 +++++ .../mvvm/data/repository/Repository.kt | 18 ++ .../mvvm/data/repository/RepositoryImpl.kt | 66 +++++++ .../mvvm/data/room/AppDatabase.kt | 41 +++++ .../atlas_weather/mvvm/data/room/Converter.kt | 28 +++ .../mvvm/data/room/WeatherDao.kt | 29 ++++ .../mvvm/data/room/entity/EntityItem.kt | 14 ++ .../mvvm/model/forecast/Forecast.kt | 86 ++++++++++ .../mvvm/model/forecast/WeatherDisplay.kt | 82 +++++++++ .../mvvm/model/weather/Current.kt | 44 +++++ .../mvvm/model/weather/DailyWeather.kt | 53 ++++++ .../mvvm/model/weather/FullWeather.kt | 24 +++ .../atlas_weather/mvvm/ui/BaseFragment.kt | 55 ++++++ .../atlas_weather/mvvm/ui/MainActivity.kt | 70 ++++++++ .../mvvm/ui/WeatherRecyclerAdapter.kt | 161 ++++++++++++++++++ .../mvvm/ui/WorldItemFragment.kt | 47 +++++ .../mvvm/ui/details/FurtherInfoFragment.kt | 62 +++++++ .../mvvm/ui/home/BaseActivity.kt | 30 ++++ .../mvvm/ui/home/HomeFragment.kt | 97 +++++++++++ .../mvvm/ui/world/AddLocationFragment.kt | 56 ++++++ .../mvvm/ui/world/WorldFragment.kt | 71 ++++++++ .../mvvm/ui/world/WorldRecyclerAdapter.kt | 96 +++++++++++ .../h_mal/atlas_weather/mvvm/utils/Event.kt | 24 +++ .../mvvm/utils/NavigationUtils.kt | 32 ++++ .../mvvm/utils/SecondsToDateUtils.kt | 125 ++++++++++++++ .../atlas_weather/mvvm/utils/ViewUtils.kt | 62 +++++++ .../viewmodel/ApplicationViewModelFactory.kt | 24 +++ .../mvvm/viewmodel/MainViewModel.kt | 68 ++++++++ .../mvvm/viewmodel/MainViewModelFactory.kt | 20 +++ .../mvvm/viewmodel/WorldViewModel.kt | 103 +++++++++++ .../mvvm/viewmodel/WorldViewModelFactory.kt | 20 +++ app/src/main/res/drawable/card_outlined.xml | 8 + .../main/res/drawable/ic_baseline_home_24.xml | 5 + .../res/drawable/ic_baseline_public_24.xml | 5 + app/src/main/res/drawable/somethingnew.xml | 22 +-- .../main/res/layout/activity_add_forecast.xml | 16 +- .../main/res/layout/activity_further_info.xml | 2 +- app/src/main/res/layout/activity_main.xml | 27 +-- .../res/layout/activity_main_navigation.xml | 58 +++++++ app/src/main/res/layout/db_list_item.xml | 11 +- app/src/main/res/layout/fragment__two.xml | 40 +---- .../main/res/layout/fragment_add_location.xml | 46 +++++ app/src/main/res/layout/fragment_home.xml | 31 ++++ app/src/main/res/layout/fragment_main.xml | 13 +- app/src/main/res/layout/info_dialog_item.xml | 1 - .../main/res/layout/info_dialog_layout.xml | 1 - app/src/main/res/layout/list_item_layout2.xml | 16 +- app/src/main/res/menu/menu_main.xml | 2 +- app/src/main/res/menu/tabs_menu.xml | 16 ++ .../main/res/navigation/main_navigation.xml | 74 ++++++++ app/src/main/res/values/strings.xml | 2 + app/src/main/res/values/styles.xml | 2 +- .../h_mal/atlas_weather/ExampleUnitTest.java | 2 +- .../data/repository/RepositoryImplTest.kt | 73 ++++++++ .../mvvm/viewmodel/MainViewModelTest.kt | 66 +++++++ build.gradle | 10 +- gradle.properties | 3 + gradle/wrapper/gradle-wrapper.properties | 2 +- 107 files changed, 3383 insertions(+), 396 deletions(-) create mode 100644 .idea/jarRepositories.xml create mode 100644 .idea/navEditor.xml delete mode 100644 app/src/androidTest/java/com/appttude/h_mal/atlas_weather/ExampleInstrumentedTest.java create mode 100644 app/src/androidTest/java/com/appttude/h_mal/atlas_weather/mvvm/utils/DateUtilsKtTest.kt rename app/src/main/java/com/appttude/h_mal/atlas_weather/{ => legacy}/AppWidget/MyWidgetRemoteViewsFactory.java (86%) rename app/src/main/java/com/appttude/h_mal/atlas_weather/{ => legacy}/AppWidget/NewAppWidget.java (88%) rename app/src/main/java/com/appttude/h_mal/atlas_weather/{ => legacy}/AppWidget/WidgetRemoteViewsService.java (83%) rename app/src/main/java/com/appttude/h_mal/atlas_weather/{ => legacy}/ForecastLoader.java (70%) rename app/src/main/java/com/appttude/h_mal/atlas_weather/{ => legacy/data/network}/RetrieveJSON.java (91%) rename app/src/main/java/com/appttude/h_mal/atlas_weather/{dbfiles => legacy/data/sql}/ForecastContract.java (96%) rename app/src/main/java/com/appttude/h_mal/atlas_weather/{dbfiles => legacy/data/sql}/ForecastDBHelper.java (89%) rename app/src/main/java/com/appttude/h_mal/atlas_weather/{dbfiles => legacy/data/sql}/ForecastProvider.java (96%) rename app/src/main/java/com/appttude/h_mal/atlas_weather/{ => legacy/model}/CurrentForecast.java (99%) rename app/src/main/java/com/appttude/h_mal/atlas_weather/{ => legacy/model}/Forecast.java (95%) rename app/src/main/java/com/appttude/h_mal/atlas_weather/{ => legacy/model}/ForecastItem.java (96%) rename app/src/main/java/com/appttude/h_mal/atlas_weather/{ => legacy/model}/infopageItem.java (95%) rename app/src/main/java/com/appttude/h_mal/atlas_weather/{ => legacy/services/location}/getLatLong.java (69%) rename app/src/main/java/com/appttude/h_mal/atlas_weather/{ => legacy/services/notifcation}/NotificationReceiver.java (81%) rename app/src/main/java/com/appttude/h_mal/atlas_weather/{AddForecast.java => legacy/ui/AddForecastActivity.java} (81%) rename app/src/main/java/com/appttude/h_mal/atlas_weather/{ => legacy/ui}/FurtherInfoActivity.java (90%) rename app/src/main/java/com/appttude/h_mal/atlas_weather/{ => legacy/ui}/InfoActivity.java (90%) rename app/src/main/java/com/appttude/h_mal/atlas_weather/{UnitSettings.java => legacy/ui/UnitSettingsActivity.java} (89%) rename app/src/main/java/com/appttude/h_mal/atlas_weather/{ => legacy/ui}/WorldItemActivity.java (69%) rename app/src/main/java/com/appttude/h_mal/atlas_weather/{ => legacy/ui/adapters}/CurrentForecastAdapter.java (80%) rename app/src/main/java/com/appttude/h_mal/atlas_weather/{ => legacy/ui/adapters}/RecyclerViewAdapter.java (92%) rename app/src/main/java/com/appttude/h_mal/atlas_weather/{Fragment_home.java => legacy/ui/home/FragmentHome.java} (79%) rename app/src/main/java/com/appttude/h_mal/atlas_weather/{Fragment_Two.java => legacy/ui/home/FragmentTwo.java} (75%) rename app/src/main/java/com/appttude/h_mal/atlas_weather/{ => legacy/ui/home}/MainActivity.java (85%) create mode 100644 app/src/main/java/com/appttude/h_mal/atlas_weather/mvvm/application/AppClass.kt create mode 100644 app/src/main/java/com/appttude/h_mal/atlas_weather/mvvm/data/location/LocationProvider.kt create mode 100644 app/src/main/java/com/appttude/h_mal/atlas_weather/mvvm/data/network/ResponseUnwrap.kt create mode 100644 app/src/main/java/com/appttude/h_mal/atlas_weather/mvvm/data/network/WeatherApi.kt create mode 100644 app/src/main/java/com/appttude/h_mal/atlas_weather/mvvm/data/network/interceptors/NetworkConnectionInterceptor.kt create mode 100644 app/src/main/java/com/appttude/h_mal/atlas_weather/mvvm/data/network/interceptors/QueryParamsInterceptor.kt create mode 100644 app/src/main/java/com/appttude/h_mal/atlas_weather/mvvm/data/network/response/forecast/Current.kt create mode 100644 app/src/main/java/com/appttude/h_mal/atlas_weather/mvvm/data/network/response/forecast/DailyItem.kt create mode 100644 app/src/main/java/com/appttude/h_mal/atlas_weather/mvvm/data/network/response/forecast/FeelsLike.kt create mode 100644 app/src/main/java/com/appttude/h_mal/atlas_weather/mvvm/data/network/response/forecast/Response.kt create mode 100644 app/src/main/java/com/appttude/h_mal/atlas_weather/mvvm/data/network/response/forecast/Temp.kt create mode 100644 app/src/main/java/com/appttude/h_mal/atlas_weather/mvvm/data/network/response/forecast/WeatherItem.kt create mode 100644 app/src/main/java/com/appttude/h_mal/atlas_weather/mvvm/data/network/response/forecast/WeatherResponse.kt create mode 100644 app/src/main/java/com/appttude/h_mal/atlas_weather/mvvm/data/prefs/PreferencesProvider.kt create mode 100644 app/src/main/java/com/appttude/h_mal/atlas_weather/mvvm/data/repository/Repository.kt create mode 100644 app/src/main/java/com/appttude/h_mal/atlas_weather/mvvm/data/repository/RepositoryImpl.kt create mode 100644 app/src/main/java/com/appttude/h_mal/atlas_weather/mvvm/data/room/AppDatabase.kt create mode 100644 app/src/main/java/com/appttude/h_mal/atlas_weather/mvvm/data/room/Converter.kt create mode 100644 app/src/main/java/com/appttude/h_mal/atlas_weather/mvvm/data/room/WeatherDao.kt create mode 100644 app/src/main/java/com/appttude/h_mal/atlas_weather/mvvm/data/room/entity/EntityItem.kt create mode 100644 app/src/main/java/com/appttude/h_mal/atlas_weather/mvvm/model/forecast/Forecast.kt create mode 100644 app/src/main/java/com/appttude/h_mal/atlas_weather/mvvm/model/forecast/WeatherDisplay.kt create mode 100644 app/src/main/java/com/appttude/h_mal/atlas_weather/mvvm/model/weather/Current.kt create mode 100644 app/src/main/java/com/appttude/h_mal/atlas_weather/mvvm/model/weather/DailyWeather.kt create mode 100644 app/src/main/java/com/appttude/h_mal/atlas_weather/mvvm/model/weather/FullWeather.kt create mode 100644 app/src/main/java/com/appttude/h_mal/atlas_weather/mvvm/ui/BaseFragment.kt create mode 100644 app/src/main/java/com/appttude/h_mal/atlas_weather/mvvm/ui/MainActivity.kt create mode 100644 app/src/main/java/com/appttude/h_mal/atlas_weather/mvvm/ui/WeatherRecyclerAdapter.kt create mode 100644 app/src/main/java/com/appttude/h_mal/atlas_weather/mvvm/ui/WorldItemFragment.kt create mode 100644 app/src/main/java/com/appttude/h_mal/atlas_weather/mvvm/ui/details/FurtherInfoFragment.kt create mode 100644 app/src/main/java/com/appttude/h_mal/atlas_weather/mvvm/ui/home/BaseActivity.kt create mode 100644 app/src/main/java/com/appttude/h_mal/atlas_weather/mvvm/ui/home/HomeFragment.kt create mode 100644 app/src/main/java/com/appttude/h_mal/atlas_weather/mvvm/ui/world/AddLocationFragment.kt create mode 100644 app/src/main/java/com/appttude/h_mal/atlas_weather/mvvm/ui/world/WorldFragment.kt create mode 100644 app/src/main/java/com/appttude/h_mal/atlas_weather/mvvm/ui/world/WorldRecyclerAdapter.kt create mode 100644 app/src/main/java/com/appttude/h_mal/atlas_weather/mvvm/utils/Event.kt create mode 100644 app/src/main/java/com/appttude/h_mal/atlas_weather/mvvm/utils/NavigationUtils.kt create mode 100644 app/src/main/java/com/appttude/h_mal/atlas_weather/mvvm/utils/SecondsToDateUtils.kt create mode 100644 app/src/main/java/com/appttude/h_mal/atlas_weather/mvvm/utils/ViewUtils.kt create mode 100644 app/src/main/java/com/appttude/h_mal/atlas_weather/mvvm/viewmodel/ApplicationViewModelFactory.kt create mode 100644 app/src/main/java/com/appttude/h_mal/atlas_weather/mvvm/viewmodel/MainViewModel.kt create mode 100644 app/src/main/java/com/appttude/h_mal/atlas_weather/mvvm/viewmodel/MainViewModelFactory.kt create mode 100644 app/src/main/java/com/appttude/h_mal/atlas_weather/mvvm/viewmodel/WorldViewModel.kt create mode 100644 app/src/main/java/com/appttude/h_mal/atlas_weather/mvvm/viewmodel/WorldViewModelFactory.kt create mode 100644 app/src/main/res/drawable/card_outlined.xml create mode 100644 app/src/main/res/drawable/ic_baseline_home_24.xml create mode 100644 app/src/main/res/drawable/ic_baseline_public_24.xml create mode 100644 app/src/main/res/layout/activity_main_navigation.xml create mode 100644 app/src/main/res/layout/fragment_add_location.xml create mode 100644 app/src/main/res/layout/fragment_home.xml create mode 100644 app/src/main/res/menu/tabs_menu.xml create mode 100644 app/src/main/res/navigation/main_navigation.xml create mode 100644 app/src/test/java/com/appttude/h_mal/atlas_weather/mvvm/data/repository/RepositoryImplTest.kt create mode 100644 app/src/test/java/com/appttude/h_mal/atlas_weather/mvvm/viewmodel/MainViewModelTest.kt diff --git a/.idea/assetWizardSettings.xml b/.idea/assetWizardSettings.xml index f846343..dd49c39 100644 --- a/.idea/assetWizardSettings.xml +++ b/.idea/assetWizardSettings.xml @@ -106,6 +106,44 @@ + + + + + + + diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser index a3e1154e6577edbbbed17324a4a454921081d996..3a1a0bae7da5a0bd9d2708f98815dcc69d99f2d5 100644 GIT binary patch delta 96 zcmV-m0H6Pv1epYomj!kTb@j86oOcl5_pKVoM3M6E^uMe+yMfb_BLPJaS%ev%=`eYZ zFPdY=*09$^lXw9g5JyOeSbEtyj}Imy@FFnIwUea*V-XeXYPYSK>yxg>#)b^f0TFn+ CEG=pP delta 96 zcmV-m0H6Pv1epYomj!3pcV^3xoOckT`KN);!n?$8WY%RutOXa7BLPJaQ?ysjll(XQ zlA5=Ajb2tQlXw9g5IG5ZsA)cBGfzDAime-&)03qEV-da({J?ZiXnjkyXo+!wqEdKu CzAO9y diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml index 30aa626..db291c6 100644 --- a/.idea/codeStyles/Project.xml +++ b/.idea/codeStyles/Project.xml @@ -1,29 +1,131 @@ - - - - - - - - - - + + + + + + + +
+ + + + xmlns:android + + ^$ + + + +
+
+ + + + xmlns:.* + + ^$ + + + BY_NAME + +
+
+ + + + .*:id + + http://schemas.android.com/apk/res/android + + + +
+
+ + + + .*:name + + http://schemas.android.com/apk/res/android + + + +
+
+ + + + name + + ^$ + + + +
+
+ + + + style + + ^$ + + + +
+
+ + + + .* + + ^$ + + + BY_NAME + +
+
+ + + + .* + + http://schemas.android.com/apk/res/android + + + ANDROID_ATTRIBUTE_ORDER + +
+
+ + + + .* + + .* + + + BY_NAME + +
+
+
+
\ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 7ac24c7..5cd135a 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -1,8 +1,10 @@ +