示例#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
                });
            }
        }
示例#2
0
        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);
            }
        }
示例#3
0
        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);
            }
        }
示例#4
0
        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);
        }
示例#5
0
        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);
                }
            }
        }
示例#6
0
 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());
 }
示例#7
0
 public void GotoNextAyah()
 {
     CurrentAyah = QuranUtils.GetNextAyah(CurrentAyah, true);
     if (repeatManager.ShouldRepeat())
     {
         if (CurrentAyah > repeatManager.LastAyah)
         {
             CurrentAyah = repeatManager.FirstAyah;
             repeatManager.IncrementCounter();
         }
     }
 }
示例#8
0
 public void GotoPreviousAyah()
 {
     CurrentAyah = QuranUtils.GetPreviousAyah(CurrentAyah, true);
     if (repeatManager.ShouldRepeat() && !QuranUtils.IsBismillah(CurrentAyah))
     {
         if (CurrentAyah < repeatManager.FirstAyah)
         {
             CurrentAyah = repeatManager.LastAyah;
             repeatManager.DecrementCounter();
         }
     }
 }
示例#9
0
 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;
     }
 }
示例#10
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);
     }
 }
示例#11
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);
             }
         }
     }
 }
示例#12
0
 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)
         });
     }
 }
示例#13
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);
     }
 }
示例#14
0
        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);
            }
        }
示例#15
0
        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());
        }
示例#16
0
        /// <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;
        }
示例#17
0
        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));
        }
示例#18
0
        public void GetJuzLastAyahWorks(int[] expectedResult, int juz)
        {
            var result = QuranUtils.GetJuzLastAyah(juz);

            Assert.Equal(new QuranAyah(expectedResult[2], expectedResult[3]), result);
        }
示例#19
0
        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);
        }
示例#20
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);
        }
示例#21
0
 public void GetSuraPagesWorksForGoodArguments()
 {
     Assert.Equal(7, QuranUtils.GetSurahNumberOfAyah(1));
     Assert.Equal(6, QuranUtils.GetSurahNumberOfAyah(114));
 }
示例#22
0
        public void GetRubBoundsWorks(int[] expectedResult, int rub)
        {
            var result = QuranUtils.GetRub3Bounds(rub);

            Assert.Equal(expectedResult, result);
        }
示例#23
0
 public void GetSuraPagesWorksForBadArguments()
 {
     Assert.Equal(-1, QuranUtils.GetSurahNumberOfAyah(0));
     Assert.Equal(-1, QuranUtils.GetSurahNumberOfAyah(10000));
 }
示例#24
0
        public void GetJuzBoundsWorks(int[] expectedResult, int juz)
        {
            var result = QuranUtils.GetJuzBounds(juz);

            Assert.Equal(expectedResult, result);
        }
示例#25
0
        public void IsValidWorks(bool expectedResult, int sura, int aya)
        {
            var suraAyah = new QuranAyah(sura, aya);

            Assert.Equal(expectedResult, QuranUtils.IsValid(suraAyah));
        }
示例#26
0
        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
                });
            }
        }
示例#27
0
        public void GetRubFromAyahWorks(int[] ayah, int expectedRub)
        {
            var result = QuranUtils.GetRub3FromAyah(ayah[0], ayah[1]);

            Assert.Equal(expectedRub, result);
        }
示例#28
0
 public QuranAudioTrack GetPrevious()
 {
     return(new QuranAudioTrack(ReciterId,
                                QuranUtils.GetPreviousAyah(GetQuranAyah(), true),
                                ScreenInfo));
 }
示例#29
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" }
                    });
                }
            }
        }
示例#30
0
 public QuranAudioTrack GetLastAyah()
 {
     return(new QuranAudioTrack(ReciterId,
                                new QuranAyah(Surah, QuranUtils.GetSurahNumberOfAyah(Surah)),
                                ScreenInfo));
 }