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 613141b..379b352 100644 --- a/app/src/main/java/org/xbmc/kore/ui/AbstractDetailsFragment.java +++ b/app/src/main/java/org/xbmc/kore/ui/AbstractDetailsFragment.java @@ -23,6 +23,9 @@ 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; @@ -111,6 +114,12 @@ abstract public class AbstractDetailsFragment extends Fragment return view; } + @Override + public void onActivityCreated(@Nullable Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + setHasOptionsMenu(true); + } + @Override public void onStart() { super.onStart(); @@ -136,9 +145,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) { 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 2ae83dc..f52292c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -342,6 +342,7 @@ 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 TV Radio