From f0c32e5c189558c3830a26c6f49682a00821b94e Mon Sep 17 00:00:00 2001 From: Martijn Brekhof Date: Thu, 12 Nov 2015 09:54:19 +0100 Subject: [PATCH 1/2] This implements feature request #103 Added refresh menu item in overflow menu to allow user to refresh the content in *ListFragments and *DetailsFragments. --- .../xbmc/kore/ui/AbstractDetailsFragment.java | 29 ++++++++++++++----- .../xbmc/kore/ui/AbstractListFragment.java | 18 ++++++++++++ .../xbmc/kore/ui/MovieDetailsFragment.java | 2 -- .../kore/ui/MusicVideoDetailsFragment.java | 2 -- .../kore/ui/TVShowEpisodeDetailsFragment.java | 2 -- .../xbmc/kore/ui/TVShowOverviewFragment.java | 2 -- app/src/main/res/menu/refresh_item.xml | 23 +++++++++++++++ app/src/main/res/values/strings.xml | 1 + 8 files changed, 64 insertions(+), 15 deletions(-) create mode 100644 app/src/main/res/menu/refresh_item.xml diff --git a/app/src/main/java/org/xbmc/kore/ui/AbstractDetailsFragment.java b/app/src/main/java/org/xbmc/kore/ui/AbstractDetailsFragment.java index 25977d5..8f63f83 100644 --- a/app/src/main/java/org/xbmc/kore/ui/AbstractDetailsFragment.java +++ b/app/src/main/java/org/xbmc/kore/ui/AbstractDetailsFragment.java @@ -17,12 +17,14 @@ package org.xbmc.kore.ui; import android.content.Intent; -import android.content.ServiceConnection; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.support.v4.widget.SwipeRefreshLayout; import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.Toast; @@ -36,8 +38,6 @@ import org.xbmc.kore.service.LibrarySyncService; import org.xbmc.kore.utils.LogUtils; import org.xbmc.kore.utils.UIUtils; -import java.util.ArrayList; - import de.greenrobot.event.EventBus; abstract public class AbstractDetailsFragment extends Fragment @@ -109,6 +109,12 @@ abstract public class AbstractDetailsFragment extends Fragment return view; } + @Override + public void onActivityCreated(@Nullable Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + setHasOptionsMenu(true); + } + @Override public void onResume() { bus.register(this); @@ -122,9 +128,18 @@ abstract public class AbstractDetailsFragment extends Fragment } @Override - public void onSaveInstanceState(Bundle outState) { - super.onSaveInstanceState(outState); -// outState.putInt(ITEMID, itemId); + public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { + inflater.inflate(R.menu.refresh_item, menu); + super.onCreateOptionsMenu(menu, inflater); + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch(item.getItemId()) { + case R.id.action_refresh: + onRefresh(); + } + return super.onOptionsItemSelected(item); } protected void startSync(boolean silentRefresh) { @@ -138,7 +153,7 @@ abstract public class AbstractDetailsFragment extends Fragment if(syncType != null) { syncIntent.putExtra(syncType, true); } - + String syncID = getSyncID(); int itemId = getSyncItemID(); if( ( syncID != null ) && ( itemId != -1 ) ) { diff --git a/app/src/main/java/org/xbmc/kore/ui/AbstractListFragment.java b/app/src/main/java/org/xbmc/kore/ui/AbstractListFragment.java index e019471..00e2caa 100644 --- a/app/src/main/java/org/xbmc/kore/ui/AbstractListFragment.java +++ b/app/src/main/java/org/xbmc/kore/ui/AbstractListFragment.java @@ -28,6 +28,9 @@ import android.support.v4.content.Loader; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.widget.SearchView; import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; @@ -133,6 +136,21 @@ public abstract class AbstractListFragment extends Fragment SyncUtils.disconnectFromLibrarySyncService(getActivity(), serviceConnection); } + @Override + public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { + inflater.inflate(R.menu.refresh_item, menu); + super.onCreateOptionsMenu(menu, inflater); + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) { + switch(item.getItemId()) { + case R.id.action_refresh: + onRefresh(); + } + return super.onOptionsItemSelected(item); + } + /** * Swipe refresh layout callback */ diff --git a/app/src/main/java/org/xbmc/kore/ui/MovieDetailsFragment.java b/app/src/main/java/org/xbmc/kore/ui/MovieDetailsFragment.java index cd9d408..64c06de 100644 --- a/app/src/main/java/org/xbmc/kore/ui/MovieDetailsFragment.java +++ b/app/src/main/java/org/xbmc/kore/ui/MovieDetailsFragment.java @@ -203,8 +203,6 @@ public class MovieDetailsFragment extends AbstractDetailsFragment // Start the loaders getLoaderManager().initLoader(LOADER_MOVIE, null, this); getLoaderManager().initLoader(LOADER_CAST, null, this); - - setHasOptionsMenu(false); } @Override diff --git a/app/src/main/java/org/xbmc/kore/ui/MusicVideoDetailsFragment.java b/app/src/main/java/org/xbmc/kore/ui/MusicVideoDetailsFragment.java index ca9603b..3dbfb67 100644 --- a/app/src/main/java/org/xbmc/kore/ui/MusicVideoDetailsFragment.java +++ b/app/src/main/java/org/xbmc/kore/ui/MusicVideoDetailsFragment.java @@ -185,8 +185,6 @@ public class MusicVideoDetailsFragment extends AbstractDetailsFragment // Start the loaders getLoaderManager().initLoader(LOADER_MUSIC_VIDEO, null, this); - - setHasOptionsMenu(false); } @Override diff --git a/app/src/main/java/org/xbmc/kore/ui/TVShowEpisodeDetailsFragment.java b/app/src/main/java/org/xbmc/kore/ui/TVShowEpisodeDetailsFragment.java index db532fc..42b2192 100644 --- a/app/src/main/java/org/xbmc/kore/ui/TVShowEpisodeDetailsFragment.java +++ b/app/src/main/java/org/xbmc/kore/ui/TVShowEpisodeDetailsFragment.java @@ -195,8 +195,6 @@ public class TVShowEpisodeDetailsFragment extends AbstractDetailsFragment // Start the loaders getLoaderManager().initLoader(LOADER_EPISODE, null, this); // getLoaderManager().initLoader(LOADER_CAST, null, this); - - setHasOptionsMenu(false); } @Override diff --git a/app/src/main/java/org/xbmc/kore/ui/TVShowOverviewFragment.java b/app/src/main/java/org/xbmc/kore/ui/TVShowOverviewFragment.java index 5f750f0..1176f12 100644 --- a/app/src/main/java/org/xbmc/kore/ui/TVShowOverviewFragment.java +++ b/app/src/main/java/org/xbmc/kore/ui/TVShowOverviewFragment.java @@ -166,8 +166,6 @@ public class TVShowOverviewFragment extends AbstractDetailsFragment // Start the loaders getLoaderManager().initLoader(LOADER_TVSHOW, null, this); getLoaderManager().initLoader(LOADER_CAST, null, this); - - setHasOptionsMenu(false); } @Override diff --git a/app/src/main/res/menu/refresh_item.xml b/app/src/main/res/menu/refresh_item.xml new file mode 100644 index 0000000..a1fb3a7 --- /dev/null +++ b/app/src/main/res/menu/refresh_item.xml @@ -0,0 +1,23 @@ + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index cd670fd..49eae02 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -342,5 +342,6 @@ An error occurred while getting channels info, probably because your media center doesn\'t have a tuner or it isn\'t configured.\n\nIf that\'s the case and you\'d like to remove this entry from the side menu, you can do it in the Settings. An error occurred starting channel playback: %1$s Switching to channel %1$s + refresh From 88ec434b8266159f1b2c128f45ebe9738ce66fa3 Mon Sep 17 00:00:00 2001 From: Martijn Brekhof Date: Fri, 13 Nov 2015 11:33:58 +0100 Subject: [PATCH 2/2] Fixed missing @Override statements --- .../main/java/org/xbmc/kore/ui/AbstractDetailsFragment.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/xbmc/kore/ui/AbstractDetailsFragment.java b/app/src/main/java/org/xbmc/kore/ui/AbstractDetailsFragment.java index b5ad392..379b352 100644 --- a/app/src/main/java/org/xbmc/kore/ui/AbstractDetailsFragment.java +++ b/app/src/main/java/org/xbmc/kore/ui/AbstractDetailsFragment.java @@ -115,12 +115,12 @@ abstract public class AbstractDetailsFragment extends Fragment } @Override - public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); setHasOptionsMenu(true); } + @Override public void onStart() { super.onStart(); serviceConnection = SyncUtils.connectToLibrarySyncService(getActivity(), this); @@ -138,6 +138,7 @@ abstract public class AbstractDetailsFragment extends Fragment super.onPause(); } + @Override public void onStop() { super.onStop(); SyncUtils.disconnectFromLibrarySyncService(getActivity(), serviceConnection);