21
21
import net .sharksystem .asap .android .ASAPChunkReceivedBroadcastIntent ;
22
22
import net .sharksystem .asap .android .ASAPServiceCreationIntent ;
23
23
import net .sharksystem .asap .android .Util ;
24
+ import net .sharksystem .asap .apps .ASAPEnvironmentChangesListener ;
25
+ import net .sharksystem .asap .apps .ASAPMessageReceivedListener ;
26
+ import net .sharksystem .asap .apps .ASAPSimplePeer ;
27
+ import net .sharksystem .asap .listenermanager .ASAPEnvironmentChangesListenerManager ;
24
28
import net .sharksystem .asap .util .Helper ;
25
29
26
30
import java .io .IOException ;
30
34
import java .util .HashSet ;
31
35
import java .util .List ;
32
36
import java .util .Map ;
37
+ import java .util .Set ;
33
38
34
39
import static android .support .v4 .content .PermissionChecker .PERMISSION_DENIED ;
35
40
import static android .support .v4 .content .PermissionChecker .PERMISSION_GRANTED ;
36
41
import static net .sharksystem .asap .ASAPEngineFS .DEFAULT_ROOT_FOLDER_NAME ;
37
42
38
- public class ASAPApplication extends BroadcastReceiver {
43
+ // TODO inherit from ASAPBasicAbstractPeer
44
+ public class ASAPApplication extends BroadcastReceiver implements ASAPSimplePeer {
39
45
private static final int MY_ASK_FOR_PERMISSIONS_REQUEST = 100 ;
40
46
private static ASAPApplication singleton ;
41
47
private Collection <CharSequence > supportedFormats ;
@@ -54,7 +60,7 @@ public class ASAPApplication extends BroadcastReceiver {
54
60
private List <String > grantedPermissions = new ArrayList <>();
55
61
private List <String > deniedPermissions = new ArrayList <>();
56
62
private int activityASAPActivities = 0 ;
57
- private List <CharSequence > onlinePeerList = new ArrayList <>();
63
+ private Set <CharSequence > onlinePeerList = new HashSet <>();
58
64
59
65
/**
60
66
* Setup application using default setting
@@ -463,7 +469,12 @@ public void chunkReceived(String format, String sender, String uri, String folde
463
469
}
464
470
465
471
for (ASAPMessageReceivedListener messageListener : messageListeners ) {
466
- messageListener .asapMessagesReceived (asapMessages );
472
+ try {
473
+ messageListener .asapMessagesReceived (asapMessages );
474
+ } catch (IOException e ) {
475
+ Log .e (this .getLogStart (), "calling messageReceivedListener: "
476
+ + e .getLocalizedMessage ());
477
+ }
467
478
}
468
479
}
469
480
}
@@ -499,6 +510,7 @@ public final void removeASAPUriContentChangedListener(
499
510
* @param format
500
511
* @param listener
501
512
*/
513
+ @ Override
502
514
public final void addASAPMessageReceivedListener (CharSequence format ,
503
515
ASAPMessageReceivedListener listener ) {
504
516
Log .d (this .getLogStart (), "going to add asap message receiver for " + format );
@@ -513,6 +525,7 @@ public final void addASAPMessageReceivedListener(CharSequence format,
513
525
messageListeners .add (listener );
514
526
}
515
527
528
+ @ Override
516
529
public final void removeASAPMessageReceivedListener (CharSequence format ,
517
530
ASAPMessageReceivedListener listener ) {
518
531
Collection <ASAPMessageReceivedListener > messageListeners =
@@ -525,11 +538,11 @@ public final void removeASAPMessageReceivedListener(CharSequence format,
525
538
}
526
539
}
527
540
528
- public List <CharSequence > getOnlinePeerList () {
541
+ public Set <CharSequence > getOnlinePeerList () {
529
542
return this .onlinePeerList ;
530
543
}
531
544
532
- public void setOnlinePeersList (List <CharSequence > peerList ) {
545
+ public void setOnlinePeersList (Set <CharSequence > peerList ) {
533
546
StringBuilder sb = new StringBuilder ();
534
547
sb .append (this .getLogStart ());
535
548
sb .append ("#online peers: " );
@@ -549,6 +562,9 @@ public void setOnlinePeersList(List<CharSequence> peerList) {
549
562
}
550
563
551
564
this .onlinePeerList = peerList ;
565
+
566
+ // notify listeners
567
+ this .environmentChangesListenerManager .notifyListeners (this .onlinePeerList );
552
568
}
553
569
554
570
public void setupDrawerLayout (Activity activity ) {
@@ -560,4 +576,45 @@ private String getLogStart() {
560
576
// return "ASAPApplication(" + objectID + ")";
561
577
return "ASAPApplication" ;
562
578
}
579
+
580
+ ///////////////////////////////////////////////////////////////////////////////////////////////
581
+ // ASAPSimplePeer //
582
+ ///////////////////////////////////////////////////////////////////////////////////////////////
583
+
584
+ @ Override
585
+ public CharSequence getPeerName () {
586
+ return this .asapOwner ;
587
+ }
588
+
589
+
590
+ ///////////////////////////////////////////////////////////////////////////////////////////////
591
+ // ASAPEnvironmentChangesListener //
592
+ ///////////////////////////////////////////////////////////////////////////////////////////////
593
+
594
+ private ASAPEnvironmentChangesListenerManager environmentChangesListenerManager =
595
+ new ASAPEnvironmentChangesListenerManager ();
596
+
597
+ @ Override
598
+ public void addASAPEnvironmentChangesListener (ASAPEnvironmentChangesListener listener ) {
599
+ this .environmentChangesListenerManager .addASAPEnvironmentChangesListener (listener );
600
+ }
601
+
602
+ @ Override
603
+ public void removeASAPEnvironmentChangesListener (ASAPEnvironmentChangesListener listener ) {
604
+ this .environmentChangesListenerManager .removeASAPEnvironmentChangesListener (listener );
605
+ }
606
+
607
+ @ Override
608
+ public void sendASAPMessage (CharSequence format , CharSequence uri , byte [] message )
609
+ throws ASAPException {
610
+
611
+ Activity activity = this .getActivity ();
612
+ if (activity == null ) throw new ASAPException ("no active activity" );
613
+
614
+ if (! (activity instanceof ASAPActivity ))
615
+ throw new ASAPException ("current activity not derived from ASAPActivity" );
616
+
617
+ ASAPActivity asapActivity = (ASAPActivity )activity ;
618
+ asapActivity .sendASAPMessage (format , uri , message , true );
619
+ }
563
620
}
0 commit comments