Skip to content

Commit 622b83d

Browse files
committed
Sort todo grid, new test(s)
1 parent 3ff5826 commit 622b83d

File tree

4 files changed

+33
-19
lines changed

4 files changed

+33
-19
lines changed

RetailCoder.VBE/UI/Settings/SettingsDialog.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,8 @@ private void LoadWindow()
8181
_generalSettingsView = new GeneralSettingsControl(_config.UserSettings.LanguageSetting, _configService);
8282

8383
var markers = _config.UserSettings.ToDoListSettings.ToDoMarkers;
84-
_todoView = new TodoListSettingsUserControl(markers);
84+
var gridViewSort = new GridViewSort<ToDoMarker>("Priority", true);
85+
_todoView = new TodoListSettingsUserControl(markers, gridViewSort);
8586
_todoController = new TodoSettingPresenter(_todoView, new AddMarkerForm());
8687

8788
ActivateControl(_generalSettingsView);

RetailCoder.VBE/UI/Settings/TodoListSettingsUserControl.cs

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,24 @@
55
using System.Linq;
66
using System.Windows.Forms;
77
using Rubberduck.Settings;
8-
using Rubberduck.ToDoItems;
98

109
namespace Rubberduck.UI.Settings
1110
{
1211
public partial class TodoListSettingsUserControl : UserControl, ITodoSettingsView
1312
{
13+
private GridViewSort<ToDoMarker> _gridViewSort;
14+
1415
/// <summary> Parameterless Constructor is to enable design view only. DO NOT USE. </summary>
1516
public TodoListSettingsUserControl()
1617
{
1718
InitializeComponent();
1819
}
1920

20-
public TodoListSettingsUserControl(IList<ToDoMarker> markers)
21+
public TodoListSettingsUserControl(IList<ToDoMarker> markers, GridViewSort<ToDoMarker> gridViewSort)
2122
: this()
2223
{
24+
_gridViewSort = gridViewSort;
25+
2326
InitTodoMarkersGridView(markers);
2427
SelectedIndex = 0;
2528
}
@@ -32,6 +35,7 @@ private void InitTodoMarkersGridView(IList<ToDoMarker> markers)
3235
TodoMarkersGridView.AlternatingRowsDefaultCellStyle.BackColor = Color.Lavender;
3336
TodoMarkersGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
3437
TodoMarkersGridView.CellValueChanged += SelectedPriorityChanged;
38+
TodoMarkersGridView.ColumnHeaderMouseClick += SortColumn;
3539

3640
var markerTextColumn = new DataGridViewTextBoxColumn
3741
{
@@ -61,6 +65,12 @@ private List<string> TodoLabels()
6165
.ToList();
6266
}
6367

68+
private void SortColumn(object sender, DataGridViewCellMouseEventArgs e)
69+
{
70+
var columnName = TodoMarkersGridView.Columns[e.ColumnIndex].Name;
71+
TodoMarkers = new BindingList<ToDoMarker>(_gridViewSort.Sort(TodoMarkers.AsEnumerable(), columnName).ToList());
72+
}
73+
6474
public int SelectedIndex
6575
{
6676
get { return TodoMarkersGridView.SelectedRows[0].Index; }
@@ -70,7 +80,10 @@ public int SelectedIndex
7080
public TodoPriority ActiveMarkerPriority
7181
{
7282
get { return TodoMarkers[SelectedIndex].Priority; }
73-
set { TodoMarkersGridView.SelectedRows[0].Cells[1].Value = (int)value; }
83+
set
84+
{
85+
TodoMarkersGridView.SelectedRows[0].Cells[1].Value = new ToDoMarker(ActiveMarkerText, value).PriorityLabel;
86+
}
7487
}
7588

7689
public string ActiveMarkerText

RetailCoder.VBE/UI/Settings/TodoSettingPresenter.cs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -73,10 +73,5 @@ private void HideAddMarkerForm()
7373
_addTodoMarkerView.MarkerText = string.Empty;
7474
_addTodoMarkerView.MarkerPriority = default(TodoPriority);
7575
}
76-
77-
public void SetActiveItem(int index)
78-
{
79-
_view.SelectedIndex = index;
80-
}
8176
}
8277
}

RubberduckTests/TodoControllerTests.cs

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -57,12 +57,9 @@ public void SetActiveItemChangesViewSelectedIndex()
5757
var markers = GetTestMarkers();
5858

5959
var view = new TodoListSettingsUserControl(markers);
60-
var addTodoMarkerView = new Mock<IAddTodoMarkerView>().Object;
61-
62-
var controller = new TodoSettingPresenter(view, addTodoMarkerView);
6360

6461
//act
65-
controller.SetActiveItem(1);
62+
view.SelectedIndex = 1;
6663

6764
Assert.AreEqual(1, view.SelectedIndex);
6865

@@ -79,11 +76,9 @@ public void ViewPriorityMatchesAfterSelectionChange()
7976
};
8077

8178
var view = new TodoListSettingsUserControl(markers);
82-
var addTodoMarkerView = new Mock<IAddTodoMarkerView>().Object;
83-
var controller = new TodoSettingPresenter(view, addTodoMarkerView);
8479

8580
//act
86-
controller.SetActiveItem(2);
81+
view.SelectedIndex = 2;
8782

8883
Assert.AreEqual(TodoPriority.High, view.ActiveMarkerPriority);
8984
}
@@ -98,13 +93,23 @@ public void ViewTextMatchesAfterSelectionChange()
9893
};
9994

10095
var view = new TodoListSettingsUserControl(markers);
101-
var addTodoMarkerView = new Mock<IAddTodoMarkerView>().Object;
102-
var controller = new TodoSettingPresenter(view, addTodoMarkerView);
10396

10497
//act
105-
controller.SetActiveItem(1);
98+
view.SelectedIndex = 1;
10699

107100
Assert.AreEqual("Note:", view.ActiveMarkerText);
108101
}
102+
103+
[TestMethod]
104+
public void MarkerChangeSavedOnPriorityChanged()
105+
{
106+
var markers = GetTestMarkers();
107+
108+
var view = new TodoListSettingsUserControl(markers);
109+
110+
view.ActiveMarkerPriority = TodoPriority.High;
111+
112+
Assert.AreEqual(view.ActiveMarkerPriority, view.TodoMarkers[0].Priority);
113+
}
109114
}
110115
}

0 commit comments

Comments
 (0)