From b41c7ad450a9011635e0efe984ddd7912a8f806a Mon Sep 17 00:00:00 2001
From: Masayuki Igawa <masayuki.igawa@gmail.com>
Date: Thu, 1 Sep 2016 19:37:11 +0900
Subject: [PATCH] Add size column to change list view

This commit adds a size column to the change list view like Gerrit.

Change-Id: I3e1a88c0a1a7bd68400909616e4f1ec1c5114329
---
 gertty/view/change_list.py | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/gertty/view/change_list.py b/gertty/view/change_list.py
index 8035cce..15e4cd3 100644
--- a/gertty/view/change_list.py
+++ b/gertty/view/change_list.py
@@ -47,6 +47,7 @@ COLUMNS = [
     ColumnInfo('Topic',   'weight',  1),
     ColumnInfo('Owner',   'weight',  1),
     ColumnInfo('Updated', 'given',  10),
+    ColumnInfo('Size',    'given',   4),
 ]
 
 
@@ -114,6 +115,7 @@ class ChangeRow(urwid.Button, ChangeListColumns):
         self.subject = mywid.SearchableText(u'', wrap='clip')
         self.number = mywid.SearchableText(u'')
         self.updated = mywid.SearchableText(u'')
+        self.size = mywid.SearchableText(u'', align='right')
         self.project = mywid.SearchableText(u'', wrap='clip')
         self.owner = mywid.SearchableText(u'', wrap='clip')
         self.branch = mywid.SearchableText(u'', wrap='clip')
@@ -175,6 +177,13 @@ class ChangeRow(urwid.Button, ChangeListColumns):
             self.updated.set_text(updated_time.strftime("%I:%M %p").upper())
         else:
             self.updated.set_text(updated_time.strftime("%Y-%m-%d"))
+        total_added_removed = 0
+        for rfile in change.revisions[-1].files:
+            if rfile.status is None:
+                continue
+            total_added_removed += rfile.inserted or 0
+            total_added_removed += rfile.deleted or 0
+        self.size.set_text(str(total_added_removed))
 
         self.category_columns = []
         for category in categories:
@@ -204,6 +213,7 @@ class ChangeListHeader(urwid.WidgetWrap, ChangeListColumns):
         self.subject = urwid.Text(u'Subject', wrap='clip')
         self.number = urwid.Text(u'Number')
         self.updated = urwid.Text(u'Updated')
+        self.size = urwid.Text(u'Size')
         self.project = urwid.Text(u'Project', wrap='clip')
         self.owner = urwid.Text(u'Owner', wrap='clip')
         self.branch = urwid.Text(u'Branch', wrap='clip')
@@ -223,7 +233,7 @@ class ChangeListHeader(urwid.WidgetWrap, ChangeListColumns):
 @mouse_scroll_decorator.ScrollByWheel
 class ChangeListView(urwid.WidgetWrap, mywid.Searchable):
     required_columns = set(['Number', 'Subject', 'Updated'])
-    optional_columns = set(['Topic', 'Branch'])
+    optional_columns = set(['Topic', 'Branch', 'Size'])
 
     def getCommands(self):
         if self.project_key: