diff --git a/MediaBrowserTv/app/src/main/java/tv/mediabrowser/mediabrowsertv/HomeFragment.java b/MediaBrowserTv/app/src/main/java/tv/mediabrowser/mediabrowsertv/HomeFragment.java index 3e21bffa2..f288dfbdc 100644 --- a/MediaBrowserTv/app/src/main/java/tv/mediabrowser/mediabrowsertv/HomeFragment.java +++ b/MediaBrowserTv/app/src/main/java/tv/mediabrowser/mediabrowsertv/HomeFragment.java @@ -48,7 +48,7 @@ public class HomeFragment extends StdBrowseFragment { @Override protected void setupEventListeners() { super.setupEventListeners(); - setOnItemViewClickedListener(new ItemViewClickedListener()); + mClickedListener.registerListener(new ItemViewClickedListener()); } private final class ItemViewClickedListener implements OnItemViewClickedListener { diff --git a/MediaBrowserTv/app/src/main/java/tv/mediabrowser/mediabrowsertv/StdBrowseFragment.java b/MediaBrowserTv/app/src/main/java/tv/mediabrowser/mediabrowsertv/StdBrowseFragment.java index fd8bef79f..ea9b5f24e 100644 --- a/MediaBrowserTv/app/src/main/java/tv/mediabrowser/mediabrowsertv/StdBrowseFragment.java +++ b/MediaBrowserTv/app/src/main/java/tv/mediabrowser/mediabrowsertv/StdBrowseFragment.java @@ -64,6 +64,8 @@ public class StdBrowseFragment extends BrowseFragment { protected String MainTitle; protected ApiClient apiClient; + protected CompositeClickedListener mClickedListener = new CompositeClickedListener(); + protected CompositeSelectedListener mSelectedListener = new CompositeSelectedListener(); private ArrayObjectAdapter mRowsAdapter; private Drawable mDefaultBackground; private Target mBackgroundTarget; @@ -125,7 +127,7 @@ public class StdBrowseFragment extends BrowseFragment { // } addAdditionalRows(mRowsAdapter); - + setAdapter(mRowsAdapter); } @@ -170,8 +172,11 @@ public class StdBrowseFragment extends BrowseFragment { } }); - setOnItemViewClickedListener(new ItemViewClickedListener()); - setOnItemViewSelectedListener(new ItemViewSelectedListener()); + setOnItemViewClickedListener(mClickedListener); + mClickedListener.registerListener(new ItemViewClickedListener()); + + setOnItemViewSelectedListener(mSelectedListener); + mSelectedListener.registerListener(new ItemViewSelectedListener()); } private final class ItemViewClickedListener implements OnItemViewClickedListener { @@ -257,5 +262,42 @@ public class StdBrowseFragment extends BrowseFragment { } } + protected class CompositeClickedListener implements OnItemViewClickedListener { + private List registeredListeners = new ArrayList<>(); + public void registerListener (OnItemViewClickedListener listener) { + registeredListeners.add(listener); + } + + public void unRegisterListener (OnItemViewClickedListener listener) { + registeredListeners.remove(listener); + } + + @Override + public void onItemClicked(Presenter.ViewHolder itemViewHolder, Object item, RowPresenter.ViewHolder rowViewHolder, Row row) { + for (OnItemViewClickedListener listener : registeredListeners) { + listener.onItemClicked(itemViewHolder, item, rowViewHolder, row); + } + } + } + + protected class CompositeSelectedListener implements OnItemViewSelectedListener { + private List registeredListeners = new ArrayList<>(); + + public void registerListener (OnItemViewSelectedListener listener) { + registeredListeners.add(listener); + } + + public void unRegisterListener (OnItemViewSelectedListener listener) { + registeredListeners.remove(listener); + } + + + @Override + public void onItemSelected(Presenter.ViewHolder itemViewHolder, Object item, RowPresenter.ViewHolder rowViewHolder, Row row) { + for (OnItemViewSelectedListener listener : registeredListeners) { + listener.onItemSelected(itemViewHolder, item, rowViewHolder, row); + } + } + } } diff --git a/MediaBrowserTv/app/src/main/java/tv/mediabrowser/mediabrowsertv/Utils.java b/MediaBrowserTv/app/src/main/java/tv/mediabrowser/mediabrowsertv/Utils.java index e9cf4e8d8..584f074e8 100644 --- a/MediaBrowserTv/app/src/main/java/tv/mediabrowser/mediabrowsertv/Utils.java +++ b/MediaBrowserTv/app/src/main/java/tv/mediabrowser/mediabrowsertv/Utils.java @@ -4,6 +4,8 @@ import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.graphics.Point; +import android.media.AudioManager; +import android.media.ToneGenerator; import android.view.Display; import android.view.WindowManager; import android.widget.Toast; @@ -148,4 +150,10 @@ public class Utils { return apiClient.GetImageUrl(item, options); } + + public static void Beep() { + // send the tone to the "alarm" stream (classic beeps go there) with 50% volume + ToneGenerator toneG = new ToneGenerator(AudioManager.STREAM_ALARM, 50); + toneG.startTone(ToneGenerator.TONE_CDMA_ALERT_CALL_GUARD, 200); // 200 is duration in ms + } } diff --git a/MediaBrowserTv/app/src/main/res/drawable-xxhdpi/default_background.jpg b/MediaBrowserTv/app/src/main/res/drawable-xxhdpi/default_background.jpg new file mode 100644 index 000000000..e402c179e Binary files /dev/null and b/MediaBrowserTv/app/src/main/res/drawable-xxhdpi/default_background.jpg differ