From 95731ad70bb0bb551f1e86d76b6e4f6d540d23f5 Mon Sep 17 00:00:00 2001 From: shekhar-amit Date: Tue, 25 May 2021 03:10:28 +0530 Subject: [PATCH 1/8] first --- .../Advanced/NavNewsApp/.gitignore | 15 ++ .../Advanced/NavNewsApp/.idea/.gitignore | 3 + .../Advanced/NavNewsApp/.idea/compiler.xml | 6 + .../Advanced/NavNewsApp/.idea/gradle.xml | 19 ++ .../NavNewsApp/.idea/jarRepositories.xml | 30 +++ .../Advanced/NavNewsApp/.idea/misc.xml | 9 + .../NavNewsApp/.idea/runConfigurations.xml | 10 + .../Advanced/NavNewsApp/app/.gitignore | 1 + .../Advanced/NavNewsApp/app/build.gradle | 57 ++++++ .../NavNewsApp/app/proguard-rules.pro | 21 ++ .../navnewsapp/ExampleInstrumentedTest.java | 26 +++ .../app/src/main/AndroidManifest.xml | 26 +++ .../java/com/example/navnewsapp/Adapter.java | 119 ++++++++++++ .../com/example/navnewsapp/ApiClient.java | 26 +++ .../com/example/navnewsapp/ApiInterface.java | 26 +++ .../java/com/example/navnewsapp/Detailed.java | 67 +++++++ .../com/example/navnewsapp/HomeActivity.java | 148 ++++++++++++++ .../com/example/navnewsapp/MainActivity.java | 62 ++++++ .../example/navnewsapp/Model/Articles.java | 94 +++++++++ .../example/navnewsapp/Model/Headlines.java | 45 +++++ .../com/example/navnewsapp/Model/Source.java | 31 +++ .../ui/gallery/GalleryFragment.java | 181 ++++++++++++++++++ .../ui/gallery/GalleryViewModel.java | 19 ++ .../navnewsapp/ui/home/HomeFragment.java | 181 ++++++++++++++++++ .../navnewsapp/ui/home/HomeViewModel.java | 19 ++ .../ui/slideshow/SlideshowFragment.java | 181 ++++++++++++++++++ .../ui/slideshow/SlideshowViewModel.java | 19 ++ .../drawable-v24/ic_launcher_foreground.xml | 30 +++ .../main/res/drawable/black_background.xml | 5 + .../app/src/main/res/drawable/gradient.xml | 5 + .../main/res/drawable/ic_close_black_24dp.xml | 5 + .../app/src/main/res/drawable/ic_dot_24dp.xml | 5 + .../res/drawable/ic_launcher_background.xml | 170 ++++++++++++++++ .../src/main/res/drawable/ic_menu_camera.xml | 12 ++ .../src/main/res/drawable/ic_menu_gallery.xml | 9 + .../main/res/drawable/ic_menu_slideshow.xml | 9 + .../res/drawable/ic_search_black_24dp.xml | 5 + .../src/main/res/drawable/side_nav_bar.xml | 9 + .../app/src/main/res/font/g_bold.otf | Bin 0 -> 54956 bytes .../app/src/main/res/font/g_light.otf | Bin 0 -> 54704 bytes .../src/main/res/layout/about_us_pop_up.xml | 59 ++++++ .../src/main/res/layout/activity_detailed.xml | 134 +++++++++++++ .../app/src/main/res/layout/activity_home.xml | 105 ++++++++++ .../app/src/main/res/layout/activity_main.xml | 26 +++ .../res/layout/activity_splash_screen.xml | 19 ++ .../app/src/main/res/layout/app_bar_main.xml | 33 ++++ .../app/src/main/res/layout/content_main.xml | 20 ++ .../src/main/res/layout/fragment_gallery.xml | 99 ++++++++++ .../app/src/main/res/layout/fragment_home.xml | 99 ++++++++++ .../main/res/layout/fragment_slideshow.xml | 99 ++++++++++ .../app/src/main/res/layout/items.xml | 82 ++++++++ .../src/main/res/layout/nav_header_main.xml | 36 ++++ .../main/res/menu/activity_main_drawer.xml | 20 ++ .../NavNewsApp/app/src/main/res/menu/main.xml | 9 + .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3593 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 5339 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2636 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 3388 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4926 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 7472 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 7909 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 11873 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 10652 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 16570 bytes .../main/res/navigation/mobile_navigation.xml | 25 +++ .../app/src/main/res/values-night/themes.xml | 16 ++ .../app/src/main/res/values/colors.xml | 13 ++ .../app/src/main/res/values/dimens.xml | 8 + .../app/src/main/res/values/strings.xml | 13 ++ .../app/src/main/res/values/themes.xml | 25 +++ .../example/navnewsapp/ExampleUnitTest.java | 17 ++ .../Advanced/NavNewsApp/build.gradle | 25 +++ .../Advanced/NavNewsApp/gradle.properties | 17 ++ .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 54329 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 + .../Amit Shekhar/Advanced/NavNewsApp/gradlew | 172 +++++++++++++++++ .../Advanced/NavNewsApp/gradlew.bat | 84 ++++++++ .../Advanced/NavNewsApp/settings.gradle | 2 + .../Beginner/SplashScreen/.gitignore | 15 ++ .../Beginner/SplashScreen/.idea/.gitignore | 3 + .../Beginner/SplashScreen/.idea/compiler.xml | 6 + .../Beginner/SplashScreen/.idea/gradle.xml | 20 ++ .../SplashScreen/.idea/jarRepositories.xml | 30 +++ .../Beginner/SplashScreen/.idea/misc.xml | 9 + .../SplashScreen/.idea/runConfigurations.xml | 10 + .../Beginner/SplashScreen/app/.gitignore | 1 + .../Beginner/SplashScreen/app/build.gradle | 39 ++++ .../SplashScreen/app/proguard-rules.pro | 21 ++ .../splashscreen/ExampleInstrumentedTest.java | 26 +++ .../app/src/main/AndroidManifest.xml | 21 ++ .../example/splashscreen/MainActivity.java | 112 +++++++++++ .../example/splashscreen/SliderAdapter.java | 75 ++++++++ .../src/main/res/drawable-hdpi/carrots.png | Bin 0 -> 40832 bytes .../app/src/main/res/drawable-hdpi/shovel.png | Bin 0 -> 29889 bytes .../app/src/main/res/drawable-hdpi/water.png | Bin 0 -> 25100 bytes .../src/main/res/drawable-mdpi/carrots.png | Bin 0 -> 40832 bytes .../app/src/main/res/drawable-mdpi/shovel.png | Bin 0 -> 29889 bytes .../app/src/main/res/drawable-mdpi/water.png | Bin 0 -> 25100 bytes .../drawable-v24/ic_launcher_foreground.xml | 30 +++ .../src/main/res/drawable-xhdpi/carrots.png | Bin 0 -> 40832 bytes .../src/main/res/drawable-xhdpi/shovel.png | Bin 0 -> 29889 bytes .../app/src/main/res/drawable-xhdpi/water.png | Bin 0 -> 25100 bytes .../src/main/res/drawable-xxhdpi/carrots.png | Bin 0 -> 40832 bytes .../src/main/res/drawable-xxhdpi/shovel.png | Bin 0 -> 29889 bytes .../src/main/res/drawable-xxhdpi/water.png | Bin 0 -> 25100 bytes .../src/main/res/drawable-xxxhdpi/carrots.png | Bin 0 -> 40832 bytes .../src/main/res/drawable-xxxhdpi/shovel.png | Bin 0 -> 29889 bytes .../src/main/res/drawable-xxxhdpi/water.png | Bin 0 -> 25100 bytes .../res/drawable/ic_launcher_background.xml | 170 ++++++++++++++++ .../app/src/main/res/layout/activity_main.xml | 73 +++++++ .../app/src/main/res/layout/slide_layout.xml | 74 +++++++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3593 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 5339 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2636 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 3388 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4926 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 7472 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 7909 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 11873 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 10652 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 16570 bytes .../app/src/main/res/values-night/themes.xml | 16 ++ .../app/src/main/res/values/colors.xml | 15 ++ .../app/src/main/res/values/strings.xml | 3 + .../app/src/main/res/values/themes.xml | 16 ++ .../example/splashscreen/ExampleUnitTest.java | 17 ++ .../Beginner/SplashScreen/build.gradle | 25 +++ .../Beginner/SplashScreen/gradle.properties | 17 ++ .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 54329 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 + .../Beginner/SplashScreen/gradlew | 172 +++++++++++++++++ .../Beginner/SplashScreen/gradlew.bat | 84 ++++++++ .../Beginner/SplashScreen/settings.gradle | 2 + .../Intermediate/OneStopLogin/.gitignore | 15 ++ .../OneStopLogin/.idea/.gitignore | 3 + .../OneStopLogin/.idea/compiler.xml | 6 + .../OneStopLogin/.idea/gradle.xml | 20 ++ .../OneStopLogin/.idea/jarRepositories.xml | 30 +++ .../Intermediate/OneStopLogin/.idea/misc.xml | 4 + .../OneStopLogin/.idea/runConfigurations.xml | 10 + .../Intermediate/OneStopLogin/app/.gitignore | 1 + .../OneStopLogin/app/build.gradle | 55 ++++++ .../OneStopLogin/app/google-services.json | 47 +++++ .../OneStopLogin/app/proguard-rules.pro | 21 ++ .../onestoplogin/ExampleInstrumentedTest.java | 26 +++ .../app/src/main/AndroidManifest.xml | 22 +++ .../example/onestoplogin/MainActivity.java | 90 +++++++++ .../example/onestoplogin/SecondActivity.java | 83 ++++++++ .../drawable-v24/ic_launcher_foreground.xml | 30 +++ .../res/drawable/ic_launcher_background.xml | 170 ++++++++++++++++ .../app/src/main/res/layout/activity_main.xml | 18 ++ .../src/main/res/layout/activity_second.xml | 56 ++++++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3593 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 5339 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2636 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 3388 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4926 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 7472 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 7909 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 11873 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 10652 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 16570 bytes .../app/src/main/res/values-night/themes.xml | 16 ++ .../app/src/main/res/values/colors.xml | 10 + .../app/src/main/res/values/strings.xml | 9 + .../app/src/main/res/values/themes.xml | 16 ++ .../example/onestoplogin/ExampleUnitTest.java | 17 ++ .../Intermediate/OneStopLogin/build.gradle | 26 +++ .../OneStopLogin/gradle.properties | 17 ++ .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 54329 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 + .../Intermediate/OneStopLogin/gradlew | 172 +++++++++++++++++ .../Intermediate/OneStopLogin/gradlew.bat | 84 ++++++++ .../Intermediate/OneStopLogin/settings.gradle | 2 + Android/Test/Advanced/test | 1 - Android/Test/Beginner/test | 1 - Android/Test/Intermediate/test | 1 - 183 files changed, 5188 insertions(+), 3 deletions(-) create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/.gitignore create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/.idea/.gitignore create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/.idea/compiler.xml create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/.idea/gradle.xml create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/.idea/jarRepositories.xml create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/.idea/misc.xml create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/.idea/runConfigurations.xml create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/.gitignore create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/build.gradle create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/proguard-rules.pro create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/androidTest/java/com/example/navnewsapp/ExampleInstrumentedTest.java create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/AndroidManifest.xml create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/Adapter.java create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ApiClient.java create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ApiInterface.java create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/Detailed.java create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/HomeActivity.java create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/MainActivity.java create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/Model/Articles.java create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/Model/Headlines.java create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/Model/Source.java create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ui/gallery/GalleryFragment.java create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ui/gallery/GalleryViewModel.java create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ui/home/HomeFragment.java create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ui/home/HomeViewModel.java create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ui/slideshow/SlideshowFragment.java create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ui/slideshow/SlideshowViewModel.java create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable-v24/ic_launcher_foreground.xml create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/black_background.xml create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/gradient.xml create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/ic_close_black_24dp.xml create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/ic_dot_24dp.xml create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/ic_launcher_background.xml create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/ic_menu_camera.xml create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/ic_menu_gallery.xml create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/ic_menu_slideshow.xml create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/ic_search_black_24dp.xml create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/side_nav_bar.xml create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/font/g_bold.otf create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/font/g_light.otf create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/about_us_pop_up.xml create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/activity_detailed.xml create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/activity_home.xml create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/activity_main.xml create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/activity_splash_screen.xml create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/app_bar_main.xml create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/content_main.xml create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/fragment_gallery.xml create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/fragment_home.xml create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/fragment_slideshow.xml create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/items.xml create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/nav_header_main.xml create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/menu/activity_main_drawer.xml create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/menu/main.xml create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/navigation/mobile_navigation.xml create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/values-night/themes.xml create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/values/colors.xml create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/values/dimens.xml create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/values/strings.xml create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/values/themes.xml create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/app/src/test/java/com/example/navnewsapp/ExampleUnitTest.java create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/build.gradle create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/gradle.properties create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/gradle/wrapper/gradle-wrapper.jar create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/gradle/wrapper/gradle-wrapper.properties create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/gradlew create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/gradlew.bat create mode 100644 Android/Amit Shekhar/Advanced/NavNewsApp/settings.gradle create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/.gitignore create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/.idea/.gitignore create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/.idea/compiler.xml create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/.idea/gradle.xml create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/.idea/jarRepositories.xml create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/.idea/misc.xml create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/.idea/runConfigurations.xml create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/app/.gitignore create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/app/build.gradle create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/app/proguard-rules.pro create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/app/src/androidTest/java/com/example/splashscreen/ExampleInstrumentedTest.java create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/AndroidManifest.xml create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/java/com/example/splashscreen/MainActivity.java create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/java/com/example/splashscreen/SliderAdapter.java create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-hdpi/carrots.png create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-hdpi/shovel.png create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-hdpi/water.png create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-mdpi/carrots.png create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-mdpi/shovel.png create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-mdpi/water.png create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-v24/ic_launcher_foreground.xml create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-xhdpi/carrots.png create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-xhdpi/shovel.png create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-xhdpi/water.png create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-xxhdpi/carrots.png create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-xxhdpi/shovel.png create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-xxhdpi/water.png create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-xxxhdpi/carrots.png create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-xxxhdpi/shovel.png create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable-xxxhdpi/water.png create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/drawable/ic_launcher_background.xml create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/layout/activity_main.xml create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/layout/slide_layout.xml create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/values-night/themes.xml create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/values/colors.xml create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/values/strings.xml create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/app/src/main/res/values/themes.xml create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/app/src/test/java/com/example/splashscreen/ExampleUnitTest.java create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/build.gradle create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/gradle.properties create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/gradle/wrapper/gradle-wrapper.jar create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/gradle/wrapper/gradle-wrapper.properties create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/gradlew create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/gradlew.bat create mode 100644 Android/Amit Shekhar/Beginner/SplashScreen/settings.gradle create mode 100644 Android/Amit Shekhar/Intermediate/OneStopLogin/.gitignore create mode 100644 Android/Amit Shekhar/Intermediate/OneStopLogin/.idea/.gitignore create mode 100644 Android/Amit Shekhar/Intermediate/OneStopLogin/.idea/compiler.xml create mode 100644 Android/Amit Shekhar/Intermediate/OneStopLogin/.idea/gradle.xml create mode 100644 Android/Amit Shekhar/Intermediate/OneStopLogin/.idea/jarRepositories.xml create mode 100644 Android/Amit Shekhar/Intermediate/OneStopLogin/.idea/misc.xml create mode 100644 Android/Amit Shekhar/Intermediate/OneStopLogin/.idea/runConfigurations.xml create mode 100644 Android/Amit Shekhar/Intermediate/OneStopLogin/app/.gitignore create mode 100644 Android/Amit Shekhar/Intermediate/OneStopLogin/app/build.gradle create mode 100644 Android/Amit Shekhar/Intermediate/OneStopLogin/app/google-services.json create mode 100644 Android/Amit Shekhar/Intermediate/OneStopLogin/app/proguard-rules.pro create mode 100644 Android/Amit Shekhar/Intermediate/OneStopLogin/app/src/androidTest/java/com/example/onestoplogin/ExampleInstrumentedTest.java create mode 100644 Android/Amit Shekhar/Intermediate/OneStopLogin/app/src/main/AndroidManifest.xml create mode 100644 Android/Amit Shekhar/Intermediate/OneStopLogin/app/src/main/java/com/example/onestoplogin/MainActivity.java create mode 100644 Android/Amit Shekhar/Intermediate/OneStopLogin/app/src/main/java/com/example/onestoplogin/SecondActivity.java create mode 100644 Android/Amit Shekhar/Intermediate/OneStopLogin/app/src/main/res/drawable-v24/ic_launcher_foreground.xml create mode 100644 Android/Amit Shekhar/Intermediate/OneStopLogin/app/src/main/res/drawable/ic_launcher_background.xml create mode 100644 Android/Amit Shekhar/Intermediate/OneStopLogin/app/src/main/res/layout/activity_main.xml create mode 100644 Android/Amit Shekhar/Intermediate/OneStopLogin/app/src/main/res/layout/activity_second.xml create mode 100644 Android/Amit Shekhar/Intermediate/OneStopLogin/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 Android/Amit Shekhar/Intermediate/OneStopLogin/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 Android/Amit Shekhar/Intermediate/OneStopLogin/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 Android/Amit Shekhar/Intermediate/OneStopLogin/app/src/main/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 Android/Amit Shekhar/Intermediate/OneStopLogin/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 Android/Amit Shekhar/Intermediate/OneStopLogin/app/src/main/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 Android/Amit Shekhar/Intermediate/OneStopLogin/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 Android/Amit Shekhar/Intermediate/OneStopLogin/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 Android/Amit Shekhar/Intermediate/OneStopLogin/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 Android/Amit Shekhar/Intermediate/OneStopLogin/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 Android/Amit Shekhar/Intermediate/OneStopLogin/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 Android/Amit Shekhar/Intermediate/OneStopLogin/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 Android/Amit Shekhar/Intermediate/OneStopLogin/app/src/main/res/values-night/themes.xml create mode 100644 Android/Amit Shekhar/Intermediate/OneStopLogin/app/src/main/res/values/colors.xml create mode 100644 Android/Amit Shekhar/Intermediate/OneStopLogin/app/src/main/res/values/strings.xml create mode 100644 Android/Amit Shekhar/Intermediate/OneStopLogin/app/src/main/res/values/themes.xml create mode 100644 Android/Amit Shekhar/Intermediate/OneStopLogin/app/src/test/java/com/example/onestoplogin/ExampleUnitTest.java create mode 100644 Android/Amit Shekhar/Intermediate/OneStopLogin/build.gradle create mode 100644 Android/Amit Shekhar/Intermediate/OneStopLogin/gradle.properties create mode 100644 Android/Amit Shekhar/Intermediate/OneStopLogin/gradle/wrapper/gradle-wrapper.jar create mode 100644 Android/Amit Shekhar/Intermediate/OneStopLogin/gradle/wrapper/gradle-wrapper.properties create mode 100644 Android/Amit Shekhar/Intermediate/OneStopLogin/gradlew create mode 100644 Android/Amit Shekhar/Intermediate/OneStopLogin/gradlew.bat create mode 100644 Android/Amit Shekhar/Intermediate/OneStopLogin/settings.gradle delete mode 100644 Android/Test/Advanced/test delete mode 100644 Android/Test/Beginner/test delete mode 100644 Android/Test/Intermediate/test diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/.gitignore b/Android/Amit Shekhar/Advanced/NavNewsApp/.gitignore new file mode 100644 index 00000000..aa724b77 --- /dev/null +++ b/Android/Amit Shekhar/Advanced/NavNewsApp/.gitignore @@ -0,0 +1,15 @@ +*.iml +.gradle +/local.properties +/.idea/caches +/.idea/libraries +/.idea/modules.xml +/.idea/workspace.xml +/.idea/navEditor.xml +/.idea/assetWizardSettings.xml +.DS_Store +/build +/captures +.externalNativeBuild +.cxx +local.properties diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/.idea/.gitignore b/Android/Amit Shekhar/Advanced/NavNewsApp/.idea/.gitignore new file mode 100644 index 00000000..26d33521 --- /dev/null +++ b/Android/Amit Shekhar/Advanced/NavNewsApp/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/.idea/compiler.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/.idea/compiler.xml new file mode 100644 index 00000000..fb7f4a8a --- /dev/null +++ b/Android/Amit Shekhar/Advanced/NavNewsApp/.idea/compiler.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/.idea/gradle.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/.idea/gradle.xml new file mode 100644 index 00000000..440480e5 --- /dev/null +++ b/Android/Amit Shekhar/Advanced/NavNewsApp/.idea/gradle.xml @@ -0,0 +1,19 @@ + + + + + + \ No newline at end of file diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/.idea/jarRepositories.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/.idea/jarRepositories.xml new file mode 100644 index 00000000..0380d8d3 --- /dev/null +++ b/Android/Amit Shekhar/Advanced/NavNewsApp/.idea/jarRepositories.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/.idea/misc.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/.idea/misc.xml new file mode 100644 index 00000000..6199cc2a --- /dev/null +++ b/Android/Amit Shekhar/Advanced/NavNewsApp/.idea/misc.xml @@ -0,0 +1,9 @@ + + + + + + + + \ No newline at end of file diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/.idea/runConfigurations.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/.idea/runConfigurations.xml new file mode 100644 index 00000000..797acea5 --- /dev/null +++ b/Android/Amit Shekhar/Advanced/NavNewsApp/.idea/runConfigurations.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/.gitignore b/Android/Amit Shekhar/Advanced/NavNewsApp/app/.gitignore new file mode 100644 index 00000000..42afabfd --- /dev/null +++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/build.gradle b/Android/Amit Shekhar/Advanced/NavNewsApp/app/build.gradle new file mode 100644 index 00000000..28bfad8d --- /dev/null +++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/build.gradle @@ -0,0 +1,57 @@ +plugins { + id 'com.android.application' +} + +android { + compileSdkVersion 30 + buildToolsVersion "30.0.3" + + defaultConfig { + applicationId "com.example.navnewsapp" + minSdkVersion 21 + targetSdkVersion 30 + versionCode 1 + versionName "1.0" + + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + } + } + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + buildFeatures { + viewBinding true + } +} + +dependencies { + + //Retrofit + implementation 'com.squareup.retrofit2:retrofit:2.4.0' + implementation 'com.squareup.retrofit2:converter-gson:2.2.0' + + //Date/Time + implementation 'org.ocpsoft.prettytime:prettytime:4.0.1.Final' + + //Picaso for image url + implementation 'com.squareup.picasso:picasso:2.5.0' + + implementation 'androidx.appcompat:appcompat:1.2.0' + implementation 'com.google.android.material:material:1.3.0' + implementation 'androidx.constraintlayout:constraintlayout:2.0.4' + implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.3.1' + implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1' + implementation 'androidx.navigation:navigation-fragment:2.3.0' + implementation 'androidx.navigation:navigation-ui:2.3.0' + implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0' + testImplementation 'junit:junit:4.+' + androidTestImplementation 'androidx.test.ext:junit:1.1.2' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' +} \ No newline at end of file diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/proguard-rules.pro b/Android/Amit Shekhar/Advanced/NavNewsApp/app/proguard-rules.pro new file mode 100644 index 00000000..481bb434 --- /dev/null +++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/proguard-rules.pro @@ -0,0 +1,21 @@ +# Add project specific ProGuard rules here. +# You can control the set of applied configuration files using the +# proguardFiles setting in build.gradle. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} + +# Uncomment this to preserve the line number information for +# debugging stack traces. +#-keepattributes SourceFile,LineNumberTable + +# If you keep the line number information, uncomment this to +# hide the original source file name. +#-renamesourcefileattribute SourceFile \ No newline at end of file diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/androidTest/java/com/example/navnewsapp/ExampleInstrumentedTest.java b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/androidTest/java/com/example/navnewsapp/ExampleInstrumentedTest.java new file mode 100644 index 00000000..affca9d6 --- /dev/null +++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/androidTest/java/com/example/navnewsapp/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package com.example.navnewsapp; + +import android.content.Context; + +import androidx.test.platform.app.InstrumentationRegistry; +import androidx.test.ext.junit.runners.AndroidJUnit4; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import static org.junit.Assert.*; + +/** + * Instrumented test, which will execute on an Android device. + * + * @see Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext(); + assertEquals("com.example.navnewsapp", appContext.getPackageName()); + } +} \ No newline at end of file diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/AndroidManifest.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/AndroidManifest.xml new file mode 100644 index 00000000..bd4c9636 --- /dev/null +++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/AndroidManifest.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/Adapter.java b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/Adapter.java new file mode 100644 index 00000000..9816a0f5 --- /dev/null +++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/Adapter.java @@ -0,0 +1,119 @@ +package com.example.navnewsapp; + +import android.content.Context; +import android.content.Intent; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.cardview.widget.CardView; +import androidx.recyclerview.widget.RecyclerView; + +import com.example.navnewsapp.Model.Articles; +import com.example.navnewsapp.Model.Source; +import com.squareup.picasso.Picasso; + +import org.ocpsoft.prettytime.PrettyTime; +import org.ocpsoft.prettytime.format.SimpleTimeFormat; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.Locale; + +public class Adapter extends RecyclerView.Adapter { + + Context context; + List articles; + + + public Adapter(Context context, List articles) { + this.context = context; + this.articles = articles; + } + + @NonNull + @Override + public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.items,parent,false); + return new ViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull final ViewHolder holder, int position) { + + + final Articles a = articles.get(position); + + String imageUrl = a.getUrlToImage(); + String url = a.getUrl(); + + Picasso.with(context).load(imageUrl).into(holder.imageView); + + holder.tvTitle.setText(a.getTitle()); + holder.tvSource.setText(a.getSource().getName()); + holder.tvDate.setText("\u2022"+dateTime(a.getPublishedAt())); + + holder.cardView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + Intent intent = new Intent(context, com.example.navnewsapp.Detailed.class); + intent.putExtra("title",a.getTitle()); + intent.putExtra("source",a.getSource().getName()); + intent.putExtra("time",dateTime(a.getPublishedAt())); + intent.putExtra("desc",a.getDescription()); + intent.putExtra("imageUrl",a.getUrlToImage()); + intent.putExtra("url",a.getUrl()); + context.startActivity(intent); + } + }); + + } + + @Override + public int getItemCount() { + return articles.size(); + } + + public class ViewHolder extends RecyclerView.ViewHolder { + TextView tvTitle,tvSource,tvDate; + ImageView imageView; + CardView cardView; + + public ViewHolder(@NonNull View itemView) { + super(itemView); + + tvTitle = itemView.findViewById(R.id.tvTitle); + tvSource = itemView.findViewById(R.id.tvSource); + tvDate = itemView.findViewById(R.id.tvDate); + imageView = itemView.findViewById(R.id.image); + cardView = itemView.findViewById(R.id.cardView); + + } + } + + + public String dateTime(String t){ + PrettyTime prettyTime = new PrettyTime(new Locale(getCountry())); + String time = null; + try { + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:",Locale.ENGLISH); + Date date = simpleDateFormat.parse(t); + time = prettyTime.format(date); + }catch (ParseException e) { + e.printStackTrace(); + } + return time; + + } + + public String getCountry(){ + Locale locale = Locale.getDefault(); + String country = locale.getCountry(); + return country.toLowerCase(); + } +} \ No newline at end of file diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ApiClient.java b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ApiClient.java new file mode 100644 index 00000000..d03e43b6 --- /dev/null +++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ApiClient.java @@ -0,0 +1,26 @@ +package com.example.navnewsapp; + +import retrofit2.Retrofit; +import retrofit2.converter.gson.GsonConverterFactory; + +public class ApiClient { + private static final String BASE_URL = "https://newsapi.org/v2/"; + private static ApiClient apiClient; + private static Retrofit retrofit; + + private ApiClient(){ + retrofit = new Retrofit.Builder().baseUrl(BASE_URL).addConverterFactory(GsonConverterFactory.create()).build(); + } + + public static synchronized ApiClient getInstance(){ + if (apiClient == null){ + apiClient = new ApiClient(); + } + return apiClient; + } + + + public ApiInterface getApi(){ + return retrofit.create(ApiInterface.class); + } +} \ No newline at end of file diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ApiInterface.java b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ApiInterface.java new file mode 100644 index 00000000..236a01bb --- /dev/null +++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ApiInterface.java @@ -0,0 +1,26 @@ +package com.example.navnewsapp; + +import com.example.navnewsapp.Model.Headlines; + +import retrofit2.Call; +import retrofit2.http.GET; +import retrofit2.http.Query; + +public interface ApiInterface { + + + @GET("top-headlines") + Call getHeadlines( + @Query("country") String country, + @Query("apiKey") String apiKey + ); + + @GET("everything") + Call getSpecificData( + @Query("q") String query, + @Query("apiKey") String apiKey + ); + + + +} \ No newline at end of file diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/Detailed.java b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/Detailed.java new file mode 100644 index 00000000..1efab5d5 --- /dev/null +++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/Detailed.java @@ -0,0 +1,67 @@ +package com.example.navnewsapp; + + +import androidx.appcompat.app.AppCompatActivity; + +import android.content.Intent; +import android.os.Bundle; +import android.view.View; +import android.webkit.WebView; +import android.webkit.WebViewClient; +import android.widget.ImageView; +import android.widget.ProgressBar; +import android.widget.TextView; + +import com.squareup.picasso.Picasso; + +public class Detailed extends AppCompatActivity { + + TextView tvTitle,tvSource,tvTime,tvDesc; + ImageView imageView; + WebView webView; + ProgressBar loader; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_detailed); + + tvTitle = findViewById(R.id.tvTitle); + tvSource = findViewById(R.id.tvSource); + tvTime = findViewById(R.id.tvDate); + tvDesc = findViewById(R.id.tvDesc); + + imageView = findViewById(R.id.imageView); + + webView = findViewById(R.id.webView); + + loader = findViewById(R.id.webViewLoader); + loader.setVisibility(View.VISIBLE); + + Intent intent = getIntent(); + String title = intent.getStringExtra("title"); + String source = intent.getStringExtra("source"); + String time = intent.getStringExtra("time"); + String desc = intent.getStringExtra("desc"); + String imageUrl = intent.getStringExtra("imageUrl"); + String url = intent.getStringExtra("url"); + + + tvTitle.setText(title); + tvSource.setText(source); + tvTime.setText(time); + tvDesc.setText(desc); + + Picasso.with(Detailed.this).load(imageUrl).into(imageView); + + webView.getSettings().setDomStorageEnabled(true); + webView.getSettings().setJavaScriptEnabled(true); + webView.getSettings().setLoadsImagesAutomatically(true); + webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); + webView.setWebViewClient(new WebViewClient()); + webView.loadUrl(url); + if (webView.isShown()){ + loader.setVisibility(View.INVISIBLE); + } + } +} \ No newline at end of file diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/HomeActivity.java b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/HomeActivity.java new file mode 100644 index 00000000..455189ce --- /dev/null +++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/HomeActivity.java @@ -0,0 +1,148 @@ +package com.example.navnewsapp; + +import androidx.appcompat.app.AppCompatActivity; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; + +import android.app.Dialog; +import android.os.Bundle; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.Toast; + +import com.example.navnewsapp.Model.Articles; +import com.example.navnewsapp.Model.Headlines; + +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; + +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; + +public class HomeActivity extends AppCompatActivity { + + RecyclerView recyclerView; + SwipeRefreshLayout swipeRefreshLayout; + EditText etQuery; + Button btnSearch,btnAboutUs; + Dialog dialog; + final String API_KEY = "98a295c4c04749a1aa784bf6c4256ed4"; + Adapter adapter; + List articles = new ArrayList<>(); + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + + swipeRefreshLayout = findViewById(R.id.swipeRefresh); + recyclerView = findViewById(R.id.recyclerView); + + etQuery = findViewById(R.id.etQuery); + btnSearch = findViewById(R.id.btnSearch); + btnAboutUs = findViewById(R.id.aboutUs); + dialog = new Dialog(HomeActivity.this); + + recyclerView.setLayoutManager(new LinearLayoutManager(this)); + final String country = getCountry(); + + + swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { + @Override + public void onRefresh() { + retrieveJson("",country,API_KEY); + } + }); + retrieveJson("",country,API_KEY); + + btnSearch.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!etQuery.getText().toString().equals("")){ + swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { + @Override + public void onRefresh() { + retrieveJson(etQuery.getText().toString(),country,API_KEY); + } + }); + retrieveJson(etQuery.getText().toString(),country,API_KEY); + }else{ + swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { + @Override + public void onRefresh() { + retrieveJson("",country,API_KEY); + } + }); + retrieveJson("",country,API_KEY); + } + } + }); + + btnAboutUs.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + showDialog(); + } + }); + + + + + + + } + + public void retrieveJson(String query ,String country, String apiKey){ + + + swipeRefreshLayout.setRefreshing(true); + Call call; + if (!etQuery.getText().toString().equals("")){ + call= ApiClient.getInstance().getApi().getSpecificData(query,apiKey); + }else{ + call= ApiClient.getInstance().getApi().getHeadlines(country,apiKey); + } + + call.enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + if (response.isSuccessful() && response.body().getArticles() != null){ + swipeRefreshLayout.setRefreshing(false); + articles.clear(); + articles = response.body().getArticles(); + adapter = new Adapter(HomeActivity.this,articles); + recyclerView.setAdapter(adapter); + } + } + + @Override + public void onFailure(Call call, Throwable t) { + swipeRefreshLayout.setRefreshing(false); + Toast.makeText(HomeActivity.this, t.getLocalizedMessage(), Toast.LENGTH_SHORT).show(); + } + }); + } + + public String getCountry(){ + Locale locale = Locale.getDefault(); + String country = locale.getCountry(); + return country.toLowerCase(); + } + + public void showDialog(){ + Button btnClose; + dialog.setContentView(R.layout.about_us_pop_up); + dialog.show(); + btnClose = dialog.findViewById(R.id.close); + + btnClose.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + dialog.dismiss(); + } + }); + } +} \ No newline at end of file diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/MainActivity.java b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/MainActivity.java new file mode 100644 index 00000000..e642d2cc --- /dev/null +++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/MainActivity.java @@ -0,0 +1,62 @@ +package com.example.navnewsapp; + +import android.os.Bundle; +import android.view.View; +import android.view.Menu; +import com.google.android.material.snackbar.Snackbar; +import com.google.android.material.navigation.NavigationView; +import androidx.navigation.NavController; +import androidx.navigation.Navigation; +import androidx.navigation.ui.AppBarConfiguration; +import androidx.navigation.ui.NavigationUI; +import androidx.drawerlayout.widget.DrawerLayout; +import androidx.appcompat.app.AppCompatActivity; +import com.example.navnewsapp.databinding.ActivityMainBinding; + +public class MainActivity extends AppCompatActivity { + + private AppBarConfiguration mAppBarConfiguration; +private ActivityMainBinding binding; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + binding = ActivityMainBinding.inflate(getLayoutInflater()); + setContentView(binding.getRoot()); + + setSupportActionBar(binding.appBarMain.toolbar); + binding.appBarMain.fab.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) + .setAction("Action", null).show(); + } + }); + DrawerLayout drawer = binding.drawerLayout; + NavigationView navigationView = binding.navView; + // Passing each menu ID as a set of Ids because each + // menu should be considered as top level destinations. + mAppBarConfiguration = new AppBarConfiguration.Builder( + R.id.nav_home, R.id.nav_gallery, R.id.nav_slideshow) + .setDrawerLayout(drawer) + .build(); + NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_content_main); + NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration); + NavigationUI.setupWithNavController(navigationView, navController); + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + // Inflate the menu; this adds items to the action bar if it is present. + getMenuInflater().inflate(R.menu.main, menu); + return true; + } + + @Override + public boolean onSupportNavigateUp() { + NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_content_main); + return NavigationUI.navigateUp(navController, mAppBarConfiguration) + || super.onSupportNavigateUp(); + } +} \ No newline at end of file diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/Model/Articles.java b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/Model/Articles.java new file mode 100644 index 00000000..5b8c08be --- /dev/null +++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/Model/Articles.java @@ -0,0 +1,94 @@ +package com.example.navnewsapp.Model; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; + +public class Articles { + + + @SerializedName("source") + @Expose + private Source source; + + @SerializedName("author") + @Expose + private String author; + + @SerializedName("title") + @Expose + private String title; + + @SerializedName("description") + @Expose + private String description; + + @SerializedName("url") + @Expose + private String url; + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + @SerializedName("urlToImage") + @Expose + private String urlToImage; + + @SerializedName("publishedAt") + @Expose + private String publishedAt; + + + + public Source getSource() { + return source; + } + + public void setSource(Source source) { + this.source = source; + } + + public String getAuthor() { + return author; + } + + public void setAuthor(String author) { + this.author = author; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getUrlToImage() { + return urlToImage; + } + + public void setUrlToImage(String urlToImage) { + this.urlToImage = urlToImage; + } + + public String getPublishedAt() { + return publishedAt; + } + + public void setPublishedAt(String publishedAt) { + this.publishedAt = publishedAt; + } +} \ No newline at end of file diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/Model/Headlines.java b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/Model/Headlines.java new file mode 100644 index 00000000..5733923a --- /dev/null +++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/Model/Headlines.java @@ -0,0 +1,45 @@ +package com.example.navnewsapp.Model; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; + +import java.util.List; + +public class Headlines { + + @SerializedName("status") + @Expose + private String status; + + @SerializedName("totalResults") + @Expose + private String totalResults; + + @SerializedName("articles") + @Expose + private List articles; + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getTotalResults() { + return totalResults; + } + + public void setTotalResults(String totalResults) { + this.totalResults = totalResults; + } + + public List getArticles() { + return articles; + } + + public void setArticles(List articles) { + this.articles = articles; + } +} \ No newline at end of file diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/Model/Source.java b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/Model/Source.java new file mode 100644 index 00000000..05ed2b1d --- /dev/null +++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/Model/Source.java @@ -0,0 +1,31 @@ +package com.example.navnewsapp.Model; + +import com.google.gson.annotations.Expose; +import com.google.gson.annotations.SerializedName; + +public class Source { + + @SerializedName("id") + @Expose + private String id; + + @SerializedName("name") + @Expose + private String name; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} \ No newline at end of file diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ui/gallery/GalleryFragment.java b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ui/gallery/GalleryFragment.java new file mode 100644 index 00000000..be11859e --- /dev/null +++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ui/gallery/GalleryFragment.java @@ -0,0 +1,181 @@ +package com.example.navnewsapp.ui.gallery; + +import android.app.Dialog; +import android.content.Intent; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; +import android.widget.EditText; +import android.widget.TextView; +import android.widget.Toast; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; + +import com.example.navnewsapp.Adapter; +import com.example.navnewsapp.ApiClient; +import com.example.navnewsapp.HomeActivity; +import com.example.navnewsapp.Model.Articles; +import com.example.navnewsapp.Model.Headlines; +import com.example.navnewsapp.R; +import com.example.navnewsapp.databinding.FragmentHomeBinding; + +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; + +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; + +public class GalleryFragment extends Fragment { + + RecyclerView recyclerView; + SwipeRefreshLayout swipeRefreshLayout; + EditText etQuery; + Button btnSearch,btnAboutUs; + Dialog dialog; + final String API_KEY = "98a295c4c04749a1aa784bf6c4256ed4"; + Adapter adapter; + List articles = new ArrayList<>(); + private GalleryViewModel homeViewModel; + private FragmentHomeBinding binding; + + public View onCreateView(@NonNull LayoutInflater inflater, + ViewGroup container, Bundle savedInstanceState) { + homeViewModel = + new ViewModelProvider(this).get(GalleryViewModel.class); +// +// binding = FragmentHomeBinding.inflate(inflater, container, false); +// View root = binding.getRoot(); + View root = inflater.inflate(R.layout.fragment_home,container,false); + + + swipeRefreshLayout = root.findViewById(R.id.swipeRefresh); + recyclerView = root.findViewById(R.id.recyclerView); + + etQuery = root.findViewById(R.id.etQuery); + btnSearch = root.findViewById(R.id.btnSearch); + btnAboutUs = root.findViewById(R.id.aboutUs); + dialog = new Dialog(getContext()); + + recyclerView.setLayoutManager(new LinearLayoutManager(getContext())); + final String country = getCountry(); + + swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { + @Override + public void onRefresh() { + retrieveJson("",country,API_KEY); + } + }); + retrieveJson("",country,API_KEY); + + btnSearch.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!etQuery.getText().toString().equals("")){ + swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { + @Override + public void onRefresh() { + retrieveJson(etQuery.getText().toString(),country,API_KEY); + } + }); + retrieveJson(etQuery.getText().toString(),country,API_KEY); + }else{ + swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { + @Override + public void onRefresh() { + retrieveJson("",country,API_KEY); + } + }); + retrieveJson("",country,API_KEY); + } + } + }); + + btnAboutUs.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + showDialog(); + } + }); + +// +// final TextView textView = binding.textHome; +// homeViewModel.getText().observe(getViewLifecycleOwner(), new Observer() { +// @Override +// public void onChanged(@Nullable String s) { +// textView.setText(s); +// } +// }); +// Intent in = new Intent(getActivity(), HomeActivity.class); +// startActivity(in); + return root; + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + binding = null; + } + + public void retrieveJson(String query ,String country, String apiKey){ + + + swipeRefreshLayout.setRefreshing(true); + Call call; + if (!etQuery.getText().toString().equals("")){ + call= ApiClient.getInstance().getApi().getSpecificData(query,apiKey); + }else{ + call= ApiClient.getInstance().getApi().getSpecificData("business",apiKey); + } + + call.enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + if (response.isSuccessful() && response.body().getArticles() != null){ + swipeRefreshLayout.setRefreshing(false); + articles.clear(); + articles = response.body().getArticles(); + adapter = new Adapter(getContext(),articles); + recyclerView.setAdapter(adapter); + } + } + + @Override + public void onFailure(Call call, Throwable t) { + swipeRefreshLayout.setRefreshing(false); + Toast.makeText(getContext(), t.getLocalizedMessage(), Toast.LENGTH_SHORT).show(); + } + }); + } + + public String getCountry(){ + Locale locale = Locale.getDefault(); + String country = locale.getCountry(); + return country.toLowerCase(); + } + + public void showDialog(){ + Button btnClose; + dialog.setContentView(R.layout.about_us_pop_up); + dialog.show(); + btnClose = dialog.findViewById(R.id.close); + + btnClose.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + dialog.dismiss(); + } + }); + } + +} \ No newline at end of file diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ui/gallery/GalleryViewModel.java b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ui/gallery/GalleryViewModel.java new file mode 100644 index 00000000..8aef264b --- /dev/null +++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ui/gallery/GalleryViewModel.java @@ -0,0 +1,19 @@ +package com.example.navnewsapp.ui.gallery; + +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; +import androidx.lifecycle.ViewModel; + +public class GalleryViewModel extends ViewModel { + + private MutableLiveData mText; + + public GalleryViewModel() { + mText = new MutableLiveData<>(); + mText.setValue("This is gallery fragment"); + } + + public LiveData getText() { + return mText; + } +} \ No newline at end of file diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ui/home/HomeFragment.java b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ui/home/HomeFragment.java new file mode 100644 index 00000000..49e99145 --- /dev/null +++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ui/home/HomeFragment.java @@ -0,0 +1,181 @@ +package com.example.navnewsapp.ui.home; + +import android.app.Dialog; +import android.content.Intent; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; +import android.widget.EditText; +import android.widget.TextView; +import android.widget.Toast; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; + +import com.example.navnewsapp.Adapter; +import com.example.navnewsapp.ApiClient; +import com.example.navnewsapp.HomeActivity; +import com.example.navnewsapp.Model.Articles; +import com.example.navnewsapp.Model.Headlines; +import com.example.navnewsapp.R; +import com.example.navnewsapp.databinding.FragmentHomeBinding; + +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; + +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; + +public class HomeFragment extends Fragment { + + RecyclerView recyclerView; + SwipeRefreshLayout swipeRefreshLayout; + EditText etQuery; + Button btnSearch,btnAboutUs; + Dialog dialog; + final String API_KEY = "98a295c4c04749a1aa784bf6c4256ed4"; + Adapter adapter; + List articles = new ArrayList<>(); + private HomeViewModel homeViewModel; + private FragmentHomeBinding binding; + + public View onCreateView(@NonNull LayoutInflater inflater, + ViewGroup container, Bundle savedInstanceState) { + homeViewModel = + new ViewModelProvider(this).get(HomeViewModel.class); +// +// binding = FragmentHomeBinding.inflate(inflater, container, false); +// View root = binding.getRoot(); + View root = inflater.inflate(R.layout.fragment_home,container,false); + + + swipeRefreshLayout = root.findViewById(R.id.swipeRefresh); + recyclerView = root.findViewById(R.id.recyclerView); + + etQuery = root.findViewById(R.id.etQuery); + btnSearch = root.findViewById(R.id.btnSearch); + btnAboutUs = root.findViewById(R.id.aboutUs); + dialog = new Dialog(getContext()); + + recyclerView.setLayoutManager(new LinearLayoutManager(getContext())); + final String country = getCountry(); + + swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { + @Override + public void onRefresh() { + retrieveJson("",country,API_KEY); + } + }); + retrieveJson("",country,API_KEY); + + btnSearch.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!etQuery.getText().toString().equals("")){ + swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { + @Override + public void onRefresh() { + retrieveJson(etQuery.getText().toString(),country,API_KEY); + } + }); + retrieveJson(etQuery.getText().toString(),country,API_KEY); + }else{ + swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { + @Override + public void onRefresh() { + retrieveJson("",country,API_KEY); + } + }); + retrieveJson("",country,API_KEY); + } + } + }); + + btnAboutUs.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + showDialog(); + } + }); + +// +// final TextView textView = binding.textHome; +// homeViewModel.getText().observe(getViewLifecycleOwner(), new Observer() { +// @Override +// public void onChanged(@Nullable String s) { +// textView.setText(s); +// } +// }); +// Intent in = new Intent(getActivity(), HomeActivity.class); +// startActivity(in); + return root; + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + binding = null; + } + + public void retrieveJson(String query ,String country, String apiKey){ + + + swipeRefreshLayout.setRefreshing(true); + Call call; + if (!etQuery.getText().toString().equals("")){ + call= ApiClient.getInstance().getApi().getSpecificData(query,apiKey); + }else{ + call= ApiClient.getInstance().getApi().getHeadlines(country,apiKey); + } + + call.enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + if (response.isSuccessful() && response.body().getArticles() != null){ + swipeRefreshLayout.setRefreshing(false); + articles.clear(); + articles = response.body().getArticles(); + adapter = new Adapter(getContext(),articles); + recyclerView.setAdapter(adapter); + } + } + + @Override + public void onFailure(Call call, Throwable t) { + swipeRefreshLayout.setRefreshing(false); + Toast.makeText(getContext(), t.getLocalizedMessage(), Toast.LENGTH_SHORT).show(); + } + }); + } + + public String getCountry(){ + Locale locale = Locale.getDefault(); + String country = locale.getCountry(); + return country.toLowerCase(); + } + + public void showDialog(){ + Button btnClose; + dialog.setContentView(R.layout.about_us_pop_up); + dialog.show(); + btnClose = dialog.findViewById(R.id.close); + + btnClose.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + dialog.dismiss(); + } + }); + } + +} \ No newline at end of file diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ui/home/HomeViewModel.java b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ui/home/HomeViewModel.java new file mode 100644 index 00000000..f8176bda --- /dev/null +++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ui/home/HomeViewModel.java @@ -0,0 +1,19 @@ +package com.example.navnewsapp.ui.home; + +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; +import androidx.lifecycle.ViewModel; + +public class HomeViewModel extends ViewModel { + + private MutableLiveData mText; + + public HomeViewModel() { + mText = new MutableLiveData<>(); + mText.setValue("This is home fragment"); + } + + public LiveData getText() { + return mText; + } +} \ No newline at end of file diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ui/slideshow/SlideshowFragment.java b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ui/slideshow/SlideshowFragment.java new file mode 100644 index 00000000..76a47daa --- /dev/null +++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ui/slideshow/SlideshowFragment.java @@ -0,0 +1,181 @@ +package com.example.navnewsapp.ui.slideshow; + +import android.app.Dialog; +import android.content.Intent; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; +import android.widget.EditText; +import android.widget.TextView; +import android.widget.Toast; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; + +import com.example.navnewsapp.Adapter; +import com.example.navnewsapp.ApiClient; +import com.example.navnewsapp.HomeActivity; +import com.example.navnewsapp.Model.Articles; +import com.example.navnewsapp.Model.Headlines; +import com.example.navnewsapp.R; +import com.example.navnewsapp.databinding.FragmentHomeBinding; + +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; + +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; + +public class SlideshowFragment extends Fragment { + + RecyclerView recyclerView; + SwipeRefreshLayout swipeRefreshLayout; + EditText etQuery; + Button btnSearch,btnAboutUs; + Dialog dialog; + final String API_KEY = "98a295c4c04749a1aa784bf6c4256ed4"; + Adapter adapter; + List articles = new ArrayList<>(); + private SlideshowViewModel homeViewModel; + private FragmentHomeBinding binding; + + public View onCreateView(@NonNull LayoutInflater inflater, + ViewGroup container, Bundle savedInstanceState) { + homeViewModel = + new ViewModelProvider(this).get(SlideshowViewModel.class); +// +// binding = FragmentHomeBinding.inflate(inflater, container, false); +// View root = binding.getRoot(); + View root = inflater.inflate(R.layout.fragment_home,container,false); + + + swipeRefreshLayout = root.findViewById(R.id.swipeRefresh); + recyclerView = root.findViewById(R.id.recyclerView); + + etQuery = root.findViewById(R.id.etQuery); + btnSearch = root.findViewById(R.id.btnSearch); + btnAboutUs = root.findViewById(R.id.aboutUs); + dialog = new Dialog(getContext()); + + recyclerView.setLayoutManager(new LinearLayoutManager(getContext())); + final String country = getCountry(); + + swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { + @Override + public void onRefresh() { + retrieveJson("",country,API_KEY); + } + }); + retrieveJson("",country,API_KEY); + + btnSearch.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (!etQuery.getText().toString().equals("")){ + swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { + @Override + public void onRefresh() { + retrieveJson(etQuery.getText().toString(),country,API_KEY); + } + }); + retrieveJson(etQuery.getText().toString(),country,API_KEY); + }else{ + swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { + @Override + public void onRefresh() { + retrieveJson("",country,API_KEY); + } + }); + retrieveJson("",country,API_KEY); + } + } + }); + + btnAboutUs.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + showDialog(); + } + }); + +// +// final TextView textView = binding.textHome; +// homeViewModel.getText().observe(getViewLifecycleOwner(), new Observer() { +// @Override +// public void onChanged(@Nullable String s) { +// textView.setText(s); +// } +// }); +// Intent in = new Intent(getActivity(), HomeActivity.class); +// startActivity(in); + return root; + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + binding = null; + } + + public void retrieveJson(String query ,String country, String apiKey){ + + + swipeRefreshLayout.setRefreshing(true); + Call call; + if (!etQuery.getText().toString().equals("")){ + call= ApiClient.getInstance().getApi().getSpecificData(query,apiKey); + }else{ + call= ApiClient.getInstance().getApi().getSpecificData("sports",apiKey); + } + + call.enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + if (response.isSuccessful() && response.body().getArticles() != null){ + swipeRefreshLayout.setRefreshing(false); + articles.clear(); + articles = response.body().getArticles(); + adapter = new Adapter(getContext(),articles); + recyclerView.setAdapter(adapter); + } + } + + @Override + public void onFailure(Call call, Throwable t) { + swipeRefreshLayout.setRefreshing(false); + Toast.makeText(getContext(), t.getLocalizedMessage(), Toast.LENGTH_SHORT).show(); + } + }); + } + + public String getCountry(){ + Locale locale = Locale.getDefault(); + String country = locale.getCountry(); + return country.toLowerCase(); + } + + public void showDialog(){ + Button btnClose; + dialog.setContentView(R.layout.about_us_pop_up); + dialog.show(); + btnClose = dialog.findViewById(R.id.close); + + btnClose.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + dialog.dismiss(); + } + }); + } + +} \ No newline at end of file diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ui/slideshow/SlideshowViewModel.java b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ui/slideshow/SlideshowViewModel.java new file mode 100644 index 00000000..478f53af --- /dev/null +++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/java/com/example/navnewsapp/ui/slideshow/SlideshowViewModel.java @@ -0,0 +1,19 @@ +package com.example.navnewsapp.ui.slideshow; + +import androidx.lifecycle.LiveData; +import androidx.lifecycle.MutableLiveData; +import androidx.lifecycle.ViewModel; + +public class SlideshowViewModel extends ViewModel { + + private MutableLiveData mText; + + public SlideshowViewModel() { + mText = new MutableLiveData<>(); + mText.setValue("This is slideshow fragment"); + } + + public LiveData getText() { + return mText; + } +} \ No newline at end of file diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable-v24/ic_launcher_foreground.xml new file mode 100644 index 00000000..2b068d11 --- /dev/null +++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable-v24/ic_launcher_foreground.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/black_background.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/black_background.xml new file mode 100644 index 00000000..fa1fffd7 --- /dev/null +++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/black_background.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/gradient.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/gradient.xml new file mode 100644 index 00000000..d0292748 --- /dev/null +++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/gradient.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/ic_close_black_24dp.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/ic_close_black_24dp.xml new file mode 100644 index 00000000..f1fe6ec2 --- /dev/null +++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/ic_close_black_24dp.xml @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/ic_dot_24dp.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/ic_dot_24dp.xml new file mode 100644 index 00000000..78df78a4 --- /dev/null +++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/ic_dot_24dp.xml @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/ic_launcher_background.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 00000000..07d5da9c --- /dev/null +++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/ic_menu_camera.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/ic_menu_camera.xml new file mode 100644 index 00000000..634fe922 --- /dev/null +++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/ic_menu_camera.xml @@ -0,0 +1,12 @@ + + + + diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/ic_menu_gallery.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/ic_menu_gallery.xml new file mode 100644 index 00000000..03c77099 --- /dev/null +++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/ic_menu_gallery.xml @@ -0,0 +1,9 @@ + + + diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/ic_menu_slideshow.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/ic_menu_slideshow.xml new file mode 100644 index 00000000..5e9e163a --- /dev/null +++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/ic_menu_slideshow.xml @@ -0,0 +1,9 @@ + + + diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/ic_search_black_24dp.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/ic_search_black_24dp.xml new file mode 100644 index 00000000..f1fe6ec2 --- /dev/null +++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/ic_search_black_24dp.xml @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/side_nav_bar.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/side_nav_bar.xml new file mode 100644 index 00000000..6d81870b --- /dev/null +++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/drawable/side_nav_bar.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/font/g_bold.otf b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/font/g_bold.otf new file mode 100644 index 0000000000000000000000000000000000000000..7413e3d4a08d7583a1b5846b8ac1168ea15c0321 GIT binary patch literal 54956 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�qZ;VA5FA6<7E8P zA)ZXW%-3KEFWpO)zG3lSTAc8i2#zP?ESzyh{Q2CWdshz>bX{fH1ONMLaQs1kvwO=J z((F5NoP22+54W>YA~RDV!?N<He2vk?&>F%1uLUqT?Rktx<7D^x-LXJxowOaEX>pV zw?)drG@q5Yf5dfIn9croQ!zJ17pN?ZanAiKf0%3*{JU_a=FpQ_%F2YUOW6o3lWhA) zz*}HaP7ZEuib(C%0$wo3$)DghLi=G!IZP-Ph)e z$8y70E6ek|II_wg{sTxTEYEN$s^9sOV%NS9=@P!|5iF03`Ng%vFE=X3`(~@FP{nz! zkM1{=XnK>r%}CqcxE0&N<~gQI@1pj~>ik-AY42LB`B_<=b_YTE9>jf?TsgS;Ziy3I za2~;$jJwPqhBaBRmn^WaNmp2tt}tsj;f(m|T-Dv{mHE*tEsEF_cdzm_H*eXMn3OfC zS;i-^q=?)kMfm0p9*}tjj7Y z%jbI1gB{KPd7tjdOgPkU-S0p1>$j_`tLu30s;;UoH!pp~x)_oln;OFc!Mpj zN16a7@VxsP!K?O~hr_WB#T6YyDa6{vZVyjhj}bup&4yE^;TRk74p7s zwt@ZZZMD&@yGEL`jlNbZU1nX>VcaG|?wfZMTQjiOsuj%c-q_CYP_OwftC@vEAL@-Y z!Xm6!y)eiVaI2ybrne18Bu;z07?*8k;^1?i%5%ry;vJhC;bR^29bTmW=x{`y{ZyXq zppTGeJIJ%g;6Wan?XPH5anWJCb=Vpk5H`CNS>3F@ML<}$60@7xx5Qh~()yoptYt|> zOCxxn`2zY=>m%E)&0M+n<(;O{(`WUxMunY=^$}n2zS!(o+wdAE$*ZQ(!>r%tLoCVg z1uxkfs}(Ln%hGq6J>dr3e5z5*3LpJWFEj>p)wf>ObIk?Wm}--EoxkDM)(84WJJv^c z=iS5lRd0SU`>)xuwqaG|yQ{wFh3Q3aT91XzUhqWfn-}kY=h~}Zl}Sc7>X*Jg@uOo| z=6>saOfq`%#o^Idv)GOLn?p99k737NRxZZ+FNVRG6FVBaKisKcVBwhP?y&`XJ7#z2 z*S}r6vi_g^vvlw7m!pMSN(Uaz{-o^PW5@cv+aX$!Vm%Qac-6Lj`?hY|`(DY=!cEb_ z@kK-XX2()8`W5ZjJubR?bIG2v?7dsB95CRjE3tY5w7bf4Z012xSEl<^{mc~~6tDl= zOkat&(X+kATxWSK&yV#pZ@Fj`6q_%&=O|FPm=_#v}mq7fWZim2GIl8SnU z`CzQAwJ4UY$F!1)e7xYkqaw?Cu%fLV+-(+TU~FL3smw%^3b3HTJf-S4WGyPjA}%$hK@V z_lQ-;YQHS{($E1b2W49gyR^dcF#n(1U@d85^w~q`?#;Gp%H+i8>L2sMO)o$2ndy6f z-}i6ryJ75}sMTjtw_Gcb9W*nG{M$TdtUn9J78d!b?Sa-oC@f*b>=#~k0A|_=TW{TF{qB@VYO zXHxpg zgIR3yu!=FxGdI>Yh8bZKtaer&By^&Ap4G~nd0@{YE4N3NtkJI{BDM+w|$(zWx5*pTGL@>KE5U z2S2=N>YnVfLwn$v=UXAOw>39QEL|!-ZW~##JaH5*Xv`pPTf?RRsQyCM-IF`uKyD`Ti57EW^^y2d2PM%#@a*&U8%+NT$qIiK%;{UdwHE3l zuDWbauWVSpr_qJlvNO`Tb8hZGI$`Z^#UmxBzA)?j_{EM>U%crJUKnd=M#7udt$w*A z>$CiqyS|XqWnYU9_=^xI#)*|SR*kh@7~U0m zH4=ULp~!t^fiW{Y0>P{hoQwFtj4rnF6t<*qP_&FEg^_r_nWsJ_eS0^76m zk59j}Gs_y;Cu~Odc}v&L9EaU8Fy>s}yb{Q3IsFZ*+Xl1S8-_XTxp2SSekb**)~F3; zLt|ep#x^_=9N$uSFlY^WMdGWCde=PnE^;wnnV=<_rDs-pE=QE|!U+7lqAdOYlN5m~XDb zD2@SBwMz%S8erh0fpr&xL2F@Sf3W{0{@?pJ%~O^u}l~WF4*Aj{(QvhG#W8A zVmrp+^oq>l30i9&j|7MQP>5CEGRY0AzDHY&p7LAnMeulC3!q+ww4E9 zF*Eg1tkX7&H~6isr6{ptcp1v9Xl8b@i+y|*i?p_`Le>>+zr4$DeP#yjLRYV{OXa2Huw5PTp?bp4bTFDy)fG=w0f49Qy}u!+NNF*gNn8Z@KrlH-^0f1HKTp z0g3n;`P%y~^7Z!(@(u9~^Nqy*fmdU#)B@ik--Ev2WB@@@@9*^1bPM*LTqO zq3^HQ800hG3GO54O7W$nrqoQyNXf=VAq~Uz{boN*;|r{^XZJ0bZ_n;~A{uBI33m5C zbPuL;waOXk=^Z(87(=1Ka1SgWkhyHpVow8q>;r78Vd>rv$98Y$FE9D<4`tJ6gc~v3$tIhp2`p%6F7+##-?n{#er&BfX7frc0N; z#scFe3*%9Kqx6Mo!;2(vhf&qgpawiD`rmqa!7O&cHI zv^DG95wD%!Z`9<%`8k`e)i?d&xiux(yPlmoZpKYhX3mac5=9q15MFrO(%;<{{g>HL z$BgH?);Rsv1&ij*&g!~%$VY$M`}*PXfv@N1So1wY$8UUX*QP)1Dcv+_*yZCV7GN)m zwviGPXKAzjmthI=Gux~&M!r8dZ04Y=^Dz^+GiCzc8jX!G0{bu9|D@^3y2|K2<({F% zIep&jGvCs)0$AH}XoqzO^X~s=M@0jyst#ZN?Z}2!X9J@#&xoJU!g@v@ZBDtM_^+=) zZ-+27A_Q6v#D)S_`K@<$PVonZ0h`!IVq9Z?m;SjJ-J5+KR&GDOU=471Cw86;n0JOB z_b*s*-vj8O){QmacEiSLkB_ap`RTd4Mr|rsRrmRC(Px_8TEFjx>+ikZp^&BCYX8~z z=p@UnZ!*?@sV{o^=_PBjpN&-XF|#lVB9vXRV(IT5&9O2on&`crA9d*CtRP-ZjWRoe zLq-Q?M6ADHI^JKrf!O=lQevWY&07BijJMv6NQI>f%zue{G6`_c$l{eDcbt~iw< zgZRS{?2q73MC(9^b&?=pE)s)sjR7n>D(Zp!0&_aAFuTz&zzU%~z#FU7`~mEqUc{b|p8SzqNJX`ExN z$GoE5#`hn8{QX}??CZTY+S=R{KKRCEJ$nwm?Bb|3-^2jTy%i_ISS$U4d9U&3w+D9X zHfZ35(coLL-^Z3<7WvzkVB?V+BLDNnF4@mxBsNEg&yNgFj%@Pm$36us5Qz;ZnntXJ zKTgZ@Uk3rin(bih1YVp6Z=w_6Ad#Tua~o|^YNE+eiSn?AN#RyLFADCqM`ZSuh@A! z$9#XpA%Fj&UAh(87uNe;tLC5kd|&p?`uG2o(|=9rq(j;7y!p)jjnTmHi1p5neHg`m z3eEI&za#SQks|}%?bvZZ|MSk<*Z-fu3f6=KWF5ueoBV-Uos0ef7QzY>I6Jq4qN~h7 znA?S=B@g>sv@AuZKvr7F95_t6G6JIW%pQS-vF#bw&6wLa3v>JMo_C0~%_=arAqcPH zbL(bI>U-NjtM{3st$lj%hcI?;x!?af<}n61r5n?X!#78YV~xD<2>QpCG>L@Gxfo8F zYXr6$e|i3Qdq(C2ZiJsODa@r?(MKY~UdAdL3|XJVQXeN$3u0CyvG;qf2G9q!XMn43147mYBQck0x6 zbFU6yCYbh;mA*N!-+#-J8?ytLu^Ggyc`g8qf~_zI=P`7G0)wXZAA7#s4r9LosIi?- zJSK|)_xo?fQow*cOZ=by;E0MPK*GU__Ij-S)Bdeq^FXY#v`G?PJ$JiM;i|LVwKjp&xx#%nE5{4#TXGBI6T#LP!Vf zQBfA&txglqpcUd5I_e*$RQ*k%sC(UZQ z%WV27Tvy{gKQ@AxWX{Lt5*Tq>WZh=15Z;&_(1(DX?)`ft*Xnt)1e0ld>Vepf$&mnd zY6|qhM6qjPi!pyY$5KtKdbdU`k8Hzo((0L85;-Y@-?HciTUwOw2m?7e6?L8veFyY= z5Bm3x+urMufMH^L2@q@v1aDKAb6)k0kbi`Z$n4iPM=T?1{mUa8xa7UJ*dHDf33T;; z6ySWuCsuBZ1loR%w}Sx-ORtTkkKX<0imX4}{rh`Q4clM!sTB=i)mF5@@4D5mtWw;bfnoA0nGlX z7#`T>-zf@uY#xM_fF4Zxp#Q-@m|V1t7%utmXfH5S`{ z?{lSU3VWqz%N7N)$pChzKjL~pbNA{quu!W#{`xu7wMNs&&YOwN8nB@O_7|^Y$^gE| z;nx&)LCrzFjwnyNzbBOtzgh)19P>}1(yxV z)utBqMErbg;+rdb3NUXsHbSWDggw|nA@+FZ)gGH5Fuflem*;Br$IqHOOM8p3jPMZQVZx6Ij}e|A{Dv?__>(~8nRfM@naWRC zn=ps48DR&)u7rIE2NM<%P9U5)W9*!1>N>)Ogi8n?AY4KC1R=g+iIf`&Um@H@_?AN_ zn_B-Vbc5C|Qu6;tNWOZYqu&4BvjI-YzGzCjPj!a$UG1vc@RfO1PK%g+tf{>l@Ov+8hrQVcd7QB%OHu8vtA4TYEge6_MRvV%1l^gN5aQ7%+InVZe zNpqrd3F6+w`6P2Z3OxMgUnO!uepV&E4#F}JLajc-m6JbkfFEmhQeyc8>&DoVnqS(0 z@YnImpoSZfS29YA5Gp^NHZ}T)*Ue>@=07@wAoLS}6WYlp#;VpR%zX zPjjxbLn}y6;>ok6m2~l(<$iKW)zc?x6OT`RE*@7sw?yo@LTAq-k@}bJCsO`jguv&b z|M0WVBA>hx890i#GRW+9;>Qn4(BtJZdmN5RL=v*y_bzfN(>qw&HFX>Q6$*mOa z+m6yu|Kt+o-noCgTN_U?RrR!TB{{K_&rq7^KHvx?64S}KGOdk28{>8z#hb$~kuOSu z1liY;6T+YhLgmnNajjY^IOAXL+jhssI&`_6AMO(O_BB$8r4h>_XVw{E-~xB5u+LI! zqZHBjEA4c+Uo9Uee`?&s9XkY@RR(LY9W=QGbryb!a~v^_dv+ZJ1KUY0sfk0&cuf;$ zq_TCp)YRcuxhtg+GeUi_NrDUVksXV>uup6aApVkGQV{cr{FzskC957^{mLngJW%}( z^RQ44VxIL(qJC9VVvE=f3MEA7(lwlTHDR#CmWu1;7a z&_$>yv`s3DoK^~|2(5&2<=~~Glr+eaT{7q-o{jh_!YiPf;1h6}crnB)b3~jxvleL& z;U0dKe5__Ovm z-WsN?vP{w{`;NrNf2e7k1`ZbFPBP}=DNjGgpQ|2^R#IN#vFEDknI+gQljnf5vv8lp z#^cX?I$j>17fDN!AzTSPMfNDEI167w``{3c5PlI2EU~0B@7j`fvJ$)4Ny+%z)IVX< zoX_x{gyaePjF9BZyl@u%B4HeWQU~M7VZ4o+I`8VbPE5v6d zh2%tvF_o0y@W)FW}v4zWDc3eUxBN@>Bh)HH$LmADe! zXyX*vMGDdKl0xJ_+70=^m9);$+=zGV9pb0rs462~58xDk+_9zBw%&I8Mc%5(IDC(41?OEr7xDXv?mtylLpE+BJ#DJ8Llq2%Dxsg1TT!!R;yFwqN zuzylRC*<%_{Eidr+>OVctrl|6j*sURfA*ZIQD3P^JXhvGn#6Oeeh0C%fQeX};)p*j z52V1TjBP^_Sc#_+?Bdr9*V4-(o|5xUJi&Bl1;Ch{%USOxN5=6TkCWU{Z-=t+*!bDG zo5Y9lJExzMYiZ{PT#~lcQxf~GM$3dJ+myC#gK;t$;aXcck9N-HMzM_Gi0V(C?JAD( zv)wye9CD@ajpxK~k8{~+5?%dCJOc}EQv^@3R%n}O7fM3))Ms8L@%343Vj_K_y~$jN zaFQG)QYVG{sEbfhEH-6GJOhO37bK-~g3@Y-uA<|qlTeBybLTD%Y2oKfIY}yEaWpN#Kg!%9-^!JqGEjGgFCR)rOx5U% z)Cv6>*37w|l=H6(+89pAi5*H@+qs|&aDaq`i+)|siBt(HA|KH;RXLCb!nJnZ(h|zE zBl&T>$9qk}i^7e>InR^;!BAWd;-#K(T~%g0#jiO_%@ei%HBX$GCfSz7!_tm3Q5i?xp(H1c5HGyF!rnHid3$w8^jN2 z*}dg;;E%B6PwurPmwb|_QT32u&u$l=ktcq(RLXcY>s~!Swxb+&+4f_qyi4T!fs_=- z?%AF?GcFN>a?xi_{G^sVY^^BuuEH0~u`LX1ar#qiFP~3v0-pKVcB3@RJGdhn1%+qg3KGX5~$fu_jE2WCZb|tWLwvgRg8)FWn4n)12oKXYvj146Z)PQwmSma#}8}jOG z<(w@}dJOR&z5Fs6bCekP`}WzfzbG+*Yr8ikR1n{f@zM(R3&a;h4*^i_B~db7j(x^m zV3;M9!FMd@dsDkVVdoCKB1dTx>VdOZPgqFjY19f&OV8Qij3k>?y`ZyPv7c0qI!X`b z1jlj95`G~lIuCzo!%4vc{xasu@g$ZieFfXcU_x9hj6pjxBjQ zPMiM?=HjLP@6V(nT8R4Fy~rxh4pYe*me#osT)uYdK~Rr@~C zH7!b8oB)SOFGcG3vs&8DTiRMxGx6i)y$o#!VO8C5<;WOXKv}_4l2Tf0YXnC-#nZ`s zra8mAwNoT`#10Xgq?V0KJS*HQZLo1m4H3VR+Q-u|jC4+moO;N!c1#jE9Au4wTb zbh3bxqX$@Oj z)e>AgI8UUi9?jOkY6aF!_V`9#w*{kcn_wx;ypskc#6nX4pxF8nTamk~VCa|qi%<|$Zo z+Q92`a-aPiay%*T6IpkMf0Fqqp0}KlO00@dj2bZcUiC0}mG5^+N5M<-0je-JM=RLR zI-XS({_WOO&o^-uuVWmGwv^e>DNS$$y`J<;6)xBUsY4a+l2RqbC)z0~S!>&q0e4nC zLHaXCCx3>|lC%8;+a>%*+7eSN5l>Z>9B-ABnJ5Wi(kWgt?zn;6uLv^GkMH3~(OF%klFK8k;CSsFAsFU0m-eCKIb6b9CmEtK8E1a94fTR%& z&^M||B`vfyf@ldlA357OJ6y*W##6-K9g`v!7;7!XjLjd z^7=bce2o;AQ<9`Q%2dhu1yE}#^#p2NioA}Z*5zs{uJ<7f4W-^g_(0_eS3}g%S5?R4 z7T9&Q+b1c0M5#v|ESzw#fHop8!2o7~5@)Eh<|57{3`(i=rmdGNcR~ z7Ya4$(PR`Tmr}(oj=d=Dq z7S8rNmmiW`X7%U9%dZ|ISIPa0#9hjo^fJ~WB>favA>Os^l+F2wO+0aCi0{M2dP#3X zMvlco+gNk?4+y3kKi9Yv?GFkz1-~L+XURw8S0tTjs^3TbSJX@ML_;KQ zgWA*uiJ0mk-rtUVry_UJEpe$AjU}^!r9Mu6l2(39BWaWF*>~)+lAcJa3GT5!f#-lt z7vxN{*na%_B?YDmltj6V(a}ZqHNQ5$?rffEtYRFy|PB^SGpAGQx7q zbdGsA%W;ERs21aVk8>=;0^Y|FUX9~9wNY*1QG%=83SYUbd>=JcmH03s;3mSE>N|vY z5|$7yB`hQyPdJ9~PQnR<@3~5_4x^3ape~TGs_iNUe33CZj431>PMGJ!OPUpoS;Lq= zG7RoSe30S#%%=roG9^Zv&G?Q|uJ*n_Xmf$tjQN(~wuD{zR7-|k0$n)*weKWe`;_5{ zyn6v*I@8x;*kHIRVI!tQP*dLJ-tQ9J;qId;_dpz&zwgG_lzTJ|%&F%w73Wzv=Hrlb zH{m;)op79wqldP`-OD}TR~>`h!`!DGo+a*4IL5`#?#b?%zj(}Z-{4L<@a)2$JKT$L zSB`t!%c>nK+>g6gyPrGTfz%s+=GY?l+$HYa)sDB^W$x3DL--(O(t+nb{uReDq&fXK zfw^6Z9~rnl^QebdIU0DHRXf^vI(g3b^f=>K z;^~9bKYtAL6nK)4D?FpI^uGEr0l6d}Q$4e=F#qR|C7$_s>h$9##GQWJj<~Ah|5W27 zYmm{@5pxKWbn2-&Q3q+ZKBD%KPurqa^W`b|urA;d=8&Y76g3^brz>~2QBNgn zH?ewRuLRn9?KWyRYD4Y&D!nFasgyPg>5i)?zMgxP8iOzL%FMIL*d#(zSF5YxB~Mb* z;OXvH`|;gi7iLi?tr4DRf~_PPVa3lZtSLH<|4i7v6Zj(V*V?y;`yPw(<|>cUwOg^V zgjc&wrKl9`c9p79wL4S|Ra;x6GE^OHDJ)^Oc8?l^lJCQI6JKces}t%3KEAB9bbfI6 zJ(PSv9aLYdZ`4n!5})05;lsN=SBgt&<5z3dTGVu%dKPV6uQtN>d`WGFXT1eqcurN@ z@k!^P+KEpw*T83#KiBH1W;3zx^GYc277x;9%r1dPxBu7PLx4AvNSQn{+Wwm>z7 zUB4b1VszGSR9(~s+G5pBb<^%v7pedwI@&pykRvCb({b^Dz!?jg2$_1l^OzOX#djwNBdIyH@t@Ll!Bk&Rt9_p zzY3@{cne{bsp_hFDxz{gA%%8*{VTAr0cHLPxX{%m;KHl60v9R7f}dEZLo75V7Me&c zR0GveHByb?ku+B=RG#VzpQMNCsV;_Ja+xZCM>0ZJj+<^lgx# z#rQ_~Y;f~KhH`4dP->vn<-;Y-GLqDNE{wZkNAe4D2 zBs>+Z9Ewse*M1aw#- zblCIwiu?=OR-}Ig{~_8o{0s3}^X-T!)^;N1Rq$F=E5*MM{Ps3lwHF-MKsyMIYoz@J z|K8xcBWU5@!F_$W_Bu>0KLGmb-)PrY_;)6a3rOQ`@UFi@>%WK86@bR4z^^}m(gmcn z0XqMLu+Z2bjeR1O&=qdw1{HG!ty~J7+Ko6#AU7!nt2n+4Kq`g7f zyGi>3(mo&BG7QZj98f?GI1k!06ESsFT`domCQBPYo-m+M>uH@ut0H9-nl%r)p}v-> z8mPwF5YNtt=3buQ|%GcL3KdNj;a&F zomFRq^HiQzU-XLBQ01$9#GJ3r*Ltf9U`f)UU3(y9Pt_BeS1id8=-G>rTQAiM;ohpZ z7FB&zA3W7p^~JbJKh+;44p0NMI%=RAi0~jaNV^D{`7*6B?9X7N9|9|s2~Ayq+CqnE z4WPv?N6KMpm^PSpX$W-qD8yf>u0*+FoeC)%2DN!dHC~O^+Q3Rp(E8KzU#2FiiP|Nw z|C6*!(eIqB^;1*S6sSgsZ(ughUrHWOt)?MvTJG6_T>33-%^_nWxveoPAbv*TkdRvRAy|CI@v?)zt zQ_8ev>OEMN7W70~!oD2PhQcp6sCA%C%cg`Iv~1aw^8)p6SgS(u9JIQyLO($}RH{lX z4F(KT>)}Z#t({mVttKsDP`nCFw!3PmwL+3KmaVgFgJpYJwvT0}vg|bE{x!7AHz>o; zGLS3s4KQC9b9B1`@Krp>u?MwI8nsSM>KjFkqNqi})EtUBLs46}s4d*o7H(<_54D9( zZ4solFsLnRQCs+^Cw$ZsHK-?i)D2#0g%GuZk6Ix_ec+=$z%F6X0V$MzKczpN(jTDo zr&9WBQ2Ns-&5ClYD93KfaRwzgNU5z&8Ff)cF&+S&45@@%x+#lpN?{tMP*LW5l(`V4 z%|{6fQK~|eDj%gPM5*#ol6*=e$(ErIr6)wW2~lEvloBtc!AGtSk;fIeLv|0SNng=L zUNzM7>IHZ&!m&Cz)`0i;5;TVRO@4SHTj0qE$J(BxBCop1t6uV|L0(NEuNve-FFDYQ zk|vYd;063;WGNLkMeMeRHbyK=2qCdCA=;Q)v@s!agoidJL>m(#cerU|LbNdjOmbN|xhy~~t4S`an`C1YZA^&P zB}9u7qAdxL`#iKIA@ZPyJeW%EGiW(Nv>72$H~BG@b|OTsOeI&! zSW-5)L9BxKiuEDaVh`$&H&e))b*TL_$f0$}p(*6hI^@t4a%c)UG(at1ha6gm99oB( z-A_JEp-#^rw+5-xGpNV?h4Tx?F@3XhaByprVCNiWq`{r1VwLv z_i-csF47gfF8mGnoOeLR7vZnymAXi2H?@QTNUQpq>=*+azKzAP=g#0 zBnPB}1O5q*@e}mH3}8POus&%ZcGv~%w?Yg&c1UVlSY4wE`yCPP1lyZJdmBumK@Hkl zgFQEcJvW2&Fi432t*cOC0CKoQT>`lm>zYFAYN$)myYrDM0aC>vRSZ%^Cslmx=^3O- z3h;3~B|eK%F8zdt@V&+J&ZfM!rlhu}jMk$RVpJ1!@{>;als`YI5+POml)rq+Uq0n8 zh4PnAO5{=g{FJ{u%3nSy;U^{XNQrb(BA@bS`*>}M{rbdyZDPLxu^*=VMX2SoC}*uH zVXY}c^(aHFDLvVg74+I6E3GLdeo9H660b?8toW69O&Ro>8d7fZC^z}^nhZ)$9_i<& z^yE=`{Pdb?l8UuRML#8}HmT^QJmt}A${`i==rtLXtvpgRowDU8UE5H?@+n~{q-#Fu z>Z8}xj&w~YUH$Z$GDzLFq;5XFCNF86N6BkTuPKL=&Zqpfrq|S&UQ-=O`-p zCB3E#=ry&X*VKew)A{t88q;fX(QE2LOO#6MlS+Rnjn=0I{iQCnJ|Wtj7PLE2+MQI| zognQ_D*cr9^i4X@E2&FM6s3k}O?wojhRCNc6ri8djJ^<-8NwIJq|efkK1*}@Lbm7P zp)b@3N${o;J^mE7)5mst*-jVRsn||~?bO*qH^(`|=edY75x0V3|I%ss0Z(osH2iJwwZlTxB6CFzusblM^GV$hGV`==?CnDiuj3UkCXMo8`#foshBQh*8YQ3xxjRViP9tB3$k(;V*CFz9ki48m{tb~&ZON+&BM-fC%xu~IB#J!6cbrYAieQ;CPxT#;hWyWAhy}u=EtY>?z9Fn1KNupYj1>j12k) zqhx^MVH(7+!QP$=J-i&Gk-nYeduvjQ?Xes`TkL0x{p7O%`ONN#rx6ED$yJ?+iKgVI zrsSv22FgvK(AWYwfX;Alux4J!pHB#2y*( zlfweUMJjQjliSkRYj)A|_OYjIkn{ZP9eatF0QN&38Ll0I)reO`z9Jd>1fN^Z`gK5vwy&uu^6*5|d7^m$uy zN>l3dR^(S44$q-( zt54n5jk@gu>b899whq*7xzyq3QNu;3!)s87ccKo@U_YV@HF*X#d24F&Hq_*usLAV6 zlQ*FzZ$?d?K~3JAnmmI#{CsNfW|Rp(wRba0Z)a-nFtv9>YVVHJ-cf4ruGHS?)ZR7N z?`%x%T@T!Eu$QVQ^-m3^KD~dMNxAcKL?=WZ^poRcRN4*gZ;!~y*o-2t*<4nW{AF{N zkKE)XH~Huhq>^{i$vd^kFKOfp5BWlOY`ctqq>-vMNW*km;2`RrRyDT2!Re{FiD3_M zYmaTqXz?!SAsIu^iB%7=Y7na);!`Ikb>vvj(JnGJ8KAtSv8{Gr)?iy*Y-@;e8e}jRA9GPMUJt$E(uPs{wQ_o&qVGLU z4^qZ?J=A_WwV%$OV%)xpcbZP^mrm`MPCJlJ&6ZAkX?vBnrEEcM*2?LniDj_+XL=Gw z6*1~|`edTDb?POZ)}xiv1ItzQ(Zd&ivH|r^I$Pe7Ezclc8`7$z)2gHs7a`&}Og)oM zJ=22t_7mSh;=3X3XfCx%I<-oi=LC24sY!CFNz#eOmeeG*iOuHp18b8qL23_q>oE?a zTQY7|m)fH>wMR2*k0#U}ZKyq(QhQ`mZ)8$$_^2@&k&_!yS47CqQEG|C7$5O4~HFR@M)}yEvyVkx?Im z<2^o7K;D*}O`~|vs!=fS4!HG@6BIeYPfkc7CwR#T206h;PH@qV#64w>GC9;qK|Ot- zk5I<|eQfH~CeJ9^8iSnUCFgj_Id0k)gZ0*vI46yq<0a>KSZ^;mCyhKKBbVQRjxsKq zLTln9&-lqRiWUTV9yRc*eJSm#?X7wq_f}m*?vcGp(~wGbQEha(Ev7HbbWDRlH&>S;~!2?dPdYlHC# zg^BPFZ_@74u(uOyE$@vYcqiCVy8wNdA=)U6watO%T!J@$b_y?gJvmx)yeI04ak~QT zN{j%^#rweD!K1WO_%IR}#m=Cep_}_bCy&;qX!GE?F2&f4ogxK&rd+(Y&cho=yb;i@ z!raztwS{X>kBiVp7$mGsm_?XN*o3gvgqhdO z@N^(NkFYyoFTw$Yg9(Qbjv^dKIGJ$f#5rTfd*%_|Lb!x*8R1I8wS*f9w-c5UmJybt z%40o82|p+NlJGmi9|Yl{9VKc%ugq;Y_C+tDkhj1Wa z0pS&dqoFm$I*E?`Z=dB&hvbZv&c6|IZWDB}}HHTQ_IV+SU<69|2eG1XMYO}F^As*v1Sjg_$^R2Z6}kEB_Bs0PI?BM`_6N^okF#9;s-lt%zEbiWzKnpeRdsl+VX>jfdj_X zbz(k;zaDehC1M=Xg%vk|#|Yno$E#es2}=mK5Mm}9o+`szxw_~lW}~NzId|wY*mJdp z$rulMXGP8oHO$5a4&isY-hjuZT)W_xDc5#*U&^(!@^io!5QCYIu2&?67|`HzO3W4< z8>(U?rGh^W*~c4vjDo6-sK*m{hdd6x{sj2=6XDxWhEG2geY<@!^9>_7?{n^(%e4gQ z=Bou*ZFD_m=-;SrQa7tx)UE1}`apfC{;bOJi7imjHJ@c*lm`0sQFt9F$IoD{(C z-lM%uTykdNFJTnx3vR=jsXNpnbthID+@+SN-(iJ8wU(ULe&x!97VZEqzB@e8Ves>3 z!s}iPkNI(|#@d20gq_-Mydm7Hm0|ADhji6n?)bvJ#=cqrZ2Tu!b69RhdxaV_&tlV@ih zM9rm+_v64wJLj9q8-Wg0wUc_uEY!NcR69`UZcyW1VE%q!`9WaxA@riFNkVllL47>H Z4*DzhC>-l%*Em(`Zr?+`51~fd{{!|upO*jt literal 0 HcmV?d00001 diff --git a/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/about_us_pop_up.xml b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/about_us_pop_up.xml new file mode 100644 index 00000000..49cb50db --- /dev/null +++ b/Android/Amit Shekhar/Advanced/NavNewsApp/app/src/main/res/layout/about_us_pop_up.xml @@ -0,0 +1,59 @@ + + + + + + +