From f254e1c829b8d305467876a45752fed170d910d3 Mon Sep 17 00:00:00 2001 From: Ampli-fier <22896574+Ampli-fier@users.noreply.github.com> Date: Thu, 20 Jun 2019 22:35:27 +0200 Subject: [PATCH] Added saving the log to file --- res/menu/view_log.xml | 8 +++- res/values/strings.xml | 3 ++ .../securesms/LogViewActivity.java | 13 +++++++ .../securesms/LogViewFragment.java | 37 +++++++++++++++++++ 4 files changed, 59 insertions(+), 2 deletions(-) diff --git a/res/menu/view_log.xml b/res/menu/view_log.xml index a067a9796..1750e04d1 100644 --- a/res/menu/view_log.xml +++ b/res/menu/view_log.xml @@ -1,6 +1,10 @@ - - + + View profile Zoom in Zoom out + Save log Share location with all group members Mute for 1 hour @@ -400,6 +401,8 @@ In-chat sounds Message font size View log + Saved \"DeltaChat.txt\" to Download folder + Failed to save the log Log Other Backup diff --git a/src/org/thoughtcrime/securesms/LogViewActivity.java b/src/org/thoughtcrime/securesms/LogViewActivity.java index 534f7a266..ad6ca4c38 100644 --- a/src/org/thoughtcrime/securesms/LogViewActivity.java +++ b/src/org/thoughtcrime/securesms/LogViewActivity.java @@ -7,6 +7,7 @@ import android.view.MenuInflater; import android.view.MenuItem; import android.widget.Toast; +import org.thoughtcrime.securesms.database.NoExternalStorageException; import org.thoughtcrime.securesms.util.DynamicLanguage; import org.thoughtcrime.securesms.util.DynamicTheme; import org.thoughtcrime.securesms.util.Util; @@ -57,10 +58,22 @@ public class LogViewActivity extends BaseActionBarActivity { public boolean onOptionsItemSelected(MenuItem item) { super.onOptionsItemSelected(item); Float newSize; + switch (item.getItemId()) { case android.R.id.home: finish(); return true; + case R.id.save_log: + try { + if (logViewFragment.saveLogFile()) + Toast.makeText(getApplicationContext(), R.string.pref_saved_log, Toast.LENGTH_LONG).show(); + else + Toast.makeText(getApplicationContext(), R.string.pref_save_log_failed, Toast.LENGTH_LONG).show(); + } catch (NoExternalStorageException e) { + e.printStackTrace(); + Toast.makeText(getApplicationContext(), R.string.pref_save_log_failed, Toast.LENGTH_LONG).show(); + } + return true; case R.id.copy_log_to_clipboard: Util.writeTextToClipboard(this, logViewFragment.getLogText()); Toast.makeText(getApplicationContext(), R.string.done, Toast.LENGTH_SHORT).show(); diff --git a/src/org/thoughtcrime/securesms/LogViewFragment.java b/src/org/thoughtcrime/securesms/LogViewFragment.java index a766a733b..55ecada6f 100644 --- a/src/org/thoughtcrime/securesms/LogViewFragment.java +++ b/src/org/thoughtcrime/securesms/LogViewFragment.java @@ -39,9 +39,14 @@ import android.widget.EditText; import com.b44t.messenger.DcContext; import org.thoughtcrime.securesms.connect.DcHelper; +import org.thoughtcrime.securesms.database.NoExternalStorageException; import org.thoughtcrime.securesms.util.Scrubber; +import org.thoughtcrime.securesms.util.StorageUtil; import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; import java.lang.ref.WeakReference; @@ -95,6 +100,38 @@ public class LogViewFragment extends Fragment { public void scrollUpLog() { logPreview.setSelection(0); } + public boolean saveLogFile() throws NoExternalStorageException { + + File outputDirectory = null; + + try { + outputDirectory = StorageUtil.getDownloadDir(); + try { + String logText = logPreview.getText().toString(); + if(!logText.trim().equals("")){ + File logFile =new File(outputDirectory + "/DeltaChat.txt"); + + if(!logFile.exists()){ + logFile.createNewFile(); + } + + FileWriter logFileWriter = new FileWriter(logFile, false); + BufferedWriter logFileBufferWriter = new BufferedWriter(logFileWriter); + logFileBufferWriter.write(logText); + logFileBufferWriter.close(); + } + } + catch (IOException e) { + e.printStackTrace(); + return false; + } + } catch (NoExternalStorageException e) { + e.printStackTrace(); + return false; + } + return true; + } + private static String grabLogcat() { try { final Process process = Runtime.getRuntime().exec("logcat -v threadtime -d");