showErrorToast() public static method

public static showErrorToast ( string message ) : void
message string
return void
Ejemplo n.º 1
0
        void wc_DownloadOPMLCompleted(object sender, DownloadStringCompletedEventArgs e)
        {
            if (e.Error != null)
            {
                App.showErrorToast("Cannot fetch OPML from that location.");

                SubscriptionManagerArgs args = new SubscriptionManagerArgs();
                args.message = "Cannot fetch OPML from that location.";
                OnPodcastChannelAddFinishedWithError(this, args);
                return;
            }

            String     opml          = e.Result as String;
            List <Uri> subscriptions = PodcastFactory.podcastUrlFromOPMLImport(opml);

            if (subscriptions == null ||
                subscriptions.Count < 1)
            {
                App.showNotificationToast("No subscriptions to import.");

                SubscriptionManagerArgs args = new SubscriptionManagerArgs();
                args.message = "No podcasts to import.";
                OnPodcastChannelAddFinishedWithError(this, args);
                return;
            }

            foreach (Uri subscription in subscriptions)
            {
                addSubscriptionFromURL(subscription.ToString(), true);
            }
        }
Ejemplo n.º 2
0
        private void updatePlayerPosition()
        {
            TimeSpan position = TimeSpan.Zero;

            settingSliderFromPlay = true;

            try
            {
                if ((BackgroundAudioPlayer.Instance.PlayerState != PlayState.Playing || BackgroundAudioPlayer.Instance.PlayerState != PlayState.Paused) &&
                    (BackgroundAudioPlayer.Instance.Track == null ||
                     BackgroundAudioPlayer.Instance.Position == null))
                {
                    settingSliderFromPlay = false;
                    return;
                }

                position = BackgroundAudioPlayer.Instance.Position;

                CurrentPositionText.Text = position.ToString("hh\\:mm\\:ss");
                TotalDurationText.Text   = BackgroundAudioPlayer.Instance.Track.Duration.ToString("hh\\:mm\\:ss");
                PositionSlider.Value     = getEpisodePlayPosition();
            }
            catch (InvalidOperationException ioe)
            {
                Debug.WriteLine("Error when updating player: " + ioe.Message);
            }
            catch (SystemException syse)
            {
                Debug.WriteLine("Error when updating player: " + syse.Message);
                App.showErrorToast("WP8 cannot play from this location.");
                PlaybackStopped();
            }

            settingSliderFromPlay = false;
        }
Ejemplo n.º 3
0
 private void playButtonClicked(object sender, System.Windows.Input.GestureEventArgs e)
 {
     if (BackgroundAudioPlayer.Instance.PlayerState == PlayState.Playing)
     {
         BackgroundAudioPlayer.Instance.Pause();
         setupUIForEpisodePaused();
     }
     else if (BackgroundAudioPlayer.Instance.Track != null)
     {
         BackgroundAudioPlayer.Instance.Play();
         setupUIForEpisodePlaying();
     }
     else
     {
         Debug.WriteLine("No track currently set. Trying to setup currently playing episode as track...");
         PodcastEpisodeModel ep = PodcastPlaybackManager.getInstance().CurrentlyPlayingEpisode;
         if (ep != null)
         {
             PodcastPlaybackManager.getInstance().play(ep);
         }
         else
         {
             Debug.WriteLine("Error: No currently playing track either! Giving up...");
             App.showErrorToast("Something went wrong. Cannot play the track.");
             showNoPlayerLayout();
         }
     }
 }
Ejemplo n.º 4
0
        private void startPlayback(PodcastEpisodeModel episode, TimeSpan position, bool streamEpisode = false)
        {
            AudioTrack playTrack = null;

            if (streamEpisode)
            {
                playTrack = getAudioStreamForEpisode(episode);
            }
            else
            {
                playTrack = getAudioTrackForEpisode(episode);
            }

            if (playTrack == null)
            {
                App.showErrorToast("Cannot play the episode.");
                return;
            }


            try
            {
//                BackgroundAudioPlayer.Instance.PlayStateChanged -= new EventHandler(PlayStateChanged);
//                BackgroundAudioPlayer.Instance.PlayStateChanged += new EventHandler(PlayStateChanged);
                BackgroundAudioPlayer.Instance.Track  = playTrack;
                BackgroundAudioPlayer.Instance.Volume = 1.0;

                PlayButtonImage.Source = m_pauseButtonBitmap;

                // This should really be on the other side of BackgroundAudioPlayer.Instance.Position
                // then for some reason it's not honored.
                BackgroundAudioPlayer.Instance.Play();

                if (position.Ticks > 0)
                {
                    BackgroundAudioPlayer.Instance.Position = new TimeSpan(position.Ticks);
                }
            }
            catch (Exception)
            {
                Debug.WriteLine("I've read from Microsoft that something stupid can happen if you try to start " +
                                "playing and there's a YouTube video playing. This this try-catch is really just " +
                                "to guard against Microsoft's bug.");
            }
        }
Ejemplo n.º 5
0
        public void addSubscriptionFromOPMLFile(string opmlFileUrl)
        {
            Uri uri = null;

            bool valid = Uri.TryCreate(opmlFileUrl, System.UriKind.Absolute, out uri);

            if (!valid)
            {
                App.showErrorToast("Cannot fetch OPML from that location.");
                return;
            }

            MessageBox.Show("A blank screen may appear for a longer period of time. Please wait until the import has completed and do not exit the app.");

            WebClient wc = new WebClient();

            wc.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wc_DownloadOPMLCompleted);
            wc.DownloadStringAsync(uri);

            OnPodcastChannelAddStarted(this, null);
        }
Ejemplo n.º 6
0
        public void playEpisode(PodcastEpisodeModel episodeModel)
        {
            Debug.WriteLine("Starting playback for episode: " + episodeModel.EpisodeName);

            if (PodcastPlaybackManager.isAudioPodcast(episodeModel))
            {
                try
                {
                    audioPlayback(episodeModel);
                }
                catch (FileNotFoundException e)
                {
                    Console.WriteLine("Error: File not found. " + e.Message);
                    App.showErrorToast("Cannot find episode.");
                }
            }
            else
            {
                videoPlayback(episodeModel);
            }
        }
Ejemplo n.º 7
0
        internal void playEpisode(PodcastEpisodeModel episodeModel)
        {
            Debug.WriteLine("Starting playback for episode: " + episodeModel.EpisodeName);

            if (PodcastPlaybackManager.isAudioPodcast(episodeModel))
            {
                try
                {
                    audioPlayback(episodeModel);
                    setupUIForEpisodePlaying();
                }
                catch (FileNotFoundException e)
                {
                    Console.WriteLine("Error: File not found. " + e.Message);
                    App.showErrorToast("Cannot find episode.");
                    showNoPlayerLayout();
                }
            }
            else
            {
                PlaybackStopped();
                videoPlayback(episodeModel);
            }
        }
Ejemplo n.º 8
0
 private void playButtonClicked(object sender, EventArgs e)
 {
     if (BackgroundAudioPlayer.Instance.PlayerState == PlayState.Playing)
     {
         // Paused
         BackgroundAudioPlayer.Instance.Pause();
         // PodcastPlayer.setupUIForEpisodePaused();
         //       PlayButtonImage.Source = m_playButtonBitmap;
         (this.ApplicationBar.Buttons[1] as ApplicationBarIconButton).IconUri = new Uri("/Images/Light/play.png", UriKind.Relative);
         (this.ApplicationBar.Buttons[1] as ApplicationBarIconButton).Text    = "Play";
     }
     else if (BackgroundAudioPlayer.Instance.Track != null)
     {
         // Playing
         BackgroundAudioPlayer.Instance.Play();
         // PodcastPlayer.setupUIForEpisodePlaying();
         //            PlayButtonImage.Source = m_pauseButtonBitmap;
         (this.ApplicationBar.Buttons[1] as ApplicationBarIconButton).IconUri = new Uri("/Images/Light/pause.png", UriKind.Relative);
         (this.ApplicationBar.Buttons[1] as ApplicationBarIconButton).Text    = "Pause";
     }
     else
     {
         Debug.WriteLine("No track currently set. Trying to setup currently playing episode as track...");
         PodcastEpisodeModel ep = PodcastPlaybackManager.getInstance().CurrentlyPlayingEpisode;
         if (ep != null)
         {
             PodcastPlaybackManager.getInstance().play(ep);
         }
         else
         {
             Debug.WriteLine("Error: No currently playing track either! Giving up...");
             App.showErrorToast("Something went wrong. Cannot play the track.");
             //   PodcastPlayer.showNoPlayerLayout();
         }
     }
 }
