diff --git a/README.md b/README.md index 60920c8..7ca378b 100644 --- a/README.md +++ b/README.md @@ -12,9 +12,8 @@ Open Source HolyQuran app that provide Read, Listen, Tafseer, Test all of them a - [V2.0](https://www.youtube.com/watch?v=hzJV1lth958). - [V1.8](https://www.youtube.com/watch?v=-DbH0EKkAzw). - apk - - [V2.1.3](https://github.com/MahmoudMabrok/QuranyApp/blob/master/apk/appv2_1_3.apk). - - [V2](https://github.com/MahmoudMabrok/QuranyApp/blob/master/apk/appv2.apk). - + -[v2.5.1](https://drive.google.com/open?id=1iU-WgufHMAELKOmClhW2Z18Miyef4f4v). + # Features - Go to specific sura by Scrolling and click. @@ -29,6 +28,8 @@ Open Source HolyQuran app that provide Read, Listen, Tafseer, Test all of them a - Points for Tasmee3 - can report a bug, chat with app developer powered by InstaBug - explaned in demo video - (Not Available now). - ReadLog that store pages user read. +- Continue reading when open app. +- App is Full Quran and Tafseer. # Challenges - **Data** @@ -131,6 +132,15 @@ it was called after ``dialoge.setContentView()``, it is error to call it after ` # ChangeLog +- **V2.5.1** + - Add awesome Intro + - Add continue reading feature that Ask user to go to last page to read. + - App start with Quran & Tafseer loaded. + - Improve UI for bottom nav + - add labels and it appear all the time. + + + - **V2.3.1** - Add ReadLog that store pages user read. - Improve UI for page switching. @@ -188,16 +198,12 @@ XML | 3498 # Screens > diff --git a/apk/appv2.apk b/apk/appv2.apk deleted file mode 100644 index 2ed410c..0000000 Binary files a/apk/appv2.apk and /dev/null differ diff --git a/apk/appv2_1_3.apk b/apk/appv2_1_3.apk deleted file mode 100644 index c39d6aa..0000000 Binary files a/apk/appv2_1_3.apk and /dev/null differ diff --git a/app/app.iml b/app/app.iml index 42248df..655f005 100644 --- a/app/app.iml +++ b/app/app.iml @@ -95,19 +95,27 @@ + + + + + + + + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index bdfec75..0fe1fe2 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -19,8 +19,9 @@ android:theme="@style/AppTheme" android:usesCleartextTraffic="true" tools:ignore="UnusedAttribute"> - - + @@ -29,7 +30,6 @@ android:name=".feature.welcome_message.BootReceiver" android:enabled="true" android:exported="false"> - @@ -45,7 +45,7 @@ android:name=".feature.test_sound.TestSoundActivity" android:exported="true" android:label="@string/title_activity_test_sound" - android:theme="@style/AppTheme.NoActionBar"> + android:theme="@style/AppTheme.NoActionBar" /> + * TODO: Customize class - update intent actions, extra parameters and static + * helper methods. + */ +public class ListenServie extends IntentService { + // TODO: Rename actions, choose action names that describe tasks that this + // IntentService can perform, e.g. ACTION_FETCH_NEW_ITEMS + private static final String ACTION_FOO = "education.mahmoud.quranyapp.feature.listening_activity.action.FOO"; + private static final String ACTION_BAZ = "education.mahmoud.quranyapp.feature.listening_activity.action.BAZ"; + + // TODO: Rename parameters + private static final String EXTRA_PARAM1 = "education.mahmoud.quranyapp.feature.listening_activity.extra.PARAM1"; + private static final String EXTRA_PARAM2 = "education.mahmoud.quranyapp.feature.listening_activity.extra.PARAM2"; + + public ListenServie() { + super("ListenServie"); + } + + /** + * Starts this service to perform action Foo with the given parameters. If + * the service is already performing a task this action will be queued. + * + * @see IntentService + */ + // TODO: Customize helper method + public static void startActionFoo(Context context, String param1, String param2) { + Intent intent = new Intent(context, ListenServie.class); + intent.setAction(ACTION_FOO); + intent.putExtra(EXTRA_PARAM1, param1); + intent.putExtra(EXTRA_PARAM2, param2); + context.startService(intent); + } + + /** + * Starts this service to perform action Baz with the given parameters. If + * the service is already performing a task this action will be queued. + * + * @see IntentService + */ + // TODO: Customize helper method + public static void startActionBaz(Context context, String param1, String param2) { + Intent intent = new Intent(context, ListenServie.class); + intent.setAction(ACTION_BAZ); + intent.putExtra(EXTRA_PARAM1, param1); + intent.putExtra(EXTRA_PARAM2, param2); + context.startService(intent); + } + + @Override + protected void onHandleIntent(Intent intent) { + if (intent != null) { + final String action = intent.getAction(); + if (ACTION_FOO.equals(action)) { + final String param1 = intent.getStringExtra(EXTRA_PARAM1); + final String param2 = intent.getStringExtra(EXTRA_PARAM2); + handleActionFoo(param1, param2); + } else if (ACTION_BAZ.equals(action)) { + final String param1 = intent.getStringExtra(EXTRA_PARAM1); + final String param2 = intent.getStringExtra(EXTRA_PARAM2); + handleActionBaz(param1, param2); + } + } + } + + /** + * Handle action Foo in the provided background thread with the provided + * parameters. + */ + private void handleActionFoo(String param1, String param2) { + // TODO: Handle action Foo + throw new UnsupportedOperationException("Not yet implemented"); + } + + /** + * Handle action Baz in the provided background thread with the provided + * parameters. + */ + private void handleActionBaz(String param1, String param2) { + // TODO: Handle action Baz + throw new UnsupportedOperationException("Not yet implemented"); + } +} diff --git a/app/src/main/java/education/mahmoud/quranyapp/feature/splash/Splash.java b/app/src/main/java/education/mahmoud/quranyapp/feature/splash/Splash.java index bae019a..8def692 100644 --- a/app/src/main/java/education/mahmoud/quranyapp/feature/splash/Splash.java +++ b/app/src/main/java/education/mahmoud/quranyapp/feature/splash/Splash.java @@ -39,60 +39,72 @@ private void startServices() { private void askPermissionForApp() { askForPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE, - Manifest.permission.READ_EXTERNAL_STORAGE, - Manifest.permission.RECORD_AUDIO}, 5); + Manifest.permission.READ_EXTERNAL_STORAGE}, 1); } private void initSlides() { SliderPage sliderPage = new SliderPage(); sliderPage.setTitle("Home"); - sliderPage.setDescription("HollyQuranApp"); - sliderPage.setImageDrawable(R.mipmap.list); + // sliderPage.setDescription("HollyQuranApp"); + sliderPage.setImageDrawable(R.mipmap.home); sliderPage.setBgColor(R.color.bg_green); addSlide(AppIntro2Fragment.newInstance(sliderPage)); sliderPage = new SliderPage(); sliderPage.setTitle("Quran Read"); - sliderPage.setDescription("HollyQuranApp"); - sliderPage.setImageDrawable(R.mipmap.ic_launcher); + // sliderPage.setDescription("HollyQuranApp"); + sliderPage.setImageDrawable(R.mipmap.quran); sliderPage.setBgColor(R.color.bg_green); addSlide(AppIntro2Fragment.newInstance(sliderPage)); - sliderPage = new SliderPage(); + /*sliderPage = new SliderPage(); sliderPage.setTitle("Quran tafseer"); - sliderPage.setDescription("HollyQuranApp"); + //sliderPage.setDescription("HollyQuranApp"); sliderPage.setImageDrawable(R.mipmap.tafseer); sliderPage.setBgColor(R.color.bg_green); - addSlide(AppIntro2Fragment.newInstance(sliderPage)); + addSlide(AppIntro2Fragment.newInstance(sliderPage));*/ sliderPage = new SliderPage(); sliderPage.setTitle("Quran Search"); - sliderPage.setDescription("HollyQuranApp"); - sliderPage.setImageDrawable(R.mipmap.ic_launcher); + // sliderPage.setDescription("HollyQuranApp"); + sliderPage.setImageDrawable(R.mipmap.search); sliderPage.setBgColor(R.color.bg_green); addSlide(AppIntro2Fragment.newInstance(sliderPage)); sliderPage = new SliderPage(); - sliderPage.setTitle("Quran Test as text"); - sliderPage.setDescription("HollyQuranApp"); - sliderPage.setImageDrawable(R.mipmap.jump); + sliderPage.setTitle("Listen"); + // sliderPage.setDescription("HollyQuranApp"); + sliderPage.setImageDrawable(R.mipmap.listen); sliderPage.setBgColor(R.color.bg_green); addSlide(AppIntro2Fragment.newInstance(sliderPage)); + + sliderPage = new SliderPage(); - sliderPage.setTitle("Read Log"); - sliderPage.setDescription("HollyQuranApp"); - sliderPage.setImageDrawable(R.mipmap.ic_launcher); + sliderPage.setTitle("Quran Test"); + // sliderPage.setDescription("HollyQuranApp"); + sliderPage.setImageDrawable(R.mipmap.test); sliderPage.setBgColor(R.color.bg_green); addSlide(AppIntro2Fragment.newInstance(sliderPage)); + sliderPage = new SliderPage(); + sliderPage.setTitle("Jump"); + //sliderPage.setDescription("HollyQuranApp"); + sliderPage.setImageDrawable(R.mipmap.jump); + sliderPage.setBgColor(R.color.primaryTextColor); + addSlide(AppIntro2Fragment.newInstance(sliderPage)); + + + + sliderPage = new SliderPage(); sliderPage.setTitle("Setting"); - sliderPage.setDescription("HollyQuranApp"); - sliderPage.setImageDrawable(R.mipmap.ic_launcher); + // sliderPage.setDescription("HollyQuranApp"); + sliderPage.setImageDrawable(R.mipmap.setting); sliderPage.setBgColor(R.color.bg_green); addSlide(AppIntro2Fragment.newInstance(sliderPage)); + } diff --git a/app/src/main/res/layout/fragment_test.xml b/app/src/main/res/layout/fragment_test.xml index 4791234..f0905d9 100644 --- a/app/src/main/res/layout/fragment_test.xml +++ b/app/src/main/res/layout/fragment_test.xml @@ -125,7 +125,8 @@ android:paddingStart="@dimen/_6sdp" android:paddingEnd="@dimen/_6sdp" android:text="@string/test_sound" - android:textColor="@color/bg_white" /> + android:textColor="@color/bg_white" + android:visibility="gone" /> diff --git a/app/src/main/res/layout/tafseer_item.xml b/app/src/main/res/layout/tafseer_item.xml index 13bc36d..0a00364 100644 --- a/app/src/main/res/layout/tafseer_item.xml +++ b/app/src/main/res/layout/tafseer_item.xml @@ -2,7 +2,9 @@ + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_marginBottom="@dimen/_10sdp" + app:cardCornerRadius="@dimen/_16sdp">