diff --git a/app/src/main/java/org/xbmc/kore/ui/sections/remote/NowPlayingFragment.java b/app/src/main/java/org/xbmc/kore/ui/sections/remote/NowPlayingFragment.java index e871fce..58cd7e3 100644 --- a/app/src/main/java/org/xbmc/kore/ui/sections/remote/NowPlayingFragment.java +++ b/app/src/main/java/org/xbmc/kore/ui/sections/remote/NowPlayingFragment.java @@ -57,6 +57,7 @@ import org.xbmc.kore.ui.generic.GenericSelectDialog; import org.xbmc.kore.ui.sections.video.AllCastActivity; import org.xbmc.kore.ui.widgets.MediaProgressIndicator; import org.xbmc.kore.ui.widgets.VolumeLevelIndicator; +import org.xbmc.kore.ui.widgets.RepeatModeButton; import org.xbmc.kore.utils.LogUtils; import org.xbmc.kore.utils.UIUtils; import org.xbmc.kore.utils.Utils; @@ -137,7 +138,7 @@ public class NowPlayingFragment extends Fragment @InjectView(R.id.volume_mute) ImageButton volumeMuteButton; @InjectView(R.id.shuffle) ImageButton shuffleButton; - @InjectView(R.id.repeat) ImageButton repeatButton; + @InjectView(R.id.repeat) RepeatModeButton repeatButton; @InjectView(R.id.overflow) ImageButton overflowButton; @InjectView(R.id.info_panel) RelativeLayout infoPanel; @@ -780,16 +781,9 @@ public class NowPlayingFragment extends Fragment R.attr.iconRepeat, R.attr.iconRepeatOne}); int accentDefaultColor = getResources().getColor(R.color.accent_default); - if (getPropertiesResult.repeat.equals(PlayerType.Repeat.OFF)) { - repeatButton.setImageResource(styledAttributes.getResourceId(styledAttributes.getIndex(1), R.drawable.ic_repeat_white_24dp)); - repeatButton.clearColorFilter(); - } else if (getPropertiesResult.repeat.equals(PlayerType.Repeat.ONE)) { - repeatButton.setImageResource(styledAttributes.getResourceId(styledAttributes.getIndex(2), R.drawable.ic_repeat_one_white_24dp)); - repeatButton.setColorFilter(styledAttributes.getColor(styledAttributes.getIndex(0), accentDefaultColor)); - } else { - repeatButton.setImageResource(styledAttributes.getResourceId(styledAttributes.getIndex(1), R.drawable.ic_repeat_white_24dp)); - repeatButton.setColorFilter(styledAttributes.getColor(styledAttributes.getIndex(0), accentDefaultColor)); - } + + UIUtils.setRepeatButton(repeatButton, getPropertiesResult.repeat); + if (!getPropertiesResult.shuffled) { shuffleButton.clearColorFilter(); } else { diff --git a/app/src/main/java/org/xbmc/kore/ui/widgets/RepeatModeButton.java b/app/src/main/java/org/xbmc/kore/ui/widgets/RepeatModeButton.java new file mode 100644 index 0000000..cf4428b --- /dev/null +++ b/app/src/main/java/org/xbmc/kore/ui/widgets/RepeatModeButton.java @@ -0,0 +1,68 @@ +/* + * Copyright 2017 Martijn Brekhof. All rights reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.xbmc.kore.ui.widgets; + + +import android.content.Context; +import android.content.res.TypedArray; +import android.support.v7.widget.AppCompatImageButton; +import android.util.AttributeSet; + +import org.xbmc.kore.R; + +public class RepeatModeButton extends AppCompatImageButton { + public enum MODE { + OFF, + ONE, + ALL + } + + private MODE mode; + private static TypedArray styledAttributes; + private static int accentDefaultColor; + + public RepeatModeButton(Context context, AttributeSet attrs) { + super(context, attrs); + styledAttributes = context.getTheme().obtainStyledAttributes(new int[]{ + R.attr.colorAccent, + R.attr.iconRepeat, + R.attr.iconRepeatOne}); + accentDefaultColor = getContext().getResources().getColor(R.color.accent_default); + } + + public void setMode(MODE mode) { + this.mode = mode; + + switch (mode) { + case OFF: + setImageResource(styledAttributes.getResourceId(styledAttributes.getIndex(1), R.drawable.ic_repeat_white_24dp)); + clearColorFilter(); + break; + case ONE: + setImageResource(styledAttributes.getResourceId(styledAttributes.getIndex(2), R.drawable.ic_repeat_one_white_24dp)); + setColorFilter(styledAttributes.getColor(styledAttributes.getIndex(0), accentDefaultColor)); + break; + case ALL: + setImageResource(styledAttributes.getResourceId(styledAttributes.getIndex(1), R.drawable.ic_repeat_white_24dp)); + setColorFilter(styledAttributes.getColor(styledAttributes.getIndex(0), accentDefaultColor)); + break; + } + } + + public MODE getMode() { + return mode; + } +} diff --git a/app/src/main/java/org/xbmc/kore/utils/UIUtils.java b/app/src/main/java/org/xbmc/kore/utils/UIUtils.java index d009e14..4ed30d9 100644 --- a/app/src/main/java/org/xbmc/kore/utils/UIUtils.java +++ b/app/src/main/java/org/xbmc/kore/utils/UIUtils.java @@ -46,8 +46,10 @@ import org.xbmc.kore.Settings; import org.xbmc.kore.host.HostInfo; import org.xbmc.kore.host.HostManager; import org.xbmc.kore.jsonrpc.type.GlobalType; +import org.xbmc.kore.jsonrpc.type.PlayerType; import org.xbmc.kore.jsonrpc.type.VideoType; import org.xbmc.kore.ui.sections.remote.RemoteActivity; +import org.xbmc.kore.ui.widgets.RepeatModeButton; import java.io.File; import java.util.ArrayList; @@ -580,4 +582,14 @@ public class UIUtils { view.clearColorFilter(); } } + + public static void setRepeatButton(RepeatModeButton button, String repeatType) { + if (repeatType.equals(PlayerType.Repeat.OFF)) { + button.setMode(RepeatModeButton.MODE.OFF); + } else if (repeatType.equals(PlayerType.Repeat.ONE)) { + button.setMode(RepeatModeButton.MODE.ONE); + } else { + button.setMode(RepeatModeButton.MODE.ALL); + } + } } diff --git a/app/src/main/res/layout/fragment_now_playing.xml b/app/src/main/res/layout/fragment_now_playing.xml index 73170d5..39eacd5 100644 --- a/app/src/main/res/layout/fragment_now_playing.xml +++ b/app/src/main/res/layout/fragment_now_playing.xml @@ -175,7 +175,7 @@ android:layout_height="match_parent" android:layout_weight="2" android:orientation="vertical"/> -