mirror of
https://github.com/moonlight-stream/moonlight-android.git
synced 2026-04-18 22:40:00 +00:00
Add list support back for users that don't like the grid
This commit is contained in:
@@ -5,6 +5,7 @@ import java.io.IOException;
|
|||||||
import java.net.InetAddress;
|
import java.net.InetAddress;
|
||||||
import java.net.UnknownHostException;
|
import java.net.UnknownHostException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
|
|
||||||
import org.xmlpull.v1.XmlPullParserException;
|
import org.xmlpull.v1.XmlPullParserException;
|
||||||
|
|
||||||
@@ -14,26 +15,34 @@ import com.limelight.nvstream.http.GfeHttpResponseException;
|
|||||||
import com.limelight.nvstream.http.NvApp;
|
import com.limelight.nvstream.http.NvApp;
|
||||||
import com.limelight.nvstream.http.NvHTTP;
|
import com.limelight.nvstream.http.NvHTTP;
|
||||||
import com.limelight.preferences.PreferenceConfiguration;
|
import com.limelight.preferences.PreferenceConfiguration;
|
||||||
|
import com.limelight.ui.AdapterFragment;
|
||||||
|
import com.limelight.ui.AdapterFragmentCallbacks;
|
||||||
import com.limelight.utils.Dialog;
|
import com.limelight.utils.Dialog;
|
||||||
import com.limelight.utils.SpinnerDialog;
|
import com.limelight.utils.SpinnerDialog;
|
||||||
import com.limelight.utils.UiHelper;
|
import com.limelight.utils.UiHelper;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
|
import android.app.FragmentManager;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
|
import android.content.SharedPreferences;
|
||||||
|
import android.content.res.Configuration;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.preference.PreferenceManager;
|
||||||
import android.view.ContextMenu;
|
import android.view.ContextMenu;
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ContextMenu.ContextMenuInfo;
|
import android.view.ContextMenu.ContextMenuInfo;
|
||||||
|
import android.widget.AbsListView;
|
||||||
import android.widget.AdapterView;
|
import android.widget.AdapterView;
|
||||||
import android.widget.AdapterView.OnItemClickListener;
|
import android.widget.AdapterView.OnItemClickListener;
|
||||||
import android.widget.GridView;
|
import android.widget.GridView;
|
||||||
|
import android.widget.ListView;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
import android.widget.AdapterView.AdapterContextMenuInfo;
|
import android.widget.AdapterView.AdapterContextMenuInfo;
|
||||||
|
|
||||||
public class AppView extends Activity {
|
public class AppView extends Activity implements AdapterFragmentCallbacks {
|
||||||
private AppGridAdapter appGridAdapter;
|
private AppGridAdapter appGridAdapter;
|
||||||
private InetAddress ipAddress;
|
private InetAddress ipAddress;
|
||||||
private String uniqueId;
|
private String uniqueId;
|
||||||
@@ -53,9 +62,7 @@ public class AppView extends Activity {
|
|||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
|
String locale = PreferenceConfiguration.readPreferences(this).language;
|
||||||
String locale = prefs.getString(PreferenceConfiguration.LANGUAGE_PREF_STRING,
|
|
||||||
PreferenceConfiguration.DEFAULT_LANGUAGE);
|
|
||||||
if (!locale.equals(PreferenceConfiguration.DEFAULT_LANGUAGE)) {
|
if (!locale.equals(PreferenceConfiguration.DEFAULT_LANGUAGE)) {
|
||||||
Configuration config = new Configuration(getResources().getConfiguration());
|
Configuration config = new Configuration(getResources().getConfiguration());
|
||||||
config.locale = new Locale(locale);
|
config.locale = new Locale(locale);
|
||||||
@@ -87,34 +94,18 @@ public class AppView extends Activity {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Setup the list view
|
|
||||||
GridView appGrid = (GridView) findViewById(R.id.appGridView);
|
|
||||||
try {
|
try {
|
||||||
appGridAdapter = new AppGridAdapter(this, ipAddress, uniqueId);
|
appGridAdapter = new AppGridAdapter(this,
|
||||||
|
PreferenceConfiguration.readPreferences(this).listMode,
|
||||||
|
ipAddress, uniqueId);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
finish();
|
finish();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
appGrid.setAdapter(appGridAdapter);
|
|
||||||
appGrid.setOnItemClickListener(new OnItemClickListener() {
|
|
||||||
@Override
|
|
||||||
public void onItemClick(AdapterView<?> arg0, View arg1, int pos,
|
|
||||||
long id) {
|
|
||||||
AppObject app = (AppObject) appGridAdapter.getItem(pos);
|
|
||||||
if (app == null || app.app == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Only open the context menu if something is running, otherwise start it
|
getFragmentManager().beginTransaction()
|
||||||
if (getRunningAppId() != -1) {
|
.add(R.id.appFragmentContainer, new AdapterFragment()).commit();
|
||||||
openContextMenu(arg1);
|
|
||||||
} else {
|
|
||||||
doStart(app.app);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
registerForContextMenu(appGrid);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -294,7 +285,36 @@ public class AppView extends Activity {
|
|||||||
}).start();
|
}).start();
|
||||||
}
|
}
|
||||||
|
|
||||||
public class AppObject {
|
@Override
|
||||||
|
public int getAdapterFragmentLayoutId() {
|
||||||
|
return PreferenceConfiguration.readPreferences(this).listMode ?
|
||||||
|
R.layout.list_view : R.layout.app_grid_view;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void receiveAbsListView(AbsListView listView) {
|
||||||
|
listView.setAdapter(appGridAdapter);
|
||||||
|
listView.setOnItemClickListener(new OnItemClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onItemClick(AdapterView<?> arg0, View arg1, int pos,
|
||||||
|
long id) {
|
||||||
|
AppObject app = (AppObject) appGridAdapter.getItem(pos);
|
||||||
|
if (app == null || app.app == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Only open the context menu if something is running, otherwise start it
|
||||||
|
if (getRunningAppId() != -1) {
|
||||||
|
openContextMenu(arg1);
|
||||||
|
} else {
|
||||||
|
doStart(app.app);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
registerForContextMenu(listView);
|
||||||
|
}
|
||||||
|
|
||||||
|
public class AppObject {
|
||||||
public NvApp app;
|
public NvApp app;
|
||||||
|
|
||||||
public AppObject(NvApp app) {
|
public AppObject(NvApp app) {
|
||||||
|
|||||||
@@ -22,12 +22,15 @@ import com.limelight.utils.SpinnerDialog;
|
|||||||
import android.annotation.SuppressLint;
|
import android.annotation.SuppressLint;
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.SharedPreferences;
|
||||||
|
import android.content.res.Configuration;
|
||||||
import android.graphics.Point;
|
import android.graphics.Point;
|
||||||
import android.media.AudioManager;
|
import android.media.AudioManager;
|
||||||
import android.net.ConnectivityManager;
|
import android.net.ConnectivityManager;
|
||||||
import android.net.wifi.WifiManager;
|
import android.net.wifi.WifiManager;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
|
import android.preference.PreferenceManager;
|
||||||
import android.view.Display;
|
import android.view.Display;
|
||||||
import android.view.InputDevice;
|
import android.view.InputDevice;
|
||||||
import android.view.KeyEvent;
|
import android.view.KeyEvent;
|
||||||
@@ -43,6 +46,8 @@ import android.view.Window;
|
|||||||
import android.view.WindowManager;
|
import android.view.WindowManager;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import java.util.Locale;
|
||||||
|
|
||||||
|
|
||||||
public class Game extends Activity implements SurfaceHolder.Callback,
|
public class Game extends Activity implements SurfaceHolder.Callback,
|
||||||
OnGenericMotionListener, OnTouchListener, NvConnectionListener, EvdevListener,
|
OnGenericMotionListener, OnTouchListener, NvConnectionListener, EvdevListener,
|
||||||
@@ -87,10 +92,8 @@ public class Game extends Activity implements SurfaceHolder.Callback,
|
|||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
|
String locale = PreferenceConfiguration.readPreferences(this).language;
|
||||||
String locale = prefs.getString(PreferenceConfiguration.LANGUAGE_PREF_STRING,
|
if (!locale.equals(PreferenceConfiguration.DEFAULT_LANGUAGE)) {
|
||||||
PreferenceConfiguration.DEFAULT_LANGUAGE);
|
|
||||||
if (!locale.equals(PreferenceConfiguration.DEFAULT_LANGUAGE)) {
|
|
||||||
Configuration config = new Configuration(getResources().getConfiguration());
|
Configuration config = new Configuration(getResources().getConfiguration());
|
||||||
config.locale = new Locale(locale);
|
config.locale = new Locale(locale);
|
||||||
getResources().updateConfiguration(config, getResources().getDisplayMetrics());
|
getResources().updateConfiguration(config, getResources().getDisplayMetrics());
|
||||||
|
|||||||
@@ -19,6 +19,8 @@ import com.limelight.nvstream.wol.WakeOnLanSender;
|
|||||||
import com.limelight.preferences.AddComputerManually;
|
import com.limelight.preferences.AddComputerManually;
|
||||||
import com.limelight.preferences.PreferenceConfiguration;
|
import com.limelight.preferences.PreferenceConfiguration;
|
||||||
import com.limelight.preferences.StreamSettings;
|
import com.limelight.preferences.StreamSettings;
|
||||||
|
import com.limelight.ui.AdapterFragment;
|
||||||
|
import com.limelight.ui.AdapterFragmentCallbacks;
|
||||||
import com.limelight.utils.Dialog;
|
import com.limelight.utils.Dialog;
|
||||||
import com.limelight.utils.UiHelper;
|
import com.limelight.utils.UiHelper;
|
||||||
|
|
||||||
@@ -38,15 +40,17 @@ import android.view.MenuItem;
|
|||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ContextMenu.ContextMenuInfo;
|
import android.view.ContextMenu.ContextMenuInfo;
|
||||||
import android.view.View.OnClickListener;
|
import android.view.View.OnClickListener;
|
||||||
|
import android.widget.AbsListView;
|
||||||
import android.widget.AdapterView;
|
import android.widget.AdapterView;
|
||||||
import android.widget.AdapterView.OnItemClickListener;
|
import android.widget.AdapterView.OnItemClickListener;
|
||||||
import android.widget.GridView;
|
import android.widget.GridView;
|
||||||
import android.widget.ImageButton;
|
import android.widget.ImageButton;
|
||||||
|
import android.widget.ListView;
|
||||||
import android.widget.RelativeLayout;
|
import android.widget.RelativeLayout;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
import android.widget.AdapterView.AdapterContextMenuInfo;
|
import android.widget.AdapterView.AdapterContextMenuInfo;
|
||||||
|
|
||||||
public class PcView extends Activity {
|
public class PcView extends Activity implements AdapterFragmentCallbacks {
|
||||||
private RelativeLayout noPcFoundLayout;
|
private RelativeLayout noPcFoundLayout;
|
||||||
private PcGridAdapter pcGridAdapter;
|
private PcGridAdapter pcGridAdapter;
|
||||||
private ComputerManagerService.ComputerManagerBinder managerBinder;
|
private ComputerManagerService.ComputerManagerBinder managerBinder;
|
||||||
@@ -105,27 +109,6 @@ public class PcView extends Activity {
|
|||||||
ImageButton settingsButton = (ImageButton) findViewById(R.id.settingsButton);
|
ImageButton settingsButton = (ImageButton) findViewById(R.id.settingsButton);
|
||||||
ImageButton addComputerButton = (ImageButton) findViewById(R.id.manuallyAddPc);
|
ImageButton addComputerButton = (ImageButton) findViewById(R.id.manuallyAddPc);
|
||||||
|
|
||||||
GridView pcGrid = (GridView) findViewById(R.id.pcGridView);
|
|
||||||
pcGrid.setAdapter(pcGridAdapter);
|
|
||||||
pcGrid.setOnItemClickListener(new OnItemClickListener() {
|
|
||||||
@Override
|
|
||||||
public void onItemClick(AdapterView<?> arg0, View arg1, int pos,
|
|
||||||
long id) {
|
|
||||||
ComputerObject computer = (ComputerObject) pcGridAdapter.getItem(pos);
|
|
||||||
if (computer.details.reachability == ComputerDetails.Reachability.UNKNOWN) {
|
|
||||||
// Do nothing
|
|
||||||
} else if (computer.details.reachability == ComputerDetails.Reachability.OFFLINE) {
|
|
||||||
// Open the context menu if a PC is offline
|
|
||||||
openContextMenu(arg1);
|
|
||||||
} else if (computer.details.pairState != PairState.PAIRED) {
|
|
||||||
// Pair an unpaired machine by default
|
|
||||||
doPair(computer.details);
|
|
||||||
} else {
|
|
||||||
doAppList(computer.details);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
registerForContextMenu(pcGrid);
|
|
||||||
settingsButton.setOnClickListener(new OnClickListener() {
|
settingsButton.setOnClickListener(new OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
@@ -140,6 +123,9 @@ public class PcView extends Activity {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
getFragmentManager().beginTransaction()
|
||||||
|
.add(R.id.pcFragmentContainer, new AdapterFragment()).commit();
|
||||||
|
|
||||||
noPcFoundLayout = (RelativeLayout) findViewById(R.id.no_pc_found_layout);
|
noPcFoundLayout = (RelativeLayout) findViewById(R.id.no_pc_found_layout);
|
||||||
if (pcGridAdapter.getCount() == 0) {
|
if (pcGridAdapter.getCount() == 0) {
|
||||||
noPcFoundLayout.setVisibility(View.VISIBLE);
|
noPcFoundLayout.setVisibility(View.VISIBLE);
|
||||||
@@ -154,9 +140,7 @@ public class PcView extends Activity {
|
|||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
|
String locale = PreferenceConfiguration.readPreferences(this).language;
|
||||||
String locale = prefs.getString(PreferenceConfiguration.LANGUAGE_PREF_STRING,
|
|
||||||
PreferenceConfiguration.DEFAULT_LANGUAGE);
|
|
||||||
if (!locale.equals(PreferenceConfiguration.DEFAULT_LANGUAGE)) {
|
if (!locale.equals(PreferenceConfiguration.DEFAULT_LANGUAGE)) {
|
||||||
Configuration config = new Configuration(getResources().getConfiguration());
|
Configuration config = new Configuration(getResources().getConfiguration());
|
||||||
config.locale = new Locale(locale);
|
config.locale = new Locale(locale);
|
||||||
@@ -167,7 +151,8 @@ public class PcView extends Activity {
|
|||||||
bindService(new Intent(PcView.this, ComputerManagerService.class), serviceConnection,
|
bindService(new Intent(PcView.this, ComputerManagerService.class), serviceConnection,
|
||||||
Service.BIND_AUTO_CREATE);
|
Service.BIND_AUTO_CREATE);
|
||||||
|
|
||||||
pcGridAdapter = new PcGridAdapter(this);
|
pcGridAdapter = new PcGridAdapter(this,
|
||||||
|
PreferenceConfiguration.readPreferences(this).listMode);
|
||||||
|
|
||||||
initializeViews();
|
initializeViews();
|
||||||
}
|
}
|
||||||
@@ -574,7 +559,37 @@ public class PcView extends Activity {
|
|||||||
pcGridAdapter.notifyDataSetChanged();
|
pcGridAdapter.notifyDataSetChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
public class ComputerObject {
|
@Override
|
||||||
|
public int getAdapterFragmentLayoutId() {
|
||||||
|
return PreferenceConfiguration.readPreferences(this).listMode ?
|
||||||
|
R.layout.list_view : R.layout.pc_grid_view;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void receiveAbsListView(AbsListView listView) {
|
||||||
|
listView.setAdapter(pcGridAdapter);
|
||||||
|
listView.setOnItemClickListener(new OnItemClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onItemClick(AdapterView<?> arg0, View arg1, int pos,
|
||||||
|
long id) {
|
||||||
|
ComputerObject computer = (ComputerObject) pcGridAdapter.getItem(pos);
|
||||||
|
if (computer.details.reachability == ComputerDetails.Reachability.UNKNOWN) {
|
||||||
|
// Do nothing
|
||||||
|
} else if (computer.details.reachability == ComputerDetails.Reachability.OFFLINE) {
|
||||||
|
// Open the context menu if a PC is offline
|
||||||
|
openContextMenu(arg1);
|
||||||
|
} else if (computer.details.pairState != PairState.PAIRED) {
|
||||||
|
// Pair an unpaired machine by default
|
||||||
|
doPair(computer.details);
|
||||||
|
} else {
|
||||||
|
doAppList(computer.details);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
registerForContextMenu(listView);
|
||||||
|
}
|
||||||
|
|
||||||
|
public class ComputerObject {
|
||||||
public ComputerDetails details;
|
public ComputerDetails details;
|
||||||
|
|
||||||
public ComputerObject(ComputerDetails details) {
|
public ComputerObject(ComputerDetails details) {
|
||||||
|
|||||||
@@ -32,14 +32,15 @@ import java.security.cert.X509Certificate;
|
|||||||
|
|
||||||
public class AppGridAdapter extends GenericGridAdapter<AppView.AppObject> {
|
public class AppGridAdapter extends GenericGridAdapter<AppView.AppObject> {
|
||||||
|
|
||||||
|
private boolean listMode;
|
||||||
private InetAddress address;
|
private InetAddress address;
|
||||||
private String uniqueId;
|
private String uniqueId;
|
||||||
private LimelightCryptoProvider cryptoProvider;
|
private LimelightCryptoProvider cryptoProvider;
|
||||||
private SSLContext sslContext;
|
private SSLContext sslContext;
|
||||||
private final HashMap<ImageView, Future> pendingRequests = new HashMap<ImageView, Future>();
|
private final HashMap<ImageView, Future> pendingRequests = new HashMap<ImageView, Future>();
|
||||||
|
|
||||||
public AppGridAdapter(Context context, InetAddress address, String uniqueId) throws NoSuchAlgorithmException, KeyManagementException {
|
public AppGridAdapter(Context context, boolean listMode, InetAddress address, String uniqueId) throws NoSuchAlgorithmException, KeyManagementException {
|
||||||
super(context, R.layout.app_grid_item, R.drawable.image_loading);
|
super(context, listMode ? R.layout.simple_row : R.layout.app_grid_item, R.drawable.image_loading);
|
||||||
|
|
||||||
this.address = address;
|
this.address = address;
|
||||||
this.uniqueId = uniqueId;
|
this.uniqueId = uniqueId;
|
||||||
|
|||||||
@@ -60,17 +60,21 @@ public abstract class GenericGridAdapter<T> extends BaseAdapter {
|
|||||||
ImageView overlayView = (ImageView) convertView.findViewById(R.id.grid_overlay);
|
ImageView overlayView = (ImageView) convertView.findViewById(R.id.grid_overlay);
|
||||||
TextView txtView = (TextView) convertView.findViewById(R.id.grid_text);
|
TextView txtView = (TextView) convertView.findViewById(R.id.grid_text);
|
||||||
|
|
||||||
if (!populateImageView(imgView, itemList.get(i))) {
|
if (imgView != null) {
|
||||||
imgView.setImageResource(defaultImageRes);
|
if (!populateImageView(imgView, itemList.get(i))) {
|
||||||
|
imgView.setImageResource(defaultImageRes);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (!populateTextView(txtView, itemList.get(i))) {
|
if (!populateTextView(txtView, itemList.get(i))) {
|
||||||
txtView.setText(itemList.get(i).toString());
|
txtView.setText(itemList.get(i).toString());
|
||||||
}
|
}
|
||||||
if (!populateOverlayView(overlayView, itemList.get(i))) {
|
if (overlayView != null) {
|
||||||
overlayView.setVisibility(View.INVISIBLE);
|
if (!populateOverlayView(overlayView, itemList.get(i))) {
|
||||||
}
|
overlayView.setVisibility(View.INVISIBLE);
|
||||||
else {
|
}
|
||||||
overlayView.setVisibility(View.VISIBLE);
|
else {
|
||||||
|
overlayView.setVisibility(View.VISIBLE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return convertView;
|
return convertView;
|
||||||
|
|||||||
@@ -8,14 +8,27 @@ import com.limelight.PcView;
|
|||||||
import com.limelight.R;
|
import com.limelight.R;
|
||||||
import com.limelight.nvstream.http.ComputerDetails;
|
import com.limelight.nvstream.http.ComputerDetails;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Comparator;
|
||||||
|
|
||||||
public class PcGridAdapter extends GenericGridAdapter<PcView.ComputerObject> {
|
public class PcGridAdapter extends GenericGridAdapter<PcView.ComputerObject> {
|
||||||
|
|
||||||
public PcGridAdapter(Context context) {
|
public PcGridAdapter(Context context, boolean listMode) {
|
||||||
super(context, R.layout.pc_grid_item, R.drawable.computer);
|
super(context, listMode ? R.layout.simple_row : R.layout.pc_grid_item, R.drawable.computer);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addComputer(PcView.ComputerObject computer) {
|
public void addComputer(PcView.ComputerObject computer) {
|
||||||
itemList.add(computer);
|
itemList.add(computer);
|
||||||
|
sortList();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void sortList() {
|
||||||
|
Collections.sort(itemList, new Comparator<PcView.ComputerObject>() {
|
||||||
|
@Override
|
||||||
|
public int compare(PcView.ComputerObject lhs, PcView.ComputerObject rhs) {
|
||||||
|
return lhs.details.name.compareTo(rhs.details.name);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean removeComputer(PcView.ComputerObject computer) {
|
public boolean removeComputer(PcView.ComputerObject computer) {
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package com.limelight.preferences;
|
|||||||
|
|
||||||
import java.net.InetAddress;
|
import java.net.InetAddress;
|
||||||
import java.net.UnknownHostException;
|
import java.net.UnknownHostException;
|
||||||
|
import java.util.Locale;
|
||||||
import java.util.concurrent.LinkedBlockingQueue;
|
import java.util.concurrent.LinkedBlockingQueue;
|
||||||
|
|
||||||
import com.limelight.computers.ComputerManagerService;
|
import com.limelight.computers.ComputerManagerService;
|
||||||
@@ -15,8 +16,10 @@ import android.app.Service;
|
|||||||
import android.content.ComponentName;
|
import android.content.ComponentName;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.ServiceConnection;
|
import android.content.ServiceConnection;
|
||||||
|
import android.content.res.Configuration;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.IBinder;
|
import android.os.IBinder;
|
||||||
|
import android.preference.Preference;
|
||||||
import android.view.KeyEvent;
|
import android.view.KeyEvent;
|
||||||
import android.view.inputmethod.EditorInfo;
|
import android.view.inputmethod.EditorInfo;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
@@ -132,9 +135,7 @@ public class AddComputerManually extends Activity {
|
|||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
|
String locale = PreferenceConfiguration.readPreferences(this).language;
|
||||||
String locale = prefs.getString(PreferenceConfiguration.LANGUAGE_PREF_STRING,
|
|
||||||
PreferenceConfiguration.DEFAULT_LANGUAGE);
|
|
||||||
if (!locale.equals(PreferenceConfiguration.DEFAULT_LANGUAGE)) {
|
if (!locale.equals(PreferenceConfiguration.DEFAULT_LANGUAGE)) {
|
||||||
Configuration config = new Configuration(getResources().getConfiguration());
|
Configuration config = new Configuration(getResources().getConfiguration());
|
||||||
config.locale = new Locale(locale);
|
config.locale = new Locale(locale);
|
||||||
|
|||||||
@@ -13,7 +13,8 @@ public class PreferenceConfiguration {
|
|||||||
private static final String DISABLE_TOASTS_PREF_STRING = "checkbox_disable_warnings";
|
private static final String DISABLE_TOASTS_PREF_STRING = "checkbox_disable_warnings";
|
||||||
private static final String HOST_AUDIO_PREF_STRING = "checkbox_host_audio";
|
private static final String HOST_AUDIO_PREF_STRING = "checkbox_host_audio";
|
||||||
private static final String DEADZONE_PREF_STRING = "seekbar_deadzone";
|
private static final String DEADZONE_PREF_STRING = "seekbar_deadzone";
|
||||||
public static final String LANGUAGE_PREF_STRING = "list_languages";
|
private static final String LANGUAGE_PREF_STRING = "list_languages";
|
||||||
|
private static final String LIST_MODE_PREF_STRING = "checkbox_list_mode";
|
||||||
|
|
||||||
private static final int BITRATE_DEFAULT_720_30 = 5;
|
private static final int BITRATE_DEFAULT_720_30 = 5;
|
||||||
private static final int BITRATE_DEFAULT_720_60 = 10;
|
private static final int BITRATE_DEFAULT_720_60 = 10;
|
||||||
@@ -29,6 +30,7 @@ public class PreferenceConfiguration {
|
|||||||
private static final boolean DEFAULT_HOST_AUDIO = false;
|
private static final boolean DEFAULT_HOST_AUDIO = false;
|
||||||
private static final int DEFAULT_DEADZONE = 15;
|
private static final int DEFAULT_DEADZONE = 15;
|
||||||
public static final String DEFAULT_LANGUAGE = "default";
|
public static final String DEFAULT_LANGUAGE = "default";
|
||||||
|
private static final boolean DEFAULT_LIST_MODE = false;
|
||||||
|
|
||||||
public static final int FORCE_HARDWARE_DECODER = -1;
|
public static final int FORCE_HARDWARE_DECODER = -1;
|
||||||
public static final int AUTOSELECT_DECODER = 0;
|
public static final int AUTOSELECT_DECODER = 0;
|
||||||
@@ -40,6 +42,7 @@ public class PreferenceConfiguration {
|
|||||||
public int deadzonePercentage;
|
public int deadzonePercentage;
|
||||||
public boolean stretchVideo, enableSops, playHostAudio, disableWarnings;
|
public boolean stretchVideo, enableSops, playHostAudio, disableWarnings;
|
||||||
public String language;
|
public String language;
|
||||||
|
public boolean listMode;
|
||||||
|
|
||||||
public static int getDefaultBitrate(String resFpsString) {
|
public static int getDefaultBitrate(String resFpsString) {
|
||||||
if (resFpsString.equals("720p30")) {
|
if (resFpsString.equals("720p30")) {
|
||||||
@@ -145,6 +148,7 @@ public class PreferenceConfiguration {
|
|||||||
config.enableSops = prefs.getBoolean(SOPS_PREF_STRING, DEFAULT_SOPS);
|
config.enableSops = prefs.getBoolean(SOPS_PREF_STRING, DEFAULT_SOPS);
|
||||||
config.stretchVideo = prefs.getBoolean(STRETCH_PREF_STRING, DEFAULT_STRETCH);
|
config.stretchVideo = prefs.getBoolean(STRETCH_PREF_STRING, DEFAULT_STRETCH);
|
||||||
config.playHostAudio = prefs.getBoolean(HOST_AUDIO_PREF_STRING, DEFAULT_HOST_AUDIO);
|
config.playHostAudio = prefs.getBoolean(HOST_AUDIO_PREF_STRING, DEFAULT_HOST_AUDIO);
|
||||||
|
config.listMode = prefs.getBoolean(LIST_MODE_PREF_STRING, DEFAULT_LIST_MODE);
|
||||||
|
|
||||||
return config;
|
return config;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.limelight.preferences;
|
package com.limelight.preferences;
|
||||||
|
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
|
import android.content.res.Configuration;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.preference.Preference;
|
import android.preference.Preference;
|
||||||
@@ -10,19 +11,19 @@ import android.preference.PreferenceManager;
|
|||||||
import com.limelight.R;
|
import com.limelight.R;
|
||||||
import com.limelight.utils.UiHelper;
|
import com.limelight.utils.UiHelper;
|
||||||
|
|
||||||
|
import java.util.Locale;
|
||||||
|
|
||||||
public class StreamSettings extends Activity {
|
public class StreamSettings extends Activity {
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
|
String locale = PreferenceConfiguration.readPreferences(this).language;
|
||||||
String locale = prefs.getString(PreferenceConfigration.LANGUAGE_PREF_STRING,
|
if (!locale.equals(PreferenceConfiguration.DEFAULT_LANGUAGE)) {
|
||||||
PreferenceConfiguration.DEFAULT_LANGUAGE);
|
Configuration config = new Configuration(getResources().getConfiguration());
|
||||||
if (!locale.equals(PreferenceConfiguration.DEFAULT_LANGUAGE)) {
|
config.locale = new Locale(locale);
|
||||||
Configuration config = new Configuration(getResources().getConfiguration());
|
getResources().updateConfiguration(config, getResources().getDisplayMetrics());
|
||||||
config.locale = new Locale(locale);
|
}
|
||||||
getResources().updateConfiguration(config, getResources().getDisplayMetrics());
|
|
||||||
}
|
|
||||||
|
|
||||||
setContentView(R.layout.activity_stream_settings);
|
setContentView(R.layout.activity_stream_settings);
|
||||||
getFragmentManager().beginTransaction().replace(
|
getFragmentManager().beginTransaction().replace(
|
||||||
|
|||||||
35
app/src/main/java/com/limelight/ui/AdapterFragment.java
Normal file
35
app/src/main/java/com/limelight/ui/AdapterFragment.java
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
package com.limelight.ui;
|
||||||
|
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.app.Fragment;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.AbsListView;
|
||||||
|
|
||||||
|
import com.limelight.R;
|
||||||
|
|
||||||
|
public class AdapterFragment extends Fragment {
|
||||||
|
private AdapterFragmentCallbacks callbacks;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onAttach(Activity activity) {
|
||||||
|
super.onAttach(activity);
|
||||||
|
|
||||||
|
callbacks = (AdapterFragmentCallbacks) activity;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||||
|
Bundle savedInstanceState) {
|
||||||
|
return inflater.inflate(callbacks.getAdapterFragmentLayoutId(), container, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onActivityCreated(Bundle savedInstanceState) {
|
||||||
|
super.onActivityCreated(savedInstanceState);
|
||||||
|
callbacks.receiveAbsListView((AbsListView) getView().findViewById(R.id.fragmentView));
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
package com.limelight.ui;
|
||||||
|
|
||||||
|
import android.widget.AbsListView;
|
||||||
|
|
||||||
|
public interface AdapterFragmentCallbacks {
|
||||||
|
public int getAdapterFragmentLayoutId();
|
||||||
|
public void receiveAbsListView(AbsListView gridView);
|
||||||
|
}
|
||||||
7
app/src/main/res/drawable/list_view_unselected.xml
Normal file
7
app/src/main/res/drawable/list_view_unselected.xml
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<shape xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:shape="rectangle" >
|
||||||
|
|
||||||
|
<stroke android:width="1dip" android:color="#ffffff"/>
|
||||||
|
|
||||||
|
</shape>
|
||||||
@@ -33,12 +33,10 @@
|
|||||||
android:text="@string/searching_pc"/>
|
android:text="@string/searching_pc"/>
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
||||||
<GridView
|
<FrameLayout
|
||||||
android:id="@+id/pcGridView"
|
android:id="@+id/pcFragmentContainer"
|
||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:numColumns="auto_fit"
|
|
||||||
android:columnWidth="160dp"
|
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:layout_alignParentBottom="true"
|
android:layout_alignParentBottom="true"
|
||||||
android:layout_alignParentTop="true"
|
android:layout_alignParentTop="true"
|
||||||
|
|||||||
@@ -33,12 +33,10 @@
|
|||||||
android:text="@string/searching_pc"/>
|
android:text="@string/searching_pc"/>
|
||||||
</RelativeLayout>
|
</RelativeLayout>
|
||||||
|
|
||||||
<GridView
|
<FrameLayout
|
||||||
android:id="@+id/pcGridView"
|
android:id="@+id/pcFragmentContainer"
|
||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:numColumns="auto_fit"
|
|
||||||
android:columnWidth="160dp"
|
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:layout_toLeftOf="@+id/manuallyAddPc"
|
android:layout_toLeftOf="@+id/manuallyAddPc"
|
||||||
android:layout_toStartOf="@+id/manuallyAddPc"
|
android:layout_toStartOf="@+id/manuallyAddPc"
|
||||||
|
|||||||
@@ -8,21 +8,17 @@
|
|||||||
android:paddingTop="@dimen/activity_vertical_margin"
|
android:paddingTop="@dimen/activity_vertical_margin"
|
||||||
tools:context=".AppView" >
|
tools:context=".AppView" >
|
||||||
|
|
||||||
<GridView
|
<FrameLayout
|
||||||
android:id="@+id/appGridView"
|
android:id="@+id/appFragmentContainer"
|
||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:numColumns="auto_fit"
|
|
||||||
android:columnWidth="160dp"
|
|
||||||
android:stretchMode="spacingWidth"
|
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:layout_alignParentLeft="true"
|
android:layout_alignParentLeft="true"
|
||||||
android:layout_alignParentStart="true"
|
android:layout_alignParentStart="true"
|
||||||
android:layout_alignParentRight="true"
|
android:layout_alignParentRight="true"
|
||||||
android:layout_alignParentEnd="true"
|
android:layout_alignParentEnd="true"
|
||||||
android:layout_alignParentBottom="true"
|
android:layout_alignParentBottom="true"
|
||||||
android:layout_below="@+id/appListText">
|
android:layout_below="@+id/appListText"/>
|
||||||
</GridView>
|
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/appListText"
|
android:id="@+id/appListText"
|
||||||
|
|||||||
13
app/src/main/res/layout/app_grid_view.xml
Normal file
13
app/src/main/res/layout/app_grid_view.xml
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:orientation="vertical" android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent">
|
||||||
|
<GridView
|
||||||
|
android:id="@+id/fragmentView"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:numColumns="auto_fit"
|
||||||
|
android:columnWidth="160dp"
|
||||||
|
android:stretchMode="spacingWidth"
|
||||||
|
android:gravity="center"/>
|
||||||
|
</LinearLayout>
|
||||||
17
app/src/main/res/layout/list_view.xml
Normal file
17
app/src/main/res/layout/list_view.xml
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:orientation="vertical" android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
|
<ListView
|
||||||
|
android:id="@+id/fragmentView"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:background="@drawable/list_view_unselected"
|
||||||
|
android:fastScrollEnabled="true"
|
||||||
|
android:longClickable="false"
|
||||||
|
android:stackFromBottom="false" >
|
||||||
|
|
||||||
|
</ListView>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
12
app/src/main/res/layout/pc_grid_view.xml
Normal file
12
app/src/main/res/layout/pc_grid_view.xml
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:orientation="vertical" android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent">
|
||||||
|
<GridView
|
||||||
|
android:id="@+id/fragmentView"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:numColumns="auto_fit"
|
||||||
|
android:columnWidth="160dp"
|
||||||
|
android:gravity="center"/>
|
||||||
|
</LinearLayout>
|
||||||
15
app/src/main/res/layout/simple_row.xml
Normal file
15
app/src/main/res/layout/simple_row.xml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:padding="10dp"
|
||||||
|
android:layout_height="wrap_content">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/grid_text"
|
||||||
|
android:layout_width="fill_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:textIsSelectable="false"
|
||||||
|
android:textSize="16sp" >
|
||||||
|
</TextView>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
@@ -100,7 +100,7 @@
|
|||||||
<string name="title_checkbox_enable_sops">Ottimizza le impostazioni dei giochi</string>
|
<string name="title_checkbox_enable_sops">Ottimizza le impostazioni dei giochi</string>
|
||||||
<string name="summary_checkbox_enable_sops">Permetti a GFE di modificare le impostazioni dei giochi per uno streaming ottimale</string>
|
<string name="summary_checkbox_enable_sops">Permetti a GFE di modificare le impostazioni dei giochi per uno streaming ottimale</string>
|
||||||
<string name="title_checkbox_host_audio">Riproduci audio sul PC</string>
|
<string name="title_checkbox_host_audio">Riproduci audio sul PC</string>
|
||||||
<string name="summary_checkbox_host_audio">Riproduci l\'audio sul computer e su questo dispositivo. Richiede GFE 2.1.2+</string>
|
<string name="summary_checkbox_host_audio">Riproduci l\'audio sul computer e su questo dispositivo</string>
|
||||||
|
|
||||||
<string name="category_advanced_settings">Impostazioni Avanzate</string>
|
<string name="category_advanced_settings">Impostazioni Avanzate</string>
|
||||||
<string name="title_decoder_list">Cambia decoder</string>
|
<string name="title_decoder_list">Cambia decoder</string>
|
||||||
|
|||||||
@@ -89,18 +89,22 @@
|
|||||||
<string name="title_checkbox_stretch_video">Stretch video to full-screen</string>
|
<string name="title_checkbox_stretch_video">Stretch video to full-screen</string>
|
||||||
<string name="title_checkbox_disable_warnings">Disable warning messages</string>
|
<string name="title_checkbox_disable_warnings">Disable warning messages</string>
|
||||||
<string name="summary_checkbox_disable_warnings">Disable on-screen connection warning messages while streaming</string>
|
<string name="summary_checkbox_disable_warnings">Disable on-screen connection warning messages while streaming</string>
|
||||||
<string name="title_language_list">Language</string>
|
|
||||||
<string name="summary_language_list">Language to use for Limelight</string>
|
|
||||||
|
|
||||||
<string name="category_gamepad_settings">Gamepad Settings</string>
|
<string name="category_gamepad_settings">Gamepad Settings</string>
|
||||||
<string name="title_seekbar_deadzone">Adjust analog stick deadzone</string>
|
<string name="title_seekbar_deadzone">Adjust analog stick deadzone</string>
|
||||||
<string name="suffix_seekbar_deadzone">%</string>
|
<string name="suffix_seekbar_deadzone">%</string>
|
||||||
|
|
||||||
|
<string name="category_ui_settings">UI Settings</string>
|
||||||
|
<string name="title_language_list">Language</string>
|
||||||
|
<string name="summary_language_list">Language to use for Limelight</string>
|
||||||
|
<string name="title_checkbox_list_mode">Use lists instead of grids</string>
|
||||||
|
<string name="summary_checkbox_list_mode">Display apps and PCs in lists instead of grids</string>
|
||||||
|
|
||||||
<string name="category_host_settings">Host Settings</string>
|
<string name="category_host_settings">Host Settings</string>
|
||||||
<string name="title_checkbox_enable_sops">Optimize game settings</string>
|
<string name="title_checkbox_enable_sops">Optimize game settings</string>
|
||||||
<string name="summary_checkbox_enable_sops">Allow GFE to modify game settings for optimal streaming</string>
|
<string name="summary_checkbox_enable_sops">Allow GFE to modify game settings for optimal streaming</string>
|
||||||
<string name="title_checkbox_host_audio">Play audio on PC</string>
|
<string name="title_checkbox_host_audio">Play audio on PC</string>
|
||||||
<string name="summary_checkbox_host_audio">Play audio from the computer and this device. Requires GFE 2.1.2+</string>
|
<string name="summary_checkbox_host_audio">Play audio from the computer and this device</string>
|
||||||
|
|
||||||
<string name="category_advanced_settings">Advanced Settings</string>
|
<string name="category_advanced_settings">Advanced Settings</string>
|
||||||
<string name="title_decoder_list">Change decoder</string>
|
<string name="title_decoder_list">Change decoder</string>
|
||||||
|
|||||||
@@ -25,13 +25,6 @@
|
|||||||
android:title="@string/title_checkbox_disable_warnings"
|
android:title="@string/title_checkbox_disable_warnings"
|
||||||
android:summary="@string/summary_checkbox_disable_warnings"
|
android:summary="@string/summary_checkbox_disable_warnings"
|
||||||
android:defaultValue="false" />
|
android:defaultValue="false" />
|
||||||
<ListPreference
|
|
||||||
android:key="list_languages"
|
|
||||||
android:title="@string/title_language_list"
|
|
||||||
android:entries="@array/language_names"
|
|
||||||
android:entryValues="@array/language_values"
|
|
||||||
android:summary="@string/summary_language_list"
|
|
||||||
android:defaultValue="default" />
|
|
||||||
</PreferenceCategory>
|
</PreferenceCategory>
|
||||||
<!--PreferenceCategory android:title="@string/category_gamepad_settings">
|
<!--PreferenceCategory android:title="@string/category_gamepad_settings">
|
||||||
<com.limelight.preferences.SeekBarPreference
|
<com.limelight.preferences.SeekBarPreference
|
||||||
@@ -53,6 +46,20 @@
|
|||||||
android:summary="@string/summary_checkbox_host_audio"
|
android:summary="@string/summary_checkbox_host_audio"
|
||||||
android:defaultValue="false" />
|
android:defaultValue="false" />
|
||||||
</PreferenceCategory>
|
</PreferenceCategory>
|
||||||
|
<PreferenceCategory android:title="@string/category_ui_settings">
|
||||||
|
<ListPreference
|
||||||
|
android:key="list_languages"
|
||||||
|
android:title="@string/title_language_list"
|
||||||
|
android:entries="@array/language_names"
|
||||||
|
android:entryValues="@array/language_values"
|
||||||
|
android:summary="@string/summary_language_list"
|
||||||
|
android:defaultValue="default" />
|
||||||
|
<CheckBoxPreference
|
||||||
|
android:key="checkbox_list_mode"
|
||||||
|
android:title="@string/title_checkbox_list_mode"
|
||||||
|
android:summary="@string/summary_checkbox_list_mode"
|
||||||
|
android:defaultValue="false" />
|
||||||
|
</PreferenceCategory>
|
||||||
<PreferenceCategory android:title="@string/category_advanced_settings">
|
<PreferenceCategory android:title="@string/category_advanced_settings">
|
||||||
<ListPreference
|
<ListPreference
|
||||||
android:key="list_decoders"
|
android:key="list_decoders"
|
||||||
|
|||||||
Reference in New Issue
Block a user