Skip to content

Commit

Permalink
Android: Added new long press contextual menu for MobileLibraryBrowse…
Browse files Browse the repository at this point in the history
…r list view. Play and Delete buttons are functional. Added new sync actionbar icon. Lots of layout bug fixes in EqualizerPreset screens.

Related to issue #406.
  • Loading branch information
ycastonguay committed Jul 26, 2013
1 parent f699a5f commit 6f0d0d3
Show file tree
Hide file tree
Showing 15 changed files with 155 additions and 65 deletions.
2 changes: 1 addition & 1 deletion MPfm/MPfm.Android/Classes/Activities/MainActivity.cs
Expand Up @@ -320,7 +320,7 @@ public override bool OnCreateOptionsMenu(IMenu menu)
break;
case MobileOptionsMenuType.SyncLibrary:
menuItem.SetShowAsAction(ShowAsAction.IfRoom);
menuItem.SetIcon(Resource.Drawable.actionbar_mobile);
menuItem.SetIcon(Resource.Drawable.actionbar_sync);
break;
case MobileOptionsMenuType.SyncLibraryCloud:
menuItem.SetIcon(Resource.Drawable.actionbar_cloud);
Expand Down
Expand Up @@ -22,28 +22,33 @@
using Android.Views;
using Android.Views.Animations;
using Android.Widget;
using MPfm.Android.Classes.Fragments;
using MPfm.MVP.Models;

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

public bool IsEditingRow { get; private set; }

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

public void SetData(IEnumerable<LibraryBrowserEntity> items)
{
_editingRowPosition = -1;
IsEditingRow = false;
_items = items.ToList();
NotifyDataSetChanged();
}
Expand Down Expand Up @@ -87,6 +92,19 @@ public override View GetView(int position, View convertView, ViewGroup parent)
btnPlay.SetOnClickListener(this);
btnDelete.SetOnClickListener(this);

if (IsEditingRow && position == _editingRowPosition)
{
btnAdd.Visibility = ViewStates.Visible;
btnPlay.Visibility = ViewStates.Visible;
btnDelete.Visibility = ViewStates.Visible;
}
else
{
btnAdd.Visibility = ViewStates.Gone;
btnPlay.Visibility = ViewStates.Gone;
btnDelete.Visibility = ViewStates.Gone;
}

lblTitle.Text = item.Title;
lblTitleWithSubtitle.Text = item.Title;
lblSubtitle.Text = string.Empty;
Expand Down Expand Up @@ -201,13 +219,23 @@ public void OnClick(View v)
switch(v.Id)
{
case Resource.Id.mobileLibraryBrowserCell_imageAdd:
Console.WriteLine("MLBLA - ADD - position: {0}", position);
Console.WriteLine("MLBLA - ADD - position: {0}", position);
break;
case Resource.Id.mobileLibraryBrowserCell_imagePlay:
Console.WriteLine("MLBLA - PLAY - position: {0}", position);
_fragment.OnPlayItem(position);
break;
case Resource.Id.mobileLibraryBrowserCell_imageDelete:
Console.WriteLine("MLBLA - DELETE - position: {0}", position);
AlertDialog ad = new AlertDialog.Builder(_context)
.SetIconAttribute(global::Android.Resource.Attribute.AlertDialogIcon)
.SetTitle("Delete confirmation")
.SetMessage(string.Format("Are you sure you wish to delete {0}?", _items[position].Title))
.SetCancelable(true)
.SetPositiveButton("OK", (sender, args) => _fragment.OnDeleteItem(position))
.SetNegativeButton("Cancel", (sender, args) => {})
.Create();
ad.Show();
break;
}
}
Expand Down
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, _listView, _entities.ToList());
_listAdapter = new MobileLibraryBrowserListAdapter(Activity, this, _listView, _entities.ToList());
_listView.SetAdapter(_listAdapter);
_listView.ItemClick += ListViewOnItemClick;
_listView.ItemLongClick += ListViewOnItemLongClick;
Expand Down Expand Up @@ -190,6 +190,7 @@ public override void OnDetach()
public string Filter { get; set; }
public Action<int> OnItemClick { get; set; }
public Action<int> OnDeleteItem { get; set; }
public Action<int> OnPlayItem { get; set; }
public Action<string, string> OnRequestAlbumArt { get; set; }

