Paged change details: Show CC's on approvals tab separately
Change-Id: Ic6deeb03d9c6a94e2c6d5ca84cd0b711d909a4a1
Signed-off-by: Edwin Kempin <ekempin@google.com>
diff --git a/app/src/main/java/com/google/reviewit/ApprovalsFragment.java b/app/src/main/java/com/google/reviewit/ApprovalsFragment.java
index 2e2a196..2ca6cb9 100644
--- a/app/src/main/java/com/google/reviewit/ApprovalsFragment.java
+++ b/app/src/main/java/com/google/reviewit/ApprovalsFragment.java
@@ -20,6 +20,7 @@
import android.view.ViewGroup;
import com.google.gerrit.extensions.common.AccountInfo;
+import com.google.reviewit.app.ApprovalData;
import com.google.reviewit.app.Change;
import com.google.reviewit.widget.ApprovalEntry;
import com.google.reviewit.widget.ApprovalsHeader;
@@ -44,16 +45,31 @@
super.onActivityCreated(savedInstanceState);
ViewGroup approvalList = vg(R.id.approvalList);
- ApprovalsHeader approvalsHeader = new ApprovalsHeader(getContext());
- approvalsHeader.init(change);
- approvalList.addView(approvalsHeader);
+ ApprovalData approvalData = change.getApprovalData();
+
+ ApprovalsHeader reviewersHeader = new ApprovalsHeader(getContext());
+ reviewersHeader.init(change, getString(R.string.reviewers), true);
+ approvalList.addView(reviewersHeader);
addSeparator(approvalList);
- for (AccountInfo account : change.getApprovalData().reviewers) {
+ for (AccountInfo account : approvalData.reviewers) {
ApprovalEntry approvalEntry = new ApprovalEntry(getContext());
approvalEntry.init(getApp(), change, account);
approvalList.addView(approvalEntry);
addSeparator(approvalList);
}
+
+ if (!approvalData.ccs.isEmpty()) {
+ ApprovalsHeader ccsHeader = new ApprovalsHeader(getContext());
+ ccsHeader.init(change, getString(R.string.ccs), false);
+ approvalList.addView(ccsHeader);
+ addSeparator(approvalList);
+ for (AccountInfo account : approvalData.ccs) {
+ ApprovalEntry approvalEntry = new ApprovalEntry(getContext());
+ approvalEntry.init(getApp(), change, account);
+ approvalList.addView(approvalEntry);
+ addSeparator(approvalList);
+ }
+ }
}
public void setChange(Change change) {
diff --git a/app/src/main/java/com/google/reviewit/app/AccountComparator.java b/app/src/main/java/com/google/reviewit/app/AccountComparator.java
new file mode 100644
index 0000000..2c10810
--- /dev/null
+++ b/app/src/main/java/com/google/reviewit/app/AccountComparator.java
@@ -0,0 +1,28 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.google.reviewit.app;
+
+import com.google.gerrit.extensions.common.AccountInfo;
+import com.google.reviewit.util.FormatUtil;
+
+import java.util.Comparator;
+
+public class AccountComparator implements Comparator<AccountInfo> {
+ @Override
+ public int compare(AccountInfo account1, AccountInfo account2) {
+ return FormatUtil.format(account1).compareTo(
+ FormatUtil.format(account2));
+ }
+}
diff --git a/app/src/main/java/com/google/reviewit/app/ApprovalData.java b/app/src/main/java/com/google/reviewit/app/ApprovalData.java
index 63316b8..e09b51f 100644
--- a/app/src/main/java/com/google/reviewit/app/ApprovalData.java
+++ b/app/src/main/java/com/google/reviewit/app/ApprovalData.java
@@ -19,33 +19,33 @@
import com.google.gerrit.extensions.common.ApprovalInfo;
import com.google.gerrit.extensions.common.ChangeInfo;
import com.google.gerrit.extensions.common.LabelInfo;
-import com.google.reviewit.util.FormatUtil;
-import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.SortedSet;
import java.util.TreeMap;
import java.util.TreeSet;
public class ApprovalData {
public final Set<AccountInfo> reviewers;
+ public final Set<AccountInfo> ccs;
public final Map<String, LabelInfo> labels;
public final TreeMap<String, Map<Integer, ApprovalInfo>> approvalsByLabel;
public ApprovalData(ChangeInfo change) {
- reviewers = new TreeSet<>(new Comparator<AccountInfo>() {
- @Override
- public int compare(AccountInfo account1, AccountInfo account2) {
- return FormatUtil.format(account1).compareTo(
- FormatUtil.format(account2));
+ reviewers = new TreeSet<>(new AccountComparator());
+ ccs = new TreeSet<>(new AccountComparator());
+ if (change.reviewers != null) {
+ if (change.reviewers.containsKey(ReviewerState.REVIEWER)) {
+ reviewers.addAll(change.reviewers.get(ReviewerState.REVIEWER));
}
- });
- if (change.reviewers != null
- && change.reviewers.containsKey(ReviewerState.REVIEWER)) {
- reviewers.addAll(change.reviewers.get(ReviewerState.REVIEWER));
+ if (change.reviewers.containsKey(ReviewerState.CC)) {
+ ccs.addAll(change.reviewers.get(ReviewerState.CC));
+ }
}
+
labels = new TreeMap<>();
approvalsByLabel = new TreeMap<>();
for (Map.Entry<String, LabelInfo> label : change.labels.entrySet()) {
@@ -55,7 +55,6 @@
List<ApprovalInfo> all = change.labels.get(label.getKey()).all;
if (all != null) {
for (ApprovalInfo approval : all) {
- reviewers.add(approval);
approvalsByAccount.put(approval._accountId, approval);
}
}
@@ -83,4 +82,11 @@
}
return min != null && min.equals(Integer.valueOf(value));
}
+
+ public SortedSet<AccountInfo> reviewersAndCcs() {
+ SortedSet<AccountInfo> result = new TreeSet<>(new AccountComparator());
+ result.addAll(reviewers);
+ result.addAll(ccs);
+ return result;
+ }
}
diff --git a/app/src/main/java/com/google/reviewit/widget/ApprovalsHeader.java b/app/src/main/java/com/google/reviewit/widget/ApprovalsHeader.java
index 4c5d473..0b493fa 100644
--- a/app/src/main/java/com/google/reviewit/widget/ApprovalsHeader.java
+++ b/app/src/main/java/com/google/reviewit/widget/ApprovalsHeader.java
@@ -16,6 +16,7 @@
import android.content.Context;
import android.graphics.Typeface;
+import android.support.annotation.StringRes;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.ViewGroup;
@@ -47,17 +48,21 @@
inflate(context, R.layout.approvals_header, this);
}
- public void init(Change change) {
- for (String labelName : change.getApprovalData().labels.keySet()) {
- TextView text = widgetUtil.createTextView(
- FormatUtil.formatLabelName(labelName), 18);
- text.setTypeface(null, Typeface.BOLD);
- text.setGravity(Gravity.CENTER_HORIZONTAL);
- text.setLayoutParams(
- fixedLinearLayout(widgetUtil.dpToPx(40), widgetUtil.dpToPx(25)));
- text.setPadding(
- widgetUtil.dpToPx(2), 0, widgetUtil.dpToPx(2), 0);
- ((ViewGroup) findViewById(R.id.labels)).addView(text);
+ public void init(Change change, String headerText, boolean showLabels) {
+ ((TextView) findViewById(R.id.headerText)).setText(headerText);
+
+ if (showLabels) {
+ for (String labelName : change.getApprovalData().labels.keySet()) {
+ TextView text = widgetUtil.createTextView(
+ FormatUtil.formatLabelName(labelName), 18);
+ text.setTypeface(null, Typeface.BOLD);
+ text.setGravity(Gravity.CENTER_HORIZONTAL);
+ text.setLayoutParams(
+ fixedLinearLayout(widgetUtil.dpToPx(40), widgetUtil.dpToPx(25)));
+ text.setPadding(
+ widgetUtil.dpToPx(2), 0, widgetUtil.dpToPx(2), 0);
+ ((ViewGroup) findViewById(R.id.labels)).addView(text);
+ }
}
}
}
diff --git a/app/src/main/java/com/google/reviewit/widget/ApprovalsView.java b/app/src/main/java/com/google/reviewit/widget/ApprovalsView.java
index 8dd15ad..adfbff1 100644
--- a/app/src/main/java/com/google/reviewit/widget/ApprovalsView.java
+++ b/app/src/main/java/com/google/reviewit/widget/ApprovalsView.java
@@ -105,7 +105,7 @@
headerRow.addView(center(labelNameText));
}
- for (AccountInfo account : approvalData.reviewers) {
+ for (AccountInfo account : approvalData.reviewersAndCcs()) {
addApprovalRow(app, account, approvalData);
}
}
diff --git a/app/src/main/res/layout/approvals_header.xml b/app/src/main/res/layout/approvals_header.xml
index c0865f5..49c781a 100644
--- a/app/src/main/res/layout/approvals_header.xml
+++ b/app/src/main/res/layout/approvals_header.xml
@@ -31,9 +31,9 @@
android:shrinkColumns="0">
<TableRow>
<TextView
+ android:id="@+id/headerText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:text="@string/reviewers"
android:textSize="18sp"
android:textStyle="bold"/>