Ejemplo n.º 9
0
        private void completePodcastDownload(BackgroundTransferRequest transferRequest)
        {
            // If the status code of a completed transfer is 200 or 206, the
            // transfer was successful
            if (transferRequest.TransferError == null &&
                (transferRequest.StatusCode == 200 || transferRequest.StatusCode == 206))
            {
                Debug.WriteLine("Transfer request completed succesfully.");
                updateEpisodeWhenDownloaded(m_currentEpisodeDownload);

                // Add downloaded episode to play queue, if set.
                using (var db = new PodcastSqlModel())
                {
                    if (db.settings().IsAddDownloadsToPlayQueue)
                    {
                        PodcastPlaybackManager.getInstance().addSilentlyToPlayqueue(m_currentEpisodeDownload);
                    }
                }
            }
            else
            {
                Debug.WriteLine("Transfer request completed with error code: " + transferRequest.StatusCode + ", " + transferRequest.TransferError);
                switch (transferRequest.StatusCode)
                {
                case 0:
                    Debug.WriteLine("Request canceled.");
                    break;

                // If error code is 200 but we still got an error, this means the max. transfer size exceeded.
                // This is because the podcast feed announced a different download size than what the file actually is.
                // If user wants, we can try again with larger file download size policy.
                case 200:
                    Debug.WriteLine("Maxiumum download size exceeded. Shall we try again?");

                    if (MessageBox.Show("Podcast feed announced wrong file size. Do you want to download again with larger file download settings?",
                                        "Podcast download failed",
                                        MessageBoxButton.OKCancel) == MessageBoxResult.OK)
                    {
                        if (MessageBox.Show("Please connect your phone to an external power source and to a WiFi network.",
                                            "Attention",
                                            MessageBoxButton.OK) == MessageBoxResult.OK)
                        {
                            Debug.WriteLine("Download the same episode again, with preferences None.");

                            // We download the same file again, but this time we force the TransferPrefernces to be None.
                            startNextEpisodeDownload(TransferPreferences.None);
                            return;
                        }
                    }
                    break;

                case 301:
                    App.showErrorToast("WP8 cannot download from this location.");
                    break;

                default:
                    App.showErrorToast("Could not download the episode\nfrom the server.");
                    break;
                }


                if (m_currentEpisodeDownload != null)
                {
                    m_currentEpisodeDownload.EpisodeDownloadState = PodcastEpisodeModel.EpisodeDownloadStateEnum.Idle;
                    m_currentEpisodeDownload.deleteDownloadedEpisode();
                }
            }

            saveEpisodeInfoToDB(m_currentEpisodeDownload);
            cleanupEpisodeDownload(transferRequest);
            // And start a next round of downloading.
            startNextEpisodeDownload();
        }