public void MobileLibraryBrowserError(Exception ex)
Expand Down Expand Up @@ -272,6 +273,8 @@ public void RefreshLibraryBrowser(IEnumerable<LibraryBrowserEntity> entities, Mo
{
if (_listView != null)
_listAdapter.SetData(_entities);
_listView.SetSelection(0);
}
});
}
Expand Down
4 changes: 4 additions & 0 deletions MPfm/MPfm.Android/MPfm.Android.csproj
Expand Up @@ -432,6 +432,10 @@
<AndroidResource Include="Resources\drawable-xxhdpi\icon_speaker.png" />
<AndroidResource Include="Resources\Anim\listviewoptions_fade_in.xml" />
<AndroidResource Include="Resources\Anim\listviewoptions_fade_out.xml" />
<AndroidResource Include="Resources\drawable-hdpi\actionbar_sync.png" />
<AndroidResource Include="Resources\drawable-mdpi\actionbar_sync.png" />
<AndroidResource Include="Resources\drawable-xhdpi\actionbar_sync.png" />
<AndroidResource Include="Resources\drawable-xxhdpi\actionbar_sync.png" />
</ItemGroup>
<ItemGroup>
<Folder Include="Lib\armeabi\" />
Expand Down
12 changes: 6 additions & 6 deletions MPfm/MPfm.Android/Resources/Layout/AlbumCell.axml
Expand Up @@ -3,9 +3,7 @@
android:id="@+id/albumCell_layout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/background"
android:gravity="center"
android:orientation="vertical">
android:background="@color/background">
<org.sessionsapp.android.SquareImageView
android:id="@+id/albumCell_image"
android:layout_width="fill_parent"
Expand All @@ -17,13 +15,14 @@
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="#66000000"
android:gravity="center"
android:gravity="center"
android:orientation="vertical">
<TextView
android:id="@+id/albumCell_artistName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="2dp"
android:paddingLeft="4dp"
android:paddingRight="4dp"
android:gravity="center_vertical"
android:textStyle="bold"
android:textColor="#FFFFFF"
Expand All @@ -34,8 +33,9 @@
android:id="@+id/albumCell_albumTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="4dp"
android:paddingRight="4dp"
android:gravity="center_vertical"
android:padding="2dp"
android:textColor="#FFFFFF"
android:textSize="12dp"
android:ellipsize="end"
Expand Down
6 changes: 3 additions & 3 deletions MPfm/MPfm.Android/Resources/Layout/EqualizerPresetCell.axml
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="56dp"
android:padding="8dp"
android:layout_height="52dp"
android:paddingLeft="8dp"
android:gravity="center_vertical"
android:orientation="horizontal">
<ImageView
Expand All @@ -19,7 +19,7 @@
android:gravity="left"
android:text="Default"
android:textColor="#000000"
android:textSize="14dp" />
android:textSize="18dp" />
<ImageView
android:id="@+id/equalizerPresetCell_imageCheck"
android:layout_width="48dp"
Expand Down
20 changes: 12 additions & 8 deletions MPfm/MPfm.Android/Resources/Layout/EqualizerPresetDetails.axml
Expand Up @@ -46,7 +46,7 @@
android:layout_height="0dp"
android:layout_weight="1"
android:background="@android:color/transparent"
android:cacheColorHint="#333333"
android:cacheColorHint="@android:color/transparent"
android:divider="#FFFFFF"
android:listSelector="#CCCCCC" />
<LinearLayout
Expand All @@ -58,18 +58,22 @@
android:id="@+id/equalizerPresetDetails_btnNormalize"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="8dp"
android:padding="8dp"
android:background="@color/button_background"
android:text="Normalize"
android:textColor="#ffffffff"
android:textSize="14dp"
android:padding="8dp" />
android:textColor="@color/button_textcolor"
android:textSize="14dp" />
<Button
android:id="@+id/equalizerPresetDetails_btnReset"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="8dp"
android:padding="8dp"
android:background="@color/button_background"
android:text="Reset"
android:textColor="#ffffffff"
android:textSize="14dp"
android:padding="8dp" />
android:textColor="@color/button_textcolor"
android:textSize="14dp" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
10 changes: 7 additions & 3 deletions MPfm/MPfm.Android/Resources/Layout/EqualizerPresets.axml
Expand Up @@ -22,28 +22,32 @@
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight="1"
android:padding="8dp">
android:padding="4dp">
<TextView
android:id="@+id/equalizerPresets_lblMasterVolume"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="2dp"
android:text="Master Volume:"
android:textColor="#FFFFFF" />
<SeekBar
android:id="@+id/equalizerPresets_seekBarVolume"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="2dp"
android:max="100" />
<TextView
android:id="@+id/equalizerPresets_lblBypass"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Equalizer Bypass:"
android:layout_margin="2dp"
android:text="Equalizer Bypass:"
android:textColor="#FFFFFF" />
<ToggleButton
android:id="@+id/equalizerPresets_btnBypass"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
android:layout_height="wrap_content"
android:layout_margin="2dp" />
</LinearLayout>
</LinearLayout>
<ListView
Expand Down

0 comments on commit 6f0d0d3

Please sign in to comment.