Skip to content

Commit

Permalink
Single Responsibility for EventTriggerAdapter
Browse files Browse the repository at this point in the history
Signed-off-by: Arka Prava Basu <[email protected]>
  • Loading branch information
archie94 committed Sep 2, 2018
1 parent 762f06c commit e19cf29
Show file tree
Hide file tree
Showing 7 changed files with 144 additions and 111 deletions.
8 changes: 8 additions & 0 deletions src/main/java/org/havenapp/main/model/Event.kt
Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,12 @@ class Event {

return mEventTriggers
}

fun getEventTriggerCount(): Int {
if (mEventTriggers.size == 0) {
return getEventTriggers().size
}

return mEventTriggers.size
}
}
22 changes: 11 additions & 11 deletions src/main/java/org/havenapp/main/model/EventTrigger.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ package org.havenapp.main.model
import android.arch.persistence.room.ColumnInfo
import android.arch.persistence.room.Entity
import android.arch.persistence.room.PrimaryKey
import android.content.Context
import org.havenapp.main.R
import org.havenapp.main.resources.IResourceManager
import java.util.*

/**
Expand Down Expand Up @@ -77,19 +77,19 @@ class EventTrigger {
@ColumnInfo(name = "M_PATH")
var mPath: String? = null

fun getStringType(context: Context): String {
fun getStringType(resourceManager: IResourceManager): String {
var sType = ""

sType = when (mType) {
ACCELEROMETER -> context.getString(R.string.sensor_accel)
LIGHT -> context.getString(R.string.sensor_light)
CAMERA -> context.getString(R.string.sensor_camera)
MICROPHONE -> context.getString(R.string.sensor_sound)
POWER -> context.getString(R.string.sensor_power)
BUMP -> context.getString(R.string.sensor_bump)
CAMERA_VIDEO -> context.getString(R.string.sensor_camera_video)
HEART -> context.getString(R.string.sensor_heartbeat)
else -> context.getString(R.string.sensor_unknown)
ACCELEROMETER -> resourceManager.getString(R.string.sensor_accel)
LIGHT -> resourceManager.getString(R.string.sensor_light)
CAMERA -> resourceManager.getString(R.string.sensor_camera)
MICROPHONE -> resourceManager.getString(R.string.sensor_sound)
POWER -> resourceManager.getString(R.string.sensor_power)
BUMP -> resourceManager.getString(R.string.sensor_bump)
CAMERA_VIDEO -> resourceManager.getString(R.string.sensor_camera_video)
HEART -> resourceManager.getString(R.string.sensor_heartbeat)
else -> resourceManager.getString(R.string.sensor_unknown)
}

return sType
Expand Down
4 changes: 3 additions & 1 deletion src/main/java/org/havenapp/main/service/MonitorService.java
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
import org.havenapp.main.database.HavenEventDB;
import org.havenapp.main.model.Event;
import org.havenapp.main.model.EventTrigger;
import org.havenapp.main.resources.ResourceManager;
import org.havenapp.main.sensors.AccelerometerMonitor;
import org.havenapp.main.sensors.AmbientLightMonitor;
import org.havenapp.main.sensors.BarometerMonitor;
Expand Down Expand Up @@ -335,7 +336,8 @@ else if (mPrefs.getNotificationTimeMs() > 0 && mLastNotification != null)
* number
*/
StringBuilder alertMessage = new StringBuilder();
alertMessage.append(getString(R.string.intrusion_detected, eventTrigger.getStringType(this)));
alertMessage.append(getString(R.string.intrusion_detected,
eventTrigger.getStringType(new ResourceManager(this))));

