Exemplo n.º 1
0
        private void LoadJuz2List()
        {
            Uri[] images = new Uri[] {
                new Uri("ms-appx:///Assets/Images/hizb_full.png"),
                new Uri("ms-appx:///Assets/Images/hizb_quarter.png"),
                new Uri("ms-appx:///Assets/Images/hizb_half.png"),
                new Uri("ms-appx:///Assets/Images/hizb_threequarters.png")
            };
            string[] quarters = QuranUtils.GetSurahQuarters();
            int      juz      = 0;

            for (int i = 0; i < (8 * Constants.JUZ2_COUNT); i++)
            {
                if (i % 8 == 0)
                {
                    juz++;
                }

                int[]  pos         = QuranUtils.QUARTERS[i];
                int    page        = QuranUtils.GetPageFromAyah(pos[0], pos[1]);
                string verseString = Resources.quran_ayah + " " + pos[1];
                Juz.Add(new ItemViewModel
                {
                    Id         = juz.ToString(CultureInfo.InvariantCulture),
                    Group      = string.Format("{0} {1}", Resources.quran_juz2, juz),
                    Title      = quarters[i],
                    Details    = QuranUtils.GetSurahName(pos[0], true) + ", " + verseString,
                    PageNumber = page,
                    Image      = new BitmapImage(images[i % 4]),
                    ItemType   = ItemViewModelType.Surah
                });
            }
        }
Exemplo n.º 2
0
 private void GenerateLastAyah()
 {
     if (RepeatInfo.RepeatAmount == RepeatAmount.None)
     {
         LastAyah = FirstAyah;
     }
     else if (RepeatInfo.RepeatAmount == RepeatAmount.OneAyah)
     {
         LastAyah = GetLastAyahFromAyahCount(FirstAyah, 1);
     }
     else if (RepeatInfo.RepeatAmount == RepeatAmount.ThreeAyah)
     {
         LastAyah = GetLastAyahFromAyahCount(FirstAyah, 3);
     }
     else if (RepeatInfo.RepeatAmount == RepeatAmount.FiveAyah)
     {
         LastAyah = GetLastAyahFromAyahCount(FirstAyah, 5);
     }
     else if (RepeatInfo.RepeatAmount == RepeatAmount.TenAyah)
     {
         LastAyah = GetLastAyahFromAyahCount(FirstAyah, 10);
     }
     else if (RepeatInfo.RepeatAmount == RepeatAmount.Page)
     {
         int   page       = QuranUtils.GetPageFromAyah(FirstAyah);
         int[] pageBounds = QuranUtils.GetPageBounds(page);
         FirstAyah = new QuranAyah(pageBounds[0], pageBounds[1]);
         LastAyah  = new QuranAyah(pageBounds[2], pageBounds[3]);
     }
     else if (RepeatInfo.RepeatAmount == RepeatAmount.Surah)
     {
         int surah    = FirstAyah.Surah;
         int lastAyah = QuranUtils.GetSurahNumberOfAyah(surah);
         FirstAyah = new QuranAyah(surah, 1);
         LastAyah  = new QuranAyah(surah, lastAyah);
     }
     else if (RepeatInfo.RepeatAmount == RepeatAmount.Rub)
     {
         var rub = QuranUtils.GetRub3FromAyah(FirstAyah.Surah, FirstAyah.Ayah);
         FirstAyah = QuranUtils.GetRub3FirstAyah(rub);
         LastAyah  = QuranUtils.GetRub3LastAyah(rub);
     }
     else if (RepeatInfo.RepeatAmount == RepeatAmount.Juz)
     {
         var juz = QuranUtils.GetJuzFromAyah(FirstAyah.Surah, FirstAyah.Ayah);
         FirstAyah = QuranUtils.GetJuzFirstAyah(juz);
         LastAyah  = QuranUtils.GetJuzLastAyah(juz);
     }
 }
Exemplo n.º 3
0
 public static void Generate()
 {
     using (var adapter = new BookmarksDatabaseHandler())
     {
         var tagId = adapter.AddTag(Resources.dua);
         foreach (int[] dua in quran_dua)
         {
             var p  = QuranUtils.GetPageFromAyah(dua[0], dua[1]);
             var id = adapter.AddBookmarkIfNotExists(dua[0], dua[1], p);
             if (!adapter.IsTagged(id))
             {
                 adapter.TagBookmark(id, tagId);
             }
         }
     }
 }
