Merge pull request #708 from artbristol/composition-not-inheritance

Prefer composition to inheritance
This commit is contained in:
Vincent 2014-07-06 20:39:05 +02:00
commit fed11b2647
2 changed files with 27 additions and 6 deletions

View File

@ -9,6 +9,8 @@ import org.sufficientlysecure.keychain.util.IterableIterator;
import org.sufficientlysecure.keychain.util.Log; import org.sufficientlysecure.keychain.util.Log;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/** Represent the result of an operation. /** Represent the result of an operation.
* *
@ -288,7 +290,7 @@ public class OperationResultParcel implements Parcelable {
@Override @Override
public void writeToParcel(Parcel dest, int flags) { public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(mResult); dest.writeInt(mResult);
dest.writeTypedList(mLog); dest.writeTypedList(mLog.toList());
} }
public static final Creator<OperationResultParcel> CREATOR = new Creator<OperationResultParcel>() { public static final Creator<OperationResultParcel> CREATOR = new Creator<OperationResultParcel>() {
@ -301,20 +303,22 @@ public class OperationResultParcel implements Parcelable {
} }
}; };
public static class OperationLog extends ArrayList<LogEntryParcel> { public static class OperationLog implements Iterable<LogEntryParcel> {
private final List<LogEntryParcel> parcels = new ArrayList<LogEntryParcel>();
/// Simple convenience method /// Simple convenience method
public void add(LogLevel level, LogType type, int indent, Object... parameters) { public void add(LogLevel level, LogType type, int indent, Object... parameters) {
Log.d(Constants.TAG, type.toString()); Log.d(Constants.TAG, type.toString());
add(new OperationResultParcel.LogEntryParcel(level, type, indent, parameters)); parcels.add(new OperationResultParcel.LogEntryParcel(level, type, indent, parameters));
} }
public void add(LogLevel level, LogType type, int indent) { public void add(LogLevel level, LogType type, int indent) {
add(new OperationResultParcel.LogEntryParcel(level, type, indent, (Object[]) null)); parcels.add(new OperationResultParcel.LogEntryParcel(level, type, indent, (Object[]) null));
} }
public boolean containsWarnings() { public boolean containsWarnings() {
for(LogEntryParcel entry : new IterableIterator<LogEntryParcel>(iterator())) { for(LogEntryParcel entry : new IterableIterator<LogEntryParcel>(parcels.iterator())) {
if (entry.mLevel == LogLevel.WARN || entry.mLevel == LogLevel.ERROR) { if (entry.mLevel == LogLevel.WARN || entry.mLevel == LogLevel.ERROR) {
return true; return true;
} }
@ -322,6 +326,22 @@ public class OperationResultParcel implements Parcelable {
return false; return false;
} }
public void addAll(List<LogEntryParcel> parcels) {
parcels.addAll(parcels);
}
public List<LogEntryParcel> toList() {
return parcels;
}
public boolean isEmpty() {
return parcels.isEmpty();
}
@Override
public Iterator<LogEntryParcel> iterator() {
return parcels.iterator();
}
} }
} }

View File

@ -43,6 +43,7 @@ import org.sufficientlysecure.keychain.util.Log;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
public class LogDisplayFragment extends ListFragment implements OnTouchListener { public class LogDisplayFragment extends ListFragment implements OnTouchListener {
@ -135,7 +136,7 @@ public class LogDisplayFragment extends ListFragment implements OnTouchListener
private LayoutInflater mInflater; private LayoutInflater mInflater;
private int dipFactor; private int dipFactor;
public LogAdapter(Context context, ArrayList<LogEntryParcel> log, LogLevel level) { public LogAdapter(Context context, OperationResultParcel.OperationLog log, LogLevel level) {
super(context, R.layout.log_display_item); super(context, R.layout.log_display_item);
mInflater = LayoutInflater.from(getContext()); mInflater = LayoutInflater.from(getContext());
dipFactor = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dipFactor = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,