diff --git a/MPfm/MPfm.iOS/Classes/Controllers/Base/BasePreferencesViewController.cs b/MPfm/MPfm.iOS/Classes/Controllers/Base/BasePreferencesViewController.cs index 7dab881b..84b2e3b5 100644 --- a/MPfm/MPfm.iOS/Classes/Controllers/Base/BasePreferencesViewController.cs +++ b/MPfm/MPfm.iOS/Classes/Controllers/Base/BasePreferencesViewController.cs @@ -174,8 +174,15 @@ public float HeightForHeaderInSection(UITableView tableView, int section) [Export ("tableView:heightForRowAtIndexPath:")] public float HeightForRow(UITableView tableView, NSIndexPath indexPath) { - return 52; - } + var distinct = Items.Select(x => x.HeaderTitle).Distinct().ToList(); + string headerTitle = distinct[indexPath.Section]; + var items = Items.Where(x => x.HeaderTitle == headerTitle).ToList(); + var item = items[indexPath.Row]; + if (item.CellType == PreferenceCellType.Slider) + return 104; + else + return 52; + } } } diff --git a/MPfm/MPfm.iOS/Classes/Controllers/GeneralPreferencesViewController.cs b/MPfm/MPfm.iOS/Classes/Controllers/GeneralPreferencesViewController.cs index b7c838cf..bdec31f3 100644 --- a/MPfm/MPfm.iOS/Classes/Controllers/GeneralPreferencesViewController.cs +++ b/MPfm/MPfm.iOS/Classes/Controllers/GeneralPreferencesViewController.cs @@ -85,19 +85,13 @@ private void GenerateItems() FooterTitle = "Warning: Lower values require more CPU and memory." }); _items.Add(new PreferenceCellItem() - { - Id = "peak_files_folder_size", - CellType = PreferenceCellType.Text, - HeaderTitle = "Peak Files", - Title = "Peak file folder size: 1425 MB" - }); - _items.Add(new PreferenceCellItem() { Id = "delete_peak_files", CellType = PreferenceCellType.Button, HeaderTitle = "Peak Files", Title = "Delete Peak Files", - IconName = "dropbox" + FooterTitle = "Peak file folder size: 1425 MB", + IconName = "delete" }); } diff --git a/MPfm/MPfm.iOS/Classes/Controllers/LibraryPreferencesViewController.cs b/MPfm/MPfm.iOS/Classes/Controllers/LibraryPreferencesViewController.cs index c39e9fe8..0b19e117 100644 --- a/MPfm/MPfm.iOS/Classes/Controllers/LibraryPreferencesViewController.cs +++ b/MPfm/MPfm.iOS/Classes/Controllers/LibraryPreferencesViewController.cs @@ -25,11 +25,26 @@ using MPfm.iOS.Classes.Controls; using MPfm.MVP.Bootstrap; using MPfm.MVP.Navigation; +using System.Collections.Generic; +using MPfm.iOS.Classes.Objects; +using System.Linq; namespace MPfm.iOS { - public partial class LibraryPreferencesViewController : BaseViewController, ILibraryPreferencesView + public partial class LibraryPreferencesViewController : BasePreferencesViewController, ILibraryPreferencesView { + string _cellIdentifier = "CloudPreferencesCell"; + //CloudAppConfig _config; + List _items = new List(); + + #region BasePreferencesViewController + + public override string CellIdentifier { get { return _cellIdentifier; } } + public override UITableView TableView { get { return tableView; } } + public override List Items { get { return _items; } } + + #endregion + public LibraryPreferencesViewController() : base (UserInterfaceIdiomIsPhone ? "LibraryPreferencesViewController_iPhone" : "LibraryPreferencesViewController_iPad", null) { @@ -37,12 +52,7 @@ public LibraryPreferencesViewController() public override void ViewDidLoad() { - if (UIDevice.CurrentDevice.CheckSystemVersion(7, 0)) - { - NavigationController.InteractivePopGestureRecognizer.WeakDelegate = this; - NavigationController.InteractivePopGestureRecognizer.Enabled = true; - } - + GenerateItems(); base.ViewDidLoad(); var navigationManager = Bootstrapper.GetContainer().Resolve(); @@ -57,20 +67,84 @@ public override void ViewWillAppear(bool animated) navCtrl.SetTitle("Library Preferences"); } -// partial void actionResetLibrary(NSObject sender) -// { -// var alertView = new UIAlertView("Reset Library", "Are you sure you wish to reset your library?", null, "OK", new string[1]{"Cancel"}); -// alertView.Clicked += (sender2, e) => { -// if(e.ButtonIndex == 0) -// OnResetLibrary(); -// }; -// alertView.Show(); -// } + private void GenerateItems() + { + // We assume the items are in order for sections + _items = new List(); + _items.Add(new PreferenceCellItem() + { + Id = "sync_server_enabled", + CellType = PreferenceCellType.Boolean, + HeaderTitle = "Sync Service", + Title = "Enable Sync Service" + }); + _items.Add(new PreferenceCellItem() + { + Id = "sync_server_port", + CellType = PreferenceCellType.Integer, + HeaderTitle = "Sync Service", + Title = "HTTP Port", + FooterTitle = "Note: The sync service is only used when Wi-Fi is available.", + Value = 53551 + }); + _items.Add(new PreferenceCellItem() + { + Id = "library_reset", + CellType = PreferenceCellType.Button, + HeaderTitle = "Library", + Title = "Reset Library", + IconName = "reset" + }); + _items.Add(new PreferenceCellItem() + { + Id = "library_update", + CellType = PreferenceCellType.Button, + HeaderTitle = "Library", + Title = "Update Library", + FooterTitle = "Total library size: 8420 MB", + IconName = "update" + }); + } + + public override void PreferenceValueChanged(PreferenceCellItem item) + { + var localItem = _items.FirstOrDefault(x => x.Id == item.Id); + if (localItem == null) + return; + + localItem.Value = item.Value; + +// if (item.Id == "enable_dropbox_resume_playback") +// _config.IsDropboxResumePlaybackEnabled = (bool)item.Value; +// else if (item.Id == "enable_dropbox_resume_playback_wifi_only") +// _config.IsDropboxResumePlaybackWifiOnlyEnabled = (bool)item.Value; // -// partial void actionUpdateLibrary(NSObject sender) -// { -// OnUpdateLibrary(); -// } +// OnSetCloudPreferences(_config); + } + + [Export ("tableView:didSelectRowAtIndexPath:")] + public void RowSelected(UITableView tableView, NSIndexPath indexPath) + { + var distinct = _items.Select(x => x.HeaderTitle).Distinct().ToList(); + string headerTitle = distinct[indexPath.Section]; + var items = _items.Where(x => x.HeaderTitle == headerTitle).ToList(); + var item = items[indexPath.Row]; + tableView.DeselectRow(indexPath, true); + + if (item.Id == "library_reset") + { + var alertView = new UIAlertView("Reset Library", "Are you sure you wish to reset your library?", null, "OK", new string[1]{"Cancel"}); + alertView.Clicked += (sender2, e) => { + if(e.ButtonIndex == 0) + OnResetLibrary(); + }; + alertView.Show(); + } + else if (item.Id == "library_update") + { + OnUpdateLibrary(); + } + } #region ILibraryPreferencesView implementation diff --git a/MPfm/MPfm.iOS/Classes/Controls/MPfmPreferenceTableViewCell.cs b/MPfm/MPfm.iOS/Classes/Controls/MPfmPreferenceTableViewCell.cs index 33df8282..0c7f7e94 100644 --- a/MPfm/MPfm.iOS/Classes/Controls/MPfmPreferenceTableViewCell.cs +++ b/MPfm/MPfm.iOS/Classes/Controls/MPfmPreferenceTableViewCell.cs @@ -40,7 +40,8 @@ public class MPfmPreferenceTableViewCell : UITableViewCell private bool _isTextLabelAllowedToChangeFrame = true; public UIButton RightButton { get; private set; } - public UILabel LabelValue { get; private set; } + public UILabel ValueTextLabel { get; private set; } + public UISlider Slider { get; private set; } public UISwitch Switch { get; private set; } public MPfmPreferenceTableViewCell() : base() @@ -82,11 +83,23 @@ public void Initialize() DetailTextLabel.Font = UIFont.FromName("HelveticaNeue-Light", 12); ImageView.BackgroundColor = UIColor.Clear; + ValueTextLabel = new UILabel(); + ValueTextLabel.BackgroundColor = UIColor.Clear; + ValueTextLabel.Font = UIFont.FromName("HelveticaNeue-Light", 16); + ValueTextLabel.TextColor = UIColor.Gray; + ValueTextLabel.TextAlignment = UITextAlignment.Right; + ValueTextLabel.HighlightedTextColor = UIColor.White; + AddSubview(ValueTextLabel); + RightButton = new UIButton(UIButtonType.Custom); RightButton.Hidden = true; RightButton.Frame = new RectangleF(screenSize.Width - Bounds.Height, 4, Bounds.Height, Bounds.Height); AddSubview(RightButton); + Slider = new UISlider(); + Slider.Hidden = true; + AddSubview(Slider); + Switch = new UISwitch(); //Switch.TintColor = GlobalTheme.SecondaryColor; //Switch.ThumbTintColor = GlobalTheme.SecondaryColor; @@ -116,8 +129,8 @@ public override void LayoutSubviews() float x = 12; if (ImageView.Image != null) { - ImageView.Frame = new RectangleF(x, 10, 32, 32); - x += 40 + padding; + ImageView.Frame = new RectangleF(x, 14, 24, 24); + x += 32 + padding; } float titleY = 10 + 4; @@ -125,6 +138,7 @@ public override void LayoutSubviews() titleY = 2 + 4; TextLabel.Frame = new RectangleF(x, titleY, textWidth - 52, 22); + ValueTextLabel.Frame = new RectangleF(0, titleY, Bounds.Width - 16, 22); if (!string.IsNullOrEmpty(DetailTextLabel.Text)) DetailTextLabel.Frame = new RectangleF(x, 22 + 4, textWidth - 52, 16); @@ -136,8 +150,10 @@ public override void LayoutSubviews() Switch.ValueChanged += (sender, e) => { _item.Value = Switch.On; if(OnPreferenceValueChanged != null) - OnPreferenceValueChanged(_item); + OnPreferenceValueChanged(_item); }; + + Slider.Frame = new RectangleF(12, 48, Bounds.Width - 24, 44); } public void SetItem(PreferenceCellItem item) @@ -150,13 +166,29 @@ public void SetItem(PreferenceCellItem item) DetailTextLabel.TextColor = item.Enabled ? UIColor.Gray : UIColor.FromRGB(0.85f, 0.85f, 0.85f); Switch.Hidden = item.CellType != PreferenceCellType.Boolean; Switch.Enabled = item.Enabled; - SelectionStyle = item.CellType != PreferenceCellType.Boolean && item.CellType != PreferenceCellType.Text && item.Enabled ? UITableViewCellSelectionStyle.Default : UITableViewCellSelectionStyle.None; + Slider.Hidden = item.CellType != PreferenceCellType.Slider; + SelectionStyle = item.CellType != PreferenceCellType.Boolean && item.Enabled ? UITableViewCellSelectionStyle.Default : UITableViewCellSelectionStyle.None; if (item.Value == null) return; - if (item.CellType == PreferenceCellType.Boolean) - Switch.On = (bool)item.Value; + switch (item.CellType) + { + case PreferenceCellType.Button: + break; + case PreferenceCellType.Boolean: + Switch.On = (bool)item.Value; + break; + case PreferenceCellType.String: + break; + case PreferenceCellType.Integer: + ValueTextLabel.Text = ((int)item.Value).ToString(); + break; + case PreferenceCellType.Slider: + break; + default: + throw new ArgumentOutOfRangeException(); + } } public override void TouchesBegan(NSSet touches, UIEvent evt) diff --git a/MPfm/MPfm.iOS/Classes/Objects/PreferenceCellType.cs b/MPfm/MPfm.iOS/Classes/Objects/PreferenceCellType.cs index fc68f314..8a8075a3 100644 --- a/MPfm/MPfm.iOS/Classes/Objects/PreferenceCellType.cs +++ b/MPfm/MPfm.iOS/Classes/Objects/PreferenceCellType.cs @@ -19,11 +19,10 @@ namespace MPfm.iOS.Classes.Objects { public enum PreferenceCellType { - Text = 0, - Button = 1, - Boolean = 2, - String = 3, - Integer = 4, - Slider = 5 + Button = 0, + Boolean = 1, + String = 2, + Integer = 3, + Slider = 4 } } diff --git a/MPfm/MPfm.iOS/Images/Icons/delete.png b/MPfm/MPfm.iOS/Images/Icons/delete.png new file mode 100755 index 00000000..24648287 Binary files /dev/null and b/MPfm/MPfm.iOS/Images/Icons/delete.png differ diff --git a/MPfm/MPfm.iOS/Images/Icons/delete@2x.png b/MPfm/MPfm.iOS/Images/Icons/delete@2x.png new file mode 100755 index 00000000..e19267f8 Binary files /dev/null and b/MPfm/MPfm.iOS/Images/Icons/delete@2x.png differ diff --git a/MPfm/MPfm.iOS/Images/Icons/reset.png b/MPfm/MPfm.iOS/Images/Icons/reset.png new file mode 100755 index 00000000..584be6a6 Binary files /dev/null and b/MPfm/MPfm.iOS/Images/Icons/reset.png differ diff --git a/MPfm/MPfm.iOS/Images/Icons/reset@2x.png b/MPfm/MPfm.iOS/Images/Icons/reset@2x.png new file mode 100755 index 00000000..cc23ef6b Binary files /dev/null and b/MPfm/MPfm.iOS/Images/Icons/reset@2x.png differ diff --git a/MPfm/MPfm.iOS/Images/Icons/update.png b/MPfm/MPfm.iOS/Images/Icons/update.png new file mode 100755 index 00000000..695ad1a0 Binary files /dev/null and b/MPfm/MPfm.iOS/Images/Icons/update.png differ diff --git a/MPfm/MPfm.iOS/Images/Icons/update@2x.png b/MPfm/MPfm.iOS/Images/Icons/update@2x.png new file mode 100755 index 00000000..64360786 Binary files /dev/null and b/MPfm/MPfm.iOS/Images/Icons/update@2x.png differ diff --git a/MPfm/MPfm.iOS/MPfm.iOS.csproj b/MPfm/MPfm.iOS/MPfm.iOS.csproj index 34aea55f..271f1cd1 100644 --- a/MPfm/MPfm.iOS/MPfm.iOS.csproj +++ b/MPfm/MPfm.iOS/MPfm.iOS.csproj @@ -588,6 +588,12 @@ + + + + + +