Skip to content

Commit

Permalink
Added a lot of stuff to the Android prototype, too long to list. See …
Browse files Browse the repository at this point in the history
…checked-in files.

Related to issue #406.


git-svn-id: http://hamster-svn/svn/repos/base@686 765c1f7c-9fb8-954f-9ff8-dd0915cb3117
  • Loading branch information
animal committed Jan 24, 2013
1 parent c749f9d commit 9193f85
Show file tree
Hide file tree
Showing 24 changed files with 1,036 additions and 39 deletions.
@@ -1,27 +1,73 @@
using System;
using Android.App;
using Android.Widget;
using Android.Runtime;
using Android.Support.V4.View;
using Android.Views;
using Android.OS;
using MPfm.Android.Classes.Adapters;
using MPfm.Android.Classes.Fragments;
using MPfm.Android.Classes.Listeners;

namespace MPfm.Android
{
[Activity(Label = "MPfm.Android", MainLauncher = true, Icon = "@drawable/icon")]
[Activity(Icon = "@drawable/icon")]
public class MainActivity : Activity
{
int count = 1;
//NavigationManager navigationManager;
private ViewPager _viewPager;
private TabPagerAdapter _tabPagerAdapter;

protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);

// Set our view from the "main" layout resource
RequestWindowFeature(WindowFeatures.ActionBar);
SetContentView(Resource.Layout.Main);
ActionBar.NavigationMode = ActionBarNavigationMode.Tabs;

_viewPager = FindViewById<ViewPager>(Resource.Id.main_pager);
_tabPagerAdapter = new TabPagerAdapter(FragmentManager, _viewPager, ActionBar);
_viewPager.Adapter = _tabPagerAdapter;
_viewPager.SetOnPageChangeListener(_tabPagerAdapter);

// Get our button from the layout resource,
// and attach an event to it
Button button = FindViewById<Button>(Resource.Id.MyButton);
var playerTab = ActionBar.NewTab();
playerTab.SetTabListener(_tabPagerAdapter);
playerTab.SetText("Player");
ActionBar.AddTab(playerTab);
var playlistsTab = ActionBar.NewTab();
playlistsTab.SetTabListener(_tabPagerAdapter);
playlistsTab.SetText("Playlists");
ActionBar.AddTab(playlistsTab);
var artistsTab = ActionBar.NewTab();
artistsTab.SetTabListener(_tabPagerAdapter);
artistsTab.SetText("Artists");
ActionBar.AddTab(artistsTab);
var albumsTab = ActionBar.NewTab();
albumsTab.SetTabListener(_tabPagerAdapter);
albumsTab.SetText("Albums");
ActionBar.AddTab(albumsTab);
var songsTab = ActionBar.NewTab();
songsTab.SetTabListener(_tabPagerAdapter);
songsTab.SetText("Songs");
ActionBar.AddTab(songsTab);

button.Click += delegate { button.Text = string.Format("{0} clicks!", count++); };
// Create and start navigation manager
//navigationManager = Bootstrapper.GetContainer().Resolve<NavigationManager>();
//navigationManager.Start();

//button.Click += delegate { button.Text = string.Format("{0} clicks!", count++); };
}

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

public override bool OnOptionsItemSelected(IMenuItem menuItem)
{
string text = menuItem.TitleFormatted.ToString();
return base.OnOptionsItemSelected(menuItem);
}
}
}
Expand Down
@@ -0,0 +1,52 @@
using Android.App;
using Android.Content.PM;
using Android.OS;

namespace MPfm.Android
{
[Activity(MainLauncher = true, NoHistory = true, ScreenOrientation = ScreenOrientation.Portrait, Theme = "@style/Theme.Splash")]
public class SplashActivity : Activity
{
//TextView textViewStatus;

public SplashActivity()
{
}

protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);

//SetContentView(Resource.Layout.Splash);
//textViewStatus = FindViewById<TextView>(Resource.Id.textViewStatus);

StartActivity(typeof(MainActivity));
}

//public void ShowError(Exception ex)
//{
// RunOnUiThread(() =>
// {
// textViewStatus.Text = "Error: " + ex.Message;
// });
//}

//public void RefreshMessage(string message)
//{
// RunOnUiThread(() =>
// {
// textViewStatus.Text = message;
// });
//}

//public void InitializeDone()
//{
// RunOnUiThread(() =>
// {
// textViewStatus.Text = "Chargement complet.";
// StartActivity(typeof(MainActivity));
// });
//}
}
}

@@ -0,0 +1,62 @@
using System.Collections.Generic;
using Android.App;
using Android.Graphics;
using Android.Views;
using Android.Widget;
using MPfm.Android.Classes.Objects;

