Skip to content

Commit

Permalink
Android: Added a lot of new icons. Added buttons when long pressing t…
Browse files Browse the repository at this point in the history
…he MobileLibraryBrowser list view items.

Related to issue #406.
  • Loading branch information
ycastonguay committed Jul 26, 2013
1 parent b6afff8 commit f699a5f
Show file tree
Hide file tree
Showing 38 changed files with 614 additions and 376 deletions.
119 changes: 117 additions & 2 deletions MPfm/MPfm.Android/Classes/Adapters/MobileLibraryBrowserListAdapter.cs
Expand Up @@ -15,23 +15,30 @@
// 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.Views;
using Android.Views.Animations;
using Android.Widget;
using MPfm.MVP.Models;

namespace MPfm.Android.Classes.Adapters
{
public class MobileLibraryBrowserListAdapter : BaseAdapter<LibraryBrowserEntity>
public class MobileLibraryBrowserListAdapter : BaseAdapter<LibraryBrowserEntity>, View.IOnClickListener
{
readonly Activity _context;
readonly ListView _listView;
List<LibraryBrowserEntity> _items;
int _editingRowPosition = -1;

public MobileLibraryBrowserListAdapter(Activity context, List<LibraryBrowserEntity> items)
public bool IsEditingRow { get; private set; }

public MobileLibraryBrowserListAdapter(Activity context, ListView listView, List<LibraryBrowserEntity> items)
{
_context = context;
_listView = listView;
_items = items;
}

Expand Down Expand Up @@ -69,7 +76,16 @@ public override View GetView(int position, View convertView, ViewGroup parent)
var lblSubtitle = view.FindViewById<TextView>(Resource.Id.mobileLibraryBrowserCell_lblSubtitle);
var index = view.FindViewById<TextView>(Resource.Id.mobileLibraryBrowserCell_index);
var imageNowPlaying = view.FindViewById<ImageView>(Resource.Id.mobileLibraryBrowserCell_imageNowPlaying);
var btnAdd = view.FindViewById<ImageView>(Resource.Id.mobileLibraryBrowserCell_imageAdd);
var btnPlay = view.FindViewById<ImageView>(Resource.Id.mobileLibraryBrowserCell_imagePlay);
var btnDelete = view.FindViewById<ImageView>(Resource.Id.mobileLibraryBrowserCell_imageDelete);
imageNowPlaying.Visibility = ViewStates.Invisible;
btnAdd.Tag = position;
btnPlay.Tag = position;
btnDelete.Tag = position;
btnAdd.SetOnClickListener(this);
btnPlay.SetOnClickListener(this);
btnDelete.SetOnClickListener(this);

lblTitle.Text = item.Title;
lblTitleWithSubtitle.Text = item.Title;
Expand All @@ -96,5 +112,104 @@ public override View GetView(int position, View convertView, ViewGroup parent)

return view;
}

public void SetEditingRow(int position)
{
int visibleCellIndex = position - _listView.FirstVisiblePosition;
var view = _listView.GetChildAt(visibleCellIndex);
if (view == null)
return;

var imageAdd = view.FindViewById<ImageView>(Resource.Id.mobileLibraryBrowserCell_imageAdd);
var imagePlay = view.FindViewById<ImageView>(Resource.Id.mobileLibraryBrowserCell_imagePlay);
var imageDelete = view.FindViewById<ImageView>(Resource.Id.mobileLibraryBrowserCell_imageDelete);

int oldPosition = _editingRowPosition;
_editingRowPosition = position;

if(IsEditingRow && oldPosition == position)
{
// Fade out the controls
Animation anim = AnimationUtils.LoadAnimation(_context, Resource.Animation.listviewoptions_fade_out);
anim.AnimationEnd += (sender, args) =>
{
imageAdd.Visibility = ViewStates.Gone;
imagePlay.Visibility = ViewStates.Gone;
imageDelete.Visibility = ViewStates.Gone;
};
imageAdd.StartAnimation(anim);
imagePlay.StartAnimation(anim);
imageDelete.StartAnimation(anim);

_editingRowPosition = -1;
IsEditingRow = false;
}
else if (IsEditingRow && oldPosition >= 0)
{
// Fade in the new controls
imageAdd.Visibility = ViewStates.Visible;
imagePlay.Visibility = ViewStates.Visible;
imageDelete.Visibility = ViewStates.Visible;
Animation anim = AnimationUtils.LoadAnimation(_context, Resource.Animation.listviewoptions_fade_in);
imageAdd.StartAnimation(anim);
imagePlay.StartAnimation(anim);
imageDelete.StartAnimation(anim);

// Fade out the older controls
int oldPositionVisibleCellIndex = oldPosition - _listView.FirstVisiblePosition;
var viewOldPosition = _listView.GetChildAt(oldPositionVisibleCellIndex);
if (viewOldPosition != null)
{
var imageAddOld = viewOldPosition.FindViewById<ImageView>(Resource.Id.mobileLibraryBrowserCell_imageAdd);
var imagePlayOld = viewOldPosition.FindViewById<ImageView>(Resource.Id.mobileLibraryBrowserCell_imagePlay);
var imageDeleteOld = viewOldPosition.FindViewById<ImageView>(Resource.Id.mobileLibraryBrowserCell_imageDelete);

// Fade out the controls
Animation animOld = AnimationUtils.LoadAnimation(_context, Resource.Animation.listviewoptions_fade_out);
animOld.AnimationEnd += (sender, args) =>
{
imageAddOld.Visibility = ViewStates.Gone;
imagePlayOld.Visibility = ViewStates.Gone;
imageDeleteOld.Visibility = ViewStates.Gone;
};
imageAddOld.StartAnimation(animOld);
imagePlayOld.StartAnimation(animOld);
imageDeleteOld.StartAnimation(animOld);
}

IsEditingRow = true;
}
else if (!IsEditingRow)
{
// Fade in the controls
imageAdd.Visibility = ViewStates.Visible;
imagePlay.Visibility = ViewStates.Visible;
imageDelete.Visibility = ViewStates.Visible;
Animation anim = AnimationUtils.LoadAnimation(_context, Resource.Animation.listviewoptions_fade_in);
imageAdd.StartAnimation(anim);
imagePlay.StartAnimation(anim);
imageDelete.StartAnimation(anim);

IsEditingRow = true;
}

}

public void OnClick(View v)
{
int position = (int)v.Tag;
switch(v.Id)
{
case Resource.Id.mobileLibraryBrowserCell_imageAdd:
Console.WriteLine("MLBLA - ADD - position: {0}", position);
break;
case Resource.Id.mobileLibraryBrowserCell_imagePlay:
Console.WriteLine("MLBLA - PLAY - position: {0}", position);
break;
case Resource.Id.mobileLibraryBrowserCell_imageDelete:
Console.WriteLine("MLBLA - DELETE - position: {0}", position);
break;
}
}
}
}
Expand Up @@ -92,7 +92,7 @@ public override View OnCreateView(LayoutInflater inflater, ViewGroup container,
_listView.Visibility = ViewStates.Gone;
_gridView.Visibility = ViewStates.Gone;

_listAdapter = new MobileLibraryBrowserListAdapter(Activity, _entities.ToList());
_listAdapter = new MobileLibraryBrowserListAdapter(Activity, _listView, _entities.ToList());
_listView.SetAdapter(_listAdapter);
_listView.ItemClick += ListViewOnItemClick;
_listView.ItemLongClick += ListViewOnItemLongClick;
Expand Down Expand Up @@ -120,6 +120,8 @@ private void ListViewOnItemClick(object sender, AdapterView.ItemClickEventArgs i

private void ListViewOnItemLongClick(object sender, AdapterView.ItemLongClickEventArgs itemLongClickEventArgs)
{
_listAdapter.SetEditingRow(itemLongClickEventArgs.Position);
//_listAdapter.NotifyDataSetChanged();
}

private void GridViewOnItemClick(object sender, AdapterView.ItemClickEventArgs itemClickEventArgs)
Expand All @@ -129,6 +131,7 @@ private void GridViewOnItemClick(object sender, AdapterView.ItemClickEventArgs i

private void GridViewOnItemLongClick(object sender, AdapterView.ItemLongClickEventArgs itemLongClickEventArgs)
{

}

public override void OnSaveInstanceState(Bundle outState)
Expand Down
30 changes: 30 additions & 0 deletions MPfm/MPfm.Android/MPfm.Android.csproj
Expand Up @@ -402,6 +402,36 @@
<AndroidResource Include="Resources\drawable-xxhdpi\player_repeat_on.png" />
<AndroidResource Include="Resources\drawable-xxhdpi\player_shuffle.png" />
<AndroidResource Include="Resources\drawable-xxhdpi\player_shuffle_on.png" />
<AndroidResource Include="Resources\drawable-hdpi\actionbar_save.png" />
<AndroidResource Include="Resources\drawable-hdpi\icon_add.png" />
<AndroidResource Include="Resources\drawable-hdpi\icon_check.png" />
<AndroidResource Include="Resources\drawable-hdpi\icon_equalizer.png" />
<AndroidResource Include="Resources\drawable-hdpi\icon_play.png" />
<AndroidResource Include="Resources\drawable-hdpi\icon_trash.png" />
<AndroidResource Include="Resources\drawable-mdpi\actionbar_save.png" />
<AndroidResource Include="Resources\drawable-mdpi\icon_add.png" />
<AndroidResource Include="Resources\drawable-mdpi\icon_check.png" />
<AndroidResource Include="Resources\drawable-mdpi\icon_equalizer.png" />
<AndroidResource Include="Resources\drawable-mdpi\icon_play.png" />
<AndroidResource Include="Resources\drawable-mdpi\icon_trash.png" />
<AndroidResource Include="Resources\drawable-xhdpi\actionbar_save.png" />
<AndroidResource Include="Resources\drawable-xhdpi\icon_add.png" />
<AndroidResource Include="Resources\drawable-xhdpi\icon_check.png" />
<AndroidResource Include="Resources\drawable-xhdpi\icon_equalizer.png" />
<AndroidResource Include="Resources\drawable-xhdpi\icon_play.png" />
<AndroidResource Include="Resources\drawable-xhdpi\icon_trash.png" />
<AndroidResource Include="Resources\drawable-xxhdpi\actionbar_save.png" />
<AndroidResource Include="Resources\drawable-xxhdpi\icon_add.png" />
<AndroidResource Include="Resources\drawable-xxhdpi\icon_check.png" />
<AndroidResource Include="Resources\drawable-xxhdpi\icon_equalizer.png" />
<AndroidResource Include="Resources\drawable-xxhdpi\icon_play.png" />
<AndroidResource Include="Resources\drawable-xxhdpi\icon_trash.png" />
<AndroidResource Include="Resources\drawable-hdpi\icon_speaker.png" />
<AndroidResource Include="Resources\drawable-mdpi\icon_speaker.png" />
<AndroidResource Include="Resources\drawable-xhdpi\icon_speaker.png" />
<AndroidResource Include="Resources\drawable-xxhdpi\icon_speaker.png" />
<AndroidResource Include="Resources\Anim\listviewoptions_fade_in.xml" />
<AndroidResource Include="Resources\Anim\listviewoptions_fade_out.xml" />
</ItemGroup>
<ItemGroup>
<Folder Include="Lib\armeabi\" />
Expand Down
10 changes: 10 additions & 0 deletions MPfm/MPfm.Android/Resources/Anim/listviewoptions_fade_in.xml
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8" ?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha
android:interpolator="@android:anim/accelerate_interpolator"
android:fromAlpha="0.0" android:toAlpha="0.5" android:duration="150" />
<translate
android:fromXDelta="100%" android:toXDelta="0%"
android:fromYDelta="0%" android:toYDelta="0%"
android:duration="150"/>
</set>
10 changes: 10 additions & 0 deletions MPfm/MPfm.Android/Resources/Anim/listviewoptions_fade_out.xml
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8" ?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha
android:interpolator="@android:anim/accelerate_interpolator"
android:fromAlpha="0.5" android:toAlpha="0.0" android:duration="150" />
<translate
android:fromXDelta="0%" android:toXDelta="100%"
android:fromYDelta="0%" android:toYDelta="0%"
android:duration="150"/>
</set>
15 changes: 14 additions & 1 deletion MPfm/MPfm.Android/Resources/Layout/EqualizerPresetCell.axml
Expand Up @@ -5,12 +5,25 @@
android:padding="8dp"
android:gravity="center_vertical"
android:orientation="horizontal">
<ImageView
android:id="@+id/equalizerPresetCell_imageEqualizer"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_marginRight="6dp"
android:src="@drawable/icon_equalizer" />
<TextView
android:id="@+id/equalizerPresetCell_lblName"
android:layout_width="fill_parent"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="left"
android:text="Default"
android:textColor="#000000"
android:textSize="14dp" />
<ImageView
android:id="@+id/equalizerPresetCell_imageCheck"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_marginRight="6dp"
android:src="@drawable/icon_check" />
</LinearLayout>
Expand Up @@ -59,7 +59,7 @@
android:layout_below="@+id/mobileLibraryBrowser_layoutAlbum"
android:layout_centerInParent="true"
android:background="#FFFFFF"
android:cacheColorHint="#333333"
android:cacheColorHint="#FFFFFF"
android:divider="#BBBBBB"
android:dividerHeight="1px"
android:listSelector="#CCCCCC" />
Expand Down
26 changes: 20 additions & 6 deletions MPfm/MPfm.Android/Resources/Layout/MobileLibraryBrowserCell.axml
Expand Up @@ -40,22 +40,36 @@
android:textColor="#666666"
android:textSize="12dp" />
</LinearLayout>
<ImageView
<ImageView
android:id="@+id/mobileLibraryBrowserCell_imageNowPlaying"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_marginRight="6dp"
android:visibility="gone"
android:background="@android:color/transparent"
android:src="@drawable/icon_speaker" />
<ImageView
android:id="@+id/mobileLibraryBrowserCell_imagePlay"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_marginRight="6dp"
android:src="@drawable/icon" />
<!--<ImageView
android:visibility="gone"
android:background="@android:color/transparent"
android:src="@drawable/icon_play" />
<ImageView
android:id="@+id/mobileLibraryBrowserCell_imageAdd"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_marginRight="6dp"
android:src="@drawable/icon" />
android:visibility="gone"
android:background="@android:color/transparent"
android:src="@drawable/icon_add" />
<ImageView
android:id="@+id/mobileLibraryBrowserCell_imagePlay"
android:id="@+id/mobileLibraryBrowserCell_imageDelete"
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_marginRight="6dp"
android:src="@drawable/icon" />-->
android:visibility="gone"
android:background="@android:color/transparent"
android:src="@drawable/icon_trash" />
</LinearLayout>
Expand Up @@ -2,5 +2,6 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android">
-<item android:id="@+id/equalizerPresetDetailsMenu_item_save"
android:title="Save"
android:icon="@drawable/actionbar_save"
android:showAsAction="always|withText" />
</menu>

0 comments on commit f699a5f

Please sign in to comment.