From 766898fdf90aa90bca1b5a95ecf960c2b263f5b3 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Sun, 25 Jan 2015 20:23:35 -0500 Subject: [PATCH] Add list support back for users that don't like the grid --- app/src/main/java/com/limelight/AppView.java | 76 ++++++++++++------- app/src/main/java/com/limelight/Game.java | 13 ++-- app/src/main/java/com/limelight/PcView.java | 73 +++++++++++------- .../com/limelight/grid/AppGridAdapter.java | 5 +- .../limelight/grid/GenericGridAdapter.java | 18 +++-- .../com/limelight/grid/PcGridAdapter.java | 17 ++++- .../preferences/AddComputerManually.java | 7 +- .../preferences/PreferenceConfiguration.java | 6 +- .../limelight/preferences/StreamSettings.java | 19 ++--- .../com/limelight/ui/AdapterFragment.java | 35 +++++++++ .../ui/AdapterFragmentCallbacks.java | 8 ++ .../res/drawable/list_view_unselected.xml | 7 ++ .../main/res/layout-land/activity_pc_view.xml | 6 +- .../main/res/layout-port/activity_pc_view.xml | 6 +- app/src/main/res/layout/activity_app_view.xml | 10 +-- app/src/main/res/layout/app_grid_view.xml | 13 ++++ app/src/main/res/layout/list_view.xml | 17 +++++ app/src/main/res/layout/pc_grid_view.xml | 12 +++ app/src/main/res/layout/simple_row.xml | 15 ++++ app/src/main/res/values-it/strings.xml | 2 +- app/src/main/res/values/strings.xml | 10 ++- app/src/main/res/xml/preferences.xml | 21 +++-- 22 files changed, 284 insertions(+), 112 deletions(-) create mode 100644 app/src/main/java/com/limelight/ui/AdapterFragment.java create mode 100644 app/src/main/java/com/limelight/ui/AdapterFragmentCallbacks.java create mode 100644 app/src/main/res/drawable/list_view_unselected.xml create mode 100644 app/src/main/res/layout/app_grid_view.xml create mode 100644 app/src/main/res/layout/list_view.xml create mode 100644 app/src/main/res/layout/pc_grid_view.xml create mode 100644 app/src/main/res/layout/simple_row.xml diff --git a/app/src/main/java/com/limelight/AppView.java b/app/src/main/java/com/limelight/AppView.java index d13571a6..d80c7d35 100644 --- a/app/src/main/java/com/limelight/AppView.java +++ b/app/src/main/java/com/limelight/AppView.java @@ -5,6 +5,7 @@ import java.io.IOException; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.List; +import java.util.Locale; 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.NvHTTP; import com.limelight.preferences.PreferenceConfiguration; +import com.limelight.ui.AdapterFragment; +import com.limelight.ui.AdapterFragmentCallbacks; import com.limelight.utils.Dialog; import com.limelight.utils.SpinnerDialog; import com.limelight.utils.UiHelper; import android.app.Activity; +import android.app.FragmentManager; import android.content.Intent; +import android.content.SharedPreferences; +import android.content.res.Configuration; import android.os.Bundle; +import android.preference.PreferenceManager; import android.view.ContextMenu; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ContextMenu.ContextMenuInfo; +import android.widget.AbsListView; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.GridView; +import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; import android.widget.AdapterView.AdapterContextMenuInfo; -public class AppView extends Activity { +public class AppView extends Activity implements AdapterFragmentCallbacks { private AppGridAdapter appGridAdapter; private InetAddress ipAddress; private String uniqueId; @@ -53,9 +62,7 @@ public class AppView extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); - String locale = prefs.getString(PreferenceConfiguration.LANGUAGE_PREF_STRING, - PreferenceConfiguration.DEFAULT_LANGUAGE); + String locale = PreferenceConfiguration.readPreferences(this).language; if (!locale.equals(PreferenceConfiguration.DEFAULT_LANGUAGE)) { Configuration config = new Configuration(getResources().getConfiguration()); config.locale = new Locale(locale); @@ -86,35 +93,19 @@ public class AppView extends Activity { finish(); return; } - - // Setup the list view - GridView appGrid = (GridView) findViewById(R.id.appGridView); + try { - appGridAdapter = new AppGridAdapter(this, ipAddress, uniqueId); + appGridAdapter = new AppGridAdapter(this, + PreferenceConfiguration.readPreferences(this).listMode, + ipAddress, uniqueId); } catch (Exception e) { e.printStackTrace(); finish(); 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 - if (getRunningAppId() != -1) { - openContextMenu(arg1); - } else { - doStart(app.app); - } - } - }); - registerForContextMenu(appGrid); + getFragmentManager().beginTransaction() + .add(R.id.appFragmentContainer, new AdapterFragment()).commit(); } @Override @@ -293,8 +284,37 @@ public class AppView extends Activity { } }).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 AppObject(NvApp app) { diff --git a/app/src/main/java/com/limelight/Game.java b/app/src/main/java/com/limelight/Game.java index 3d9c3f5e..00d049a9 100644 --- a/app/src/main/java/com/limelight/Game.java +++ b/app/src/main/java/com/limelight/Game.java @@ -22,12 +22,15 @@ import com.limelight.utils.SpinnerDialog; import android.annotation.SuppressLint; import android.app.Activity; import android.content.Context; +import android.content.SharedPreferences; +import android.content.res.Configuration; import android.graphics.Point; import android.media.AudioManager; import android.net.ConnectivityManager; import android.net.wifi.WifiManager; import android.os.Bundle; import android.os.Handler; +import android.preference.PreferenceManager; import android.view.Display; import android.view.InputDevice; import android.view.KeyEvent; @@ -43,6 +46,8 @@ import android.view.Window; import android.view.WindowManager; import android.widget.Toast; +import java.util.Locale; + public class Game extends Activity implements SurfaceHolder.Callback, OnGenericMotionListener, OnTouchListener, NvConnectionListener, EvdevListener, @@ -86,11 +91,9 @@ public class Game extends Activity implements SurfaceHolder.Callback, @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); - String locale = prefs.getString(PreferenceConfiguration.LANGUAGE_PREF_STRING, - PreferenceConfiguration.DEFAULT_LANGUAGE); - if (!locale.equals(PreferenceConfiguration.DEFAULT_LANGUAGE)) { + + String locale = PreferenceConfiguration.readPreferences(this).language; + if (!locale.equals(PreferenceConfiguration.DEFAULT_LANGUAGE)) { Configuration config = new Configuration(getResources().getConfiguration()); config.locale = new Locale(locale); getResources().updateConfiguration(config, getResources().getDisplayMetrics()); diff --git a/app/src/main/java/com/limelight/PcView.java b/app/src/main/java/com/limelight/PcView.java index f9abb7cf..25041970 100644 --- a/app/src/main/java/com/limelight/PcView.java +++ b/app/src/main/java/com/limelight/PcView.java @@ -19,6 +19,8 @@ import com.limelight.nvstream.wol.WakeOnLanSender; import com.limelight.preferences.AddComputerManually; import com.limelight.preferences.PreferenceConfiguration; import com.limelight.preferences.StreamSettings; +import com.limelight.ui.AdapterFragment; +import com.limelight.ui.AdapterFragmentCallbacks; import com.limelight.utils.Dialog; import com.limelight.utils.UiHelper; @@ -38,15 +40,17 @@ import android.view.MenuItem; import android.view.View; import android.view.ContextMenu.ContextMenuInfo; import android.view.View.OnClickListener; +import android.widget.AbsListView; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.GridView; import android.widget.ImageButton; +import android.widget.ListView; import android.widget.RelativeLayout; import android.widget.Toast; import android.widget.AdapterView.AdapterContextMenuInfo; -public class PcView extends Activity { +public class PcView extends Activity implements AdapterFragmentCallbacks { private RelativeLayout noPcFoundLayout; private PcGridAdapter pcGridAdapter; private ComputerManagerService.ComputerManagerBinder managerBinder; @@ -105,27 +109,6 @@ public class PcView extends Activity { ImageButton settingsButton = (ImageButton) findViewById(R.id.settingsButton); 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() { @Override 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); if (pcGridAdapter.getCount() == 0) { noPcFoundLayout.setVisibility(View.VISIBLE); @@ -153,10 +139,8 @@ public class PcView extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); - String locale = prefs.getString(PreferenceConfiguration.LANGUAGE_PREF_STRING, - PreferenceConfiguration.DEFAULT_LANGUAGE); + + String locale = PreferenceConfiguration.readPreferences(this).language; if (!locale.equals(PreferenceConfiguration.DEFAULT_LANGUAGE)) { Configuration config = new Configuration(getResources().getConfiguration()); config.locale = new Locale(locale); @@ -167,7 +151,8 @@ public class PcView extends Activity { bindService(new Intent(PcView.this, ComputerManagerService.class), serviceConnection, Service.BIND_AUTO_CREATE); - pcGridAdapter = new PcGridAdapter(this); + pcGridAdapter = new PcGridAdapter(this, + PreferenceConfiguration.readPreferences(this).listMode); initializeViews(); } @@ -573,8 +558,38 @@ public class PcView extends Activity { // Notify the view that the data has changed 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 ComputerObject(ComputerDetails details) { diff --git a/app/src/main/java/com/limelight/grid/AppGridAdapter.java b/app/src/main/java/com/limelight/grid/AppGridAdapter.java index c2d1624b..ac17038b 100644 --- a/app/src/main/java/com/limelight/grid/AppGridAdapter.java +++ b/app/src/main/java/com/limelight/grid/AppGridAdapter.java @@ -32,14 +32,15 @@ import java.security.cert.X509Certificate; public class AppGridAdapter extends GenericGridAdapter { + private boolean listMode; private InetAddress address; private String uniqueId; private LimelightCryptoProvider cryptoProvider; private SSLContext sslContext; private final HashMap pendingRequests = new HashMap(); - public AppGridAdapter(Context context, InetAddress address, String uniqueId) throws NoSuchAlgorithmException, KeyManagementException { - super(context, R.layout.app_grid_item, R.drawable.image_loading); + public AppGridAdapter(Context context, boolean listMode, InetAddress address, String uniqueId) throws NoSuchAlgorithmException, KeyManagementException { + super(context, listMode ? R.layout.simple_row : R.layout.app_grid_item, R.drawable.image_loading); this.address = address; this.uniqueId = uniqueId; diff --git a/app/src/main/java/com/limelight/grid/GenericGridAdapter.java b/app/src/main/java/com/limelight/grid/GenericGridAdapter.java index d2d68a14..f0a17618 100644 --- a/app/src/main/java/com/limelight/grid/GenericGridAdapter.java +++ b/app/src/main/java/com/limelight/grid/GenericGridAdapter.java @@ -60,17 +60,21 @@ public abstract class GenericGridAdapter extends BaseAdapter { ImageView overlayView = (ImageView) convertView.findViewById(R.id.grid_overlay); TextView txtView = (TextView) convertView.findViewById(R.id.grid_text); - if (!populateImageView(imgView, itemList.get(i))) { - imgView.setImageResource(defaultImageRes); + if (imgView != null) { + if (!populateImageView(imgView, itemList.get(i))) { + imgView.setImageResource(defaultImageRes); + } } if (!populateTextView(txtView, itemList.get(i))) { txtView.setText(itemList.get(i).toString()); } - if (!populateOverlayView(overlayView, itemList.get(i))) { - overlayView.setVisibility(View.INVISIBLE); - } - else { - overlayView.setVisibility(View.VISIBLE); + if (overlayView != null) { + if (!populateOverlayView(overlayView, itemList.get(i))) { + overlayView.setVisibility(View.INVISIBLE); + } + else { + overlayView.setVisibility(View.VISIBLE); + } } return convertView; diff --git a/app/src/main/java/com/limelight/grid/PcGridAdapter.java b/app/src/main/java/com/limelight/grid/PcGridAdapter.java index a191381c..8e370de3 100644 --- a/app/src/main/java/com/limelight/grid/PcGridAdapter.java +++ b/app/src/main/java/com/limelight/grid/PcGridAdapter.java @@ -8,14 +8,27 @@ import com.limelight.PcView; import com.limelight.R; import com.limelight.nvstream.http.ComputerDetails; +import java.util.Collections; +import java.util.Comparator; + public class PcGridAdapter extends GenericGridAdapter { - public PcGridAdapter(Context context) { - super(context, R.layout.pc_grid_item, R.drawable.computer); + public PcGridAdapter(Context context, boolean listMode) { + super(context, listMode ? R.layout.simple_row : R.layout.pc_grid_item, R.drawable.computer); } public void addComputer(PcView.ComputerObject computer) { itemList.add(computer); + sortList(); + } + + private void sortList() { + Collections.sort(itemList, new Comparator() { + @Override + public int compare(PcView.ComputerObject lhs, PcView.ComputerObject rhs) { + return lhs.details.name.compareTo(rhs.details.name); + } + }); } public boolean removeComputer(PcView.ComputerObject computer) { diff --git a/app/src/main/java/com/limelight/preferences/AddComputerManually.java b/app/src/main/java/com/limelight/preferences/AddComputerManually.java index 825378ea..c2eaa19a 100644 --- a/app/src/main/java/com/limelight/preferences/AddComputerManually.java +++ b/app/src/main/java/com/limelight/preferences/AddComputerManually.java @@ -2,6 +2,7 @@ package com.limelight.preferences; import java.net.InetAddress; import java.net.UnknownHostException; +import java.util.Locale; import java.util.concurrent.LinkedBlockingQueue; import com.limelight.computers.ComputerManagerService; @@ -15,8 +16,10 @@ import android.app.Service; import android.content.ComponentName; import android.content.Intent; import android.content.ServiceConnection; +import android.content.res.Configuration; import android.os.Bundle; import android.os.IBinder; +import android.preference.Preference; import android.view.KeyEvent; import android.view.inputmethod.EditorInfo; import android.widget.TextView; @@ -132,9 +135,7 @@ public class AddComputerManually extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); - String locale = prefs.getString(PreferenceConfiguration.LANGUAGE_PREF_STRING, - PreferenceConfiguration.DEFAULT_LANGUAGE); + String locale = PreferenceConfiguration.readPreferences(this).language; if (!locale.equals(PreferenceConfiguration.DEFAULT_LANGUAGE)) { Configuration config = new Configuration(getResources().getConfiguration()); config.locale = new Locale(locale); diff --git a/app/src/main/java/com/limelight/preferences/PreferenceConfiguration.java b/app/src/main/java/com/limelight/preferences/PreferenceConfiguration.java index 9c36b628..0d850a0e 100644 --- a/app/src/main/java/com/limelight/preferences/PreferenceConfiguration.java +++ b/app/src/main/java/com/limelight/preferences/PreferenceConfiguration.java @@ -13,7 +13,8 @@ public class PreferenceConfiguration { 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 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_60 = 10; @@ -29,6 +30,7 @@ public class PreferenceConfiguration { private static final boolean DEFAULT_HOST_AUDIO = false; private static final int DEFAULT_DEADZONE = 15; 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 AUTOSELECT_DECODER = 0; @@ -40,6 +42,7 @@ public class PreferenceConfiguration { public int deadzonePercentage; public boolean stretchVideo, enableSops, playHostAudio, disableWarnings; public String language; + public boolean listMode; public static int getDefaultBitrate(String resFpsString) { if (resFpsString.equals("720p30")) { @@ -145,6 +148,7 @@ public class PreferenceConfiguration { config.enableSops = prefs.getBoolean(SOPS_PREF_STRING, DEFAULT_SOPS); config.stretchVideo = prefs.getBoolean(STRETCH_PREF_STRING, DEFAULT_STRETCH); config.playHostAudio = prefs.getBoolean(HOST_AUDIO_PREF_STRING, DEFAULT_HOST_AUDIO); + config.listMode = prefs.getBoolean(LIST_MODE_PREF_STRING, DEFAULT_LIST_MODE); return config; } diff --git a/app/src/main/java/com/limelight/preferences/StreamSettings.java b/app/src/main/java/com/limelight/preferences/StreamSettings.java index 0199a536..ce09d34b 100644 --- a/app/src/main/java/com/limelight/preferences/StreamSettings.java +++ b/app/src/main/java/com/limelight/preferences/StreamSettings.java @@ -1,6 +1,7 @@ package com.limelight.preferences; import android.content.SharedPreferences; +import android.content.res.Configuration; import android.os.Bundle; import android.app.Activity; import android.preference.Preference; @@ -10,19 +11,19 @@ import android.preference.PreferenceManager; import com.limelight.R; import com.limelight.utils.UiHelper; +import java.util.Locale; + public class StreamSettings extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); - String locale = prefs.getString(PreferenceConfigration.LANGUAGE_PREF_STRING, - PreferenceConfiguration.DEFAULT_LANGUAGE); - if (!locale.equals(PreferenceConfiguration.DEFAULT_LANGUAGE)) { - Configuration config = new Configuration(getResources().getConfiguration()); - config.locale = new Locale(locale); - getResources().updateConfiguration(config, getResources().getDisplayMetrics()); - } + + String locale = PreferenceConfiguration.readPreferences(this).language; + if (!locale.equals(PreferenceConfiguration.DEFAULT_LANGUAGE)) { + Configuration config = new Configuration(getResources().getConfiguration()); + config.locale = new Locale(locale); + getResources().updateConfiguration(config, getResources().getDisplayMetrics()); + } setContentView(R.layout.activity_stream_settings); getFragmentManager().beginTransaction().replace( diff --git a/app/src/main/java/com/limelight/ui/AdapterFragment.java b/app/src/main/java/com/limelight/ui/AdapterFragment.java new file mode 100644 index 00000000..8076fa06 --- /dev/null +++ b/app/src/main/java/com/limelight/ui/AdapterFragment.java @@ -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)); + } +} diff --git a/app/src/main/java/com/limelight/ui/AdapterFragmentCallbacks.java b/app/src/main/java/com/limelight/ui/AdapterFragmentCallbacks.java new file mode 100644 index 00000000..4ebade79 --- /dev/null +++ b/app/src/main/java/com/limelight/ui/AdapterFragmentCallbacks.java @@ -0,0 +1,8 @@ +package com.limelight.ui; + +import android.widget.AbsListView; + +public interface AdapterFragmentCallbacks { + public int getAdapterFragmentLayoutId(); + public void receiveAbsListView(AbsListView gridView); +} diff --git a/app/src/main/res/drawable/list_view_unselected.xml b/app/src/main/res/drawable/list_view_unselected.xml new file mode 100644 index 00000000..b691f3a2 --- /dev/null +++ b/app/src/main/res/drawable/list_view_unselected.xml @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-land/activity_pc_view.xml b/app/src/main/res/layout-land/activity_pc_view.xml index 91169932..523341b9 100644 --- a/app/src/main/res/layout-land/activity_pc_view.xml +++ b/app/src/main/res/layout-land/activity_pc_view.xml @@ -33,12 +33,10 @@ android:text="@string/searching_pc"/> - - - - + android:layout_below="@+id/appListText"/> + + + \ No newline at end of file diff --git a/app/src/main/res/layout/list_view.xml b/app/src/main/res/layout/list_view.xml new file mode 100644 index 00000000..c41508ee --- /dev/null +++ b/app/src/main/res/layout/list_view.xml @@ -0,0 +1,17 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/pc_grid_view.xml b/app/src/main/res/layout/pc_grid_view.xml new file mode 100644 index 00000000..98a0c9cd --- /dev/null +++ b/app/src/main/res/layout/pc_grid_view.xml @@ -0,0 +1,12 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/simple_row.xml b/app/src/main/res/layout/simple_row.xml new file mode 100644 index 00000000..92ba894d --- /dev/null +++ b/app/src/main/res/layout/simple_row.xml @@ -0,0 +1,15 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 7c39b917..0611dc56 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -100,7 +100,7 @@ Ottimizza le impostazioni dei giochi Permetti a GFE di modificare le impostazioni dei giochi per uno streaming ottimale Riproduci audio sul PC - Riproduci l\'audio sul computer e su questo dispositivo. Richiede GFE 2.1.2+ + Riproduci l\'audio sul computer e su questo dispositivo Impostazioni Avanzate Cambia decoder diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 9ad82bd1..b9a58ee2 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -89,18 +89,22 @@ Stretch video to full-screen Disable warning messages Disable on-screen connection warning messages while streaming - Language - Language to use for Limelight Gamepad Settings Adjust analog stick deadzone % + UI Settings + Language + Language to use for Limelight + Use lists instead of grids + Display apps and PCs in lists instead of grids + Host Settings Optimize game settings Allow GFE to modify game settings for optimal streaming Play audio on PC - Play audio from the computer and this device. Requires GFE 2.1.2+ + Play audio from the computer and this device Advanced Settings Change decoder diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index fcdbfac9..44f93e74 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -25,13 +25,6 @@ android:title="@string/title_checkbox_disable_warnings" android:summary="@string/summary_checkbox_disable_warnings" android:defaultValue="false" /> -