namespace MPfm.Android.Classes.Adapters
{
public class GenericListAdapter : BaseAdapter<GenericListItem>
{
readonly Activity _context;
readonly IList<GenericListItem> _items;

public GenericListAdapter(Activity context, IList<GenericListItem> items)
{
this._context = context;
this._items = items;
}

public override long GetItemId(int position)
{
return position;
}

public override GenericListItem this[int position]
{
get { return _items[position]; }
}

public override int Count
{
get { return _items.Count; }
}

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.SetBackgroundColor(Color.White);

var title = view.FindViewById<TextView>(Resource.Id.genericcell_title);
title.Text = _items[position].Title;

var image = view.FindViewById<ImageView>(Resource.Id.genericcell_image);
image.SetBackgroundColor(Color.White);

//// Check channel and load correct image
//if (_items[position].Id == 47)
// image.SetImageDrawable(_context.Resources.GetDrawable(global::Android.Resource.Drawable.channels_pc));
//else if (_items[position].Id == 67)
// image.SetImageDrawable(_context.Resources.GetDrawable(global::Android.Resource.Drawable.channels_em));
//else
// image.SetImageDrawable(_context.Resources.GetDrawable(global::Android.Resource.Drawable.channels_bap));

return view;
}
}
}
@@ -0,0 +1,66 @@
using System;
using Android.App;
using Android.Runtime;
using Android.Support.V13.App;
using Android.Support.V4.View;
using Android.Views;
using Android.Widget;
using MPfm.Android.Classes.Fragments;
using MPfm.Android.Classes.Objects;

namespace MPfm.Android.Classes.Adapters
{
public class TabPagerAdapter : FragmentPagerAdapter, ActionBar.ITabListener, ViewPager.IOnPageChangeListener
{
private ViewPager _viewPager;
private ActionBar _actionBar;

public TabPagerAdapter(IntPtr javaReference, JniHandleOwnership transfer)
: base(javaReference, transfer)
{
}

public TabPagerAdapter(FragmentManager fm, ViewPager viewPager, ActionBar actionBar)
: base(fm)
{
_viewPager = viewPager;
_actionBar = actionBar;
}

public void OnTabReselected(ActionBar.Tab tab, FragmentTransaction ft)
{
}

public void OnTabSelected(ActionBar.Tab tab, FragmentTransaction ft)
{
_viewPager.SetCurrentItem(tab.Position, true);
}

public void OnTabUnselected(ActionBar.Tab tab, FragmentTransaction ft)
{
}

public override Fragment GetItem(int p0)
{
return new GenericListFragment();
}

public override int Count
{
get { return 5; }
}

public void OnPageScrollStateChanged(int p0)
{
}

public void OnPageScrolled(int p0, float p1, int p2)
{
}

public void OnPageSelected(int position)
{
_actionBar.SetSelectedNavigationItem(position);
}
}
}
31 changes: 30 additions & 1 deletion MPfm/branches/current/MPfm.Android/Classes/Application.cs
@@ -1,12 +1,18 @@
using System;
using Android.App;
using Android.Content.PM;
using Android.Runtime;
using MPfm.MVP;
using MPfm.Player;
using MPfm.Sound.Bass.Net;

namespace MPfm.Android.Classes
{
[Application (Name="my.App", Debuggable=true, Label="MPfm: Music Player for Musicians")]
public class MPfmApplication : Application
{
private IPlayer _player;

public MPfmApplication(IntPtr javaReference, JniHandleOwnership transfer)
: base(javaReference, transfer)
{
Expand All @@ -16,7 +22,23 @@ public override void OnCreate()
{
base.OnCreate();

//Bootstrapper.GetContainer();
ApplicationInfo appInfo = PackageManager.GetApplicationInfo(PackageName, 0);
string nativeDir = appInfo.NativeLibraryDir;

//Bootstrapper.GetContainer().Register<NavigationManager, AndroidNavigationManager>().AsSingleton();

Player.Player.PluginDirectoryPath = appInfo.NativeLibraryDir;

// Initialize player
Device device = new Device()
{
DriverType = DriverType.DirectSound,
Id = -1
};
_player = new MPfm.Player.Player(device, 44100, 5000, 100, true);


//NavigationManager
}

public override void OnLowMemory()
Expand All @@ -27,6 +49,13 @@ public override void OnLowMemory()
public override void OnTerminate()
{
base.OnTerminate();

// Clean up player
if (MPfm.Player.Player.CurrentPlayer.IsPlaying)
{
MPfm.Player.Player.CurrentPlayer.Stop();
}
MPfm.Player.Player.CurrentPlayer.Dispose();
}
}
}

0 comments on commit 9193f85

Please sign in to comment.