diff --git a/sherlock/src/main/java/com/singhajit/sherlock/core/Sherlock.java b/sherlock/src/main/java/com/singhajit/sherlock/core/Sherlock.java index 9e61c0c..ee7fee7 100644 --- a/sherlock/src/main/java/com/singhajit/sherlock/core/Sherlock.java +++ b/sherlock/src/main/java/com/singhajit/sherlock/core/Sherlock.java @@ -54,10 +54,12 @@ public static Sherlock getInstance() { return instance; } - public List getAllCrashes() { + public static List getAllCrashes() { return getInstance().database.getCrashes(); } + public static void clearAllCrashes() { getInstance().database.clearCrashes(); } + private static void analyzeAndReportCrash(Throwable throwable) { Log.d(TAG, "Analyzing Crash..."); CrashAnalyzer crashAnalyzer = new CrashAnalyzer(throwable); diff --git a/sherlock/src/main/java/com/singhajit/sherlock/core/database/CrashTable.java b/sherlock/src/main/java/com/singhajit/sherlock/core/database/CrashTable.java index 18e09fb..691d4b9 100644 --- a/sherlock/src/main/java/com/singhajit/sherlock/core/database/CrashTable.java +++ b/sherlock/src/main/java/com/singhajit/sherlock/core/database/CrashTable.java @@ -19,6 +19,7 @@ public class CrashTable implements BaseColumns { public static final String DROP_QUERY = "drop table " + TABLE_NAME; public static final String TRUNCATE_QUERY = "delete from " + TABLE_NAME; public static final String SELECT_ALL = "SELECT * FROM " + TABLE_NAME + " ORDER BY " + _ID + " DESC"; + public static final String DELETE_ALL = "DELETE FROM " + TABLE_NAME; public static String selectById(int id) { return "SELECT * FROM " + TABLE_NAME + " WHERE " + _ID + " = " + id; diff --git a/sherlock/src/main/java/com/singhajit/sherlock/core/database/SherlockDatabaseHelper.java b/sherlock/src/main/java/com/singhajit/sherlock/core/database/SherlockDatabaseHelper.java index 1abbb1f..073a9d8 100644 --- a/sherlock/src/main/java/com/singhajit/sherlock/core/database/SherlockDatabaseHelper.java +++ b/sherlock/src/main/java/com/singhajit/sherlock/core/database/SherlockDatabaseHelper.java @@ -61,6 +61,10 @@ public List getCrashes() { return crashes; } + public void clearCrashes() { + getWritableDatabase().execSQL(CrashTable.DELETE_ALL); + } + public Crash getCrashById(int id) { SQLiteDatabase readableDatabase = getReadableDatabase(); Cursor cursor = readableDatabase.rawQuery(CrashTable.selectById(id), null); diff --git a/sherlock/src/main/java/com/singhajit/sherlock/crashes/activity/CrashListActivity.java b/sherlock/src/main/java/com/singhajit/sherlock/crashes/activity/CrashListActivity.java index 705f2d1..6ff2a0f 100644 --- a/sherlock/src/main/java/com/singhajit/sherlock/crashes/activity/CrashListActivity.java +++ b/sherlock/src/main/java/com/singhajit/sherlock/crashes/activity/CrashListActivity.java @@ -9,6 +9,7 @@ import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; +import android.widget.CheckBox; import android.widget.LinearLayout; import com.singhajit.sherlock.R; @@ -18,8 +19,11 @@ import com.singhajit.sherlock.crashes.presenter.CrashListPresenter; import com.singhajit.sherlock.crashes.viewmodel.CrashesViewModel; -public class CrashListActivity extends BaseActivity implements CrashListActions { +import static com.singhajit.sherlock.crashes.activity.CrashActivity.CRASH_ID; + +public class CrashListActivity extends BaseActivity implements CrashListActions { + public static final String CLEAR_CRASHES = "com.singhajit.sherlock.CLEAR_CRASHES"; private CrashListPresenter presenter; @Override @@ -27,6 +31,10 @@ protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.crash_list_activity); + Intent intent = getIntent(); + boolean clearCrashes = intent.getBooleanExtra(CLEAR_CRASHES, false); + ((CheckBox) findViewById(R.id.erase_crashes)).setChecked(clearCrashes); + enableHomeButton((Toolbar) findViewById(R.id.toolbar)); setTitle(R.string.app_name); @@ -35,6 +43,18 @@ protected void onCreate(@Nullable Bundle savedInstanceState) { presenter.render(database); } + @Override + protected void onDestroy() + { + CheckBox eraseAll = (CheckBox) findViewById(R.id.erase_crashes); + if (eraseAll != null && eraseAll.isChecked()) + { + SherlockDatabaseHelper dbHelper = new SherlockDatabaseHelper(this); + dbHelper.clearCrashes(); + } + super.onDestroy(); + } + @Override public void render(CrashesViewModel viewModel) { RecyclerView crashList = (RecyclerView) findViewById(R.id.crash_list); @@ -66,7 +86,7 @@ public boolean onOptionsItemSelected(MenuItem item) { @Override public void openCrashDetails(int crashId) { Intent intent = new Intent(this, CrashActivity.class); - intent.putExtra(CrashActivity.CRASH_ID, crashId); + intent.putExtra(CRASH_ID, crashId); startActivity(intent); } diff --git a/sherlock/src/main/res/layout/crash_list_activity.xml b/sherlock/src/main/res/layout/crash_list_activity.xml index 22db841..092d411 100644 --- a/sherlock/src/main/res/layout/crash_list_activity.xml +++ b/sherlock/src/main/res/layout/crash_list_activity.xml @@ -6,6 +6,7 @@ android:layout_height="match_parent" android:orientation="vertical"> + + + + android:scrollbars="vertical"> + + + \ No newline at end of file diff --git a/sherlock/src/main/res/values/strings.xml b/sherlock/src/main/res/values/strings.xml index eaafa92..8284fba 100644 --- a/sherlock/src/main/res/values/strings.xml +++ b/sherlock/src/main/res/values/strings.xml @@ -12,4 +12,5 @@ Version 404 https://github.com/ajitsing/Sherlock + Clear all crashes upon leaving