aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain
diff options
context:
space:
mode:
authorAdithya Abraham Philip <adithyaphilip@gmail.com>2015-02-26 21:58:25 +0530
committerAdithya Abraham Philip <adithyaphilip@gmail.com>2015-02-26 21:58:25 +0530
commitec353b0c390f7b3f45b950171e56c6ddcd0a9607 (patch)
treec8680a33ff8d0c28a5660bf223cce205b511892a /OpenKeychain
parenta468c667bbe91aadc63b9bf72649e068675d6179 (diff)
downloadopen-keychain-ec353b0c390f7b3f45b950171e56c6ddcd0a9607.tar.gz
open-keychain-ec353b0c390f7b3f45b950171e56c6ddcd0a9607.tar.bz2
open-keychain-ec353b0c390f7b3f45b950171e56c6ddcd0a9607.zip
initial Log Display function
Diffstat (limited to 'OpenKeychain')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/LogDisplayFragment.java102
-rw-r--r--OpenKeychain/src/main/res/drawable-hdpi/ic_action_save_white.pngbin0 -> 394 bytes
-rw-r--r--OpenKeychain/src/main/res/drawable-mdpi/ic_action_save_white.pngbin0 -> 362 bytes
-rw-r--r--OpenKeychain/src/main/res/drawable-xhdpi/ic_action_save_white.pngbin0 -> 441 bytes
-rw-r--r--OpenKeychain/src/main/res/drawable-xxhdpi/ic_action_save_white.pngbin0 -> 495 bytes
-rw-r--r--OpenKeychain/src/main/res/menu/log_display.xml11
-rw-r--r--OpenKeychain/src/main/res/values/strings.xml4
7 files changed, 117 insertions, 0 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/LogDisplayFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/LogDisplayFragment.java
index 2baebc83d..a44274c67 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/LogDisplayFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/LogDisplayFragment.java
@@ -23,8 +23,13 @@ import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.ListFragment;
+import android.support.v4.view.MenuItemCompat;
+import android.support.v7.widget.SearchView;
import android.util.TypedValue;
import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
@@ -32,12 +37,26 @@ import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
+import android.widget.Toast;
+import org.sufficientlysecure.keychain.Constants;
import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.operations.results.OperationResult;
import org.sufficientlysecure.keychain.operations.results.OperationResult.LogEntryParcel;
import org.sufficientlysecure.keychain.operations.results.OperationResult.LogLevel;
import org.sufficientlysecure.keychain.operations.results.OperationResult.SubLogEntryParcel;
+import org.sufficientlysecure.keychain.provider.KeychainContract;
+import org.sufficientlysecure.keychain.provider.KeychainDatabase;
+import org.sufficientlysecure.keychain.ui.util.Notify;
+import org.sufficientlysecure.keychain.util.ExportHelper;
+import org.sufficientlysecure.keychain.util.FileHelper;
+import org.sufficientlysecure.keychain.util.Log;
+import org.sufficientlysecure.keychain.util.Preferences;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.Iterator;
public class LogDisplayFragment extends ListFragment implements OnItemClickListener {
@@ -46,6 +65,12 @@ public class LogDisplayFragment extends ListFragment implements OnItemClickListe
OperationResult mResult;
public static final String EXTRA_RESULT = "log";
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ setHasOptionsMenu(true);
+ }
@Override
public void onActivityCreated(Bundle savedInstanceState) {
@@ -70,6 +95,83 @@ public class LogDisplayFragment extends ListFragment implements OnItemClickListe
getListView().setFastScrollEnabled(true);
getListView().setDividerHeight(0);
+
+ }
+
+ @Override
+ public void onCreateOptionsMenu(final Menu menu, final MenuInflater inflater) {
+ Toast.makeText(this.getActivity(),"Options created",Toast.LENGTH_SHORT).show();
+ inflater.inflate(R.menu.log_display, menu);
+
+ super.onCreateOptionsMenu(menu, inflater);
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ switch(item.getItemId()) {
+ case R.id.menu_log_display_export_log:
+ exportLog();
+ break;
+ }
+
+ return super.onOptionsItemSelected(item);
+ }
+
+ private void exportLog() {
+ Toast.makeText(this.getActivity(),"Exporting log",Toast.LENGTH_LONG).show();
+ showExportLogDialog(new File(Constants.Path.APP_DIR, "export.log"));
+ }
+
+ private void writeToLogFile(final OperationResult.OperationLog operationLog, final File f) {
+
+ PrintWriter pw = null;
+ try {
+ pw = new PrintWriter(f);
+ } catch(IOException e) {
+ e.printStackTrace();
+ }
+
+ Iterator<LogEntryParcel> logIterator = operationLog.iterator();
+
+ while(logIterator.hasNext()) {
+
+ pw.println(getPrintableLogEntry(logIterator.next()));
+ }
+
+ pw.close();
+ }
+
+ /**
+ * returns an indented String of a LogEntryParcel
+ * @param entry log entry whose String representation is to be obtained
+ * @return the passed log entry in a readable format
+ */
+ private String getPrintableLogEntry(OperationResult.LogEntryParcel entry) {
+ String printable = "";
+
+ return entry.toString();
+ }
+
+ private void showExportLogDialog(final File exportFile) {
+
+ String title = this.getString(R.string.title_export_log);
+
+ String message = this.getString(R.string.specify_file_to_export_log_to);
+
+ FileHelper.saveFile(new FileHelper.FileDialogCallback() {
+ @Override
+ public void onFileSelected(File file, boolean checked) {
+ writeToLogFile(getOperationLog(),file);
+ }
+ }, this.getActivity().getSupportFragmentManager(), title, message, exportFile, null);
+ }
+
+ private OperationResult.OperationLog getOperationLog(){
+ OperationResult operationResult = this.getActivity().getIntent().getParcelableExtra(
+ LogDisplayFragment.EXTRA_RESULT);
+ OperationResult.OperationLog operationResultLog = operationResult.getLog();
+
+ return operationResultLog;
}
@Override
diff --git a/OpenKeychain/src/main/res/drawable-hdpi/ic_action_save_white.png b/OpenKeychain/src/main/res/drawable-hdpi/ic_action_save_white.png
new file mode 100644
index 000000000..0fe36a1ec
--- /dev/null
+++ b/OpenKeychain/src/main/res/drawable-hdpi/ic_action_save_white.png
Binary files differ
diff --git a/OpenKeychain/src/main/res/drawable-mdpi/ic_action_save_white.png b/OpenKeychain/src/main/res/drawable-mdpi/ic_action_save_white.png
new file mode 100644
index 000000000..664260d8c
--- /dev/null
+++ b/OpenKeychain/src/main/res/drawable-mdpi/ic_action_save_white.png
Binary files differ
diff --git a/OpenKeychain/src/main/res/drawable-xhdpi/ic_action_save_white.png b/OpenKeychain/src/main/res/drawable-xhdpi/ic_action_save_white.png
new file mode 100644
index 000000000..dde278b5e
--- /dev/null
+++ b/OpenKeychain/src/main/res/drawable-xhdpi/ic_action_save_white.png
Binary files differ
diff --git a/OpenKeychain/src/main/res/drawable-xxhdpi/ic_action_save_white.png b/OpenKeychain/src/main/res/drawable-xxhdpi/ic_action_save_white.png
new file mode 100644
index 000000000..ccf8c82cd
--- /dev/null
+++ b/OpenKeychain/src/main/res/drawable-xxhdpi/ic_action_save_white.png
Binary files differ
diff --git a/OpenKeychain/src/main/res/menu/log_display.xml b/OpenKeychain/src/main/res/menu/log_display.xml
new file mode 100644
index 000000000..03af3c5ad
--- /dev/null
+++ b/OpenKeychain/src/main/res/menu/log_display.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<menu xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto">
+
+ <item
+ android:id="@+id/menu_log_display_export_log"
+ android:icon="@drawable/ic_action_save_white"
+ android:title="@string/menu_export_log"
+ app:showAsAction="ifRoom|withText" />
+
+</menu>
diff --git a/OpenKeychain/src/main/res/values/strings.xml b/OpenKeychain/src/main/res/values/strings.xml
index e01f1c049..9d980500d 100644
--- a/OpenKeychain/src/main/res/values/strings.xml
+++ b/OpenKeychain/src/main/res/values/strings.xml
@@ -42,6 +42,7 @@
<string name="title_exchange_keys">"Exchange Keys"</string>
<string name="title_advanced_key_info">"Advanced Key Info"</string>
<string name="title_keys">"Keys"</string>
+ <string name="title_export_log">"Export Log"</string>
<!-- section -->
<string name="section_user_ids">"Identities"</string>
@@ -106,6 +107,7 @@
<string name="menu_search_cloud">"Search cloud"</string>
<string name="menu_export_all_keys">"Export all keys"</string>
<string name="menu_advanced">"Show advanced info"</string>
+ <string name="menu_export_log">"Export Log"</string>
<!-- label -->
<string name="label_message">"Message"</string>
@@ -237,6 +239,8 @@
<string name="key_creation_el_gamal_info">"Note: only subkeys support ElGamal."</string>
<string name="key_not_found">"Couldn't find key %08X."</string>
+ <string name="specify_file_to_export_log_to">"Please specify file to export to. \nWARNING: File will be overwritten if it exists."</string>
+
<plurals name="bad_keys_encountered">"
<item quantity="one">"%d bad secret key ignored. Perhaps you exported with the option\n --export-secret-subkeys\nMake sure you export with\n --export-secret-keys\ninstead.""</item>
<item quantity="other">"%d bad secret keys ignored. Perhaps you exported with the option\n --export-secret-subkeys\nMake sure you export with\n --export-secret-keys\ninstead.""</item>