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 async Task LoadCurrentPage() { await LoadPage(CurrentPage); if (CurrentPageIndex - 1 > 0) { LoadPage(Pages[CurrentPageIndex - 1]); } if (CurrentPageIndex + 1 < Pages.Count) { LoadPage(Pages[CurrentPageIndex + 1]); } var pageNumber = GetPageNumberFromIndex(CurrentPageIndex); CurrentSurahName = QuranUtils.GetSurahNameFromPage(pageNumber, false); CurrentSurahNumber = QuranUtils.GetSurahNumberFromPage(pageNumber); var rub = QuranUtils.GetRub3FromPage(pageNumber); CurrentJuzName = string.Format("{0} {1}{2} {3} {4}", QuranUtils.GetJuzTitle(), QuranUtils.GetJuzFromPage(pageNumber), getJuzPart(rub), Resources.quran_rub3, rub + 1); CurrentPageBookmarked = BookmarksDatabaseHandler.IsPageBookmarked(CurrentPageNumber); if (!IsLoading) { SettingsUtils.Set <int>(Constants.PREF_LAST_PAGE, pageNumber); } }
public async Task Play() { if (QuranApp.NativeProvider.AudioProvider.State == AudioPlayerPlayState.Playing) { // Do nothing return; } else if (QuranApp.NativeProvider.AudioProvider.State == AudioPlayerPlayState.Paused) { QuranApp.NativeProvider.AudioProvider.Play(); return; } else { var bounds = QuranUtils.GetPageBounds(CurrentPageNumber); QuranAyah ayah = new QuranAyah { Surah = bounds[0], Ayah = bounds[1] }; if (ayah.Ayah == 1 && ayah.Surah != Constants.SURA_TAWBA && ayah.Surah != Constants.SURA_FIRST) { ayah.Ayah = 0; } await PlayFromAyah(ayah); } }
private static QuranAyah GetLastAyahFromAyahCount(QuranAyah firstAyah, int count) { var currentAyah = firstAyah; for (int i = 1; i < count; i++) { currentAyah = QuranUtils.GetNextAyah(currentAyah, false); } return(currentAyah); }
private async Task LoadBookmarkList() { Bookmarks.Clear(); var lastPage = SettingsUtils.Get <int>(Constants.PREF_LAST_PAGE); if (lastPage > 0) { var lastPageItem = new ItemViewModel(); lastPageItem.Title = QuranUtils.GetSurahNameFromPage(lastPage, true); lastPageItem.Details = string.Format("{0} {1}, {2} {3}", Resources.quran_page, lastPage, QuranUtils.GetJuzTitle(), QuranUtils.GetJuzFromPage(lastPage)); lastPageItem.PageNumber = lastPage; lastPageItem.Image = new BitmapImage(new Uri("ms-appx:///Assets/Images/favorite.png")); lastPageItem.ItemType = ItemViewModelType.Bookmark; lastPageItem.Group = Resources.bookmarks_current_page; lastPageItem.Id = lastPageItem.Group; Bookmarks.Add(lastPageItem); } using (var bookmarksAdapter = new BookmarksDatabaseHandler()) { try { var bookmarks = bookmarksAdapter.GetBookmarks(true, BoomarkSortOrder.Location); if (bookmarks.Count > 0) { //Load untagged first foreach (var bookmark in bookmarks) { if (bookmark.Tags == null) { Bookmarks.Add(await CreateBookmarkModel(bookmark)); } } //Load tagged foreach (var bookmark in bookmarks) { if (bookmark.Tags != null) { Bookmarks.Add(await CreateBookmarkModel(bookmark)); } } } } catch (Exception ex) { telemetry.TrackException(ex, new Dictionary <string, string> { { "Scenario", "LoadingBookmarks" } }); QuranApp.NativeProvider.Log("failed to load bookmarks: " + ex.Message); } } }
public override Task Initialize() { for (int i = 1; i < Constants.SURAS_COUNT; i++) { Surahs.Add(new AudioSurahViewModel(Reciter, i) { SurahName = QuranUtils.GetSurahName(i, true) }); } return(Refresh()); }
public void GotoNextAyah() { CurrentAyah = QuranUtils.GetNextAyah(CurrentAyah, true); if (repeatManager.ShouldRepeat()) { if (CurrentAyah > repeatManager.LastAyah) { CurrentAyah = repeatManager.FirstAyah; repeatManager.IncrementCounter(); } } }
public void GotoPreviousAyah() { CurrentAyah = QuranUtils.GetPreviousAyah(CurrentAyah, true); if (repeatManager.ShouldRepeat() && !QuranUtils.IsBismillah(CurrentAyah)) { if (CurrentAyah < repeatManager.FirstAyah) { CurrentAyah = repeatManager.LastAyah; repeatManager.DecrementCounter(); } } }
private void SyrahSelectionChanged(object sender, SelectionChangedEventArgs e) { if (cbSurahs.SelectedItem != null) { tbPageNumber.Text = ""; cbAyah.Items.Clear(); for (int i = 1; i <= QuranUtils.GetSurahNumberOfAyah(cbSurahs.SelectedIndex + 1); i++) { cbAyah.Items.Add(i.ToString(CultureInfo.InvariantCulture)); } cbAyah.SelectedIndex = 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); } }
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 LoadSuraList() { for (int surah = 1; surah <= Constants.SURAS_COUNT; surah++) { string title = QuranUtils.GetSurahName(surah, true); Surahs.Add(new ItemViewModel { Id = surah.ToString(CultureInfo.InvariantCulture), Title = title, Details = QuranUtils.GetSuraListMetaString(surah), PageNumber = QuranUtils.SURA_PAGE_START[surah - 1], ItemType = ItemViewModelType.Surah, Group = QuranUtils.GetJuzTitle() + " " + QuranUtils.GetJuzFromAyah(surah, 1) }); } }
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 LoadCurrentPage() { var tempCurrentPageIndex = CurrentPageIndex; var _currentPage = GetPageFromIndex(tempCurrentPageIndex); if (_currentPage == null) { return; } await _currentPage.Load(this.TranslationFile, _bismillahTranslation); var pageNumber = GetPageNumberFromIndex(tempCurrentPageIndex); CurrentSurahName = QuranUtils.GetSurahNameFromPage(pageNumber, false); CurrentSurahNumber = QuranUtils.GetSurahNumberFromPage(pageNumber); var rub = QuranUtils.GetRub3FromPage(pageNumber); CurrentJuzName = string.Format("{0} {1}{2} {3} {4}", QuranUtils.GetJuzTitle(), QuranUtils.GetJuzFromPage(pageNumber), getJuzPart(rub), Resources.quran_rub3, rub + 1); CurrentPageBookmarked = BookmarksDatabaseHandler.IsPageBookmarked(pageNumber); // Load previous and next pages var _previousPage = GetPageFromIndex(tempCurrentPageIndex - 1); if (_previousPage != null) { await _previousPage.Load(this.TranslationFile, _bismillahTranslation); } var _nextPage = GetPageFromIndex(tempCurrentPageIndex + 1); if (_nextPage != null) { await _nextPage.Load(this.TranslationFile, _bismillahTranslation); } if (!IsLoading) { SettingsUtils.Set <int>(Constants.PREF_LAST_PAGE, pageNumber); } }
public override Task Initialize() { for (int i = 1; i < Constants.SURAS_COUNT; i++) { AudioSurahViewModel surah; surah = AudioDownloadCacheUtils.GetSurahViewModel(Reciter, i); if (surah == null) { surah = new AudioSurahViewModel(Reciter, i) { SurahName = QuranUtils.GetSurahName(i, true) }; } Surahs.Add(surah); } return(Refresh()); }
/// <summary> /// Create a playback list from the list of songs received from the foreground app. /// </summary> /// <param name="songs"></param> private async Task CreatePlaybackList(QuranAudioTrack newTrack) { BackgroundMediaPlayer.Current.Pause(); // Make a new list if (_playbackList != null) { _playbackList.CurrentItemChanged -= PlaybackListCurrentItemChanged; _playbackList.Items.Clear(); } else { _playbackList = new MediaPlaybackList(); } // Initialize FileUtils await FileUtils.Initialize(newTrack.ScreenInfo); var missingFiles = await AudioUtils.GetMissingFiles(newTrack); // Add playback items to the list QuranAudioTrack nextTrack = newTrack.GetFirstAyah(); var reciter = nextTrack.GetReciter(); while (nextTrack != null) { string fileName = AudioUtils.GetFileName(nextTrack.GetQuranAyah(), reciter); MediaSource source; if (missingFiles.Contains(fileName)) { source = MediaSource.CreateFromUri(new Uri(Path.Combine(reciter.ServerUrl, fileName))); } else { var file = await FileUtils.GetFile(await reciter.GetStorageFolder(), fileName); if (file != null) { source = MediaSource.CreateFromStorageFile(file); //source = MediaSource.CreateFromUri(new Uri(file.Path)); } else { source = MediaSource.CreateFromUri(new Uri(Path.Combine(reciter.ServerUrl, fileName))); } } source.CustomProperties[SurahKey] = nextTrack.Surah; source.CustomProperties[AyahKey] = nextTrack.Ayah; source.CustomProperties[ReciterKey] = nextTrack.ReciterId; source.CustomProperties[QuranTrackKey] = nextTrack.ToString(); source.CustomProperties[TitleKey] = QuranUtils.GetSurahAyahString(nextTrack.Surah, nextTrack.Ayah); _playbackList.Items.Add(new MediaPlaybackItem(source)); nextTrack = nextTrack.GetNextInSurah(); } // Don't auto start BackgroundMediaPlayer.Current.AutoPlay = false; // Assign the list to the player BackgroundMediaPlayer.Current.Source = _playbackList; // Add handler for future playlist item changes _playbackList.CurrentItemChanged += PlaybackListCurrentItemChanged; }
private IEnumerable <KeyValuePair <RepeatAmount, string> > GetSupportedRepeatAmounts() { yield return(new KeyValuePair <RepeatAmount, string>(RepeatAmount.None, Resources.none)); yield return(new KeyValuePair <RepeatAmount, string>(RepeatAmount.OneAyah, "1 " + QuranUtils.GetAyahTitle())); yield return(new KeyValuePair <RepeatAmount, string>(RepeatAmount.ThreeAyah, "3 " + QuranUtils.GetAyahTitle())); yield return(new KeyValuePair <RepeatAmount, string>(RepeatAmount.FiveAyah, "5 " + QuranUtils.GetAyahTitle())); yield return(new KeyValuePair <RepeatAmount, string>(RepeatAmount.TenAyah, "10 " + QuranUtils.GetAyahTitle())); yield return(new KeyValuePair <RepeatAmount, string>(RepeatAmount.Page, Resources.quran_page)); yield return(new KeyValuePair <RepeatAmount, string>(RepeatAmount.Surah, Resources.quran_sura)); yield return(new KeyValuePair <RepeatAmount, string>(RepeatAmount.Rub, Resources.quran_rub3)); yield return(new KeyValuePair <RepeatAmount, string>(RepeatAmount.Juz, Resources.quran_juz2)); }
public void GetJuzLastAyahWorks(int[] expectedResult, int juz) { var result = QuranUtils.GetJuzLastAyah(juz); Assert.Equal(new QuranAyah(expectedResult[2], expectedResult[3]), result); }
public void GetAllAyahReturnsCorrectNumber(int expectedResult, int startSura, int startAya, int endSura, int endAya) { var list = QuranUtils.GetAllAyah(new QuranAyah(startSura, startAya), new QuranAyah(endSura, endAya)); Assert.Equal(expectedResult, list.Count); }
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 void GetSuraPagesWorksForGoodArguments() { Assert.Equal(7, QuranUtils.GetSurahNumberOfAyah(1)); Assert.Equal(6, QuranUtils.GetSurahNumberOfAyah(114)); }
public void GetRubBoundsWorks(int[] expectedResult, int rub) { var result = QuranUtils.GetRub3Bounds(rub); Assert.Equal(expectedResult, result); }
public void GetSuraPagesWorksForBadArguments() { Assert.Equal(-1, QuranUtils.GetSurahNumberOfAyah(0)); Assert.Equal(-1, QuranUtils.GetSurahNumberOfAyah(10000)); }
public void GetJuzBoundsWorks(int[] expectedResult, int juz) { var result = QuranUtils.GetJuzBounds(juz); Assert.Equal(expectedResult, result); }
public void IsValidWorks(bool expectedResult, int sura, int aya) { var suraAyah = new QuranAyah(sura, aya); Assert.Equal(expectedResult, QuranUtils.IsValid(suraAyah)); }
private static async Task <ItemViewModel> CreateBookmarkModel(Bookmarks bookmark) { var group = Resources.bookmarks; if (bookmark.Tags != null && bookmark.Tags.Count > 0) { group = bookmark.Tags[0].Name; } if (bookmark.Ayah != null && bookmark.Surah != null) { string title = QuranUtils.GetSurahNameFromPage(bookmark.Page, true); string details = ""; try { using (var dbArabic = new QuranDatabaseHandler <ArabicAyah>(FileUtils.ArabicDatabase)) { var ayahSurah = await new TaskFactory().StartNew(() => dbArabic.GetVerse(bookmark.Surah.Value, bookmark.Ayah.Value)); title = ayahSurah.Text; } } catch (Exception ex) { telemetry.TrackException(ex, new Dictionary <string, string> { { "Scenario", "OpenArabicDatabase" } }); } details = string.Format(CultureInfo.InvariantCulture, "{0} {1} {2}, {3} {4}", QuranUtils.GetSurahName(bookmark.Surah.Value, true), Resources.verse, bookmark.Ayah.Value, QuranUtils.GetJuzTitle(), QuranUtils.GetJuzFromPage(bookmark.Page)); if (title.Length > maxBookmarkTitle) { for (int i = maxBookmarkTitle; i > 1; i--) { if (title[i] == ' ') { title = title.Substring(0, i - 1); break; } } } return(new ItemViewModel { Id = bookmark.Id.ToString(CultureInfo.InvariantCulture), Title = title, Details = details, PageNumber = bookmark.Page, SelectedAyah = new QuranAyah(bookmark.Surah.Value, bookmark.Ayah.Value), Image = new BitmapImage(new Uri("ms-appx:///Assets/Images/favorite.png")), ItemType = ItemViewModelType.Bookmark, Group = group }); } else { return(new ItemViewModel { Id = bookmark.Id.ToString(CultureInfo.InvariantCulture), Title = QuranUtils.GetSurahNameFromPage(bookmark.Page, true), Details = string.Format(CultureInfo.InvariantCulture, "{0} {1}, {2} {3}", Resources.quran_page, bookmark.Page, QuranUtils.GetJuzTitle(), QuranUtils.GetJuzFromPage(bookmark.Page)), PageNumber = bookmark.Page, Image = new BitmapImage(new Uri("ms-appx:///Assets/Images/favorite.png")), ItemType = ItemViewModelType.Bookmark, Group = group }); } }
public void GetRubFromAyahWorks(int[] ayah, int expectedRub) { var result = QuranUtils.GetRub3FromAyah(ayah[0], ayah[1]); Assert.Equal(expectedRub, result); }
public QuranAudioTrack GetPrevious() { return(new QuranAudioTrack(ReciterId, QuranUtils.GetPreviousAyah(GetQuranAyah(), true), ScreenInfo)); }
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 QuranAudioTrack GetLastAyah() { return(new QuranAudioTrack(ReciterId, new QuranAyah(Surah, QuranUtils.GetSurahNumberOfAyah(Surah)), ScreenInfo)); }