diff --git a/MPfm/MPfm.iOS/Classes/Controllers/EqualizerPresetDetailsViewController.cs b/MPfm/MPfm.iOS/Classes/Controllers/EqualizerPresetDetailsViewController.cs index 7d95aeeb..7e973822 100644 --- a/MPfm/MPfm.iOS/Classes/Controllers/EqualizerPresetDetailsViewController.cs +++ b/MPfm/MPfm.iOS/Classes/Controllers/EqualizerPresetDetailsViewController.cs @@ -26,13 +26,17 @@ using MPfm.iOS.Classes.Controllers.Base; using MPfm.iOS.Classes.Controls; using MPfm.iOS.Classes.Objects; +using System.Collections.Generic; namespace MPfm.iOS { public partial class EqualizerPresetDetailsViewController : BaseViewController, IEqualizerPresetDetailsView { - UIBarButtonItem _btnAdd; - UIBarButtonItem _btnDone; + UIBarButtonItem _btnCancel; + UIBarButtonItem _btnSave; + UIBarButtonItem _btnReset; + UIBarButtonItem _btnNormalize; + List _faderViews = new List(); public EqualizerPresetDetailsViewController(Action onViewReady) : base (onViewReady, UserInterfaceIdiomIsPhone ? "EqualizerPresetDetailsViewController_iPhone" : "EqualizerPresetDetailsViewController_iPad", null) @@ -41,7 +45,23 @@ public EqualizerPresetDetailsViewController(Action onViewReady) public override void ViewDidLoad() { - // Add navigation controller buttons + scrollView.BackgroundColor = GlobalTheme.BackgroundColor; + toolbar.BackgroundColor = GlobalTheme.MainColor; + viewOptions.BackgroundColor = GlobalTheme.BackgroundColor; + lblPresetName.TextColor = UIColor.White; + lblPresetName.Font = UIFont.FromName("HelveticaNeue", 14.0f); + + // Add padding to text field (http://stackoverflow.com/questions/3727068/set-padding-for-uitextfield-with-uitextborderstylenone) + UIView paddingView = new UIView(new RectangleF(0, 0, 5, 20)); + txtPresetName.LeftView = paddingView; + txtPresetName.LeftViewMode = UITextFieldViewMode.Always; + + // Make sure the Done key closes the keyboard + txtPresetName.ShouldReturn = (a) => { + txtPresetName.ResignFirstResponder(); + return true; + }; + var btnSave = new UIButton(UIButtonType.Custom); btnSave.SetTitle("Save", UIControlState.Normal); btnSave.Layer.CornerRadius = 8; @@ -49,31 +69,67 @@ public override void ViewDidLoad() btnSave.Font = UIFont.FromName("HelveticaNeue-Bold", 12.0f); btnSave.Frame = new RectangleF(0, 20, 60, 30); btnSave.TouchUpInside += (sender, e) => { - //this.DismissViewController(true, null); NavigationController.PopViewControllerAnimated(true); }; - _btnDone = new UIBarButtonItem(btnSave); - -// var btnAdd = new UIButton(UIButtonType.Custom); -// btnAdd.SetTitle("+", UIControlState.Normal); -// btnAdd.Layer.CornerRadius = 8; -// btnAdd.Layer.BackgroundColor = GlobalTheme.SecondaryColor.CGColor; -// btnAdd.Font = UIFont.FromName("HelveticaNeue-Bold", 18.0f); -// btnAdd.Frame = new RectangleF(0, 12, 60, 30); -// btnAdd.TouchUpInside += (sender, e) => { -// this.DismissViewController(true, null); -// }; -// _btnAdd = new UIBarButtonItem(btnAdd); + _btnSave = new UIBarButtonItem(btnSave); - NavigationItem.SetLeftBarButtonItem(_btnDone, true); - //NavigationItem.SetRightBarButtonItem(_btnAdd, true); + var btnCancel = new UIButton(UIButtonType.Custom); + btnCancel.SetTitle("Cancel", UIControlState.Normal); + btnCancel.Layer.CornerRadius = 8; + btnCancel.Layer.BackgroundColor = GlobalTheme.SecondaryColor.CGColor; + btnCancel.Font = UIFont.FromName("HelveticaNeue-Bold", 12.0f); + btnCancel.Frame = new RectangleF(0, 12, 60, 30); + btnCancel.TouchUpInside += (sender, e) => { + NavigationController.PopViewControllerAnimated(true); + }; + _btnCancel = new UIBarButtonItem(btnCancel); + + var btnReset = new UIButton(UIButtonType.Custom); + btnReset.SetTitle("Reset", UIControlState.Normal); + btnReset.Layer.CornerRadius = 8; + btnReset.Layer.BackgroundColor = GlobalTheme.SecondaryColor.CGColor; + btnReset.Font = UIFont.FromName("HelveticaNeue-Bold", 12.0f); + btnReset.Frame = new RectangleF(0, 12, 60, 30); + btnReset.TouchUpInside += (sender, e) => { + + }; + _btnReset = new UIBarButtonItem(btnReset); + + var btnNormalize = new UIButton(UIButtonType.Custom); + btnNormalize.SetTitle("Normalize", UIControlState.Normal); + btnNormalize.Layer.CornerRadius = 8; + btnNormalize.Layer.BackgroundColor = GlobalTheme.SecondaryColor.CGColor; + btnNormalize.Font = UIFont.FromName("HelveticaNeue-Bold", 12.0f); + btnNormalize.Frame = new RectangleF(0, 12, 80, 30); + btnNormalize.TouchUpInside += (sender, e) => { + + }; + _btnNormalize = new UIBarButtonItem(btnNormalize); + + NavigationItem.SetLeftBarButtonItem(_btnCancel, true); + NavigationItem.SetRightBarButtonItem(_btnSave, true); + toolbar.Items = new UIBarButtonItem[2]{ _btnNormalize, _btnReset }; var navCtrl = (MPfmNavigationController)NavigationController; navCtrl.SetBackButtonVisible(false); navCtrl.SetTitle("Equalizer Preset", ""); + + for(int a = 0; a < 16; a++) + { + AddFaderToScrollView(a.ToString() + ".0 kHz"); + } base.ViewDidLoad(); } + + private void AddFaderToScrollView(string frequency) + { + MPfmEqualizerFaderView view = new MPfmEqualizerFaderView(frequency); + view.Frame = new RectangleF(0, _faderViews.Count * 44, scrollView.Frame.Width, 44); + scrollView.AddSubview(view); + scrollView.ContentSize = new SizeF(scrollView.Frame.Width, (_faderViews.Count + 1) * 44); + _faderViews.Add(view); + } #region IEqualizerPresetDetailsView implementation diff --git a/MPfm/MPfm.iOS/Classes/Controllers/EqualizerPresetDetailsViewController.designer.cs b/MPfm/MPfm.iOS/Classes/Controllers/EqualizerPresetDetailsViewController.designer.cs index a20e535a..38464374 100644 --- a/MPfm/MPfm.iOS/Classes/Controllers/EqualizerPresetDetailsViewController.designer.cs +++ b/MPfm/MPfm.iOS/Classes/Controllers/EqualizerPresetDetailsViewController.designer.cs @@ -1,5 +1,6 @@ +// WARNING // -// This file has been generated automatically by MonoDevelop to store outlets and +// This file has been generated automatically by Xamarin Studio to store outlets and // actions made in the Xcode designer. If it is removed, they will be lost. // Manual changes to this file may not be handled correctly. // @@ -7,12 +8,58 @@ namespace MPfm.iOS { - [Register ("EqualizerPresetDetailsViewController")] - partial class EqualizerPresetDetailsViewController - { - void ReleaseDesignerOutlets() - { - } - } -} + [Register ("EqualizerPresetDetailsViewController")] + partial class EqualizerPresetDetailsViewController + { + [Outlet] + MonoTouch.UIKit.UILabel lblPresetName { get; set; } + + [Outlet] + MonoTouch.UIKit.UITextField txtPresetName { get; set; } + + [Outlet] + MonoTouch.UIKit.UIScrollView scrollView { get; set; } + + [Outlet] + MonoTouch.UIKit.UIToolbar toolbar { get; set; } + + [Outlet] + MonoTouch.UIKit.UIBarButtonItem btnReset { get; set; } + + [Outlet] + MonoTouch.UIKit.UIView viewOptions { get; set; } + + void ReleaseDesignerOutlets () + { + if (lblPresetName != null) { + lblPresetName.Dispose (); + lblPresetName = null; + } + if (txtPresetName != null) { + txtPresetName.Dispose (); + txtPresetName = null; + } + + if (scrollView != null) { + scrollView.Dispose (); + scrollView = null; + } + + if (toolbar != null) { + toolbar.Dispose (); + toolbar = null; + } + + if (btnReset != null) { + btnReset.Dispose (); + btnReset = null; + } + + if (viewOptions != null) { + viewOptions.Dispose (); + viewOptions = null; + } + } + } +} diff --git a/MPfm/MPfm.iOS/Classes/Controllers/PlayerViewController.cs b/MPfm/MPfm.iOS/Classes/Controllers/PlayerViewController.cs index 57dde6a6..db0f3fdd 100644 --- a/MPfm/MPfm.iOS/Classes/Controllers/PlayerViewController.cs +++ b/MPfm/MPfm.iOS/Classes/Controllers/PlayerViewController.cs @@ -56,7 +56,6 @@ public override void DidReceiveMemoryWarning() { base.DidReceiveMemoryWarning(); - // Flush all images and wave form cache waveFormView.FlushCache(); if(imageViewAlbumArt.Image != null) { diff --git a/MPfm/MPfm.iOS/Classes/Controls/MPfmEqualizerFaderView.cs b/MPfm/MPfm.iOS/Classes/Controls/MPfmEqualizerFaderView.cs new file mode 100644 index 00000000..3eaa6447 --- /dev/null +++ b/MPfm/MPfm.iOS/Classes/Controls/MPfmEqualizerFaderView.cs @@ -0,0 +1,72 @@ +// Copyright © 2011-2013 Yanick Castonguay +// +// This file is part of MPfm. +// +// MPfm is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// MPfm is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with MPfm. If not, see . + +using System; +using System.Drawing; +using MonoTouch.CoreGraphics; +using MonoTouch.Foundation; +using MonoTouch.UIKit; +using MPfm.iOS.Classes.Objects; +using MPfm.iOS.Helpers; + +namespace MPfm.iOS.Classes.Controls +{ + [Register("MPfmEqualizerFaderView")] + public class MPfmEqualizerFaderView : UIView + { + public MPfmEqualizerFaderView(string frequency) + : base() + { + Initialize(frequency); + } + + public MPfmEqualizerFaderView(IntPtr handle) + : base(handle) + { + Initialize("14.4 kHz"); + } + + private void Initialize(string frequency) + { + BackgroundColor = GlobalTheme.BackgroundColor; + + var lblFrequency = new UILabel(new RectangleF(12, 4, 60, 36)); + lblFrequency.BackgroundColor = UIColor.Clear; + lblFrequency.Text = frequency; + lblFrequency.TextColor = UIColor.White; + lblFrequency.Font = UIFont.FromName("HelveticaNeue", 12.0f); + + var lblValue = new UILabel(new RectangleF(256, 4, 60, 36)); + lblValue.BackgroundColor = UIColor.Clear; + lblValue.Text = "+6.0 dB"; + lblValue.TextColor = UIColor.White; + lblValue.Font = UIFont.FromName("HelveticaNeue", 12.0f); + + var slider = new UISlider(new RectangleF(62, 4, 186, 36)); + slider.MinValue = -6; + slider.MaxValue = 6; + slider.Value = 0; + slider.SetThumbImage(UIImage.FromBundle("Images/Sliders/thumb"), UIControlState.Normal); + slider.SetMinTrackImage(UIImage.FromBundle("Images/Sliders/slider2").StretchableImage(8, 0), UIControlState.Normal); + slider.SetMaxTrackImage(UIImage.FromBundle("Images/Sliders/slider").StretchableImage(8, 0), UIControlState.Normal); + + AddSubview(lblFrequency); + AddSubview(lblValue); + AddSubview(slider); + } + } +} diff --git a/MPfm/MPfm.iOS/Classes/Delegates/AppDelegate.cs b/MPfm/MPfm.iOS/Classes/Delegates/AppDelegate.cs index adb02581..7e8ae0b9 100644 --- a/MPfm/MPfm.iOS/Classes/Delegates/AppDelegate.cs +++ b/MPfm/MPfm.iOS/Classes/Delegates/AppDelegate.cs @@ -59,6 +59,8 @@ public override bool FinishedLaunching(UIApplication app, NSDictionary options) UINavigationBar.Appearance.SetBackgroundImage(new UIImage(), UIBarMetrics.Default); UINavigationBar.Appearance.BackgroundColor = GlobalTheme.MainColor; + UIToolbar.Appearance.SetBackgroundImage(new UIImage(), UIToolbarPosition.Bottom, UIBarMetrics.Default); + UIToolbar.Appearance.BackgroundColor = GlobalTheme.MainColor; //UITabBar.Appearance.SelectionIndicatorImage = new UIImage(); // Create window diff --git a/MPfm/MPfm.iOS/MPfm.iOS.csproj b/MPfm/MPfm.iOS/MPfm.iOS.csproj index 2311e444..1eef188a 100644 --- a/MPfm/MPfm.iOS/MPfm.iOS.csproj +++ b/MPfm/MPfm.iOS/MPfm.iOS.csproj @@ -197,6 +197,7 @@ EqualizerPresetDetailsViewController.cs + diff --git a/MPfm/MPfm.iOS/XIB/iPhone/EqualizerPresetDetailsViewController_iPhone.xib b/MPfm/MPfm.iOS/XIB/iPhone/EqualizerPresetDetailsViewController_iPhone.xib index 9cfade73..b0c51f4a 100644 --- a/MPfm/MPfm.iOS/XIB/iPhone/EqualizerPresetDetailsViewController_iPhone.xib +++ b/MPfm/MPfm.iOS/XIB/iPhone/EqualizerPresetDetailsViewController_iPhone.xib @@ -1,17 +1,21 @@ - 1280 - 11C25 - 1919 - 1138.11 - 566.00 + 1552 + 12C54 + 3084 + 1187.34 + 625.00 com.apple.InterfaceBuilder.IBCocoaTouchPlugin - 916 + 2083 IBProxyObject + IBUILabel + IBUIScrollView + IBUITextField + IBUIToolbar IBUIView @@ -19,7 +23,7 @@ PluginDependencyRecalculationVersion - + @@ -31,19 +35,127 @@ IBCocoaTouchFramework - + 274 + + + + 292 + + + + 292 + {{10, 8}, {122, 21}} + + + + _NS:9 + NO + YES + 7 + NO + IBCocoaTouchFramework + Preset Name: + + 1 + MCAwIDAAA + darkTextColor + + + 0 + + 1 + 14 + + + Helvetica + 14 + 16 + + NO + + + + 292 + {{107, 6}, {200, 27}} + + + + _NS:9 + + 3 + MQA + + NO + YES + IBCocoaTouchFramework + 0 + + + 3 + MAA + + 2 + + + YES + 17 + + 9 + YES + IBCocoaTouchFramework + + + + + + {320, 40} + + + + _NS:9 + + 3 + MC42NjY2NjY2NjY3AA + + IBCocoaTouchFramework + + + + 274 + {{0, 39}, {320, 377}} + + + + _NS:9 + YES + YES + IBCocoaTouchFramework + + + + 266 + {{0, 416}, {320, 44}} + + + + _NS:9 + NO + NO + IBCocoaTouchFramework + + + {{0, 20}, {320, 460}} - - + + + 3 MQA - - 2 - + - + IBCocoaTouchFramework @@ -52,35 +164,110 @@ view - - + + 3 + + + lblPresetName + + + + 15 + + + + txtPresetName + + + + 16 + + + + scrollView + + + + 17 + + + + toolbar + + + + 18 + + + + viewOptions + + + + 21 + 0 - - - + + + 1 - - + + + + + + + -1 - - + + File's Owner -2 - - + + + + + 7 + + + + + + + + + 9 + + + + + 10 + + + + + 11 + + + + + 12 + + + @@ -90,21 +277,65 @@ UIResponder com.apple.InterfaceBuilder.IBCocoaTouchPlugin com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin + com.apple.InterfaceBuilder.IBCocoaTouchPlugin - - - - - 3 + + + + + 21 EqualizerPresetDetailsViewController UIViewController + + UIBarButtonItem + UIBarButtonItem + UILabel + UIScrollView + UIToolbar + UITextField + UIView + + + + btnNormalize + UIBarButtonItem + + + btnReset + UIBarButtonItem + + + lblPresetName + UILabel + + + scrollView + UIScrollView + + + toolbar + UIToolbar + + + txtPresetName + UITextField + + + viewOptions + UIView + + IBProjectSource - EqualizerPresetDetailsViewController.h + ./Classes/EqualizerPresetDetailsViewController.h @@ -113,6 +344,6 @@ IBCocoaTouchFramework YES 3 - 916 + 2083