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.º 2
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();           
		}