Exemplo n.º 4
0
 private void ContentDialog_PrimaryButtonClick(ContentDialog sender, ContentDialogButtonClickEventArgs args)
 {
     if (!string.IsNullOrEmpty(tbPageNumber.Text))
     {
         int page = 0;
         if (int.TryParse(tbPageNumber.Text, NumberStyles.Integer,
                          CultureInfo.InvariantCulture, out page))
         {
             Page = page;
         }
     }
     else if (cbSurahs.SelectedIndex >= 0)
     {
         var ayah  = cbAyah.SelectedIndex + 1;
         var surah = cbSurahs.SelectedIndex + 1;
         Ayah = new QuranAyah(surah, ayah);
         Page = QuranUtils.GetPageFromAyah(Ayah);
     }
 }
Exemplo n.º 5
0
        private async Task UpdateSelectedAyah(QuranAyah ayahInfo)
        {
            if (ayahInfo == null)
            {
                canvas.Children.Clear();
            }
            else
            {
                try
                {
                    if (PageNumber != QuranUtils.GetPageFromAyah(ayahInfo))
                    {
                        return;
                    }

                    var ayahDb = await QuranApp.GetAyahInfoDatabase();

                    if (ayahDb != null)
                    {
                        int offsetToScrollTo = 0;
                        var bounds           = ayahDb.GetVerseBoundsCombined(ayahInfo.Surah, ayahInfo.Ayah);
                        if (bounds == null)
                        {
                            return;
                        }

                        // Wait for image to load
                        await _imageLoaded.WaitAsync();

                        // Reset any overlays
                        canvas.Children.Clear();
                        canvas.Opacity = 1.0;

                        foreach (var bound in bounds)
                        {
                            drawAyahBound(bound);
                            if (offsetToScrollTo == 0)
                            {
                                offsetToScrollTo = bound.MinY;
                            }
                        }

                        var adjustedScrollPoint = adjustPointRevert(new Point(1, offsetToScrollTo), LayoutRoot.ActualWidth);
                        LayoutRoot.ScrollToVerticalOffset(adjustedScrollPoint.Y); //Adjusting for ViewBox offset
                        if (QuranApp.DetailsViewModel.AudioPlayerState == AudioState.Playing)
                        {
                            canvasStoryboard.Seek(new TimeSpan(1));
                            canvasStoryboard.Stop();
                        }
                        else
                        {
                            canvasStoryboard.Begin();
                        }
                    }
                }
                catch (Exception ex)
                {
                    telemetry.TrackException(ex, new Dictionary <string, string> {
                        { "Scenario", "UpdateSelectedAyahInImage" }
                    });
                }
            }
        }
Exemplo n.º 6
0
        public async void Load(string query)
        {
            if (this.IsLoading)
            {
                return;
            }

            this.IsLoading = true;
            var translation = SettingsUtils.Get <string>(Constants.PREF_ACTIVE_TRANSLATION);

            if (!string.IsNullOrEmpty(translation))
            {
                var translationFile = translation.Split('|')[0];

                try
                {
                    var translationVerses = new List <QuranAyah>();
                    var arabicVerses      = new List <ArabicAyah>();
                    var taskFactory       = new TaskFactory();

                    if (await FileUtils.FileExists(FileUtils.DatabaseFolder, translationFile))
                    {
                        using (var db = new QuranDatabaseHandler <QuranAyah>(Path.Combine(FileUtils.GetQuranDatabaseDirectory(), translationFile)))
                        {
                            translationVerses = await taskFactory.StartNew(() => db.Search(query));
                        }
                    }
                    using (var dbArabic = new QuranDatabaseHandler <ArabicAyah>(FileUtils.ArabicDatabase))
                    {
                        arabicVerses = await taskFactory.StartNew(() => dbArabic.Search(query));
                    }
                    this.SearchResults.Clear();

                    // Merging 2 results
                    int a           = 0;
                    int t           = 0;
                    var arabicVerse = new QuranAyah {
                        Surah = int.MaxValue, Ayah = int.MaxValue
                    };
                    var translationVerse = new QuranAyah {
                        Surah = int.MaxValue, Ayah = int.MaxValue
                    };
                    var verseToDisplay = new QuranAyah();
                    var comparer       = new AyahComparer();

                    while (a < arabicVerses.Count || t < translationVerses.Count)
                    {
                        if (a < arabicVerses.Count)
                        {
                            arabicVerse = arabicVerses[a];
                        }
                        else
                        {
                            arabicVerse = new QuranAyah {
                                Surah = int.MaxValue, Ayah = int.MaxValue
                            }
                        };

                        if (t < translationVerses.Count)
                        {
                            translationVerse = translationVerses[t];
                        }
                        else
                        {
                            translationVerse = new QuranAyah {
                                Surah = int.MaxValue, Ayah = int.MaxValue
                            }
                        };

                        if (comparer.Compare(arabicVerse, translationVerse) > 0)
                        {
                            verseToDisplay = translationVerse;
                            t++;
                        }
                        else if (comparer.Compare(arabicVerse, translationVerse) < 0)
                        {
                            verseToDisplay = arabicVerse;
                            a++;
                        }
                        else if (comparer.Compare(arabicVerse, translationVerse) == 0)
                        {
                            verseToDisplay = arabicVerse;
                            a++;
                            t++;
                        }

                        var verse = verseToDisplay;
                        var text  = TrimText(verse.Text, MaxPreviewCharacter);
                        this.SearchResults.Add(new ItemViewModel
                        {
                            Id =
                                string.Format("{0} ({1}:{2})", QuranUtils.GetSurahName(verse.Surah, false), verse.Surah,
                                              verse.Ayah),
                            Details      = text,
                            PageNumber   = QuranUtils.GetPageFromAyah(verse.Surah, verse.Ayah),
                            SelectedAyah = new QuranAyah(verse.Surah, verse.Ayah)
                        });
                    }
                    return;
                }
                catch (Exception ex)
                {
                    telemetry.TrackException(ex, new Dictionary <string, string> {
                        { "Scenario", "LoadingTranslations" }
                    });
                    this.SearchResults.Add(new ItemViewModel
                    {
                        Id           = "Error",
                        Details      = "Error performing translation",
                        PageNumber   = 1,
                        SelectedAyah = new QuranAyah()
                    });
                }
                finally
                {
                    IsLoading = false;
                }
            }
            await QuranApp.NativeProvider.ShowInfoMessageBox(Resources.no_translation_to_search);
        }
