77import android .os .StrictMode ;
88import android .support .design .widget .FloatingActionButton ;
99import android .support .design .widget .Snackbar ;
10+ import android .support .v4 .content .FileProvider ;
1011import android .support .v7 .app .AppCompatActivity ;
1112import android .support .v7 .widget .LinearLayoutManager ;
1213import android .support .v7 .widget .RecyclerView ;
1314import android .support .v7 .widget .Toolbar ;
1415import android .support .v7 .widget .helper .ItemTouchHelper ;
16+ import android .text .TextUtils ;
1517import android .view .MenuItem ;
1618import android .view .View ;
1719
20+ import com .stfalcon .frescoimageviewer .ImageViewer ;
21+
1822import org .havenapp .main .R ;
1923import org .havenapp .main .database .HavenEventDB ;
2024import org .havenapp .main .model .Event ;
2125import org .havenapp .main .model .EventTrigger ;
26+ import org .havenapp .main .resources .IResourceManager ;
27+ import org .havenapp .main .resources .ResourceManager ;
2228
2329import java .io .File ;
2430import java .util .ArrayList ;
31+ import java .util .List ;
2532
26- public class EventActivity extends AppCompatActivity {
27-
33+ public class EventActivity extends AppCompatActivity implements EventTriggerAdapter .EventTriggerClickListener {
2834
35+ private IResourceManager resourceManager ;
2936 private RecyclerView mRecyclerView ;
3037 private Event mEvent ;
38+ private List <EventTrigger > eventTriggerList = new ArrayList <>();
3139 private Handler mHandler = new Handler ();
3240 private EventTriggerAdapter mAdapter ;
3341
42+ private ArrayList <Uri > eventTriggerImagePaths ;
43+ private final static String AUTHORITY = "org.havenapp.main.fileprovider" ;
44+
3445 @ Override
3546 protected void onCreate (Bundle savedInstanceState ) {
3647
@@ -42,16 +53,22 @@ protected void onCreate(Bundle savedInstanceState) {
4253
4354 StrictMode .setVmPolicy (StrictMode .VmPolicy .LAX );
4455
56+ resourceManager = new ResourceManager (this );
57+
4558 long eventId = getIntent ().getLongExtra ("eventid" ,-1 );
4659
4760 if (eventId != -1 ) {
4861
4962 mEvent = HavenEventDB .getDatabase (this ).getEventDAO ().findById (eventId );
63+ eventTriggerList = mEvent .getEventTriggers ();
5064 mRecyclerView = findViewById (R .id .event_trigger_list );
5165
5266 setTitle (mEvent .getMStartTime ().toLocaleString ());
5367
54- mAdapter = new EventTriggerAdapter (this , mEvent .getEventTriggers ());
68+ mAdapter = new EventTriggerAdapter (this , eventTriggerList ,
69+ resourceManager , this );
70+
71+ setEventTriggerImagePaths (eventTriggerList );
5572
5673 LinearLayoutManager llm = new LinearLayoutManager (this );
5774 mRecyclerView .setLayoutManager (llm );
@@ -79,7 +96,7 @@ public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
7996 //Remove swiped item from list and notify the RecyclerView
8097
8198 final int position = viewHolder .getAdapterPosition ();
82- final EventTrigger eventTrigger = mEvent . getEventTriggers ()
99+ final EventTrigger eventTrigger = eventTriggerList
83100 .get (viewHolder .getAdapterPosition ());
84101
85102 deleteEventTrigger (eventTrigger , position );
@@ -128,7 +145,7 @@ public void run ()
128145
129146 mHandler .postDelayed (runnableDelete ,3000 );
130147
131- mEvent . getEventTriggers () .remove (position );
148+ eventTriggerList .remove (position );
132149 mAdapter .notifyItemRemoved (position );
133150
134151 HavenEventDB .getDatabase (EventActivity .this )
@@ -142,7 +159,7 @@ public void onClick(View v) {
142159 long eventTriggerId = HavenEventDB .getDatabase (EventActivity .this )
143160 .getEventTriggerDAO ().insert (eventTrigger );
144161 eventTrigger .setId (eventTriggerId );
145- mEvent . getEventTriggers () .add (position , eventTrigger );
162+ eventTriggerList .add (position , eventTrigger );
146163 mAdapter .notifyItemInserted (position );
147164 }
148165 })
@@ -162,7 +179,7 @@ private void shareEvent ()
162179 //has to be an ArrayList
163180 ArrayList <Uri > uris = new ArrayList <>();
164181 //convert from paths to Android friendly Parcelable Uri's
165- for (EventTrigger trigger : mEvent . getEventTriggers () )
182+ for (EventTrigger trigger : eventTriggerList )
166183 {
167184 // ignore triggers for which we do not have valid file/file-paths
168185 if (trigger .getMimeType () == null || trigger .getMPath () == null )
@@ -182,11 +199,11 @@ private String generateLog () {
182199
183200 setTitle ("Event @ " + mEvent .getMStartTime ().toLocaleString ());
184201
185- for (EventTrigger eventTrigger : mEvent . getEventTriggers () ) {
202+ for (EventTrigger eventTrigger : eventTriggerList ) {
186203
187204 mEventLog .append ("Event Triggered @ " ).append (eventTrigger .getMTime ().toString ()).append ("\n " );
188205
189- String sType = eventTrigger .getStringType (this );
206+ String sType = eventTrigger .getStringType (resourceManager );
190207
191208 mEventLog .append ("Event Type: " ).append (sType );
192209 mEventLog .append ("\n ==========================\n " );
@@ -195,4 +212,63 @@ private String generateLog () {
195212 return mEventLog .toString ();
196213 }
197214
215+ @ Override
216+ public void onVideoClick (EventTrigger eventTrigger ) {
217+ Intent intent = new Intent (this , VideoPlayerActivity .class );
218+ intent .setData (Uri .parse ("file://" + eventTrigger .getMPath ()));
219+ startActivity (intent );
220+ }
221+
222+ @ Override
223+ public void onVideoLongClick (EventTrigger eventTrigger ) {
224+ shareMedia (eventTrigger );
225+ }
226+
227+ @ Override
228+ public void onImageClick (EventTrigger eventTrigger ) {
229+ int startPosition = 0 ;
230+
231+ /**
232+ for (int i = 0; i < eventTriggerImagePaths.size(); i++) {
233+ if (eventTriggerImagePaths.get(i).contains(eventTrigger.getPath())) {
234+ startPosition = i;
235+ break;
236+ }
237+ }**/
238+
239+ ShareOverlayView overlayView = new ShareOverlayView (this );
240+ ImageViewer viewer = new ImageViewer .Builder <>(this , eventTriggerImagePaths )
241+ .setStartPosition (startPosition )
242+ .setOverlayView (overlayView )
243+ .show ();
244+ overlayView .setImageViewer (viewer );
245+ }
246+
247+ @ Override
248+ public void onImageLongClick (EventTrigger eventTrigger ) {
249+ shareMedia (eventTrigger );
250+ }
251+
252+ private void shareMedia (EventTrigger eventTrigger ) {
253+ Intent shareIntent = new Intent ();
254+ shareIntent .setAction (Intent .ACTION_SEND );
255+ shareIntent .putExtra (Intent .EXTRA_STREAM , Uri .fromFile (new File (eventTrigger .getMPath ())));
256+ shareIntent .setType (eventTrigger .getMimeType ());
257+ startActivity (shareIntent );
258+ }
259+
260+ private void setEventTriggerImagePaths (List <EventTrigger > eventTriggerList ) {
261+ this .eventTriggerImagePaths = new ArrayList <>();
262+ for (EventTrigger trigger : eventTriggerList )
263+ {
264+ if (trigger .getMType () == EventTrigger .CAMERA
265+ && (!TextUtils .isEmpty (trigger .getMPath ())))
266+ {
267+ Uri fileUri = FileProvider .getUriForFile (this , AUTHORITY ,
268+ new File (trigger .getMPath ()));
269+
270+ eventTriggerImagePaths .add (fileUri );
271+ }
272+ }
273+ }
198274}
0 commit comments