diff --git a/src/main/java/org/amahi/anywhere/fragment/AudioControllerFragment.java b/src/main/java/org/amahi/anywhere/fragment/AudioControllerFragment.java
index bb9bbdee2..3f60b7fca 100644
--- a/src/main/java/org/amahi/anywhere/fragment/AudioControllerFragment.java
+++ b/src/main/java/org/amahi/anywhere/fragment/AudioControllerFragment.java
@@ -69,7 +69,7 @@ public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
if (audioService.getAudioPlayer().getPlayWhenReady()) {
playPauseButton.setImageResource(R.drawable.lb_ic_play);
playPauseButton.setContentDescription(getResources().getString(R.string.play_the_audio));
- } else {
+ } else {
playPauseButton.setImageResource(R.drawable.lb_ic_pause);
playPauseButton.setContentDescription(getResources().getString(R.string.pause_the_audio));
}
@@ -90,9 +90,9 @@ public void connect(AudioService audioService) {
if (audioService.getAudioPlayer().getPlayWhenReady()) {
playPauseButton.setImageResource(R.drawable.lb_ic_pause);
- } else {
+ } else {
playPauseButton.setImageResource(R.drawable.lb_ic_play);
- }
+ }
AudioMetadataFormatter formatter = audioService.getAudioMetadataFormatter();
if (formatter != null) {
diff --git a/src/main/java/org/amahi/anywhere/fragment/ServerAppsFragment.java b/src/main/java/org/amahi/anywhere/fragment/ServerAppsFragment.java
index 4dac0fc10..20a4f2dbb 100644
--- a/src/main/java/org/amahi/anywhere/fragment/ServerAppsFragment.java
+++ b/src/main/java/org/amahi/anywhere/fragment/ServerAppsFragment.java
@@ -19,16 +19,22 @@
package org.amahi.anywhere.fragment;
+import android.content.Context;
+import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
import android.os.Bundle;
import android.os.Parcelable;
-import androidx.fragment.app.Fragment;
-import androidx.recyclerview.widget.DividerItemDecoration;
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
+import android.widget.ViewAnimator;
+
+import androidx.fragment.app.Fragment;
+import androidx.recyclerview.widget.DividerItemDecoration;
+import androidx.recyclerview.widget.LinearLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import com.squareup.otto.Subscribe;
@@ -54,17 +60,19 @@
public class ServerAppsFragment extends Fragment {
@Inject
ServerClient serverClient;
+ ViewAnimator viewAnimator;
+ View rootView;
private ServerAppsAdapter mServerAppsAdapter;
-
private RecyclerView mRecyclerView;
-
private LinearLayout mEmptyLinearLayout;
-
private LinearLayout mErrorLinearLayout;
+ private SwipeRefreshLayout mSwipeRefreshLayout;
@Override
public View onCreateView(LayoutInflater layoutInflater, ViewGroup container, Bundle savedInstanceState) {
- View rootView = layoutInflater.inflate(R.layout.fragment_server_apps, container, false);
+ rootView = layoutInflater.inflate(R.layout.fragment_server_apps, container, false);
+
+ mSwipeRefreshLayout = (SwipeRefreshLayout) rootView.findViewById(R.id.layout_refresh_apps);
mRecyclerView = rootView.findViewById(R.id.list_server_apps);
@@ -76,16 +84,52 @@ public View onCreateView(LayoutInflater layoutInflater, ViewGroup container, Bun
mErrorLinearLayout = rootView.findViewById(R.id.error);
+ check();
+
+ mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
+ @Override
+ public void onRefresh() {
+ setUpAppsContent();
+ }
+ });
+
+
mRecyclerView.addItemDecoration(new
DividerItemDecoration(getActivity(),
DividerItemDecoration.VERTICAL));
return rootView;
}
+ private void check() {
+ if (!isNetworkConnected()) {
+ rootView.findViewById(R.id.empty2).setVisibility(View.GONE);
+ rootView.findViewById(R.id.empty1).setVisibility(View.GONE);
+ rootView.findViewById(R.id.MessageError1).setVisibility(View.VISIBLE);
+ rootView.findViewById(R.id.MessageError2).setVisibility(View.VISIBLE);
+ } else {
+ rootView.findViewById(R.id.empty2).setVisibility(View.VISIBLE);
+ rootView.findViewById(R.id.empty1).setVisibility(View.VISIBLE);
+ rootView.findViewById(R.id.MessageError1).setVisibility(View.GONE);
+ rootView.findViewById(R.id.MessageError2).setVisibility(View.GONE);
+ }
+ mSwipeRefreshLayout.setRefreshing(false);
+ }
+
+ private boolean isNetworkConnected() {
+ try {
+ ConnectivityManager mConnectivityManager = (ConnectivityManager) getActivity().getSystemService(Context.CONNECTIVITY_SERVICE);
+ NetworkInfo mNetworkInfo = mConnectivityManager.getActiveNetworkInfo();
+ return mNetworkInfo != null;
+
+ } catch (NullPointerException e) {
+ return false;
+
+ }
+ }
+
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
-
setUpInjections();
setUpApps(savedInstanceState);
@@ -121,10 +165,10 @@ private void setUpAppsState(Bundle state) {
if (apps != null) {
mEmptyLinearLayout.setVisibility(View.GONE);
setUpAppsContent(apps);
-
showAppsContent();
} else {
- mEmptyLinearLayout.setVisibility(View.VISIBLE);
+ check();
+ mErrorLinearLayout.setVisibility(View.VISIBLE);
}
}
@@ -153,6 +197,7 @@ public void onServerConnectionChanged(ServerConnectionChangedEvent event) {
@Subscribe
public void onAppsLoaded(ServerAppsLoadedEvent event) {
+ mSwipeRefreshLayout.setRefreshing(false);
setUpAppsContent(event.getServerApps());
showAppsContent();
@@ -164,6 +209,8 @@ public void onAppsLoadFailed(ServerAppsLoadFailedEvent event) {
}
private void showAppsError() {
+ mSwipeRefreshLayout.setRefreshing(false);
+ check();
ViewDirector.of(this, R.id.animator).show(R.id.error);
mErrorLinearLayout.setOnClickListener(view -> {
ViewDirector.of(getActivity(), R.id.animator).show(android.R.id.progress);
diff --git a/src/main/java/org/amahi/anywhere/tv/fragment/TvPlaybackAudioFragment.java b/src/main/java/org/amahi/anywhere/tv/fragment/TvPlaybackAudioFragment.java
index 1856b74fe..50f8ad020 100644
--- a/src/main/java/org/amahi/anywhere/tv/fragment/TvPlaybackAudioFragment.java
+++ b/src/main/java/org/amahi/anywhere/tv/fragment/TvPlaybackAudioFragment.java
@@ -143,7 +143,9 @@ private void setUpRows() {
playbackControlsRowPresenter.setProgressColor(Color.WHITE);
playbackControlsRowPresenter.setOnActionClickedListener(action -> {
if (action.getId() == mPlayPauseAction.getId()) {
- togglePlayPause(mPlayPauseAction.getIndex() == PlaybackControlsRow.PlayPauseAction.PAUSE);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+ togglePlayPause(mPlayPauseAction.getIndex() == PlaybackControlsRow.PlayPauseAction.PAUSE);
+ }
} else if (action.getId() == mRewindAction.getId()) {
rewind();
} else if (action.getId() == mFastForwardAction.getId()) {
diff --git a/src/main/res/layout/activity_server_file_audio.xml b/src/main/res/layout/activity_server_file_audio.xml
index 55b2bcde5..167bd3d43 100644
--- a/src/main/res/layout/activity_server_file_audio.xml
+++ b/src/main/res/layout/activity_server_file_audio.xml
@@ -78,4 +78,3 @@
-
diff --git a/src/main/res/layout/fragment_server_apps.xml b/src/main/res/layout/fragment_server_apps.xml
index fa2f1da1e..4feefaf04 100644
--- a/src/main/res/layout/fragment_server_apps.xml
+++ b/src/main/res/layout/fragment_server_apps.xml
@@ -16,32 +16,77 @@
~ You should have received a copy of the GNU General Public License
~ along with Amahi. If not, see .
-->
-
-
-
-
-
-
+
+
+ android:layout_height="match_parent"
+ android:inAnimation="@android:anim/fade_in"
+ android:outAnimation="@android:anim/fade_out">
+
-
+
+
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:orientation="vertical">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ android:visibility="visible">
-
-
-
-
-
-
+ android:layout_height="match_parent">
-
+
-
+
-
+
+