diff --git a/MPfm/MPfm.MVP/Models/LibraryBrowserEntity.cs b/MPfm/MPfm.MVP/Models/LibraryBrowserEntity.cs
index 881121c7..90213ff7 100644
--- a/MPfm/MPfm.MVP/Models/LibraryBrowserEntity.cs
+++ b/MPfm/MPfm.MVP/Models/LibraryBrowserEntity.cs
@@ -16,6 +16,7 @@
// along with MPfm. If not, see .
using System.Collections.Generic;
+using MPfm.Sound.AudioFiles;
namespace MPfm.MVP.Models
{
@@ -40,6 +41,8 @@ public class LibraryBrowserEntity
/// Sub items (to create a tree view hierarchy).
///
public List SubItems { get; set; }
+
+ public AudioFile AudioFile { get; set; }
public LibraryBrowserEntity()
{
diff --git a/MPfm/MPfm.MVP/Presenters/MobileLibraryBrowserPresenter.cs b/MPfm/MPfm.MVP/Presenters/MobileLibraryBrowserPresenter.cs
index 581f9764..ef9cf5b8 100644
--- a/MPfm/MPfm.MVP/Presenters/MobileLibraryBrowserPresenter.cs
+++ b/MPfm/MPfm.MVP/Presenters/MobileLibraryBrowserPresenter.cs
@@ -109,21 +109,25 @@ private void OnItemClick(int i)
private void RefreshLibraryBrowser()
{
_items = new List();
+
switch (_browserType)
{
case MobileLibraryBrowserType.Playlists:
+ View.RefreshLibraryBrowser(_items, _browserType, "Playlists");
break;
case MobileLibraryBrowserType.Artists:
_items = GetArtists().ToList();
+ View.RefreshLibraryBrowser(_items, _browserType, "Artists");
break;
case MobileLibraryBrowserType.Albums:
- _items = GetAlbums(_query.ArtistName).ToList();
+ _items = GetAlbums(_query.ArtistName).ToList();
+ View.RefreshLibraryBrowser(_items, _browserType, (String.IsNullOrEmpty(_query.ArtistName)) ? "Albums" : _query.ArtistName);
break;
case MobileLibraryBrowserType.Songs:
- _items = GetSongs(_query.ArtistName, _query.AlbumTitle).ToList();
+ _items = GetSongs(_query.ArtistName, _query.AlbumTitle).ToList();
+ View.RefreshLibraryBrowser(_items, _browserType, (String.IsNullOrEmpty(_query.AlbumTitle)) ? "Songs" : _query.AlbumTitle);
break;
}
- View.RefreshLibraryBrowser(_items);
}
private IEnumerable GetArtists()
@@ -201,22 +205,20 @@ private IEnumerable GetSongs(string artistName, string alb
else
audioFiles = audioFiles.OrderBy(x => x.Title).ToList();
- // Get song titles
- var songs = audioFiles.Select(x => x.Title).ToList();
-
// Convert to entities
- foreach (var song in songs)
+ foreach (var audioFile in audioFiles)
{
list.Add(new LibraryBrowserEntity()
{
- Title = song,
+ Title = audioFile.Title,
+ AudioFile = audioFile,
Type = LibraryBrowserEntityType.Song,
Query = new SongBrowserQueryEntity()
{
Format = format,
ArtistName = artistName,
AlbumTitle = albumTitle,
- SearchTerms = song
+ SearchTerms = audioFile.Title
}
});
}
diff --git a/MPfm/MPfm.MVP/Presenters/PlayerPresenter.cs b/MPfm/MPfm.MVP/Presenters/PlayerPresenter.cs
index 0067fe8b..08f54ed6 100644
--- a/MPfm/MPfm.MVP/Presenters/PlayerPresenter.cs
+++ b/MPfm/MPfm.MVP/Presenters/PlayerPresenter.cs
@@ -77,6 +77,10 @@ public PlayerPresenter(ITinyMessengerHub messageHub, IPlayerService playerServic
{
Play(audioFileCacheService.SelectAudioFiles(m.Query), m.FilePath);
});
+ messageHub.Subscribe((PlayerPlaylistIndexChangedMessage m) =>
+ {
+ RefreshSongInformation(m.Data.AudioFileStarted);
+ });
}
public void Dispose()
@@ -105,14 +109,15 @@ void HandleTimerRefreshSongPositionElapsed(object sender, ElapsedEventArgs e)
if(playerService.IsSettingPosition)
return;
- int available = playerService.GetDataAvailable();
+ //int available = playerService.GetDataAvailable();
// Create entity
PlayerPositionEntity entity = new PlayerPositionEntity();
entity.PositionBytes = playerService.GetPosition();
entity.PositionSamples = ConvertAudio.ToPCM(entity.PositionBytes, (uint)playerService.CurrentPlaylistItem.AudioFile.BitsPerSample, 2);
entity.PositionMS = (int)ConvertAudio.ToMS(entity.PositionSamples, (uint)playerService.CurrentPlaylistItem.AudioFile.SampleRate);
- entity.Position = available.ToString() + " " + Conversion.MillisecondsToTimeString((ulong)entity.PositionMS);
+ //entity.Position = available.ToString() + " " + Conversion.MillisecondsToTimeString((ulong)entity.PositionMS);
+ entity.Position = Conversion.MillisecondsToTimeString((ulong)entity.PositionMS);
entity.PositionPercentage = ((float)playerService.GetPosition() / (float)playerService.CurrentPlaylistItem.LengthBytes) * 100;
// Send changes to view
diff --git a/MPfm/MPfm.MVP/Views/IMobileLibraryBrowserView.cs b/MPfm/MPfm.MVP/Views/IMobileLibraryBrowserView.cs
index 223da36e..c64049a5 100644
--- a/MPfm/MPfm.MVP/Views/IMobileLibraryBrowserView.cs
+++ b/MPfm/MPfm.MVP/Views/IMobileLibraryBrowserView.cs
@@ -28,7 +28,7 @@ public interface IMobileLibraryBrowserView : IBaseView
{
Action OnItemClick { get; set; }
- void RefreshLibraryBrowser(IEnumerable entities);
+ void RefreshLibraryBrowser(IEnumerable entities, MobileLibraryBrowserType browserType, string navigationBarTitle);
}
public enum MobileLibraryBrowserType
diff --git a/MPfm/MPfm.iOS/Classes/Controllers/Base/BaseViewController.cs b/MPfm/MPfm.iOS/Classes/Controllers/Base/BaseViewController.cs
index 93d17e02..04120be3 100644
--- a/MPfm/MPfm.iOS/Classes/Controllers/Base/BaseViewController.cs
+++ b/MPfm/MPfm.iOS/Classes/Controllers/Base/BaseViewController.cs
@@ -60,6 +60,9 @@ public override void ViewDidDisappear(bool animated)
public override void ViewDidLoad()
{
base.ViewDidLoad();
+
+ this.NavigationItem.SetHidesBackButton(true, true);
+
OnViewReady(this);
}
diff --git a/MPfm/MPfm.iOS/Classes/Controllers/LoopsViewController.cs b/MPfm/MPfm.iOS/Classes/Controllers/LoopsViewController.cs
index dd86a23c..12a1597e 100644
--- a/MPfm/MPfm.iOS/Classes/Controllers/LoopsViewController.cs
+++ b/MPfm/MPfm.iOS/Classes/Controllers/LoopsViewController.cs
@@ -33,7 +33,7 @@ public LoopsViewController(Action onViewReady)
public override void ViewDidLoad()
{
- this.View.BackgroundColor = UIColor.Green;
+ lblTitle.Font = UIFont.FromName("OstrichSans-Black", 28);
base.ViewDidLoad();
}
diff --git a/MPfm/MPfm.iOS/Classes/Controllers/LoopsViewController.designer.cs b/MPfm/MPfm.iOS/Classes/Controllers/LoopsViewController.designer.cs
index c13350b6..80f9dca4 100644
--- a/MPfm/MPfm.iOS/Classes/Controllers/LoopsViewController.designer.cs
+++ b/MPfm/MPfm.iOS/Classes/Controllers/LoopsViewController.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,18 @@
namespace MPfm.iOS
{
- [Register ("LoopsViewController")]
- partial class LoopsViewController
- {
- void ReleaseDesignerOutlets()
- {
- }
- }
+ [Register ("LoopsViewController")]
+ partial class LoopsViewController
+ {
+ [Outlet]
+ MonoTouch.UIKit.UILabel lblTitle { get; set; }
+
+ void ReleaseDesignerOutlets ()
+ {
+ if (lblTitle != null) {
+ lblTitle.Dispose ();
+ lblTitle = null;
+ }
+ }
+ }
}
-
diff --git a/MPfm/MPfm.iOS/Classes/Controllers/MarkersViewController.cs b/MPfm/MPfm.iOS/Classes/Controllers/MarkersViewController.cs
index fac8b979..98e46e1f 100644
--- a/MPfm/MPfm.iOS/Classes/Controllers/MarkersViewController.cs
+++ b/MPfm/MPfm.iOS/Classes/Controllers/MarkersViewController.cs
@@ -33,7 +33,7 @@ public MarkersViewController(Action onViewReady)
public override void ViewDidLoad()
{
- this.View.BackgroundColor = UIColor.Blue;
+ lblTitle.Font = UIFont.FromName("OstrichSans-Black", 28);
base.ViewDidLoad();
}
diff --git a/MPfm/MPfm.iOS/Classes/Controllers/MarkersViewController.designer.cs b/MPfm/MPfm.iOS/Classes/Controllers/MarkersViewController.designer.cs
index eedae49b..12a700fc 100644
--- a/MPfm/MPfm.iOS/Classes/Controllers/MarkersViewController.designer.cs
+++ b/MPfm/MPfm.iOS/Classes/Controllers/MarkersViewController.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,18 @@
namespace MPfm.iOS
{
- [Register ("MarkersViewController")]
- partial class MarkersViewController
- {
- void ReleaseDesignerOutlets()
- {
- }
- }
+ [Register ("MarkersViewController")]
+ partial class MarkersViewController
+ {
+ [Outlet]
+ MonoTouch.UIKit.UILabel lblTitle { get; set; }
+
+ void ReleaseDesignerOutlets ()
+ {
+ if (lblTitle != null) {
+ lblTitle.Dispose ();
+ lblTitle = null;
+ }
+ }
+ }
}
-
diff --git a/MPfm/MPfm.iOS/Classes/Controllers/MobileLibraryBrowserViewController.cs b/MPfm/MPfm.iOS/Classes/Controllers/MobileLibraryBrowserViewController.cs
index 2c903782..3c8e1e7e 100644
--- a/MPfm/MPfm.iOS/Classes/Controllers/MobileLibraryBrowserViewController.cs
+++ b/MPfm/MPfm.iOS/Classes/Controllers/MobileLibraryBrowserViewController.cs
@@ -26,6 +26,9 @@
using MPfm.MVP.Views;
using MPfm.MVP.Models;
using System.Linq;
+using MPfm.Sound.AudioFiles;
+using MonoTouch.CoreAnimation;
+using MonoTouch.CoreGraphics;
namespace MPfm.iOS.Classes.Controllers
{
@@ -33,6 +36,8 @@ public partial class MobileLibraryBrowserViewController : BaseViewController, IM
{
private List _items;
private string _cellIdentifier = "MobileLibraryBrowserCell";
+ private string _navigationBarTitle = string.Empty;
+ private MobileLibraryBrowserType _browserType;
public MobileLibraryBrowserViewController(Action onViewReady)
: base (onViewReady, UserInterfaceIdiomIsPhone ? "MobileLibraryBrowserViewController_iPhone" : "MobileLibraryBrowserViewController_iPad", null)
@@ -45,6 +50,19 @@ public override void ViewDidLoad()
tableView.WeakDataSource = this;
tableView.WeakDelegate = this;
+ lblArtistName.Font = UIFont.FromName("OstrichSans-Black", 20);
+ lblAlbumTitle.Font = UIFont.FromName("OstrichSans-Black", 16);
+ lblSubtitle1.Font = UIFont.FromName("OstrichSans-Black", 12);
+ lblSubtitle2.Font = UIFont.FromName("OstrichSans-Black", 12);
+
+
+ //lblArtistName.SizeToFit();
+ //lblAlbumTitle.SizeToFit();
+// lblArtistName.Font = UIFont.FromName("LeagueGothic-Italic", 26);
+// lblAlbumTitle.Font = UIFont.FromName("LeagueGothic-Italic", 22);
+// lblSubtitle1.Font = UIFont.FromName("LeagueGothic-Regular", 16);
+// lblSubtitle2.Font = UIFont.FromName("LeagueGothic-Regular", 16);
+
base.ViewDidLoad();
}
@@ -53,7 +71,7 @@ public override void ViewWillAppear(bool animated)
base.ViewWillAppear(animated);
MPfmNavigationController navCtrl = (MPfmNavigationController)this.NavigationController;
- navCtrl.SetTitle("Library Browser");
+ navCtrl.SetSubtitle(_navigationBarTitle);
}
public override void ViewDidDisappear(bool animated)
@@ -77,6 +95,8 @@ public UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath)
// Set cell style
var cellStyle = UITableViewCellStyle.Subtitle;
+ if (_browserType == MobileLibraryBrowserType.Albums)
+ cellStyle = UITableViewCellStyle.Default;
// Create cell if cell could not be recycled
if (cell == null)
@@ -85,26 +105,19 @@ public UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath)
// Set title
cell.TextLabel.Text = _items[indexPath.Row].Title;
//cell.DetailTextLabel.Text = _items[indexPath.Row].
- //cell.ImageView.Image = _items[indexPath.Row].Image;
+
+ if (_browserType == MobileLibraryBrowserType.Albums)
+ cell.ImageView.Image = UIImage.FromBundle("Images/icon114");
// Set font
//cell.TextLabel.Font = UIFont.FromName("Junction", 20);
- cell.TextLabel.Font = UIFont.FromName("OstrichSans-Medium", 26);
- cell.DetailTextLabel.Font = UIFont.FromName("OstrichSans-Medium", 18);
+ cell.TextLabel.Font = UIFont.FromName("OstrichSans-Medium", 20);
+ //cell.TextLabel.Font = UIFont.FromName("LeagueGothic-Regular", 26);
+ //cell.DetailTextLabel.Font = UIFont.FromName("LeagueGothic-Regular", 18);
// Set chevron
cell.Accessory = UITableViewCellAccessory.DisclosureIndicator;
- // // Check this is the version cell (remove all user interaction)
- // if (viewModel.Items[indexPath.Row].ItemType == MoreItemType.Version)
- // {
- // cell.Accessory = UITableViewCellAccessory.None;
- // cell.SelectionStyle = UITableViewCellSelectionStyle.None;
- // cell.TextLabel.TextColor = UIColor.Gray;
- // cell.TextLabel.TextAlignment = UITextAlignment.Center;
- // cell.TextLabel.Font = UIFont.FromName("Asap", 16);
- // }
-
return cell;
}
@@ -116,15 +129,50 @@ public void RowSelected(UITableView tableView, NSIndexPath indexPath)
#region IMobileLibraryBrowserView implementation
- public MobileLibraryBrowserType BrowserType { get; set; }
- public string Filter { get; set; }
public Action OnItemClick { get; set; }
- public void RefreshLibraryBrowser(IEnumerable entities)
+ public void RefreshLibraryBrowser(IEnumerable entities, MobileLibraryBrowserType browserType, string navigationBarTitle)
{
InvokeOnMainThread(() => {
_items = entities.ToList();
+ _browserType = browserType;
+ _navigationBarTitle = navigationBarTitle;
tableView.ReloadData();
+
+ // Hide album cover if not showing songs
+ if(browserType != MobileLibraryBrowserType.Songs)
+ {
+ viewAlbumCover.Hidden = true;
+ tableView.Frame = this.View.Frame;
+ }
+ else
+ {
+ var audioFile = _items[0].AudioFile;
+ lblArtistName.Text = audioFile.ArtistName;
+ lblAlbumTitle.Text = audioFile.AlbumTitle;
+ lblSubtitle1.Text = _items.Count().ToString() + " songs";
+
+ //CGSize s = [yourString sizeWithFont:[UIFont systemFontOfSize:12] constrainedToSize:CGSizeMake(width, MAXFLOAT) lineBreakMode:UILineBreakModeWordWrap];
+ NSString strArtistName = new NSString(audioFile.ArtistName);
+ SizeF sizeArtistName = strArtistName.StringSize(lblArtistName.Font, new SizeF(lblArtistName.Frame.Width, lblArtistName.Frame.Height), UILineBreakMode.WordWrap);
+ lblArtistName.Frame = new RectangleF(lblArtistName.Frame.X, lblArtistName.Frame.Y, sizeArtistName.Width, sizeArtistName.Height);
+
+ NSString strAlbumTitle = new NSString(audioFile.AlbumTitle);
+ SizeF sizeAlbumTitle = strAlbumTitle.StringSize(lblAlbumTitle.Font, new SizeF(lblAlbumTitle.Frame.Width, lblAlbumTitle.Frame.Height), UILineBreakMode.WordWrap);
+ lblAlbumTitle.Frame = new RectangleF(lblAlbumTitle.Frame.X, lblAlbumTitle.Frame.Y, sizeAlbumTitle.Width, sizeAlbumTitle.Height);
+
+ // TODO: Add a memory cache and stop reloading the image from disk every time
+ byte[] bytesImage = AudioFile.ExtractImageByteArrayForAudioFile(audioFile.FilePath);
+ NSData imageData = NSData.FromArray(bytesImage);
+ UIImage image = UIImage.LoadFromData(imageData);
+ imageViewAlbumCover.Image = image;
+ imageViewAlbumCover.BackgroundColor = UIColor.Black;
+
+ CAGradientLayer gradient = new CAGradientLayer();
+ gradient.Frame = viewAlbumCover.Bounds;
+ gradient.Colors = new MonoTouch.CoreGraphics.CGColor[2] { new CGColor(0.1f, 0.1f, 0.1f, 1), new CGColor(0.4f, 0.4f, 0.4f, 1) }; //[NSArray arrayWithObjects:(id)[[UIColor blackColor] CGColor], (id)[[UIColor whiteColor] CGColor], nil];
+ viewAlbumCover.Layer.InsertSublayer(gradient, 0);
+ }
});
}
diff --git a/MPfm/MPfm.iOS/Classes/Controllers/MobileLibraryBrowserViewController.designer.cs b/MPfm/MPfm.iOS/Classes/Controllers/MobileLibraryBrowserViewController.designer.cs
index ac18ae15..a3a0fc1d 100644
--- a/MPfm/MPfm.iOS/Classes/Controllers/MobileLibraryBrowserViewController.designer.cs
+++ b/MPfm/MPfm.iOS/Classes/Controllers/MobileLibraryBrowserViewController.designer.cs
@@ -1,20 +1,9 @@
-// Copyright © 2011-2013 Yanick Castonguay
+// WARNING
//
-// This file is part of MPfm.
+// 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.
//
-// 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 MonoTouch.Foundation;
namespace MPfm.iOS.Classes.Controllers
@@ -24,6 +13,24 @@ partial class MobileLibraryBrowserViewController
{
[Outlet]
MonoTouch.UIKit.UITableView tableView { get; set; }
+
+ [Outlet]
+ MonoTouch.UIKit.UIView viewAlbumCover { get; set; }
+
+ [Outlet]
+ MonoTouch.UIKit.UIImageView imageViewAlbumCover { get; set; }
+
+ [Outlet]
+ MonoTouch.UIKit.UILabel lblArtistName { get; set; }
+
+ [Outlet]
+ MonoTouch.UIKit.UILabel lblAlbumTitle { get; set; }
+
+ [Outlet]
+ MonoTouch.UIKit.UILabel lblSubtitle1 { get; set; }
+
+ [Outlet]
+ MonoTouch.UIKit.UILabel lblSubtitle2 { get; set; }
void ReleaseDesignerOutlets ()
{
@@ -31,6 +38,36 @@ void ReleaseDesignerOutlets ()
tableView.Dispose ();
tableView = null;
}
+
+ if (viewAlbumCover != null) {
+ viewAlbumCover.Dispose ();
+ viewAlbumCover = null;
+ }
+
+ if (imageViewAlbumCover != null) {
+ imageViewAlbumCover.Dispose ();
+ imageViewAlbumCover = null;
+ }
+
+ if (lblArtistName != null) {
+ lblArtistName.Dispose ();
+ lblArtistName = null;
+ }
+
+ if (lblAlbumTitle != null) {
+ lblAlbumTitle.Dispose ();
+ lblAlbumTitle = null;
+ }
+
+ if (lblSubtitle1 != null) {
+ lblSubtitle1.Dispose ();
+ lblSubtitle1 = null;
+ }
+
+ if (lblSubtitle2 != null) {
+ lblSubtitle2.Dispose ();
+ lblSubtitle2 = null;
+ }
}
}
}
diff --git a/MPfm/MPfm.iOS/Classes/Controllers/PitchShiftingViewController.cs b/MPfm/MPfm.iOS/Classes/Controllers/PitchShiftingViewController.cs
index 0fe5004b..45e9f84a 100644
--- a/MPfm/MPfm.iOS/Classes/Controllers/PitchShiftingViewController.cs
+++ b/MPfm/MPfm.iOS/Classes/Controllers/PitchShiftingViewController.cs
@@ -33,7 +33,7 @@ public PitchShiftingViewController(Action onViewReady)
public override void ViewDidLoad()
{
- this.View.BackgroundColor = UIColor.Brown;
+ lblTitle.Font = UIFont.FromName("OstrichSans-Black", 28);
base.ViewDidLoad();
}
diff --git a/MPfm/MPfm.iOS/Classes/Controllers/PitchShiftingViewController.designer.cs b/MPfm/MPfm.iOS/Classes/Controllers/PitchShiftingViewController.designer.cs
index 2eaef496..7d31319f 100644
--- a/MPfm/MPfm.iOS/Classes/Controllers/PitchShiftingViewController.designer.cs
+++ b/MPfm/MPfm.iOS/Classes/Controllers/PitchShiftingViewController.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,18 @@
namespace MPfm.iOS
{
- [Register ("PitchShiftingViewController")]
- partial class PitchShiftingViewController
- {
- void ReleaseDesignerOutlets()
- {
- }
- }
+ [Register ("PitchShiftingViewController")]
+ partial class PitchShiftingViewController
+ {
+ [Outlet]
+ MonoTouch.UIKit.UILabel lblTitle { get; set; }
+
+ void ReleaseDesignerOutlets ()
+ {
+ if (lblTitle != null) {
+ lblTitle.Dispose ();
+ lblTitle = null;
+ }
+ }
+ }
}
-
diff --git a/MPfm/MPfm.iOS/Classes/Controllers/PlayerMetadataViewController.cs b/MPfm/MPfm.iOS/Classes/Controllers/PlayerMetadataViewController.cs
index 26a89c25..77b3ec5f 100644
--- a/MPfm/MPfm.iOS/Classes/Controllers/PlayerMetadataViewController.cs
+++ b/MPfm/MPfm.iOS/Classes/Controllers/PlayerMetadataViewController.cs
@@ -39,17 +39,9 @@ public override void ViewDidLoad()
lblAlbumTitle.Font = UIFont.FromName("OstrichSans-Medium", 24);
lblTitle.Font = UIFont.FromName("OstrichSans-Medium", 18);
- this.View.BackgroundColor = UIColor.Orange;
-
base.ViewDidLoad();
}
- public override void ViewWillAppear(bool animated)
- {
- // TODO: This event is not called when the view is added manually! (i.e. to a UIScrollView)!
- base.ViewWillAppear(animated);
- }
-
public void RefreshAudioFile(AudioFile audioFile)
{
InvokeOnMainThread(() => {
diff --git a/MPfm/MPfm.iOS/Classes/Controllers/PlayerViewController.cs b/MPfm/MPfm.iOS/Classes/Controllers/PlayerViewController.cs
index 5394b63b..14641072 100644
--- a/MPfm/MPfm.iOS/Classes/Controllers/PlayerViewController.cs
+++ b/MPfm/MPfm.iOS/Classes/Controllers/PlayerViewController.cs
@@ -80,7 +80,7 @@ public override void ViewWillAppear(bool animated)
base.ViewWillAppear(animated);
MPfmNavigationController navCtrl = (MPfmNavigationController)this.NavigationController;
- navCtrl.SetTitle("Now Playing");
+ navCtrl.SetSubtitle("Now Playing");
}
public void AddScrollView(UIViewController viewController)
@@ -142,11 +142,19 @@ public void RefreshPlayerPosition(PlayerPositionEntity entity)
public void RefreshSongInformation(AudioFile audioFile)
{
InvokeOnMainThread(() => {
- // TODO: Add a memory cache and stop reloading the image from disk every time
- byte[] bytesImage = AudioFile.ExtractImageByteArrayForAudioFile(audioFile.FilePath);
- NSData imageData = NSData.FromArray(bytesImage);
- UIImage image = UIImage.LoadFromData(imageData);
- imageViewAlbumArt.Image = image;
+
+ try
+ {
+ // TODO: Add a memory cache and stop reloading the image from disk every time
+ byte[] bytesImage = AudioFile.ExtractImageByteArrayForAudioFile(audioFile.FilePath);
+ NSData imageData = NSData.FromArray(bytesImage);
+ UIImage image = UIImage.LoadFromData(imageData);
+ imageViewAlbumArt.Image = image;
+ }
+ catch(Exception ex)
+ {
+ Console.WriteLine("Could not load album art: " + ex.Message);
+ }
//lblArtistName.Text = audioFile.ArtistName;
//lblAlbumTitle.Text = audioFile.AlbumTitle;
diff --git a/MPfm/MPfm.iOS/Classes/Controllers/TimeShiftingViewController.cs b/MPfm/MPfm.iOS/Classes/Controllers/TimeShiftingViewController.cs
index 5c05e213..413482dc 100644
--- a/MPfm/MPfm.iOS/Classes/Controllers/TimeShiftingViewController.cs
+++ b/MPfm/MPfm.iOS/Classes/Controllers/TimeShiftingViewController.cs
@@ -33,7 +33,7 @@ public TimeShiftingViewController(Action onViewReady)
public override void ViewDidLoad()
{
- this.View.BackgroundColor = UIColor.Magenta;
+ lblTitle.Font = UIFont.FromName("OstrichSans-Black", 28);
base.ViewDidLoad();
}
diff --git a/MPfm/MPfm.iOS/Classes/Controllers/TimeShiftingViewController.designer.cs b/MPfm/MPfm.iOS/Classes/Controllers/TimeShiftingViewController.designer.cs
index 57f98fbb..b85f9248 100644
--- a/MPfm/MPfm.iOS/Classes/Controllers/TimeShiftingViewController.designer.cs
+++ b/MPfm/MPfm.iOS/Classes/Controllers/TimeShiftingViewController.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,18 @@
namespace MPfm.iOS
{
- [Register ("TimeShiftingViewController")]
- partial class TimeShiftingViewController
- {
- void ReleaseDesignerOutlets()
- {
- }
- }
+ [Register ("TimeShiftingViewController")]
+ partial class TimeShiftingViewController
+ {
+ [Outlet]
+ MonoTouch.UIKit.UILabel lblTitle { get; set; }
+
+ void ReleaseDesignerOutlets ()
+ {
+ if (lblTitle != null) {
+ lblTitle.Dispose ();
+ lblTitle = null;
+ }
+ }
+ }
}
-
diff --git a/MPfm/MPfm.iOS/Classes/Controls/MPfmNavigationController.cs b/MPfm/MPfm.iOS/Classes/Controls/MPfmNavigationController.cs
index 766e2e80..337de647 100644
--- a/MPfm/MPfm.iOS/Classes/Controls/MPfmNavigationController.cs
+++ b/MPfm/MPfm.iOS/Classes/Controls/MPfmNavigationController.cs
@@ -27,36 +27,96 @@ namespace MPfm.iOS.Classes.Controls
[Register("MPfmNavigationController")]
public class MPfmNavigationController : UINavigationController
{
- UILabel labelTitle;
+ UILabel _lblTitle;
+ UILabel _lblSubtitle;
+ UIButton _btnBack;
+ UIButton _btnEffects;
- public MPfmNavigationController(string fontName, float fontSize) : base()
+ public MPfmNavigationController() : base()
{
- // Create title label
- labelTitle = new UILabel(new RectangleF(0, 3, UIScreen.MainScreen.Bounds.Width, 40));
- labelTitle.TextColor = UIColor.White;
- labelTitle.BackgroundColor = UIColor.Clear;
- labelTitle.Text = string.Empty;
- labelTitle.TextAlignment = UITextAlignment.Center;
- labelTitle.Font = UIFont.FromName(fontName, fontSize);
-
- // Add controls
- this.NavigationBar.AddSubview(labelTitle);
+ this.WeakDelegate = this;
+
+ _btnBack = new UIButton(UIButtonType.Custom);
+ _btnBack.Frame = new RectangleF(4, 4, 36, 36);
+ _btnBack.SetBackgroundImage(UIImage.FromBundle("Images/back.png"), UIControlState.Normal);
+ _btnBack.TouchUpInside += (sender, e) => {
+ if(ViewControllers.Length > 1)
+ {
+ PopViewControllerAnimated(true);
+ }
+ };
+
+ _btnEffects = new UIButton(UIButtonType.RoundedRect);
+ _btnEffects.Frame = new RectangleF(this.NavigationBar.Frame.Width - 4 - 36, 4, 36, 36);
+ _btnEffects.SetBackgroundImage(UIImage.FromBundle("Images/effects.png"), UIControlState.Normal);
+
+ _lblTitle = new UILabel(new RectangleF(50, 6, UIScreen.MainScreen.Bounds.Width - 100, 20));
+ _lblTitle.TextColor = UIColor.White;
+ _lblTitle.BackgroundColor = UIColor.Clear;
+ _lblTitle.Text = "MPfm";
+ _lblTitle.TextAlignment = UITextAlignment.Left;
+ _lblTitle.Font = UIFont.FromName("OstrichSans-Black", 20);
+ //_lblTitle.Font = UIFont.FromName("LeagueGothic-Regular", 20);
+
+ _lblSubtitle = new UILabel(new RectangleF(50, 23, UIScreen.MainScreen.Bounds.Width - 100, 20));
+ _lblSubtitle.LineBreakMode = UILineBreakMode.HeadTruncation;
+ _lblSubtitle.TextColor = UIColor.LightGray;
+ _lblSubtitle.BackgroundColor = UIColor.Clear;
+ _lblSubtitle.Text = "Library Browser";
+ _lblSubtitle.TextAlignment = UITextAlignment.Left;
+ _lblSubtitle.Font = UIFont.FromName("OstrichSans-Black", 14);
+ //_lblSubtitle.Font = UIFont.FromName("LeagueGothic-Regular", 16);
+
+ this.NavigationBar.AddSubview(_btnBack);
+ this.NavigationBar.AddSubview(_btnEffects);
+ this.NavigationBar.AddSubview(_lblTitle);
+ this.NavigationBar.AddSubview(_lblSubtitle);
}
-
- public void SetTitle(string title)
+
+ [Export("navigationBar:shouldPushItem:")]
+ public bool ShouldPushItem(UINavigationItem item)
+ {
+ if (ViewControllers.Length > 1)
+ {
+ UIView.Animate(0.25, () => {
+ _btnBack.SetBackgroundImage(UIImage.FromBundle("Images/back_wide.png"), UIControlState.Normal);
+ _btnBack.Frame = new RectangleF(4, 4, 43, 36);
+ _lblTitle.Frame = new RectangleF(57, 6, UIScreen.MainScreen.Bounds.Width - 60, 20);
+ _lblSubtitle.Frame = new RectangleF(57, 23, UIScreen.MainScreen.Bounds.Width - 60, 20);
+ });
+ }
+
+ return true;
+ }
+
+ [Export("navigationBar:shouldPopItem:")]
+ public bool ShouldPopItem(UINavigationItem item)
+ {
+ if (ViewControllers.Length == 1)
+ {
+ UIView.Animate(0.25, () => {
+ _btnBack.SetBackgroundImage(UIImage.FromBundle("Images/back.png"), UIControlState.Normal);
+ _btnBack.Frame = new RectangleF(4, 4, 36, 36);
+ _lblTitle.Frame = new RectangleF(50, 6, UIScreen.MainScreen.Bounds.Width - 60, 20);
+ _lblSubtitle.Frame = new RectangleF(50, 23, UIScreen.MainScreen.Bounds.Width - 60, 20);
+ });
+ }
+
+ return true;
+ }
+
+ public void SetSubtitle(string subtitle)
{
- this.NavigationItem.Title = string.Empty;
-
UIView.Animate(0.25f, delegate
{
- labelTitle.Alpha = 0;
+ _lblSubtitle.Alpha = 0;
}, delegate
{
- labelTitle.Text = title;
+ _lblSubtitle.Text = subtitle;
});
UIView.Animate(0.25f, delegate
{
- labelTitle.Alpha = 1;
+ _lblSubtitle.Alpha = 1;
});
}
}
diff --git a/MPfm/MPfm.iOS/Classes/Delegates/AppDelegate.cs b/MPfm/MPfm.iOS/Classes/Delegates/AppDelegate.cs
index aebf4028..64e608fc 100644
--- a/MPfm/MPfm.iOS/Classes/Delegates/AppDelegate.cs
+++ b/MPfm/MPfm.iOS/Classes/Delegates/AppDelegate.cs
@@ -117,19 +117,25 @@ public void AddTab(MobileNavigationTabType type, string title, UIViewController
// Create text attributes for tab
UITextAttributes attr = new UITextAttributes();
//attr.Font = UIFont.FromName("Junction", 11);
- attr.Font = UIFont.FromName("OstrichSans-Black", 13);
+ attr.Font = UIFont.FromName("OstrichSans-Black", 12);
+ //attr.Font = UIFont.FromName("LeagueGothic-Regular", 13);
attr.TextColor = UIColor.White;
attr.TextShadowColor = UIColor.DarkGray;
attr.TextShadowOffset = new UIOffset(1, 1);
// Create navigation controller
- var navCtrl = new MPfmNavigationController("OstrichSans-Black", 26);
- navCtrl.SetTitle(title);
- navCtrl.NavigationBar.BackgroundColor = UIColor.Clear;
- navCtrl.NavigationBar.TintColor = UIColor.Clear;
+ var navCtrl = new MPfmNavigationController();
+ navCtrl.SetSubtitle(title);
+ //navCtrl.NavigationBar.BackgroundColor = UIColor.FromRGBA(0.5f, 1, 0.5f, 1);
+ navCtrl.NavigationBar.TintColor = UIColor.FromRGBA(0.2f, 0.2f, 0.2f, 1);
navCtrl.TabBarItem.SetTitleTextAttributes(attr, UIControlState.Normal);
navCtrl.TabBarItem.Title = title;
- navCtrl.TabBarItem.Image = UIImage.FromBundle("Images/Tabs/more");
+
+ if(title.ToUpper() == "MORE")
+ navCtrl.TabBarItem.Image = UIImage.FromBundle("Images/Tabs/more");
+ else
+ navCtrl.TabBarItem.Image = UIImage.FromBundle("Images/Tabs/audio");
+
navCtrl.PushViewController(viewController, false);
// Add view controller to list
diff --git a/MPfm/MPfm.iOS/Fonts/LeagueGothic-CondensedItalic.otf b/MPfm/MPfm.iOS/Fonts/LeagueGothic-CondensedItalic.otf
new file mode 100755
index 00000000..28d71852
Binary files /dev/null and b/MPfm/MPfm.iOS/Fonts/LeagueGothic-CondensedItalic.otf differ
diff --git a/MPfm/MPfm.iOS/Fonts/LeagueGothic-CondensedRegular.otf b/MPfm/MPfm.iOS/Fonts/LeagueGothic-CondensedRegular.otf
new file mode 100755
index 00000000..b1e70bd0
Binary files /dev/null and b/MPfm/MPfm.iOS/Fonts/LeagueGothic-CondensedRegular.otf differ
diff --git a/MPfm/MPfm.iOS/Fonts/LeagueGothic-Italic.otf b/MPfm/MPfm.iOS/Fonts/LeagueGothic-Italic.otf
new file mode 100755
index 00000000..ce19c0a4
Binary files /dev/null and b/MPfm/MPfm.iOS/Fonts/LeagueGothic-Italic.otf differ
diff --git a/MPfm/MPfm.iOS/Fonts/LeagueGothic-Regular.otf b/MPfm/MPfm.iOS/Fonts/LeagueGothic-Regular.otf
new file mode 100755
index 00000000..6cd753fa
Binary files /dev/null and b/MPfm/MPfm.iOS/Fonts/LeagueGothic-Regular.otf differ
diff --git a/MPfm/MPfm.iOS/Images/Tabs/audio.png b/MPfm/MPfm.iOS/Images/Tabs/audio.png
new file mode 100644
index 00000000..8ab4fccb
Binary files /dev/null and b/MPfm/MPfm.iOS/Images/Tabs/audio.png differ
diff --git a/MPfm/MPfm.iOS/Images/Tabs/audio@2x.png b/MPfm/MPfm.iOS/Images/Tabs/audio@2x.png
new file mode 100644
index 00000000..8ab4fccb
Binary files /dev/null and b/MPfm/MPfm.iOS/Images/Tabs/audio@2x.png differ
diff --git a/MPfm/MPfm.iOS/Images/back@2x.png b/MPfm/MPfm.iOS/Images/back@2x.png
new file mode 100644
index 00000000..23256435
Binary files /dev/null and b/MPfm/MPfm.iOS/Images/back@2x.png differ
diff --git a/MPfm/MPfm.iOS/Images/back_wide@2x.png b/MPfm/MPfm.iOS/Images/back_wide@2x.png
new file mode 100644
index 00000000..2025f18a
Binary files /dev/null and b/MPfm/MPfm.iOS/Images/back_wide@2x.png differ
diff --git a/MPfm/MPfm.iOS/Images/effects.png b/MPfm/MPfm.iOS/Images/effects.png
new file mode 100644
index 00000000..c4928b0f
Binary files /dev/null and b/MPfm/MPfm.iOS/Images/effects.png differ
diff --git a/MPfm/MPfm.iOS/Info.plist b/MPfm/MPfm.iOS/Info.plist
index cce4c670..e00a9199 100644
--- a/MPfm/MPfm.iOS/Info.plist
+++ b/MPfm/MPfm.iOS/Info.plist
@@ -24,6 +24,10 @@
Fonts/OstrichLight.ttf
Fonts/OstrichRegular.ttf
Fonts/OstrichRounded.ttf
+ Fonts/LeagueGothic-CondensedItalic.otf
+ Fonts/LeagueGothic-CondensedRegular.otf
+ Fonts/LeagueGothic-Italic.otf
+ Fonts/LeagueGothic-Regular.otf
UIBackgroundModes
diff --git a/MPfm/MPfm.iOS/MPfm.iOS.csproj b/MPfm/MPfm.iOS/MPfm.iOS.csproj
index efe4eab1..7bad4856 100644
--- a/MPfm/MPfm.iOS/MPfm.iOS.csproj
+++ b/MPfm/MPfm.iOS/MPfm.iOS.csproj
@@ -219,11 +219,20 @@
+
+
+
+
+
+
+
+
+
diff --git a/MPfm/MPfm.iOS/XIB/iPhone/LoopsViewController_iPhone.xib b/MPfm/MPfm.iOS/XIB/iPhone/LoopsViewController_iPhone.xib
index 1abb6f17..6ff97088 100644
--- a/MPfm/MPfm.iOS/XIB/iPhone/LoopsViewController_iPhone.xib
+++ b/MPfm/MPfm.iOS/XIB/iPhone/LoopsViewController_iPhone.xib
@@ -1,17 +1,18 @@
- 1280
- 11C25
- 1919
- 1138.11
- 566.00
+ 1552
+ 12C54
+ 3084
+ 1187.34
+ 625.00
IBProxyObject
+ IBUILabel
IBUIView
@@ -19,7 +20,7 @@
@@ -52,35 +100,59 @@
view
-
-
+
+
3
+
+
+ lblTitle
+
+
+
+ 8
+
0
-
-
-
+
+
+
1
-
-
+
+
+
+
+
-1
-
-
+
+
File's Owner
-2
-
-
+
+
+
+
+ 4
+
+
+
+
+
+
+
+ 7
+
+
@@ -90,21 +162,34 @@
UIResponder
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
+ com.apple.InterfaceBuilder.IBCocoaTouchPlugin
+ com.apple.InterfaceBuilder.IBCocoaTouchPlugin
-
-
-
-
- 3
+
+
+
+
+ 8
LoopsViewController
UIViewController
+
+ lblTitle
+ UILabel
+
+
+ lblTitle
+
+ lblTitle
+ UILabel
+
+
IBProjectSource
- LoopsViewController.h
+ ./Classes/LoopsViewController.h
@@ -113,6 +198,6 @@
IBCocoaTouchFramework
YES
3
- 916
+ 2083
diff --git a/MPfm/MPfm.iOS/XIB/iPhone/MarkersViewController_iPhone.xib b/MPfm/MPfm.iOS/XIB/iPhone/MarkersViewController_iPhone.xib
index a1e2741e..85d08c9c 100644
--- a/MPfm/MPfm.iOS/XIB/iPhone/MarkersViewController_iPhone.xib
+++ b/MPfm/MPfm.iOS/XIB/iPhone/MarkersViewController_iPhone.xib
@@ -1,17 +1,18 @@
- 1280
- 11C25
- 1919
- 1138.11
- 566.00
+ 1552
+ 12C54
+ 3084
+ 1187.34
+ 625.00
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
- 916
+ 2083
IBProxyObject
+ IBUILabel
IBUIView
@@ -19,7 +20,7 @@
PluginDependencyRecalculationVersion
-
+
@@ -31,19 +32,66 @@
IBCocoaTouchFramework
-
+
274
+
+
+
+ 274
+
+
+
+ 292
+ {320, 32}
+
+
+ _NS:9
+ NO
+ YES
+ 7
+ NO
+ IBCocoaTouchFramework
+ Markers
+
+ 1
+ MSAxIDEAA
+
+
+ 0
+ 1
+
+ 2
+ 13
+
+
+ Helvetica-Bold
+ 13
+ 16
+
+ NO
+
+
+ {320, 460}
+
+
+
+ _NS:9
+
+ 3
+ MCAwLjQAA
+
+ IBCocoaTouchFramework
+
+
{{0, 20}, {320, 460}}
-
-
+
+
+
3
- MQA
-
- 2
-
+ MCAwAA
-
+
IBCocoaTouchFramework
@@ -52,35 +100,59 @@
view
-
-
+
+
3
+
+
+ lblTitle
+
+
+
+ 6
+
0
-
-
-
+
+
+
1
-
-
+
+
+
+
+
-1
-
-
+
+
File's Owner
-2
-
-
+
+
+
+
+ 4
+
+
+
+
+
+
+
+ 5
+
+
@@ -90,21 +162,34 @@
UIResponder
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
+ com.apple.InterfaceBuilder.IBCocoaTouchPlugin
+ com.apple.InterfaceBuilder.IBCocoaTouchPlugin
-
-
-
-
- 3
+
+
+
+
+ 6
MarkersViewController
UIViewController
+
+ lblTitle
+ UILabel
+
+
+ lblTitle
+
+ lblTitle
+ UILabel
+
+
IBProjectSource
- MarkersViewController.h
+ ./Classes/MarkersViewController.h
@@ -113,6 +198,6 @@
IBCocoaTouchFramework
YES
3
- 916
+ 2083
diff --git a/MPfm/MPfm.iOS/XIB/iPhone/MobileLibraryBrowserViewController_iPhone.xib b/MPfm/MPfm.iOS/XIB/iPhone/MobileLibraryBrowserViewController_iPhone.xib
index 970bc6c6..f06d957f 100644
--- a/MPfm/MPfm.iOS/XIB/iPhone/MobileLibraryBrowserViewController_iPhone.xib
+++ b/MPfm/MPfm.iOS/XIB/iPhone/MobileLibraryBrowserViewController_iPhone.xib
@@ -1,17 +1,19 @@
- 1536
+ 1552
12C54
- 2844
+ 3084
1187.34
625.00
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
- 1930
+ 2083
IBProxyObject
+ IBUIImageView
+ IBUILabel
IBUITableView
IBUIView
@@ -38,12 +40,12 @@
274
- {320, 460}
+ {{0, 88}, {320, 372}}
_NS:9
-
+
3
MQA
@@ -57,11 +59,141 @@
22
22
+
+
+ 292
+
+
+
+ 274
+ {88, 88}
+
+
+
+ _NS:9
+ 1
+ NO
+ IBCocoaTouchFramework
+
+
+
+ 292
+ {{93, 5}, {194, 24}}
+
+
+
+ _NS:9
+
+ 3
+ MAA
+
+ NO
+ YES
+ 7
+ NO
+ IBCocoaTouchFramework
+ Artist Name
+
+
+ 0
+
+ 1
+ 17
+
+
+ Helvetica
+ 17
+ 16
+
+ NO
+
+
+
+ 292
+ {{93, 27}, {194, 24}}
+
+
+
+ _NS:9
+
+ NO
+ YES
+ 7
+ NO
+ IBCocoaTouchFramework
+ Album Title
+
+ 1
+ MC44NTAxMTg4ODU5IDAuODUwMTE4ODg1OSAwLjg1MDExODg4NTkAA
+
+
+ 0
+
+
+ NO
+
+
+
+ 292
+ {{93, 48}, {194, 20}}
+
+
+
+ _NS:9
+ NO
+ YES
+ 7
+ NO
+ IBCocoaTouchFramework
+ 12 songs
+
+ 3
+ MC42NjY2NjY2NjY3AA
+
+
+ 0
+
+
+ NO
+
+
+
+ 292
+ {{93, 65}, {194, 20}}
+
+
+
+ _NS:9
+ NO
+ YES
+ 7
+ NO
+ IBCocoaTouchFramework
+ 45:00.452
+
+
+ 0
+
+
+ NO
+
+
+ {320, 88}
+
+
+
+ _NS:9
+
+ 1
+ MC4yMjMyOTMxMzg2IDAuMjIzMjkzMTM4NiAwLjIyMzI5MzEzODYAA
+
+ IBCocoaTouchFramework
+
{{0, 20}, {320, 460}}
-
+
3
MQA
@@ -91,6 +223,54 @@
5
+
+
+ viewAlbumCover
+
+
+
+ 12
+
+
+
+ imageViewAlbumCover
+
+
+
+ 13
+
+
+
+ lblArtistName
+
+
+
+ 14
+
+
+
+ lblAlbumTitle
+
+
+
+ 15
+
+
+
+ lblSubtitle1
+
+
+
+ 16
+
+
+
+ lblSubtitle2
+
+
+
+ 17
+
@@ -105,6 +285,7 @@
+
@@ -124,6 +305,43 @@
+
+ 6
+
+
+
+
+
+
+
+
+
+
+
+ 7
+
+
+
+
+ 8
+
+
+
+
+ 9
+
+
+
+
+ 10
+
+
+
+
+ 11
+
+
+
@@ -132,19 +350,75 @@
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
+ com.apple.InterfaceBuilder.IBCocoaTouchPlugin
+ com.apple.InterfaceBuilder.IBCocoaTouchPlugin
- 5
+ 17
+
+
+
+
+ MobileLibraryBrowserViewController
+ UIViewController
+
+ UIImageView
+ UILabel
+ UILabel
+ UILabel
+ UILabel
+ UITableView
+ UIView
+
+
+
+ imageViewAlbumCover
+ UIImageView
+
+
+ lblAlbumTitle
+ UILabel
+
+
+ lblArtistName
+ UILabel
+
+
+ lblSubtitle1
+ UILabel
+
+
+ lblSubtitle2
+ UILabel
+
+
+ tableView
+ UITableView
+
+
+ viewAlbumCover
+ UIView
+
+
+
+ IBProjectSource
+ ./Classes/MobileLibraryBrowserViewController.h
+
+
+
-
0
IBCocoaTouchFramework
YES
3
- 1930
+ 2083
diff --git a/MPfm/MPfm.iOS/XIB/iPhone/PitchShiftingViewController_iPhone.xib b/MPfm/MPfm.iOS/XIB/iPhone/PitchShiftingViewController_iPhone.xib
index e62648d7..99429179 100644
--- a/MPfm/MPfm.iOS/XIB/iPhone/PitchShiftingViewController_iPhone.xib
+++ b/MPfm/MPfm.iOS/XIB/iPhone/PitchShiftingViewController_iPhone.xib
@@ -1,17 +1,18 @@
- 1280
- 11C25
- 1919
- 1138.11
- 566.00
+ 1552
+ 12C54
+ 3084
+ 1187.34
+ 625.00
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
- 916
+ 2083
IBProxyObject
+ IBUILabel
IBUIView
@@ -19,7 +20,7 @@
PluginDependencyRecalculationVersion
-
+
@@ -31,19 +32,66 @@
IBCocoaTouchFramework
-
+
274
+
+
+
+ 274
+
+
+
+ 292
+ {320, 32}
+
+
+ _NS:9
+ NO
+ YES
+ 7
+ NO
+ IBCocoaTouchFramework
+ Pitch Shifting
+
+ 1
+ MSAxIDEAA
+
+
+ 0
+ 1
+
+ 2
+ 13
+
+
+ Helvetica-Bold
+ 13
+ 16
+
+ NO
+
+
+ {320, 460}
+
+
+
+ _NS:9
+
+ 3
+ MCAwLjQAA
+
+ IBCocoaTouchFramework
+
+
{{0, 20}, {320, 460}}
-
-
+
+
+
3
- MQA
-
- 2
-
+ MCAwAA
-
+
IBCocoaTouchFramework
@@ -52,35 +100,59 @@
view
-
-
+
+
3
+
+
+ lblTitle
+
+
+
+ 10
+
0
-
-
-
+
+
+
1
-
-
+
+
+
+
+
-1
-
-
+
+
File's Owner
-2
-
-
+
+
+
+
+ 8
+
+
+
+
+
+
+
+ 9
+
+
@@ -90,21 +162,34 @@
UIResponder
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
+ com.apple.InterfaceBuilder.IBCocoaTouchPlugin
+ com.apple.InterfaceBuilder.IBCocoaTouchPlugin
-
-
-
-
- 3
+
+
+
+
+ 10
PitchShiftingViewController
UIViewController
+
+ lblTitle
+ UILabel
+
+
+ lblTitle
+
+ lblTitle
+ UILabel
+
+
IBProjectSource
- PitchShiftingViewController.h
+ ./Classes/PitchShiftingViewController.h
@@ -113,6 +198,6 @@
IBCocoaTouchFramework
YES
3
- 916
+ 2083
diff --git a/MPfm/MPfm.iOS/XIB/iPhone/PlayerMetadataViewController_iPhone.xib b/MPfm/MPfm.iOS/XIB/iPhone/PlayerMetadataViewController_iPhone.xib
index 978cadd6..40b5714d 100644
--- a/MPfm/MPfm.iOS/XIB/iPhone/PlayerMetadataViewController_iPhone.xib
+++ b/MPfm/MPfm.iOS/XIB/iPhone/PlayerMetadataViewController_iPhone.xib
@@ -35,92 +35,111 @@
274
-
+
- 292
- {{0, 76}, {320, 27}}
+ 266
+
+
+
+ 268
+ {{0, 60}, {320, 27}}
+
+
+ _NS:9
+ NO
+ YES
+ 7
+ NO
+ IBCocoaTouchFramework
+ [Title]
+
+ 1
+ MSAxIDEAA
+
+
+ 0
+ 1
+
+ 1
+ 13
+
+
+ Helvetica
+ 13
+ 16
+
+ NO
+
+
+
+ 268
+ {{0, 7}, {320, 32}}
+
+
+
+ _NS:9
+ NO
+ YES
+ 7
+ NO
+ IBCocoaTouchFramework
+ [ArtistName]
+
+
+ 0
+ 1
+
+ 2
+ 13
+
+
+ Helvetica-Bold
+ 13
+ 16
+
+ NO
+
+
+
+ 268
+ {{0, 35}, {320, 28}}
+
+
+
+ _NS:9
+ NO
+ YES
+ 7
+ NO
+ IBCocoaTouchFramework
+ [AlbumTitle]
+
+
+ 0
+ 1
+
+
+ NO
+
+
+ {{0, 365}, {320, 95}}
_NS:9
- NO
- YES
- 7
- NO
- IBCocoaTouchFramework
- [Title]
-
- 1
- MSAxIDEAA
-
-
- 0
- 1
-
- 1
- 13
+
+ 3
+ MCAwLjQAA
-
- Helvetica
- 13
- 16
-
- NO
-
-
-
- 292
- {{0, 20}, {320, 32}}
-
-
-
- _NS:9
- NO
- YES
- 7
- NO
IBCocoaTouchFramework
- [ArtistName]
-
-
- 0
- 1
-
- 2
- 13
-
-
- Helvetica-Bold
- 13
- 16
-
- NO
-
-
-
- 292
- {{0, 47}, {320, 28}}
-
-
-
- _NS:9
- NO
- YES
- 7
- NO
- IBCocoaTouchFramework
- [AlbumTitle]
-
-
- 0
- 1
-
-
- NO
{{0, 20}, {320, 460}}
+
+ 1
+ MCAwIDAgMAA
+
IBCocoaTouchFramework
@@ -137,27 +156,27 @@
- lblArtistName
+ lblTitle
-
+
- 7
+ 9
- lblAlbumTitle
+ lblArtistName
-
+
- 8
+ 7
- lblTitle
+ lblAlbumTitle
-
+
- 9
+ 8
@@ -172,9 +191,7 @@
1
-
-
-
+
@@ -190,19 +207,29 @@
- 4
-
+ 10
+
+
+
+
+
+
+
+ 4
+
+
+
5
-
-
+
+
6
-
-
+
+
@@ -212,6 +239,7 @@
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
@@ -220,7 +248,7 @@
- 9
+ 10
diff --git a/MPfm/MPfm.iOS/XIB/iPhone/PlayerViewController_iPhone.xib b/MPfm/MPfm.iOS/XIB/iPhone/PlayerViewController_iPhone.xib
index 76d4b613..5d5a9000 100644
--- a/MPfm/MPfm.iOS/XIB/iPhone/PlayerViewController_iPhone.xib
+++ b/MPfm/MPfm.iOS/XIB/iPhone/PlayerViewController_iPhone.xib
@@ -43,10 +43,10 @@
292
- {320, 320}
+ {{0, 27}, {320, 320}}
-
+
_NS:9
3
@@ -59,10 +59,25 @@
292
- {320, 30}
+
+ {320, 28}
+
+
+
+ _NS:9
+
+ 1
+ MCAwIDAgMC40AA
+
+ IBCocoaTouchFramework
+
+
+
+ 292
+
+ {{0, 311}, {320, 32}}
-
_NS:9
1
@@ -129,7 +144,7 @@
268
- {{118, 328}, {83, 29}}
+ {{107, 347}, {107, 29}}
@@ -169,7 +184,7 @@
268
- {{10, 328}, {83, 29}}
+ {{0, 347}, {107, 29}}
@@ -193,10 +208,9 @@
268
- {{226, 328}, {83, 29}}
+ {{214, 347}, {106, 29}}
-
_NS:9
NO
@@ -232,7 +246,7 @@
274
- {{0, 27}, {320, 259}}
+ {{0, 28}, {320, 284}}
@@ -246,7 +260,7 @@
1292
- {{141, 284}, {38, 36}}
+ {{0, 309}, {320, 36}}
@@ -261,7 +275,7 @@
{{0, 64}, {320, 416}}
-
+
1
MCAwIDAAA
@@ -429,11 +443,12 @@
-
-
-
+
+
+
+
@@ -465,6 +480,7 @@
39
+
@@ -477,15 +493,19 @@
+
+ 75
+
+
+
74
-
- 75
-
+ 79
+
@@ -506,12 +526,13 @@
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
+ com.apple.InterfaceBuilder.IBCocoaTouchPlugin
- 78
+ 79
diff --git a/MPfm/MPfm.iOS/XIB/iPhone/TimeShiftingViewController_iPhone.xib b/MPfm/MPfm.iOS/XIB/iPhone/TimeShiftingViewController_iPhone.xib
index c2250b83..6805b9ed 100644
--- a/MPfm/MPfm.iOS/XIB/iPhone/TimeShiftingViewController_iPhone.xib
+++ b/MPfm/MPfm.iOS/XIB/iPhone/TimeShiftingViewController_iPhone.xib
@@ -1,17 +1,18 @@
- 1280
- 11C25
- 1919
- 1138.11
- 566.00
+ 1552
+ 12C54
+ 3084
+ 1187.34
+ 625.00
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
- 916
+ 2083
IBProxyObject
+ IBUILabel
IBUIView
@@ -19,7 +20,7 @@
PluginDependencyRecalculationVersion
-
+
@@ -31,19 +32,66 @@
IBCocoaTouchFramework
-
+
274
+
+
+
+ 274
+
+
+
+ 292
+ {320, 32}
+
+
+ _NS:9
+ NO
+ YES
+ 7
+ NO
+ IBCocoaTouchFramework
+ Time Shifting
+
+ 1
+ MSAxIDEAA
+
+
+ 0
+ 1
+
+ 2
+ 13
+
+
+ Helvetica-Bold
+ 13
+ 16
+
+ NO
+
+
+ {320, 460}
+
+
+
+ _NS:9
+
+ 3
+ MCAwLjQAA
+
+ IBCocoaTouchFramework
+
+
{{0, 20}, {320, 460}}
-
-
+
+
+
3
- MQA
-
- 2
-
+ MCAwAA
-
+
IBCocoaTouchFramework
@@ -52,35 +100,59 @@
view
-
-
+
+
3
+
+
+ lblTitle
+
+
+
+ 6
+
0
-
-
-
+
+
+
1
-
-
+
+
+
+
+
-1
-
-
+
+
File's Owner
-2
-
-
+
+
+
+
+ 4
+
+
+
+
+
+
+
+ 5
+
+
@@ -90,21 +162,34 @@
UIResponder
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
+ com.apple.InterfaceBuilder.IBCocoaTouchPlugin
+ com.apple.InterfaceBuilder.IBCocoaTouchPlugin
-
-
-
-
- 3
+
+
+
+
+ 6
TimeShiftingViewController
UIViewController
+
+ lblTitle
+ UILabel
+
+
+ lblTitle
+
+ lblTitle
+ UILabel
+
+
IBProjectSource
- TimeShiftingViewController.h
+ ./Classes/TimeShiftingViewController.h
@@ -113,6 +198,6 @@
IBCocoaTouchFramework
YES
3
- 916
+ 2083