Skip to content

Commit c8a4dc9

Browse files
author
Chris Bellew
committed
Major code reorganization.
1 parent 1cbf37e commit c8a4dc9

File tree

7 files changed

+654
-750
lines changed

7 files changed

+654
-750
lines changed

src/com/atomjack/vcfp/MainActivity.java

Lines changed: 114 additions & 131 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.atomjack.vcfp;
22

3-
import java.util.ArrayList;
4-
import java.util.List;
3+
import java.util.HashMap;
4+
import java.util.Map;
55
import java.util.concurrent.ConcurrentHashMap;
66

77
import org.simpleframework.xml.Serializer;
@@ -33,9 +33,9 @@
3333
import com.atomjack.vcfp.model.MediaContainer;
3434
import com.atomjack.vcfp.model.PlexClient;
3535
import com.atomjack.vcfp.model.PlexServer;
36+
import com.atomjack.vcfp.net.PlexHttpClient;
37+
import com.atomjack.vcfp.net.PlexHttpMediaContainerHandler;
3638
import com.google.gson.Gson;
37-
import com.loopj.android.http.AsyncHttpClient;
38-
import com.loopj.android.http.AsyncHttpResponseHandler;
3939
import com.bugsense.trace.BugSenseHandler;
4040

4141
public class MainActivity extends Activity {
@@ -54,8 +54,10 @@ public class MainActivity extends Activity {
5454

5555
private PlexServer server = null;
5656
private PlexClient client = null;
57-
58-
private Serializer serial = new Persister();
57+
58+
private Map<String, PlexClient> m_clients = new HashMap<String, PlexClient>();
59+
60+
private static Serializer serial = new Persister();
5961

6062
private SharedPreferences mPrefs;
6163
private SharedPreferences.Editor mPrefsEditor;
@@ -67,7 +69,7 @@ public class MainActivity extends Activity {
6769
protected void onCreate(Bundle savedInstanceState) {
6870
super.onCreate(savedInstanceState);
6971

70-
BugSenseHandler.initAndStartSession(MainActivity.this, BUGSENSE_APIKEY);
72+
// BugSenseHandler.initAndStartSession(MainActivity.this, BUGSENSE_APIKEY);
7173

7274

7375
mPrefs = getSharedPreferences(PREFS, MODE_PRIVATE);
@@ -256,55 +258,46 @@ private void scanServersForClients() {
256258
serversScanned = 0;
257259
for(PlexServer thisServer : servers.values()) {
258260
Logger.d("ScanServersForClients server: %s", thisServer.getName());
259-
try {
260-
AsyncHttpClient httpClient = new AsyncHttpClient();
261-
httpClient.get(thisServer.getClientsURL(), new AsyncHttpResponseHandler() {
262-
@Override
263-
public void onSuccess(String response) {
264-
serversScanned++;
265-
MediaContainer clientMC = new MediaContainer();
266-
267-
try {
268-
clientMC = serial.read(MediaContainer.class, response);
269-
} catch (NotFoundException e) {
270-
e.printStackTrace();
271-
} catch (Exception e) {
272-
e.printStackTrace();
273-
}
274-
// Exclude non-Plex Home Theater clients (pre 1.0.7)
275-
List<PlexClient> clients = new ArrayList<PlexClient>();
276-
for(int i=0;i<clientMC.clients.size();i++) {
277-
float version = clientMC.clients.get(i).getNumericVersion();
278-
Logger.d("Version: %f", version);
279-
if(version >= 1.07 || !clientMC.clients.get(i).getProduct().equals("Plex Home Theater")) {
280-
clients.add(clientMC.clients.get(i));
281-
}
282-
}
283-
284-
searchDialog.dismiss();
285-
if(clients.size() == 0) {
286-
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
287-
builder.setTitle("No Plex Clients Found");
288-
builder.setCancelable(false)
289-
.setNeutralButton(R.string.ok, new DialogInterface.OnClickListener() {
290-
public void onClick(DialogInterface dialog, int id) {
291-
dialog.cancel();
292-
}
293-
});
294-
AlertDialog d = builder.create();
295-
d.show();
296-
} else {
297-
Logger.d("Clients: " + clients.size());
298-
if(serversScanned == VoiceControlForPlexApplication.getPlexMediaServers().size()) {
299-
showPlexClients(clients);
300-
}
301-
}
302-
}
303-
});
304-
305-
} catch (Exception e) {
306-
Logger.e("Exception getting clients: " + e.toString());
307-
}
261+
PlexHttpClient.get(thisServer.getClientsURL(), null, new PlexHttpMediaContainerHandler()
262+
{
263+
@Override
264+
public void onSuccess(MediaContainer clientMC)
265+
{
266+
serversScanned++;
267+
// Exclude non-Plex Home Theater clients (pre 1.0.7)
268+
// List<PlexClient> clients = new ArrayList<PlexClient>();
269+
Logger.d("clientMC size: %d", clientMC.clients.size());
270+
for(int i=0;i<clientMC.clients.size();i++) {
271+
float version = clientMC.clients.get(i).getNumericVersion();
272+
Logger.d("Version: %f", version);
273+
if((version >= 1.07 || !clientMC.clients.get(i).getProduct().equals("Plex Home Theater")) && !m_clients.containsKey(clientMC.clients.get(i).getName())) {
274+
// m_clients.add(clientMC.clients.get(i));
275+
m_clients.put(clientMC.clients.get(i).getName(), clientMC.clients.get(i));
276+
}
277+
}
278+
279+
if(serversScanned == VoiceControlForPlexApplication.getPlexMediaServers().size()) {
280+
searchDialog.dismiss();
281+
if(m_clients.size() == 0) {
282+
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
283+
builder.setTitle("No Plex Clients Found");
284+
builder.setCancelable(false)
285+
.setNeutralButton(R.string.ok, new DialogInterface.OnClickListener()
286+
{
287+
public void onClick(DialogInterface dialog, int id)
288+
{
289+
dialog.cancel();
290+
}
291+
});
292+
AlertDialog d = builder.create();
293+
d.show();
294+
} else {
295+
Logger.d("Clients: " + m_clients.size());
296+
showPlexClients(m_clients);
297+
}
298+
}
299+
}
300+
});
308301
}
309302
}
310303

@@ -320,27 +313,25 @@ private void showPlexServers() {
320313

321314
final ListView serverListView = (ListView)serverSelectDialog.findViewById(R.id.serverListView);
322315
ConcurrentHashMap<String, PlexServer> servers = new ConcurrentHashMap<String, PlexServer>(VoiceControlForPlexApplication.getPlexMediaServers());
323-
servers.put("Scan All", new PlexServer());
324316
final PlexListAdapter adapter = new PlexListAdapter(this, PlexListAdapter.TYPE_SERVER);
325317
adapter.setServers(servers);
326318
serverListView.setAdapter(adapter);
327319
serverListView.setOnItemClickListener(new ListView.OnItemClickListener() {
328320

329321
@Override
330-
public void onItemClick(AdapterView<?> parentAdapter, View view, int position,
331-
long id) {
322+
public void onItemClick(AdapterView<?> parentAdapter, View view, int position, long id) {
332323
Logger.d("Clicked position %d", position);
333324
PlexServer s = (PlexServer)parentAdapter.getItemAtPosition(position);
334325
serverSelectDialog.dismiss();
335326
setServer(s);
336327
}
337-
328+
338329
});
339330
}
340331

341332
private void setServer(PlexServer server) {
342333
Logger.d("Setting Server %s", server.getName());
343-
if(server.getAddress().equals("")) {
334+
if(server.getName().equals("")) {
344335
this.server = null;
345336
saveSettings();
346337
initMainWithServer();
@@ -349,28 +340,15 @@ private void setServer(PlexServer server) {
349340
this.server = server;
350341

351342
if(this.client == null) {
352-
try {
353-
AsyncHttpClient httpClient = new AsyncHttpClient();
354-
httpClient.get(server.getBaseURL(), new AsyncHttpResponseHandler() {
355-
@Override
356-
public void onSuccess(String response) {
357-
Logger.d("HTTP REQUEST: %s", response);
358-
MediaContainer mc = new MediaContainer();
359-
try {
360-
mc = serial.read(MediaContainer.class, response);
361-
} catch (NotFoundException e) {
362-
e.printStackTrace();
363-
} catch (Exception e) {
364-
e.printStackTrace();
365-
}
366-
Logger.d("Machine id: " + mc.getMachineIdentifier());
367-
getClients(mc);
368-
}
369-
});
370-
371-
} catch (Exception e) {
372-
Logger.e("Exception getting clients: " + e.toString());
373-
}
343+
PlexHttpClient.get(server.getBaseURL(), null, new PlexHttpMediaContainerHandler()
344+
{
345+
@Override
346+
public void onSuccess(MediaContainer mediaContainer)
347+
{
348+
Logger.d("Machine id: " + mediaContainer.getMachineIdentifier());
349+
getClients(mediaContainer);
350+
}
351+
});
374352
} else {
375353
this.server = server;
376354
this.saveSettings();
@@ -401,6 +379,19 @@ private void scanForClients() {
401379
startService(mServiceIntent);
402380
}
403381

382+
private static MediaContainer getMediaContainer(String response) {
383+
MediaContainer mediaContainer = new MediaContainer();
384+
385+
try {
386+
mediaContainer = serial.read(MediaContainer.class, response);
387+
} catch (NotFoundException e) {
388+
e.printStackTrace();
389+
} catch (Exception e) {
390+
e.printStackTrace();
391+
}
392+
return mediaContainer;
393+
}
394+
404395
private void getClients(MediaContainer mc) {
405396
if(mc != null) {
406397
this.server.setMachineIdentifier(mc.getMachineIdentifier());
@@ -414,57 +405,49 @@ private void getClients(MediaContainer mc) {
414405
searchDialog.setTitle("Searching for Plex Clients");
415406

416407
searchDialog.show();
417-
try {
418-
AsyncHttpClient httpClient = new AsyncHttpClient();
419-
httpClient.get(server.getClientsURL(), new AsyncHttpResponseHandler() {
420-
@Override
421-
public void onSuccess(String response) {
422-
// Logger.d("HTTP REQUEST: %s", response);
423-
MediaContainer clientMC = new MediaContainer();
424-
425-
try {
426-
clientMC = serial.read(MediaContainer.class, response);
427-
} catch (NotFoundException e) {
428-
e.printStackTrace();
429-
} catch (Exception e) {
430-
e.printStackTrace();
431-
}
432-
// Exclude non-Plex Home Theater clients (pre 1.0.7)
433-
List<PlexClient> clients = new ArrayList<PlexClient>();
434-
for(int i=0;i<clientMC.clients.size();i++) {
435-
float version = clientMC.clients.get(i).getNumericVersion();
436-
Logger.d("Version: %f", version);
437-
if(version >= 1.07) {
438-
clients.add(clientMC.clients.get(i));
439-
}
440-
}
441-
442-
searchDialog.dismiss();
443-
if(clients.size() == 0) {
444-
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
445-
builder.setTitle("No Plex Clients Found");
446-
builder.setCancelable(false)
447-
.setNeutralButton(R.string.ok, new DialogInterface.OnClickListener() {
448-
public void onClick(DialogInterface dialog, int id) {
449-
dialog.cancel();
450-
}
451-
});
452-
AlertDialog d = builder.create();
453-
d.show();
454-
} else {
455-
Logger.d("Clients: " + clients.size());
456-
457-
showPlexClients(clients);
458-
}
459-
}
460-
});
408+
PlexHttpClient.get(server.getClientsURL(), null, new PlexHttpMediaContainerHandler()
409+
{
410+
@Override
411+
public void onSuccess(MediaContainer clientMC)
412+
{
413+
// Exclude non-Plex Home Theater clients (pre 1.0.7)
414+
Map<String, PlexClient> clients = new HashMap<String, PlexClient>();
415+
for (int i = 0; i < clientMC.clients.size(); i++)
416+
{
417+
float version = clientMC.clients.get(i).getNumericVersion();
418+
Logger.d("Version: %f", version);
419+
if (version >= 1.07)
420+
{
421+
clients.put(clientMC.clients.get(i).getName(), clientMC.clients.get(i));
422+
}
423+
}
461424

462-
} catch (Exception e) {
463-
Logger.e("Exception getting clients: " + e.toString());
464-
}
425+
searchDialog.dismiss();
426+
if (clients.size() == 0)
427+
{
428+
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
429+
builder.setTitle("No Plex Clients Found");
430+
builder.setCancelable(false)
431+
.setNeutralButton(R.string.ok, new DialogInterface.OnClickListener()
432+
{
433+
public void onClick(DialogInterface dialog, int id)
434+
{
435+
dialog.cancel();
436+
}
437+
});
438+
AlertDialog d = builder.create();
439+
d.show();
440+
} else
441+
{
442+
Logger.d("Clients: " + clients.size());
443+
444+
showPlexClients(clients);
445+
}
446+
}
447+
});
465448
}
466449

467-
private void showPlexClients(List<PlexClient> clients) {
450+
private void showPlexClients(Map<String, PlexClient> clients) {
468451
if(serverSelectDialog == null) {
469452
serverSelectDialog = new Dialog(this);
470453
}

0 commit comments

Comments
 (0)