Exemplo n.º 7
0
        public async Task UpdateAudioState()
        {
            if (QuranApp.NativeProvider.AudioProvider.State == AudioPlayerPlayState.Stopped ||
                QuranApp.NativeProvider.AudioProvider.State == AudioPlayerPlayState.Closed ||
                QuranApp.NativeProvider.AudioProvider.State == AudioPlayerPlayState.Buffering)
            {
                await Task.Delay(500);

                // Check if still stopped
                if (QuranApp.NativeProvider.AudioProvider.State == AudioPlayerPlayState.Stopped ||
                    QuranApp.NativeProvider.AudioProvider.State == AudioPlayerPlayState.Closed ||
                    QuranApp.NativeProvider.AudioProvider.State == AudioPlayerPlayState.Buffering)
                {
                    AudioPlayerState = AudioState.Stopped;
                }
            }
            else if (QuranApp.NativeProvider.AudioProvider.State == AudioPlayerPlayState.Paused)
            {
                AudioPlayerState = AudioState.Paused;
            }
            else if (QuranApp.NativeProvider.AudioProvider.State == AudioPlayerPlayState.Playing)
            {
                AudioPlayerState = AudioState.Playing;
            }

            if (QuranApp.NativeProvider.AudioProvider.State == AudioPlayerPlayState.Opening ||
                QuranApp.NativeProvider.AudioProvider.State == AudioPlayerPlayState.Buffering)
            {
                IsLoadingAudio = true;
            }
            else
            {
                IsLoadingAudio = false;
            }

            try
            {
                if (QuranApp.NativeProvider.AudioProvider.CurrentTrack != null)
                {
                    var requestAyah  = QuranApp.NativeProvider.AudioProvider.CurrentTrack.GetQuranAyah();
                    var pageNumber   = QuranUtils.GetPageFromAyah(requestAyah);
                    var oldPageIndex = CurrentPageIndex;
                    var newPageIndex = GetIndexFromPageNumber(pageNumber);

                    CurrentPageIndex = newPageIndex;
                    if (oldPageIndex != newPageIndex)
                    {
                        await Task.Delay(500);
                    }
                    // If bismillah set to first ayah
                    if (requestAyah.Ayah == 0)
                    {
                        requestAyah.Ayah = 1;
                    }
                    SelectedAyah = requestAyah;
                }
                else
                {
                    SelectedAyah = null;
                }
            }
            catch (Exception ex)
            {
                await QuranApp.NativeProvider.ShowErrorMessageBox(ex.Message);

                telemetry.TrackException(ex, new Dictionary <string, string> {
                    { "Scenario", "UpdateAudioStateInViewModel" }
                });
            }
        }