Skip to content

Commit

Permalink
Android: Added SyncDownloadActivity (empty for now). SyncMenuActivity…
Browse files Browse the repository at this point in the history
… is now fully working except for item selection and missing glyphs for artists/albums/songs/checkmarks.

Related to issue #406.
  • Loading branch information
ycastonguay committed Jul 16, 2013
1 parent e261e1d commit 6baad04
Show file tree
Hide file tree
Showing 14 changed files with 355 additions and 170 deletions.
Expand Up @@ -109,7 +109,6 @@ protected override void OnDestroy()
public override bool OnCreateOptionsMenu(IMenu menu)
{
MenuInflater.Inflate(Resource.Menu.equalizerpresetdetails_menu, menu);
Console.WriteLine("EqualizerPresetDetailsActivity - OnCreateOptionsMenu");
return true;
}

Expand Down
Expand Up @@ -124,7 +124,6 @@ protected override void OnDestroy()
public override bool OnCreateOptionsMenu(IMenu menu)
{
MenuInflater.Inflate(Resource.Menu.equalizerpresets_menu, menu);
Console.WriteLine("EqualizerPresetsActivity - OnCreateOptionsMenu");
return true;
}

Expand Down
134 changes: 134 additions & 0 deletions MPfm/MPfm.Android/Classes/Activities/SyncDownloadActivity.cs
@@ -0,0 +1,134 @@
// 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 <http://www.gnu.org/licenses/>.

using System;
using System.Collections.Generic;
using System.Linq;
using Android.App;
using Android.Content;
using Android.Content.PM;
using Android.Views;
using Android.OS;
using Android.Widget;
using MPfm.Android.Classes.Adapters;
using MPfm.Android.Classes.Navigation;
using MPfm.Library.Objects;
using MPfm.MVP.Bootstrap;
using MPfm.MVP.Navigation;
using MPfm.MVP.Views;
using MPfm.Player.Objects;

namespace MPfm.Android
{
[Activity(Label = "Sync Download", ScreenOrientation = ScreenOrientation.Sensor, Theme = "@style/MyAppTheme", ConfigurationChanges = ConfigChanges.KeyboardHidden | ConfigChanges.Orientation | ConfigChanges.ScreenSize)]
public class SyncDownloadActivity : BaseActivity, ISyncDownloadView
{
private MobileNavigationManager _navigationManager;

protected override void OnCreate(Bundle bundle)
{
Console.WriteLine("SyncDownloadActivity - OnCreate");
base.OnCreate(bundle);

_navigationManager = Bootstrapper.GetContainer().Resolve<MobileNavigationManager>();
SetContentView(Resource.Layout.Sync);
ActionBar.SetDisplayHomeAsUpEnabled(true);
ActionBar.SetHomeButtonEnabled(true);

// Since the onViewReady action could not be added to an intent, tell the NavMgr the view is ready
((AndroidNavigationManager)_navigationManager).SetSyncDownloadActivityInstance(this);
}

protected override void OnStart()
{
Console.WriteLine("SyncDownloadActivity - OnStart");
base.OnStart();
}

protected override void OnRestart()
{
Console.WriteLine("SyncDownloadActivity - OnRestart");
base.OnRestart();
}

protected override void OnPause()
{
Console.WriteLine("SyncDownloadActivity - OnPause");
base.OnPause();
}

protected override void OnResume()
{
Console.WriteLine("SyncDownloadActivity - OnResume");
base.OnResume();
}

protected override void OnStop()
{
Console.WriteLine("SyncDownloadActivity - OnStop");
base.OnStop();
}

protected override void OnDestroy()
{
Console.WriteLine("SyncDownloadActivity - OnDestroy");
base.OnDestroy();
}

public override bool OnOptionsItemSelected(IMenuItem item)
{
switch (item.ItemId)
{
case global::Android.Resource.Id.Home:
var intent = new Intent(this, typeof (MainActivity));
intent.AddFlags(ActivityFlags.ClearTop | ActivityFlags.SingleTop);
this.StartActivity(intent);
this.Finish();
return true;
break;
default:
return base.OnOptionsItemSelected(item);
break;
}
}

#region ISyncDownloadView implementation

public Action OnButtonPressed { get; set; }

public void SyncDownloadError(Exception ex)
{
RunOnUiThread(() => {
AlertDialog ad = new AlertDialog.Builder(this).Create();
ad.SetCancelable(false);
ad.SetMessage(string.Format("An error has occured in SyncDownload: {0}", ex));
ad.SetButton("OK", (sender, args) => ad.Dismiss());
ad.Show();
});
}

public void RefreshStatus(SyncClientDownloadAudioFileProgressEntity entity)
{
}

public void SyncCompleted()
{
}

#endregion
}
}
30 changes: 28 additions & 2 deletions MPfm/MPfm.Android/Classes/Activities/SyncMenuActivity.cs
Expand Up @@ -66,18 +66,26 @@ protected override void OnCreate(Bundle bundle)
_lblTotal = FindViewById<TextView>(Resource.Id.syncMenu_lblTotal);
_lblFreeSpace = FindViewById<TextView>(Resource.Id.syncMenu_lblFreeSpace);
_btnSelectAll = FindViewById<Button>(Resource.Id.syncMenu_btnSelectAll);
_listView = FindViewById<ListView>(Resource.Id.syncMenu_listView);
_btnSelectAll.Click += (sender, args) => OnSelectButtonClick();

