Ejemplo n.º 1
0
        public void InitWithFrame()
        {
            RectangleF frame = new RectangleF(10, 10, 100, 100);

            using (MPVolumeView vv = new MPVolumeView(frame)) {
                Assert.That(vv.Frame, Is.EqualTo(frame), "Frame");
            }
        }
Ejemplo n.º 2
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad ();

            _warningLabel = new UILabel(new RectangleF(20, 30, 280, 20));
            _warningLabel.Text = "This example will only work on device.";
            _warningLabel.Font = UIFont.FromName("GillSans", UIFont.SystemFontSize);
            _warningLabel.TextAlignment = UITextAlignment.Center;

            _volumeView = new MPVolumeView();

            _volumeView.SetStyleId("sample-volume");
            View.SetStyleClass("sample-background");

            View.AddSubview(_warningLabel);
            View.AddSubview(_volumeView);
        }
Ejemplo n.º 3
0
                public BottomView()
                {
                    Add(backgroundBluredView = new BluredView());

                    Add(slider    = new ProgressView());
                    Add(timeLabel = new UILabel {
                        Text = "0000:00", AccessibilityIdentifier = "CurrentTime"
                    }.StyleAsSubText());
                    Add(remainingTimeLabel = new UILabel {
                        Text = "0000:00", AccessibilityIdentifier = "RemainingTime", TextAlignment = UITextAlignment.Right
                    }.StyleAsSubText());
                    timeLabel.SizeToFit();
                    remainingTimeLabel.SizeToFit();

                    Add(labelView = new TwoLabelView
                    {
                        TopLabel    = { TextAlignment = UITextAlignment.Center },
                        BottomLabel = { TextAlignment = UITextAlignment.Center },
                    });
                    labelView.TopLabel.StylePlaybackControl();
                    labelView.BottomLabel.StylePlaybackControl();

                    var buttonFrame = new CGRect(0, 0, 44, 44);

                    Add(thumbsDownButton = new SimpleButton
                    {
                        Image = Images.GetThumbsDownImage(25).ImageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate),
                        Frame = buttonFrame,
                        AccessibilityIdentifier = "ThumbsDown",
                        TintColor = UIColor.Black,
                        Tapped    = async(b) =>
                        {
                            var song = MusicManager.Shared.GetCurrentSong();
                            if (song.Rating != 1)
                            {
                                await MusicManager.Shared.ThumbsDown(song);
                            }
                            else
                            {
                                await MusicManager.Shared.Unrate(song);
                            }
                            SetThumbsState(song);
                        }
                    });
                    Add(thumbsUpButton = new SimpleButton
                    {
                        Image = Images.GetThumbsUpImage(25).ImageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate),
                        Frame = buttonFrame,
                        AccessibilityIdentifier = "ThumbsUp",
                        TintColor = UIColor.Black,
                        Tapped    = async(b) =>
                        {
                            var song = MusicManager.Shared.GetCurrentSong();
                            if (song.Rating != 5)
                            {
                                await MusicManager.Shared.ThumbsUp(song);
                            }
                            else
                            {
                                await MusicManager.Shared.Unrate(song);
                            }
                            SetThumbsState(song);
                        }
                    });
                    Add(previousButton = new SimpleButton
                    {
                        Image = Images.GetPreviousButton(nextbuttonSize),
                        Frame = buttonFrame,
                        AccessibilityIdentifier = "Previous",
                        Tapped = button => PlaybackManager.Shared.Previous(),
                    });
                    Add(playButton = new SimpleButton
                    {
                        Image = Images.GetPlaybackButton(playButtonSize),
                        Frame = buttonFrame,
                        AccessibilityIdentifier = "Play",
                        TintColor = UIColor.Black,
                        Tapped    = (button) => PlaybackManager.Shared.PlayPause()
                    });
                    Add(nextButton = new SimpleButton
                    {
                        Image = Images.GetNextButton(nextbuttonSize),
                        Frame = buttonFrame,
                        AccessibilityIdentifier = "Next",
                        Tapped = (button) => PlaybackManager.Shared.NextTrack()
                    });
                    Add(volumeView = new MPVolumeView());
                    volumeView.SetRouteButtonImage(Images.GetAirplayButton(20), UIControlState.Normal);
                    volumeView.TintColor = Style.DefaultStyle.AccentColor;
                    Add(shareButton      = new SimpleButton
                    {
                        Image = Images.GetShareIcon(18).ImageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate),
                        Frame = buttonFrame,
                        AccessibilityIdentifier = "Share",
                        Tapped  = (b) => ShareSong(),
                        Enabled = false,
                    });
                    Add(shuffleButton = new SimpleButton
                    {
                        Image = Images.GetShuffleImage(18).ImageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate),
                        Frame = buttonFrame,
                        AccessibilityIdentifier = "Shuffle",
                        Tapped = (button) => PlaybackManager.Shared.ToggleRandom(),
                    });
                    Add(repeatButton = new SimpleButton
                    {
                        Image = Images.GetRepeatImage(18).ImageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate),
                        Frame = buttonFrame,
                        AccessibilityIdentifier = "Repeat",
                        Tapped = (button) => PlaybackManager.Shared.ToggleRepeat(),
                    });
                    Add(menuButton = new SimpleButton
                    {
                        Image = Images.DisclosureImage.Value.ImageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate),
                        Frame = buttonFrame,
                        AccessibilityIdentifier = "More",
                        TintColor = UIColor.Black,
                        Tapped    = (b) => { PopupManager.Shared.ShowNowPlaying(b); }
                    });
                }