if (mPrefs.getSignalUsername() != null) {
//since this is a secure channel, we can add the Onion address
Expand Down
3 changes: 2 additions & 1 deletion src/main/java/org/havenapp/main/service/WebServer.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import org.havenapp.main.database.HavenEventDB;
import org.havenapp.main.model.Event;
import org.havenapp.main.model.EventTrigger;
import org.havenapp.main.resources.ResourceManager;

import java.io.File;
import java.io.FileInputStream;
Expand Down Expand Up @@ -174,7 +175,7 @@ private void showEvent (Event event, StringBuffer page) {

for (EventTrigger eventTrigger: triggers)
{
String title = eventTrigger.getStringType(mContext);
String title = eventTrigger.getStringType(new ResourceManager(mContext));
String desc = eventTrigger.getMTime().toString();

page.append("<b>");
Expand Down
94 changes: 85 additions & 9 deletions src/main/java/org/havenapp/main/ui/EventActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,30 +7,41 @@
import android.os.StrictMode;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v4.content.FileProvider;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.support.v7.widget.helper.ItemTouchHelper;
import android.text.TextUtils;
import android.view.MenuItem;
import android.view.View;

import com.stfalcon.frescoimageviewer.ImageViewer;

import org.havenapp.main.R;
import org.havenapp.main.database.HavenEventDB;
import org.havenapp.main.model.Event;
import org.havenapp.main.model.EventTrigger;
import org.havenapp.main.resources.IResourceManager;
import org.havenapp.main.resources.ResourceManager;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class EventActivity extends AppCompatActivity {

public class EventActivity extends AppCompatActivity implements EventTriggerAdapter.EventTriggerClickListener {

private IResourceManager resourceManager;
private RecyclerView mRecyclerView;
private Event mEvent;
private List<EventTrigger> eventTriggerList = new ArrayList<>();
private Handler mHandler = new Handler();
private EventTriggerAdapter mAdapter;

private ArrayList<Uri> eventTriggerImagePaths;
private final static String AUTHORITY = "org.havenapp.main.fileprovider";

@Override
protected void onCreate(Bundle savedInstanceState) {

Expand All @@ -42,16 +53,22 @@ protected void onCreate(Bundle savedInstanceState) {

StrictMode.setVmPolicy(StrictMode.VmPolicy.LAX);

resourceManager = new ResourceManager(this);

long eventId = getIntent().getLongExtra("eventid",-1);

if (eventId != -1) {

mEvent = HavenEventDB.getDatabase(this).getEventDAO().findById(eventId);
eventTriggerList = mEvent.getEventTriggers();
mRecyclerView = findViewById(R.id.event_trigger_list);

setTitle(mEvent.getMStartTime().toLocaleString());

mAdapter = new EventTriggerAdapter(this, mEvent.getEventTriggers());
mAdapter = new EventTriggerAdapter(this, eventTriggerList,
resourceManager, this);

setEventTriggerImagePaths(eventTriggerList);

LinearLayoutManager llm = new LinearLayoutManager(this);
mRecyclerView.setLayoutManager(llm);
Expand Down Expand Up @@ -79,7 +96,7 @@ public void onSwiped(RecyclerView.ViewHolder viewHolder, int direction) {
//Remove swiped item from list and notify the RecyclerView

final int position = viewHolder.getAdapterPosition();
final EventTrigger eventTrigger = mEvent.getEventTriggers()
final EventTrigger eventTrigger = eventTriggerList
.get(viewHolder.getAdapterPosition());

deleteEventTrigger (eventTrigger, position);
Expand Down Expand Up @@ -128,7 +145,7 @@ public void run ()

mHandler.postDelayed(runnableDelete,3000);

mEvent.getEventTriggers().remove(position);
eventTriggerList.remove(position);
mAdapter.notifyItemRemoved(position);

HavenEventDB.getDatabase(EventActivity.this)
Expand All @@ -142,7 +159,7 @@ public void onClick(View v) {
long eventTriggerId = HavenEventDB.getDatabase(EventActivity.this)
.getEventTriggerDAO().insert(eventTrigger);
eventTrigger.setId(eventTriggerId);
mEvent.getEventTriggers().add(position, eventTrigger);
eventTriggerList.add(position, eventTrigger);
mAdapter.notifyItemInserted(position);
}
})
Expand All @@ -162,7 +179,7 @@ private void shareEvent ()
//has to be an ArrayList
ArrayList<Uri> uris = new ArrayList<>();
//convert from paths to Android friendly Parcelable Uri's
for (EventTrigger trigger : mEvent.getEventTriggers())
for (EventTrigger trigger : eventTriggerList)
{
// ignore triggers for which we do not have valid file/file-paths
if (trigger.getMimeType() == null || trigger.getMPath() == null)
Expand All @@ -182,11 +199,11 @@ private String generateLog () {

setTitle("Event @ " + mEvent.getMStartTime().toLocaleString());

for (EventTrigger eventTrigger : mEvent.getEventTriggers()) {
for (EventTrigger eventTrigger : eventTriggerList) {

mEventLog.append("Event Triggered @ ").append(eventTrigger.getMTime().toString()).append("\n");

String sType = eventTrigger.getStringType(this);
String sType = eventTrigger.getStringType(resourceManager);

mEventLog.append("Event Type: ").append(sType);
mEventLog.append("\n==========================\n");
Expand All @@ -195,4 +212,63 @@ private String generateLog () {
return mEventLog.toString();
}

@Override
public void onVideoClick(EventTrigger eventTrigger) {
Intent intent = new Intent(this, VideoPlayerActivity.class);
intent.setData(Uri.parse("file://" + eventTrigger.getMPath()));
startActivity(intent);
}

@Override
public void onVideoLongClick(EventTrigger eventTrigger) {
shareMedia(eventTrigger);
}

@Override
public void onImageClick(EventTrigger eventTrigger) {
int startPosition = 0;

/**
for (int i = 0; i < eventTriggerImagePaths.size(); i++) {
if (eventTriggerImagePaths.get(i).contains(eventTrigger.getPath())) {
startPosition = i;
break;
}
}**/

ShareOverlayView overlayView = new ShareOverlayView(this);
ImageViewer viewer = new ImageViewer.Builder<>(this, eventTriggerImagePaths)
.setStartPosition(startPosition)
.setOverlayView(overlayView)
.show();
overlayView.setImageViewer(viewer);
}

@Override
public void onImageLongClick(EventTrigger eventTrigger) {
shareMedia(eventTrigger);
}

private void shareMedia (EventTrigger eventTrigger) {
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File(eventTrigger.getMPath())));
shareIntent.setType(eventTrigger.getMimeType());
startActivity(shareIntent);
}

private void setEventTriggerImagePaths(List<EventTrigger> eventTriggerList) {
this.eventTriggerImagePaths = new ArrayList<>();
for (EventTrigger trigger : eventTriggerList)
{
if (trigger.getMType() == EventTrigger.CAMERA
&& (!TextUtils.isEmpty(trigger.getMPath())))
{
Uri fileUri = FileProvider.getUriForFile(this, AUTHORITY,
new File(trigger.getMPath()));

eventTriggerImagePaths.add(fileUri);
}
}
}
}
2 changes: 1 addition & 1 deletion src/main/java/org/havenapp/main/ui/EventAdapter.java
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ public void onBindViewHolder(@NonNull EventVH holder, int position) {
Event event = events.get(position);

String title = event.getMStartTime().toLocaleString();
String desc = event.getEventTriggers().size() + " " +
String desc = event.getEventTriggerCount() + " " +
resourceManager.getString(R.string.detection_events);

holder.title.setText(title);
Expand Down
Loading

0 comments on commit e19cf29

Please sign in to comment.