Ejemplo n.º 10
0
        private void startNextEpisodeDownload(TransferPreferences useTransferPreferences = TransferPreferences.AllowCellularAndBattery)
        {
            if (BackgroundTransferService.Requests.Count() > 0)
            {
                // For some reason there are still old requests in the background transfer service.
                // Let's clean everything and start over.
                foreach (BackgroundTransferRequest t in BackgroundTransferService.Requests.AsEnumerable())
                {
                    BackgroundTransferService.Remove(t);
                }
            }

            if (m_episodeDownloadQueue.Count > 0)
            {
                m_currentEpisodeDownload = m_episodeDownloadQueue.Peek();
                Uri downloadUri;
                try
                {
                    downloadUri = new Uri(m_currentEpisodeDownload.EpisodeDownloadUri, UriKind.Absolute);
                }
                catch (Exception e)
                {
                    App.showErrorToast("Cannot download the episode.");
                    Debug.WriteLine("Cannot download the episode. URI exception: " + e.Message);
                    m_currentEpisodeDownload.EpisodeDownloadState = PodcastEpisodeModel.EpisodeDownloadStateEnum.Idle;
                    m_episodeDownloadQueue.Dequeue();
                    saveEpisodeInfoToDB(m_currentEpisodeDownload);
                    startNextEpisodeDownload();
                    return;
                }

                m_currentEpisodeDownload.EpisodeFile = generateLocalEpisodeFileName(m_currentEpisodeDownload);
                if (string.IsNullOrEmpty(m_currentEpisodeDownload.EpisodeFile))
                {
                    App.showErrorToast("Cannot download the episode.");
                    Debug.WriteLine("Cannot download the episode. Episode file name is null or empty.");
                    m_currentEpisodeDownload.EpisodeDownloadState = PodcastEpisodeModel.EpisodeDownloadStateEnum.Idle;
                    m_episodeDownloadQueue.Dequeue();
                    saveEpisodeInfoToDB(m_currentEpisodeDownload);
                    startNextEpisodeDownload();
                    return;
                }

                // Create a new background transfer request for the podcast episode download.
                m_currentBackgroundTransfer = new BackgroundTransferRequest(downloadUri,
                                                                            new Uri(m_currentEpisodeDownload.EpisodeFile, UriKind.Relative));
                if (useTransferPreferences == TransferPreferences.None)
                {
                    m_currentBackgroundTransfer.TransferPreferences = TransferPreferences.None;
                }
                else if (canAllowCellularDownload(m_currentEpisodeDownload))
                {
                    bool settingsAllowCellular = false;
                    using (var db = new PodcastSqlModel())
                    {
                        settingsAllowCellular = db.settings().IsUseCellularData;
                    }

                    Debug.WriteLine("Settings: Allow cellular download: " + settingsAllowCellular);

                    if (settingsAllowCellular && canDownloadOverCellular())
                    {
                        m_currentBackgroundTransfer.TransferPreferences = TransferPreferences.AllowCellularAndBattery;
                    }
                    else
                    {
                        m_currentBackgroundTransfer.TransferPreferences = TransferPreferences.AllowBattery;
                    }
                }
                else
                {
                    m_currentBackgroundTransfer.TransferPreferences = TransferPreferences.None;
                }

                Debug.WriteLine("m_currentBackgroundTransfer.TransferPreferences = " + m_currentBackgroundTransfer.TransferPreferences.ToString());

                m_currentBackgroundTransfer.TransferStatusChanged += new EventHandler <BackgroundTransferEventArgs>(backgroundTransferStatusChanged);

                // Store request to the episode.
                m_currentEpisodeDownload.DownloadRequest = m_currentBackgroundTransfer;

                m_applicationSettings.Remove(App.LSKEY_PODCAST_EPISODE_DOWNLOADING_ID);
                m_applicationSettings.Add(App.LSKEY_PODCAST_EPISODE_DOWNLOADING_ID, m_currentEpisodeDownload.EpisodeId);
                m_applicationSettings.Save();

                try
                {
                    BackgroundTransferService.Add(m_currentBackgroundTransfer);
                }
                catch (InvalidOperationException)
                {
                    foreach (BackgroundTransferRequest r in BackgroundTransferService.Requests)
                    {
                        BackgroundTransferService.Remove(r);
                    }

                    BackgroundTransferService.Add(m_currentBackgroundTransfer);
                }
            }
        }