Ejemplo n.º 4
0
 /// <summary>
 /// Disables the volume HUD.
 /// </summary>
 /// <remarks>>Creates a new MPVolumeView and adds it to the mainwindow in the "off-screen" area. Adding this view suppresses showing the volume HUD</remarks>
 private void disableVolumeHUD()
 {
     _volumeView = new MPVolumeView (new CoreGraphics.CGRect (float.MaxValue, float.MaxValue, 0, 0));
     UIApplication.SharedApplication.Windows [0].AddSubview (_volumeView);
 }
 /// <summary>
 /// Disables the volume HUD.
 /// </summary>
 /// <remarks>>Creates a new MPVolumeView and adds it to the mainwindow in the "off-screen" area. Adding this view suppresses showing the volume HUD</remarks>
 private void disableVolumeHUD()
 {
     _volumeView = new MPVolumeView(new CoreGraphics.CGRect(float.MaxValue, float.MaxValue, 0, 0));
     UIApplication.SharedApplication.Windows[0].AddSubview(_volumeView);
 }
Ejemplo n.º 6
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad ();
            Console.WriteLine ("PBS VDL");
            this.NavigationController.NavigationBar.TintColor = UIColor.FromRGB (237, 152, 0);
            this.NavigationController.NavigationBar.BarTintColor = UIColor.FromRGB (52, 19, 0);

            float sH = UIScreen.MainScreen.Bounds.Height;
            float sW = UIScreen.MainScreen.Bounds.Width;

            var volumeView = new MPVolumeView(new RectangleF(50,sH - 100,200,50));
            volumeView.ShowsVolumeSlider = true;
            volumeView.ShowsRouteButton = true;
            volumeView.TintColor = UIColor.FromRGB (237, 152, 0);
            View.AddSubview (volumeView);

            var volumeUpView = new UIImageView (new RectangleF (260, sH - 104, 26, 26));
            volumeUpView.Image = UIImage.FromFile("volume_up-26.png");
            View.AddSubview (volumeUpView);

            var volumeDownView = new UIImageView (new RectangleF (20, sH - 104, 26, 26));
            volumeDownView.Image = UIImage.FromFile ("volume_down-26.png");
            View.AddSubview (volumeDownView);

            var pickerView = new UIPickerView (new RectangleF (0, sH - 207, sW, 162)); // heigth must be 162, 180, 216
            pickerView.BackgroundColor = UIColor.FromRGB (52, 19, 0);
            pickerView.TintColor = UIColor.FromRGB (237, 152, 0);
            // not adding to the view yet because this is a multipurpose picker and the addition is done per the purpose with the btn delegate

            positionSld.SetThumbImage (UIImage.FromFile ("position.png"), UIControlState.Normal);
            positionSld.MinValue = 0f;

            // disable all the buttons I don't want enabled when not playing
            playPauseBtn.Enabled = false;
            positionSkipBtn.Enabled = false;
            stopBtn.Enabled = false;
            timerBtn.Enabled = false;
            pickerSetBtn.Hidden = true;
            pickerSetBtn.Enabled = false;
            pickerCnlBtn.Hidden = true;
            pickerCnlBtn.Enabled = false;
            pickerLbl.Hidden = true;

            if (resumeCheck == 1) {
                Console.WriteLine ("F: VDL RPA: " + resumePassAuthor);
                ResumeBook (resumePassTitle, resumePassAuthor);
            }

            _musicPlayer = new MPMusicPlayerController ();
            _mediaController = new MPMediaPickerController (MPMediaType.Music);
            _mediaController.AllowsPickingMultipleItems = false;
            _mpDelegate = new MediaPickerDelegate (this);
            _mediaController.Delegate = _mpDelegate;
            infoScreen = new InfoScreen ();

            addMusicBtn.TouchUpInside += delegate {
                this.PresentViewController(_mediaController, true, null);
            };

            infoBtn.TouchUpInside += delegate {
                this.PresentViewController(infoScreen, true, null);
            };

            positionSkipBtn.Clicked += delegate {
                pickerView.Model = new ThePickerViewModel(0);
                View.AddSubview(pickerView);
                pickerLbl.Text = "Skip To";
                pickerLbl.Hidden = false;
                pickerSetBtn.Enabled = true;
                pickerSetBtn.Hidden = false;
                pickerCnlBtn.Enabled = true;
                pickerCnlBtn.Hidden = false;
            };

            timerBtn.Clicked += (object sender, EventArgs e) => {
                pickerView.Model = new ThePickerViewModel(1);
                View.AddSubview(pickerView);
                pickerLbl.Text = "Sleep Timer";
                pickerLbl.Hidden = false;
                pickerSetBtn.Enabled = true;
                pickerSetBtn.Hidden = false;
                pickerCnlBtn.Enabled = true;
                pickerCnlBtn.Hidden = false;

            };
            pickerSetBtn.TouchUpInside += delegate {
                if (pickerLbl.Text == "Skip To"){
                    int hourValue = pickerView.SelectedRowInComponent(0);
                    int minValue = pickerView.SelectedRowInComponent(1);
                    int secValue = pickerView.SelectedRowInComponent(2);
                    double pickedTimeValue = ((hourValue * 3600) + (minValue * 60) + secValue);
                    int pickedTimeInt = Convert.ToInt32(pickedTimeValue);
                    _musicPlayer.CurrentPlaybackTime = pickedTimeValue;
                    string pickerTimeDisplay = string.Format("{0:#0}:{1:00}:{2:00}",pickedTimeInt/3600,(pickedTimeInt/60)%60,pickedTimeInt%60);
                    currentTimeLbl.Text = pickerTimeDisplay;
                    positionSld.SetValue( (float)(pickedTimeValue), true);

                    pickerView.RemoveFromSuperview();
                    pickerLbl.Hidden = true;
                    pickerSetBtn.Hidden = true;
                    pickerSetBtn.Enabled = false;
                    pickerCnlBtn.Hidden = true;
                    pickerCnlBtn.Enabled = false;
                }
                else if (pickerLbl.Text == "Sleep Timer"){
                    int hourValue = pickerView.SelectedRowInComponent(0);
                    int minValue = pickerView.SelectedRowInComponent(1);
                    double timeToSleep = ((hourValue * 3600) + (minValue * 60));
                    StartSleepTimer(timeToSleep);

                    pickerView.RemoveFromSuperview();
                    pickerLbl.Hidden = true;
                    pickerSetBtn.Hidden = true;
                    pickerSetBtn.Enabled = false;
                    pickerCnlBtn.Hidden = true;
                    pickerCnlBtn.Enabled = false;
                }
                else {
                    pickerView.RemoveFromSuperview();
                    pickerLbl.Hidden = true;
                    pickerSetBtn.Hidden = true;
                    pickerSetBtn.Enabled = false;
                    pickerCnlBtn.Hidden = true;
                    pickerCnlBtn.Enabled = false;
                }
            };

            pickerCnlBtn.TouchUpInside += delegate {
                pickerView.RemoveFromSuperview();
                pickerLbl.Hidden = true;
                pickerSetBtn.Hidden = true;
                pickerSetBtn.Enabled = false;
                pickerCnlBtn.Hidden = true;
                pickerCnlBtn.Enabled = false;
            };

            playPauseBtn.Clicked += (object sender, EventArgs e) => {
                // can I use the playback state for this if statement instead PlayPauseSwitch?
                if (PlayPauseSwitch == null || PlayPauseSwitch == "play"){
                    PlayPauseSwitch = "pause";
                    _musicPlayer.CurrentPlaybackTime = ResumePointVault;
                    Console.WriteLine("playcurrentspot: {0}", _musicPlayer.CurrentPlaybackTime);
                    _musicPlayer.Play();
                    stopBtn.Enabled = true;
                    timerBtn.Enabled = true;
                    double fileLengthRaw = _musicPlayer.NowPlayingItem.PlaybackDuration;
                    StartTimer();
                    _musicPlayer.BeginGeneratingPlaybackNotifications();
                    Console.WriteLine("enabled notifications"); // debugging

                }
                else{
                    PlayPauseSwitch = "play";
                    ResumePointVault = _musicPlayer.CurrentPlaybackTime;
                    _musicPlayer.Pause();
                    refreshTimer.Invalidate();
                }
            };

            positionSld.ValueChanged += delegate {
                _musicPlayer.CurrentPlaybackTime = positionSld.Value;
            };

            stopBtn.Clicked += (object sender, EventArgs e) => {
                Stopper();
            };

            //Lambda Style notfication substription
            notification = MPMusicPlayerController.Notifications.ObservePlaybackStateDidChange ((sender, args) => {
                string val = args.Notification.UserInfo ["MPMusicPlayerControllerPlaybackStateKey"].ToString ();
                Console.WriteLine ("Notification: {0}", args.Notification.UserInfo ["MPMusicPlayerControllerPlaybackStateKey"]);
                PlayPauseImage (val);
            });
        }
        public override void ViewDidLoad()
        {
            var screenSize = UIKitHelper.GetDeviceSize();

            tableView.WeakDataSource = this;
            tableView.WeakDelegate = this;

            UILongPressGestureRecognizer longPress = new UILongPressGestureRecognizer(HandleLongPress);
            longPress.MinimumPressDuration = 0.7f;
            longPress.WeakDelegate = this;
            tableView.AddGestureRecognizer(longPress);

            viewOptions.BackgroundColor = GlobalTheme.BackgroundColor;
            switchBypass.OnTintColor = GlobalTheme.SecondaryColor;
            switchBypass.On = false;
            switchBypass.ValueChanged += HandleSwitchBypassValueChanged;

            //sliderMasterVolume.SetThumbImage(UIImage.FromBundle("Images/Sliders/thumb"), UIControlState.Normal);
            //sliderMasterVolume.SetMinTrackImage(UIImage.FromBundle("Images/Sliders/slider2").CreateResizableImage(new UIEdgeInsets(0, 8, 0, 8), UIImageResizingMode.Tile), UIControlState.Normal);
            //sliderMasterVolume.SetMaxTrackImage(UIImage.FromBundle("Images/Sliders/slider").CreateResizableImage(new UIEdgeInsets(0, 8, 0, 8), UIImageResizingMode.Tile), UIControlState.Normal);
            //sliderMasterVolume.ValueChanged += HandleSliderMasterVolumeValueChanged;

            var btnDone = new SessionsFlatButton();
            btnDone.Label.Text = "Done";
            btnDone.Frame = new RectangleF(0, 0, 70, 44);
            btnDone.OnButtonClick += () => {
                NavigationController.DismissViewController(true, null);
            };
            var btnDoneView = new UIView(new RectangleF(0, 0, 70, 44));
            var rect = new RectangleF(btnDoneView.Bounds.X + 16, btnDoneView.Bounds.Y, btnDoneView.Bounds.Width, btnDoneView.Bounds.Height);
            btnDoneView.Bounds = rect;
            btnDoneView.AddSubview(btnDone);
            _btnDone = new UIBarButtonItem(btnDoneView);

            var btnAdd = new SessionsFlatButton();
            btnAdd.LabelAlignment = UIControlContentHorizontalAlignment.Right;
            btnAdd.Label.Text = "Add";
            btnAdd.Label.TextAlignment = UITextAlignment.Right;
            btnAdd.Label.Frame = new RectangleF(0, 0, 44, 44);
            btnAdd.ImageChevron.Image = UIImage.FromBundle("Images/Tables/plus_blue");
            btnAdd.ImageChevron.Frame = new RectangleF(70 - 22, 0, 22, 44);
            btnAdd.Frame = new RectangleF(0, 0, 70, 44);
            btnAdd.OnButtonClick += HandleButtonAddTouchUpInside;
            var btnAddView = new UIView(new RectangleF(UIScreen.MainScreen.Bounds.Width - 70, 0, 70, 44));
            var rect2 = new RectangleF(btnAddView.Bounds.X - 16, btnAddView.Bounds.Y, btnAddView.Bounds.Width, btnAddView.Bounds.Height);
            btnAddView.Bounds = rect2;
            btnAddView.AddSubview(btnAdd);
            _btnAdd = new UIBarButtonItem(btnAddView);

            NavigationItem.SetLeftBarButtonItem(_btnDone, true);
            NavigationItem.SetRightBarButtonItem(_btnAdd, true);

            var navCtrl = (SessionsNavigationController)NavigationController;
            navCtrl.SetBackButtonVisible(false);

            // Create MPVolumeView (only visible on physical iOS device)
            RectangleF rectVolume;
            if (UserInterfaceIdiomIsPhone)
                rectVolume = new RectangleF(74, 25, 236, 46);
            else
                rectVolume = new RectangleF(74, 25, 236, 46);
            _volumeView = new MPVolumeView(rectVolume);
            _volumeView.SetMinimumVolumeSliderImage(UIImage.FromBundle("Images/Sliders/slider2").CreateResizableImage(new UIEdgeInsets(0, 8, 0, 8), UIImageResizingMode.Tile), UIControlState.Normal);
            _volumeView.SetMaximumVolumeSliderImage(UIImage.FromBundle("Images/Sliders/slider").CreateResizableImage(new UIEdgeInsets(0, 8, 0, 8), UIImageResizingMode.Tile), UIControlState.Normal);
            _volumeView.SetVolumeThumbImage(UIImage.FromBundle("Images/Sliders/thumbbig"), UIControlState.Normal);
            this.View.AddSubview(_volumeView);

            base.ViewDidLoad();

            var navigationManager = Bootstrapper.GetContainer().Resolve<MobileNavigationManager>();
            navigationManager.BindEqualizerPresetsView(null, this);
        }