_listView = FindViewById<ListView>(Resource.Id.syncMenu_listView);
_listAdapter = new SyncMenuListAdapter(this, new List<SyncMenuItemEntity>());
_listView.SetAdapter(_listAdapter);
_listView.ItemClick += ListViewOnItemClick;
_listView.ItemLongClick += ListViewOnItemLongClick;

// Since the onViewReady action could not be added to an intent, tell the NavMgr the view is ready
((AndroidNavigationManager)_navigationManager).SetSyncMenuActivityInstance(this);
}

private void ListViewOnItemClick(object sender, AdapterView.ItemClickEventArgs itemClickEventArgs)
{
OnExpandItem(_items[itemClickEventArgs.Position]);
}

private void ListViewOnItemLongClick(object sender, AdapterView.ItemLongClickEventArgs itemLongClickEventArgs)
{
OnSelectItem(_items[itemLongClickEventArgs.Position]);
}

protected override void OnStart()
Expand Down Expand Up @@ -116,6 +124,12 @@ protected override void OnDestroy()
base.OnDestroy();
}

public override bool OnCreateOptionsMenu(IMenu menu)
{
MenuInflater.Inflate(Resource.Menu.syncmenu_menu, menu);
return true;
}

public override bool OnOptionsItemSelected(IMenuItem item)
{
switch (item.ItemId)
Expand All @@ -127,6 +141,11 @@ public override bool OnOptionsItemSelected(IMenuItem item)
this.Finish();
return true;
break;
case Resource.Id.syncMenuMenu_item_sync:
Console.WriteLine("SyncMenu - Menu item click - Syncing library...");
OnSync();
return true;
break;
default:
return base.OnOptionsItemSelected(item);
break;
Expand All @@ -153,7 +172,6 @@ public void SyncMenuError(Exception ex)

public void RefreshLoading(bool isLoading, int progressPercentage)
{
Console.WriteLine(">>>>>>>>>>>>>> SyncMenuActivity - RefreshLoading - isLoading: {0} progress: {1}", isLoading, progressPercentage);
RunOnUiThread(() => {
if (isLoading)
{
Expand Down Expand Up @@ -195,10 +213,18 @@ public void RefreshSyncTotal(string title, string subtitle, bool enoughFreeSpace

public void InsertItems(int index, List<SyncMenuItemEntity> items)
{
RunOnUiThread(() => {
_items.InsertRange(index, items);
_listAdapter.SetData(_items);
});
}

public void RemoveItems(int index, int count)
{
RunOnUiThread(() => {
_items.RemoveRange(index, count);
_listAdapter.SetData(_items);
});
}

#endregion
Expand Down
33 changes: 28 additions & 5 deletions MPfm/MPfm.Android/Classes/Adapters/SyncMenuListAdapter.cs
Expand Up @@ -17,6 +17,7 @@

using System.Collections.Generic;
using Android.Graphics;
using Android.Util;
using Android.Views;
using Android.Widget;
using MPfm.MVP.Models;
Expand Down Expand Up @@ -60,13 +61,35 @@ public override View GetView(int position, View convertView, ViewGroup parent)
var item = _items[position];
View view = convertView;
if (view == null) // no view to re-use, create new
view = _context.LayoutInflater.Inflate(Resource.Layout.GenericCell, null);
view = _context.LayoutInflater.Inflate(Resource.Layout.SyncMenuCell, null);

var title = view.FindViewById<TextView>(Resource.Id.genericcell_title);
title.Text = _items[position].ArtistName;
var title = view.FindViewById<TextView>(Resource.Id.syncMenuCell_title);
var index = view.FindViewById<TextView>(Resource.Id.syncMenuCell_index);
var image = view.FindViewById<ImageView>(Resource.Id.syncMenuCell_image);
var checkmark = view.FindViewById<ImageView>(Resource.Id.syncMenuCell_checkmark);

var image = view.FindViewById<ImageView>(Resource.Id.genericcell_image);
image.SetBackgroundColor(Color.White);
switch (_items[position].ItemType)
{
case SyncMenuItemEntityType.Artist:
//cell.ImageView.Image = UIImage.FromBundle("Images/Icons/icon_user");
title.Text = item.ArtistName;
title.SetTextSize(ComplexUnitType.Sp, 16);
index.Visibility = ViewStates.Gone;
break;
case SyncMenuItemEntityType.Album:
//cell.ImageView.Image = UIImage.FromBundle("Images/Icons/icon_vinyl");
title.Text = item.AlbumTitle;
title.SetTextSize(ComplexUnitType.Sp, 14);
index.Visibility = ViewStates.Gone;
break;
case SyncMenuItemEntityType.Song:
title.Text = item.Song.Title;
title.SetTextSize(ComplexUnitType.Sp, 14);
index.Visibility = ViewStates.Visible;
index.Text = item.Song.TrackNumber.ToString();
image.SetImageResource(0);
break;
}

return view;
}
Expand Down
2 changes: 1 addition & 1 deletion MPfm/MPfm.Android/Classes/Application.cs
Expand Up @@ -66,7 +66,7 @@ public override void OnCreate()
container.Register<IUpdateLibraryView, UpdateLibraryFragment>().AsMultiInstance();
container.Register<IMobileLibraryBrowserView, MobileLibraryBrowserFragment>().AsMultiInstance();
container.Register<ISyncView, SyncActivity>().AsMultiInstance();
container.Register<ISyncDownloadView, SyncDownloadFragment>().AsMultiInstance();
container.Register<ISyncDownloadView, SyncDownloadActivity>().AsMultiInstance();
container.Register<ISyncMenuView, SyncMenuActivity>().AsMultiInstance();
container.Register<ISyncWebBrowserView, SyncWebBrowserActivity>().AsMultiInstance();
container.Register<IEqualizerPresetsView, EqualizerPresetsActivity>().AsMultiInstance();
Expand Down
72 changes: 0 additions & 72 deletions MPfm/MPfm.Android/Classes/Fragments/SyncDownloadFragment.cs

This file was deleted.

14 changes: 14 additions & 0 deletions MPfm/MPfm.Android/Classes/Navigation/AndroidNavigationManager.cs
Expand Up @@ -37,6 +37,7 @@ public sealed class AndroidNavigationManager : MobileNavigationManager
private Action<IBaseView> _onEqualizerPresetsViewReady;
private Action<IBaseView> _onSyncViewReady;
private Action<IBaseView> _onSyncMenuViewReady;
private Action<IBaseView> _onSyncDownloadViewReady;
private Action<IBaseView> _onSyncWebBrowserViewReady;
private Action<IBaseView> _onMarkerDetailsViewReady;
private Action<IBaseView> _onEqualizerPresetDetailsViewReady;
Expand Down Expand Up @@ -176,6 +177,13 @@ protected override void CreateSyncWebBrowserViewInternal(Action<IBaseView> onVie
MainActivity.StartActivity(intent);
}

protected override void CreateSyncDownloadViewInternal(Action<IBaseView> onViewReady)
{
_onSyncDownloadViewReady = onViewReady;
var intent = new Intent(MainActivity, typeof(SyncDownloadActivity));
MainActivity.StartActivity(intent);
}

public void SetPlayerActivityInstance(PlayerActivity activity)
{
if (_onPlayerViewReady != null)
Expand Down Expand Up @@ -218,6 +226,12 @@ public void SetSyncMenuActivityInstance(SyncMenuActivity activity)
_onSyncMenuViewReady(activity);
}

public void SetSyncDownloadActivityInstance(SyncDownloadActivity activity)
{
if (_onSyncDownloadViewReady != null)
_onSyncDownloadViewReady(activity);
}

public void SetSyncWebBrowserActivityInstance(SyncWebBrowserActivity activity)
{
if (_onSyncWebBrowserViewReady != null)
Expand Down

0 comments on commit 6baad04

Please sign in to comment.