aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/LogDisplayFragment.java
diff options
context:
space:
mode:
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/LogDisplayFragment.java')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/LogDisplayFragment.java78
1 files changed, 71 insertions, 7 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 4fdfd3a21..d8a7e397d 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/LogDisplayFragment.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/LogDisplayFragment.java
@@ -31,6 +31,8 @@ import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
@@ -40,11 +42,12 @@ import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.service.results.OperationResult;
import org.sufficientlysecure.keychain.service.results.OperationResult.LogEntryParcel;
import org.sufficientlysecure.keychain.service.results.OperationResult.LogLevel;
+import org.sufficientlysecure.keychain.service.results.OperationResult.SubLogEntryParcel;
import org.sufficientlysecure.keychain.util.Log;
import java.util.HashMap;
-public class LogDisplayFragment extends ListFragment implements OnTouchListener {
+public class LogDisplayFragment extends ListFragment implements OnTouchListener, OnItemClickListener {
HashMap<LogLevel,LogAdapter> mAdapters = new HashMap<LogLevel, LogAdapter>();
LogAdapter mAdapter;
@@ -89,6 +92,8 @@ public class LogDisplayFragment extends ListFragment implements OnTouchListener
}
});
+ getListView().setOnItemClickListener(this);
+
getListView().setFastScrollEnabled(true);
getListView().setDividerHeight(0);
getListView().setOnTouchListener(this);
@@ -126,6 +131,18 @@ public class LogDisplayFragment extends ListFragment implements OnTouchListener
return false;
}
+ @Override
+ public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+ LogEntryParcel parcel = mAdapter.getItem(position);
+ if ( ! (parcel instanceof SubLogEntryParcel)) {
+ return;
+ }
+ Intent intent = new Intent(
+ getActivity(), LogDisplayActivity.class);
+ intent.putExtra(LogDisplayFragment.EXTRA_RESULT, ((SubLogEntryParcel) parcel).getSubResult());
+ startActivity(intent);
+ }
+
private class LogAdapter extends ArrayAdapter<LogEntryParcel> {
private LayoutInflater mInflater;
@@ -146,11 +163,16 @@ public class LogDisplayFragment extends ListFragment implements OnTouchListener
}
private class ItemHolder {
- final TextView mText;
- final ImageView mImg;
- public ItemHolder(TextView text, ImageView image) {
+ final View mSecond;
+ final TextView mText, mSecondText;
+ final ImageView mImg, mSecondImg, mSub;
+ public ItemHolder(TextView text, ImageView image, ImageView sub, View second, TextView secondText, ImageView secondImg) {
mText = text;
mImg = image;
+ mSub = sub;
+ mSecond = second;
+ mSecondText = secondText;
+ mSecondImg = secondImg;
}
}
@@ -162,13 +184,55 @@ public class LogDisplayFragment extends ListFragment implements OnTouchListener
convertView = mInflater.inflate(R.layout.log_display_item, parent, false);
ih = new ItemHolder(
(TextView) convertView.findViewById(R.id.log_text),
- (ImageView) convertView.findViewById(R.id.log_img)
+ (ImageView) convertView.findViewById(R.id.log_img),
+ (ImageView) convertView.findViewById(R.id.log_sub),
+ convertView.findViewById(R.id.log_second),
+ (TextView) convertView.findViewById(R.id.log_second_text),
+ (ImageView) convertView.findViewById(R.id.log_second_img)
);
convertView.setTag(ih);
} else {
ih = (ItemHolder) convertView.getTag();
}
+ if (entry instanceof SubLogEntryParcel) {
+ ih.mSub.setVisibility(View.VISIBLE);
+ convertView.setClickable(false);
+
+ OperationResult result = ((SubLogEntryParcel) entry).getSubResult();
+ LogEntryParcel subEntry = result.getLog().getLast();
+ if (subEntry != null) {
+ ih.mSecond.setVisibility(View.VISIBLE);
+ // special case: first parameter may be a quantity
+ if (subEntry.mParameters != null && subEntry.mParameters.length > 0
+ && subEntry.mParameters[0] instanceof Integer) {
+ ih.mSecondText.setText(getResources().getQuantityString(subEntry.mType.getMsgId(),
+ (Integer) subEntry.mParameters[0],
+ subEntry.mParameters));
+ } else {
+ ih.mSecondText.setText(getResources().getString(subEntry.mType.getMsgId(),
+ subEntry.mParameters));
+ }
+ ih.mSecondText.setTextColor(subEntry.mType.mLevel == LogLevel.DEBUG ? Color.GRAY : Color.BLACK);
+ switch (subEntry.mType.mLevel) {
+ case DEBUG: ih.mSecondImg.setBackgroundColor(Color.GRAY); break;
+ case INFO: ih.mSecondImg.setBackgroundColor(Color.BLACK); break;
+ case WARN: ih.mSecondImg.setBackgroundColor(Color.YELLOW); break;
+ case ERROR: ih.mSecondImg.setBackgroundColor(Color.RED); break;
+ case START: ih.mSecondImg.setBackgroundColor(getResources().getColor(R.color.emphasis)); break;
+ case OK: ih.mSecondImg.setBackgroundColor(Color.GREEN); break;
+ case CANCELLED: ih.mSecondImg.setBackgroundColor(Color.RED); break;
+ }
+ } else {
+ ih.mSecond.setVisibility(View.GONE);
+ }
+
+ } else {
+ ih.mSub.setVisibility(View.GONE);
+ ih.mSecond.setVisibility(View.GONE);
+ convertView.setClickable(true);
+ }
+
// special case: first parameter may be a quantity
if (entry.mParameters != null && entry.mParameters.length > 0
&& entry.mParameters[0] instanceof Integer) {
@@ -179,14 +243,14 @@ public class LogDisplayFragment extends ListFragment implements OnTouchListener
ih.mText.setText(getResources().getString(entry.mType.getMsgId(),
entry.mParameters));
}
- ih.mText.setTextColor(entry.mType.mLevel == LogLevel.DEBUG ? Color.GRAY : Color.BLACK);
convertView.setPadding((entry.mIndent) * dipFactor, 0, 0, 0);
+ ih.mText.setTextColor(entry.mType.mLevel == LogLevel.DEBUG ? Color.GRAY : Color.BLACK);
switch (entry.mType.mLevel) {
case DEBUG: ih.mImg.setBackgroundColor(Color.GRAY); break;
case INFO: ih.mImg.setBackgroundColor(Color.BLACK); break;
case WARN: ih.mImg.setBackgroundColor(Color.YELLOW); break;
case ERROR: ih.mImg.setBackgroundColor(Color.RED); break;
- case START: ih.mImg.setBackgroundColor(Color.GREEN); break;
+ case START: ih.mImg.setBackgroundColor(getResources().getColor(R.color.emphasis)); break;
case OK: ih.mImg.setBackgroundColor(Color.GREEN); break;
case CANCELLED: ih.mImg.setBackgroundColor(Color.RED); break;
}