Ejemplo n.º 8
0
 public VolumeViewRenderer()
 {
     AddSubview(mPVolumeView = new MPVolumeView());
 }
Ejemplo n.º 9
0
		public override void ViewDidLoad()
        {
			if (UIDevice.CurrentDevice.CheckSystemVersion(7, 0))
			{
				UIApplication.SharedApplication.SetStatusBarStyle(UIStatusBarStyle.LightContent, true);
			}

            View.BackgroundColor = GlobalTheme.BackgroundColor;
            btnPrevious.GlyphImageView.Image = UIImage.FromBundle("Images/Player/previous");
            btnPlayPause.GlyphImageView.Image = UIImage.FromBundle("Images/Player/pause");
            btnNext.GlyphImageView.Image = UIImage.FromBundle("Images/Player/next");
            btnShuffle.GlyphImageView.Image = UIImage.FromBundle("Images/Player/shuffle");
            btnRepeat.GlyphImageView.Image = UIImage.FromBundle("Images/Player/repeat");

            viewPosition.BackgroundColor = GlobalTheme.BackgroundColor;
            viewMain.BackgroundColor = GlobalTheme.BackgroundColor;
            viewPageControls.BackgroundColor = GlobalTheme.PlayerPanelBackgroundColor;

            sliderPosition.SetMinTrackImage(UIImage.FromBundle("Images/Sliders/slider2").CreateResizableImage(new UIEdgeInsets(0, 8, 0, 8), UIImageResizingMode.Tile), UIControlState.Normal);
            sliderPosition.SetMaxTrackImage(UIImage.FromBundle("Images/Sliders/slider").CreateResizableImage(new UIEdgeInsets(0, 8, 0, 8), UIImageResizingMode.Tile), UIControlState.Normal);
            sliderPosition.SetThumbImage(UIImage.FromBundle("Images/Sliders/thumb"), UIControlState.Normal);

            // Reduce the song position slider size for iPhone
            sliderPosition.Transform = CGAffineTransform.MakeScale(0.7f, 0.7f);

            // Setup scroll view and page control
            scrollView.WeakDelegate = this;
            scrollView.PagingEnabled = true;
            scrollView.ShowsHorizontalScrollIndicator = false;
            scrollView.ShowsVerticalScrollIndicator = false;
            scrollView.DelaysContentTouches = false;
            
			UISwipeGestureRecognizer swipeDown = new UISwipeGestureRecognizer(HandleScrollViewSwipeDown);
            swipeDown.Direction = UISwipeGestureRecognizerDirection.Down;
            scrollView.AddGestureRecognizer(swipeDown);
            
			UISwipeGestureRecognizer swipeUp = new UISwipeGestureRecognizer(HandleScrollViewSwipeUp);
            swipeUp.Direction = UISwipeGestureRecognizerDirection.Up;
            scrollView.AddGestureRecognizer(swipeUp);

			if (scrollViewPlayer != null)
			{
				scrollViewPlayer.IndicatorStyle = UIScrollViewIndicatorStyle.White;
				scrollViewPlayer.PagingEnabled = true;
				scrollViewPlayer.DelaysContentTouches = false;
			}

            // TODO: Block slider when the player is paused.
            sliderPosition.ScrubbingTypeChanged += (sender, e) => {
                string scrubbingType = "High-speed scrubbing";
                switch(sliderPosition.ScrubbingType)
                {
                    case SliderScrubbingType.Fine:
                        scrubbingType = "Fine scrubbing";
                        break;
                    case SliderScrubbingType.QuarterSpeed:
                        scrubbingType = "Quarter-speed scrubbing";
                        break;
                    case SliderScrubbingType.HalfSpeed:
                        scrubbingType = "Half-speed scrubbing";
                        break;
                    case SliderScrubbingType.HighSpeed:
                        scrubbingType = "High-speed scrubbing";
                        break;
                }
                lblScrubbingType.Text = scrubbingType;
            };
            sliderPosition.TouchesBeganEvent += (sender, e) => {
                UIView.Animate(0.2f, () => {
                    float offset = 42;
                    viewPosition.Frame = new RectangleF(viewPosition.Frame.X, viewPosition.Frame.Y, viewPosition.Frame.Width, viewPosition.Frame.Height + offset);
                    scrollViewWaveForm.Frame = new RectangleF(scrollViewWaveForm.Frame.X, scrollViewWaveForm.Frame.Y + offset, scrollViewWaveForm.Frame.Width, scrollViewWaveForm.Frame.Height * 2);
                    scrollViewWaveForm.WaveFormView.Frame = new RectangleF(scrollViewWaveForm.WaveFormView.Frame.X, scrollViewWaveForm.WaveFormView.Frame.Y, scrollViewWaveForm.WaveFormView.Frame.Width, (scrollViewWaveForm.WaveFormView.Frame.Height * 2) + 22);
                    viewMain.Frame = new RectangleF(viewMain.Frame.X, viewPosition.Frame.Height + scrollViewWaveForm.Frame.Height, viewMain.Frame.Width, viewMain.Frame.Height);
                    lblSlideMessage.Alpha = 1;
                    lblScrubbingType.Alpha = 1;
                    scrollViewWaveForm.ShowSecondaryPosition(true);
                });
            };
            sliderPosition.TouchesMovedEvent += (sender, e) => {
                _isPositionChanging = true;
                _lastSliderPositionValue = sliderPosition.Value / 100;
                PlayerPositionEntity entity = OnPlayerRequestPosition(sliderPosition.Value / 10000);
                lblPosition.Text = entity.Position;
                scrollViewWaveForm.SetSecondaryPosition(entity.PositionBytes);
            };
            sliderPosition.TouchesEndedEvent += (sender, e) => {
                UIView.Animate(0.2f, () => {
                    float offset = 42;
                    viewPosition.Frame = new RectangleF(viewPosition.Frame.X, viewPosition.Frame.Y, viewPosition.Frame.Width, viewPosition.Frame.Height - offset);
                    scrollViewWaveForm.Frame = new RectangleF(scrollViewWaveForm.Frame.X, scrollViewWaveForm.Frame.Y - offset, scrollViewWaveForm.Frame.Width, scrollViewWaveForm.Frame.Height / 2);
                    scrollViewWaveForm.WaveFormView.Frame = new RectangleF(scrollViewWaveForm.WaveFormView.Frame.X, scrollViewWaveForm.WaveFormView.Frame.Y, scrollViewWaveForm.WaveFormView.Frame.Width, (scrollViewWaveForm.WaveFormView.Frame.Height - 22) / 2);
                    viewMain.Frame = new RectangleF(viewMain.Frame.X, viewPosition.Frame.Height + scrollViewWaveForm.Frame.Height, viewMain.Frame.Width, viewMain.Frame.Height);
                    lblSlideMessage.Alpha = 0;
                    lblScrubbingType.Alpha = 0;
                });

                // Sometimes the position from TouchesEnded is different than the last position returned by TouchesMoved.
                // This gives the user the impression that the selected position is different.
                OnPlayerSetPosition(_lastSliderPositionValue);
                scrollViewWaveForm.ShowSecondaryPosition(false);
                _isPositionChanging = false;
            };

            // Only display wave form on iPhone 5+ and iPad
			bool showWaveForm = DarwinHardwareHelper.Version != DarwinHardwareHelper.HardwareVersion.iPhone3GS &&
			                    DarwinHardwareHelper.Version != DarwinHardwareHelper.HardwareVersion.iPhone4 &&
			                    DarwinHardwareHelper.Version != DarwinHardwareHelper.HardwareVersion.iPhone4S;
			scrollViewWaveForm.Hidden = !showWaveForm;
			scrollViewWaveForm.UserInteractionEnabled = showWaveForm;
			scrollViewWaveForm.MultipleTouchEnabled = showWaveForm;

            // Create text attributes for navigation bar button
            UITextAttributes attr = new UITextAttributes();
            attr.Font = UIFont.FromName("HelveticaNeue-Medium", 12);
            attr.TextColor = UIColor.White;
            attr.TextShadowColor = UIColor.DarkGray;
            attr.TextShadowOffset = new UIOffset(0, 0);
            
//            // Set back button for navigation bar
//            _btnBack = new UIBarButtonItem("Back", UIBarButtonItemStyle.Plain, null, null);
//            _btnBack.SetTitleTextAttributes(attr, UIControlState.Normal);
//            this.NavigationItem.BackBarButtonItem = _btnBack;

            // Reset temporary text
            lblLength.Text = string.Empty;
            lblPosition.Text = string.Empty;

			// Create MPVolumeView (only visible on iPad or maybe in the future on iPhone with a scroll view)
			RectangleF rectVolume = new RectangleF(12, 10, 100, 46);
			_volumeView = new MPVolumeView(rectVolume);
			_volumeView.SetMinimumVolumeSliderImage(UIImage.FromBundle("Images/Sliders/slider2").CreateResizableImage(new UIEdgeInsets(0, 8, 0, 8), UIImageResizingMode.Tile), UIControlState.Normal);
			_volumeView.SetMaximumVolumeSliderImage(UIImage.FromBundle("Images/Sliders/slider").CreateResizableImage(new UIEdgeInsets(0, 8, 0, 8), UIImageResizingMode.Tile), UIControlState.Normal);
			_volumeView.SetVolumeThumbImage(UIImage.FromBundle("Images/Sliders/thumbbig"), UIControlState.Normal);
			viewVolume.AddSubview(_volumeView);

			graphView.BackgroundColor = GlobalTheme.BackgroundColor;
			outputMeter.BackgroundColor = GlobalTheme.BackgroundColor;
			imageViewVolumeLow.Alpha = 0.125f;
			imageViewVolumeHigh.Alpha = 0.125f;
			viewEffects.OnScaleViewClicked += () => OnOpenEffects();

			if (UserInterfaceIdiomIsPhone)
			{
				viewVolume.RemoveFromSuperview();
				viewPlayerButtons.RemoveFromSuperview();
				viewEffects.RemoveFromSuperview();
				scrollViewPlayer.AddSubview(viewEffects);
				scrollViewPlayer.AddSubview(viewPlayerButtons);
				scrollViewPlayer.AddSubview(viewVolume);
				scrollViewPlayer.ContentSize = new SizeF(3 * UIScreen.MainScreen.Bounds.Width, 72);
				viewEffects.Frame = new RectangleF(0, 0, UIScreen.MainScreen.Bounds.Width, 72);
				viewPlayerButtons.Frame = new RectangleF(UIScreen.MainScreen.Bounds.Width, 0, UIScreen.MainScreen.Bounds.Width, 72);
				viewVolume.Frame = new RectangleF(UIScreen.MainScreen.Bounds.Width * 2, 0, UIScreen.MainScreen.Bounds.Width, 72);
				scrollViewPlayer.ContentOffset = new PointF(UIScreen.MainScreen.Bounds.Width, 0);

				imageViewVolumeLow.Image = UIImage.FromBundle("Images/Buttons/volume_low");
				imageViewVolumeHigh.Image = UIImage.FromBundle("Images/Buttons/volume_high");
			}
			else
			{
				imageViewVolumeLow.Image = UIImage.FromBundle("Images/SmallWhiteIcons/volume_low");
				imageViewVolumeHigh.Image = UIImage.FromBundle("Images/SmallWhiteIcons/volume_high");
			}

            var navigationManager = Bootstrapper.GetContainer().Resolve<MobileNavigationManager>();
            navigationManager.BindPlayerView(MobileNavigationTabType.Playlists, this);

            base.ViewDidLoad();           
		}