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"> - + - + - + +