Implemented RepeatModeButton widget (#408)

Its main purpose is to enable testing the repeat mode functionality.
This commit is contained in:
Martijn Brekhof 2017-06-23 12:50:17 +02:00 committed by Synced Synapse
parent 85bcd846f2
commit eb8accb8fe
4 changed files with 86 additions and 12 deletions

View File

@ -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 {

View File

@ -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;
}
}

View File

@ -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);
}
}
}

View File

@ -175,7 +175,7 @@
android:layout_height="match_parent"
android:layout_weight="2"
android:orientation="vertical"/>
<ImageButton
<org.xbmc.kore.ui.widgets.RepeatModeButton
android:id="@+id/repeat"
android:layout_width="0dp"
android:layout_weight="1"