Replace Codec button with Context button on remote.
Move Codec button to long click on Info button.
|
@ -19,6 +19,7 @@ import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.support.v4.app.Fragment;
|
import android.support.v4.app.Fragment;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.MotionEvent;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.view.animation.Animation;
|
import android.view.animation.Animation;
|
||||||
|
@ -102,7 +103,7 @@ public class RemoteFragment extends Fragment
|
||||||
@InjectView(R.id.down) ImageView downButton;
|
@InjectView(R.id.down) ImageView downButton;
|
||||||
@InjectView(R.id.back) ImageView backButton;
|
@InjectView(R.id.back) ImageView backButton;
|
||||||
@InjectView(R.id.info) ImageView infoButton;
|
@InjectView(R.id.info) ImageView infoButton;
|
||||||
@InjectView(R.id.codec_info) ImageView codecInfoButton;
|
@InjectView(R.id.context) ImageView contextButton;
|
||||||
@InjectView(R.id.osd) ImageView osdButton;
|
@InjectView(R.id.osd) ImageView osdButton;
|
||||||
|
|
||||||
@InjectView(R.id.art) ImageView thumbnail;
|
@InjectView(R.id.art) ImageView thumbnail;
|
||||||
|
@ -115,6 +116,8 @@ public class RemoteFragment extends Fragment
|
||||||
|
|
||||||
private Animation buttonInAnim;
|
private Animation buttonInAnim;
|
||||||
private Animation buttonOutAnim;
|
private Animation buttonOutAnim;
|
||||||
|
// Touch listener that provides touch feedbacl
|
||||||
|
private View.OnTouchListener feedbackTouckListener;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate(Bundle savedInstanceState) {
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
|
@ -124,6 +127,23 @@ public class RemoteFragment extends Fragment
|
||||||
|
|
||||||
buttonInAnim = AnimationUtils.loadAnimation(getActivity(), R.anim.button_in);
|
buttonInAnim = AnimationUtils.loadAnimation(getActivity(), R.anim.button_in);
|
||||||
buttonOutAnim = AnimationUtils.loadAnimation(getActivity(), R.anim.button_out);
|
buttonOutAnim = AnimationUtils.loadAnimation(getActivity(), R.anim.button_out);
|
||||||
|
|
||||||
|
feedbackTouckListener = new View.OnTouchListener() {
|
||||||
|
@Override
|
||||||
|
public boolean onTouch(View v, MotionEvent event) {
|
||||||
|
switch (event.getAction()) {
|
||||||
|
case MotionEvent.ACTION_DOWN:
|
||||||
|
buttonInAnim.setFillAfter(true);
|
||||||
|
v.startAnimation(buttonInAnim);
|
||||||
|
break;
|
||||||
|
case MotionEvent.ACTION_UP:
|
||||||
|
case MotionEvent.ACTION_CANCEL:
|
||||||
|
v.startAnimation(buttonOutAnim);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -137,12 +157,13 @@ public class RemoteFragment extends Fragment
|
||||||
setupRepeatButton(upButton, new Input.Up());
|
setupRepeatButton(upButton, new Input.Up());
|
||||||
setupRepeatButton(downButton, new Input.Down());
|
setupRepeatButton(downButton, new Input.Down());
|
||||||
|
|
||||||
setupNoRepeatButton(selectButton, new Input.Select());
|
setupNoRepeatButton(selectButton, new Input.Select(), null);
|
||||||
|
setupNoRepeatButton(backButton, new Input.Back(), null);
|
||||||
setupNoRepeatButton(backButton, new Input.Back());
|
setupNoRepeatButton(infoButton,
|
||||||
setupNoRepeatButton(infoButton, new Input.ExecuteAction(Input.ExecuteAction.INFO));
|
new Input.ExecuteAction(Input.ExecuteAction.INFO),
|
||||||
setupNoRepeatButton(osdButton, new Input.ExecuteAction(Input.ExecuteAction.OSD));
|
new Input.ExecuteAction(Input.ExecuteAction.CODECINFO));
|
||||||
setupNoRepeatButton(codecInfoButton, new Input.ExecuteAction(Input.ExecuteAction.CODECINFO));
|
setupNoRepeatButton(osdButton, new Input.ExecuteAction(Input.ExecuteAction.OSD), null);
|
||||||
|
setupNoRepeatButton(contextButton, new Input.ExecuteAction(Input.ExecuteAction.CONTEXTMENU), null);
|
||||||
|
|
||||||
// // Padd main content view to account for bottom system bar
|
// // Padd main content view to account for bottom system bar
|
||||||
// UIUtils.setPaddingForSystemBars(getActivity(), root, false, false, true);
|
// UIUtils.setPaddingForSystemBars(getActivity(), root, false, false, true);
|
||||||
|
@ -192,14 +213,28 @@ public class RemoteFragment extends Fragment
|
||||||
}, buttonInAnim, buttonOutAnim));
|
}, buttonInAnim, buttonOutAnim));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setupNoRepeatButton(View button, final ApiMethod<String> action) {
|
private void setupNoRepeatButton(View button,
|
||||||
button.setOnTouchListener(new RepeatListener(-1, -1,
|
final ApiMethod<String> clickAction,
|
||||||
new View.OnClickListener() {
|
final ApiMethod<String> longClickAction) {
|
||||||
|
// Set animation
|
||||||
|
button.setOnTouchListener(feedbackTouckListener);
|
||||||
|
if (clickAction != null) {
|
||||||
|
button.setOnClickListener(new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
action.execute(hostManager.getConnection(), defaultActionCallback, callbackHandler);
|
clickAction.execute(hostManager.getConnection(), defaultActionCallback, callbackHandler);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if (longClickAction != null) {
|
||||||
|
button.setOnLongClickListener(new View.OnLongClickListener() {
|
||||||
|
@Override
|
||||||
|
public boolean onLongClick(View v) {
|
||||||
|
longClickAction.execute(hostManager.getConnection(), defaultActionCallback, callbackHandler);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}, buttonInAnim, buttonOutAnim));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
After Width: | Height: | Size: 4.1 KiB |
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 2.1 KiB |
|
@ -122,19 +122,19 @@
|
||||||
android:gravity="center_horizontal">
|
android:gravity="center_horizontal">
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/codec_info"
|
android:id="@+id/context"
|
||||||
android:layout_width="@dimen/remote_icon_size"
|
android:layout_width="@dimen/remote_icon_size"
|
||||||
android:layout_height="@dimen/remote_icon_size"
|
android:layout_height="@dimen/remote_icon_size"
|
||||||
android:layout_alignParentStart="true"
|
android:layout_alignParentStart="true"
|
||||||
android:layout_alignParentLeft="true"
|
android:layout_alignParentLeft="true"
|
||||||
android:src="?attr/iconCodec"
|
android:src="?attr/iconContext"
|
||||||
android:contentDescription="@string/codec_info"/>
|
android:contentDescription="@string/codec_info"/>
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/up"
|
android:id="@+id/up"
|
||||||
android:layout_width="@dimen/remote_icon_size"
|
android:layout_width="@dimen/remote_icon_size"
|
||||||
android:layout_height="@dimen/remote_icon_size"
|
android:layout_height="@dimen/remote_icon_size"
|
||||||
android:layout_toRightOf="@id/codec_info"
|
android:layout_toRightOf="@id/context"
|
||||||
android:layout_alignTop="@id/codec_info"
|
android:layout_alignTop="@id/context"
|
||||||
android:src="?attr/iconUp"
|
android:src="?attr/iconUp"
|
||||||
android:contentDescription="@string/up"/>
|
android:contentDescription="@string/up"/>
|
||||||
<ImageView
|
<ImageView
|
||||||
|
@ -142,7 +142,7 @@
|
||||||
android:layout_width="@dimen/remote_icon_size"
|
android:layout_width="@dimen/remote_icon_size"
|
||||||
android:layout_height="@dimen/remote_icon_size"
|
android:layout_height="@dimen/remote_icon_size"
|
||||||
android:layout_toRightOf="@id/up"
|
android:layout_toRightOf="@id/up"
|
||||||
android:layout_alignTop="@id/codec_info"
|
android:layout_alignTop="@id/context"
|
||||||
android:src="?attr/iconInfo"
|
android:src="?attr/iconInfo"
|
||||||
android:contentDescription="@string/info"/>
|
android:contentDescription="@string/info"/>
|
||||||
|
|
||||||
|
@ -150,7 +150,7 @@
|
||||||
android:id="@+id/left"
|
android:id="@+id/left"
|
||||||
android:layout_width="@dimen/remote_icon_size"
|
android:layout_width="@dimen/remote_icon_size"
|
||||||
android:layout_height="@dimen/remote_icon_size"
|
android:layout_height="@dimen/remote_icon_size"
|
||||||
android:layout_below="@id/codec_info"
|
android:layout_below="@id/context"
|
||||||
android:src="?attr/iconLeft"
|
android:src="?attr/iconLeft"
|
||||||
android:contentDescription="@string/left"/>
|
android:contentDescription="@string/left"/>
|
||||||
<ImageView
|
<ImageView
|
||||||
|
|
|
@ -153,19 +153,19 @@
|
||||||
android:gravity="center_horizontal">
|
android:gravity="center_horizontal">
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/codec_info"
|
android:id="@+id/context"
|
||||||
android:layout_width="@dimen/remote_icon_size"
|
android:layout_width="@dimen/remote_icon_size"
|
||||||
android:layout_height="@dimen/remote_icon_size"
|
android:layout_height="@dimen/remote_icon_size"
|
||||||
android:layout_alignParentStart="true"
|
android:layout_alignParentStart="true"
|
||||||
android:layout_alignParentLeft="true"
|
android:layout_alignParentLeft="true"
|
||||||
android:src="?attr/iconCodec"
|
android:src="?attr/iconContext"
|
||||||
android:contentDescription="@string/codec_info"/>
|
android:contentDescription="@string/codec_info"/>
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/up"
|
android:id="@+id/up"
|
||||||
android:layout_width="@dimen/remote_icon_size"
|
android:layout_width="@dimen/remote_icon_size"
|
||||||
android:layout_height="@dimen/remote_icon_size"
|
android:layout_height="@dimen/remote_icon_size"
|
||||||
android:layout_toRightOf="@id/codec_info"
|
android:layout_toRightOf="@id/context"
|
||||||
android:layout_alignTop="@id/codec_info"
|
android:layout_alignTop="@id/context"
|
||||||
android:src="?attr/iconUp"
|
android:src="?attr/iconUp"
|
||||||
android:contentDescription="@string/up"/>
|
android:contentDescription="@string/up"/>
|
||||||
<ImageView
|
<ImageView
|
||||||
|
@ -173,7 +173,7 @@
|
||||||
android:layout_width="@dimen/remote_icon_size"
|
android:layout_width="@dimen/remote_icon_size"
|
||||||
android:layout_height="@dimen/remote_icon_size"
|
android:layout_height="@dimen/remote_icon_size"
|
||||||
android:layout_toRightOf="@id/up"
|
android:layout_toRightOf="@id/up"
|
||||||
android:layout_alignTop="@id/codec_info"
|
android:layout_alignTop="@id/context"
|
||||||
android:src="?attr/iconInfo"
|
android:src="?attr/iconInfo"
|
||||||
android:contentDescription="@string/info"/>
|
android:contentDescription="@string/info"/>
|
||||||
|
|
||||||
|
@ -181,7 +181,7 @@
|
||||||
android:id="@+id/left"
|
android:id="@+id/left"
|
||||||
android:layout_width="@dimen/remote_icon_size"
|
android:layout_width="@dimen/remote_icon_size"
|
||||||
android:layout_height="@dimen/remote_icon_size"
|
android:layout_height="@dimen/remote_icon_size"
|
||||||
android:layout_below="@id/codec_info"
|
android:layout_below="@id/context"
|
||||||
android:src="?attr/iconLeft"
|
android:src="?attr/iconLeft"
|
||||||
android:contentDescription="@string/left"/>
|
android:contentDescription="@string/left"/>
|
||||||
<ImageView
|
<ImageView
|
||||||
|
|
|
@ -138,6 +138,7 @@
|
||||||
<string name="select">Select</string>
|
<string name="select">Select</string>
|
||||||
<string name="info">Info</string>
|
<string name="info">Info</string>
|
||||||
<string name="codec_info">Codec</string>
|
<string name="codec_info">Codec</string>
|
||||||
|
<string name="context">Context</string>
|
||||||
<string name="osd">Menu</string>
|
<string name="osd">Menu</string>
|
||||||
<string name="back">Back</string>
|
<string name="back">Back</string>
|
||||||
|
|
||||||
|
|
|
@ -69,7 +69,7 @@
|
||||||
<item name="iconInfo">@drawable/remote_info_white</item>
|
<item name="iconInfo">@drawable/remote_info_white</item>
|
||||||
<item name="iconBack">@drawable/remote_back_white</item>
|
<item name="iconBack">@drawable/remote_back_white</item>
|
||||||
<item name="iconMenu">@drawable/remote_menu_white</item>
|
<item name="iconMenu">@drawable/remote_menu_white</item>
|
||||||
<item name="iconCodec">@drawable/remote_codec_white</item>
|
<item name="iconContext">@drawable/remote_context_white</item>
|
||||||
|
|
||||||
<item name="iconLeft">@drawable/remote_left_white</item>
|
<item name="iconLeft">@drawable/remote_left_white</item>
|
||||||
<item name="iconRight">@drawable/remote_right_white</item>
|
<item name="iconRight">@drawable/remote_right_white</item>
|
||||||
|
@ -173,7 +173,7 @@
|
||||||
<item name="iconInfo">@drawable/remote_info_black</item>
|
<item name="iconInfo">@drawable/remote_info_black</item>
|
||||||
<item name="iconBack">@drawable/remote_back_black</item>
|
<item name="iconBack">@drawable/remote_back_black</item>
|
||||||
<item name="iconMenu">@drawable/remote_menu_black</item>
|
<item name="iconMenu">@drawable/remote_menu_black</item>
|
||||||
<item name="iconCodec">@drawable/remote_codec_black</item>
|
<item name="iconContext">@drawable/remote_context_black</item>
|
||||||
|
|
||||||
<item name="iconLeft">@drawable/remote_left_black</item>
|
<item name="iconLeft">@drawable/remote_left_black</item>
|
||||||
<item name="iconRight">@drawable/remote_right_black</item>
|
<item name="iconRight">@drawable/remote_right_black</item>
|
||||||
|
|
|
@ -0,0 +1,87 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||||
|
|
||||||
|
<svg
|
||||||
|
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||||
|
xmlns:cc="http://creativecommons.org/ns#"
|
||||||
|
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||||
|
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||||
|
width="288"
|
||||||
|
height="288"
|
||||||
|
id="svg2"
|
||||||
|
version="1.1"
|
||||||
|
inkscape:version="0.48.5 r10040"
|
||||||
|
sodipodi:docname="remote_codec.svg">
|
||||||
|
<defs
|
||||||
|
id="defs4">
|
||||||
|
<inkscape:perspective
|
||||||
|
sodipodi:type="inkscape:persp3d"
|
||||||
|
inkscape:vp_x="0 : 144 : 1"
|
||||||
|
inkscape:vp_y="0 : 1000 : 0"
|
||||||
|
inkscape:vp_z="288 : 144 : 1"
|
||||||
|
inkscape:persp3d-origin="144 : 96 : 1"
|
||||||
|
id="perspective3804" />
|
||||||
|
</defs>
|
||||||
|
<sodipodi:namedview
|
||||||
|
id="base"
|
||||||
|
pagecolor="#ffffff"
|
||||||
|
bordercolor="#666666"
|
||||||
|
borderopacity="1.0"
|
||||||
|
inkscape:pageopacity="0.0"
|
||||||
|
inkscape:pageshadow="2"
|
||||||
|
inkscape:zoom="2.8"
|
||||||
|
inkscape:cx="12.564171"
|
||||||
|
inkscape:cy="130.65863"
|
||||||
|
inkscape:document-units="px"
|
||||||
|
inkscape:current-layer="layer1"
|
||||||
|
showgrid="true"
|
||||||
|
inkscape:window-width="1920"
|
||||||
|
inkscape:window-height="1150"
|
||||||
|
inkscape:window-x="0"
|
||||||
|
inkscape:window-y="25"
|
||||||
|
inkscape:window-maximized="1">
|
||||||
|
<inkscape:grid
|
||||||
|
type="xygrid"
|
||||||
|
id="grid2985"
|
||||||
|
empspacing="5"
|
||||||
|
visible="true"
|
||||||
|
enabled="true"
|
||||||
|
snapvisiblegridlinesonly="true"
|
||||||
|
spacingx="6px"
|
||||||
|
spacingy="6px" />
|
||||||
|
</sodipodi:namedview>
|
||||||
|
<metadata
|
||||||
|
id="metadata7">
|
||||||
|
<rdf:RDF>
|
||||||
|
<cc:Work
|
||||||
|
rdf:about="">
|
||||||
|
<dc:format>image/svg+xml</dc:format>
|
||||||
|
<dc:type
|
||||||
|
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||||
|
<dc:title />
|
||||||
|
</cc:Work>
|
||||||
|
</rdf:RDF>
|
||||||
|
</metadata>
|
||||||
|
<g
|
||||||
|
inkscape:label="Layer 1"
|
||||||
|
inkscape:groupmode="layer"
|
||||||
|
id="layer1"
|
||||||
|
transform="translate(0,-764.36218)">
|
||||||
|
<text
|
||||||
|
xml:space="preserve"
|
||||||
|
style="font-size:39.99984741px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
|
||||||
|
x="-595.51642"
|
||||||
|
y="783.80695"
|
||||||
|
id="text2985"
|
||||||
|
sodipodi:linespacing="125%"
|
||||||
|
transform="matrix(0.70710679,-0.70710677,0.70710679,0.70710677,0,0)"><tspan
|
||||||
|
sodipodi:role="line"
|
||||||
|
id="tspan2987"
|
||||||
|
x="-595.51642"
|
||||||
|
y="783.80695"
|
||||||
|
style="font-size:39.99984741px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;font-family:Roboto Condensed;-inkscape-font-specification:'Roboto Condensed, Bold'">CNTXT</tspan></text>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 4.1 KiB |
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 2.1 KiB |