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 }); } }
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); } }
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); } } } }
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); } }
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" } }); } } }
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); }
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" } }); } }