todolist column can be sorted

This commit is contained in:
Basile Burg 2015-02-14 04:21:54 +01:00
parent 9df88278a0
commit 78318f90a7
2 changed files with 44 additions and 0 deletions

View File

@ -95,6 +95,7 @@ inherited CETodoListWidget: TCETodoListWidget
Width = 75 Width = 75
end> end>
ReadOnly = True ReadOnly = True
SortType = stText
TabOrder = 1 TabOrder = 1
ViewStyle = vsReport ViewStyle = vsReport
end end

View File

@ -91,6 +91,8 @@ type
procedure procOutputDbg(sender: TObject); procedure procOutputDbg(sender: TObject);
procedure clearTodoList; procedure clearTodoList;
procedure fillTodoList; procedure fillTodoList;
procedure lstItemsColumnClick(Sender : TObject; Column : TListColumn);
procedure lstItemsCompare(Sender : TObject; item1, item2: TListItem;Data : Integer; var Compare : Integer);
procedure lstItemsDoubleClick(sender: TObject); procedure lstItemsDoubleClick(sender: TObject);
procedure btnRefreshClick(sender: TObject); procedure btnRefreshClick(sender: TObject);
procedure filterItems(sender: TObject); procedure filterItems(sender: TObject);
@ -175,6 +177,8 @@ begin
fTodos := TTodoItems.Create(self); fTodos := TTodoItems.Create(self);
lstItems.OnDblClick := @lstItemsDoubleClick; lstItems.OnDblClick := @lstItemsDoubleClick;
btnRefresh.OnClick := @btnRefreshClick; btnRefresh.OnClick := @btnRefreshClick;
lstItems.OnColumnClick:= @lstItemsColumnClick;
lstItems.OnCompare := @lstItemsCompare;
fAutoRefresh := true; fAutoRefresh := true;
mnuAutoRefresh.Checked := true; mnuAutoRefresh.Checked := true;
// http://bugs.freepascal.org/view.php?id=27137 // http://bugs.freepascal.org/view.php?id=27137
@ -471,6 +475,45 @@ begin
fDoc.SelectLine; fDoc.SelectLine;
end; end;
procedure TCETodoListWidget.lstItemsColumnClick(Sender : TObject; Column :
TListColumn);
var
curr: TListItem;
begin
if lstItems.Selected = nil then exit;
curr := lstItems.Selected;
//
if lstItems.SortDirection = sdAscending then
lstItems.SortDirection := sdDescending
else lstItems.SortDirection := sdAscending;
lstItems.SortColumn := Column.Index;
lstItems.Selected := nil;
lstItems.Selected := curr;
lstItems.Update;
end;
procedure TCETodoListWidget.lstItemsCompare(Sender : TObject; item1, item2:
TListItem;Data : Integer; var Compare : Integer);
var
txt1, txt2: string;
col: Integer;
begin
txt1 := '';
txt2 := '';
col := lstItems.SortColumn;
if col = 0 then
begin
txt1 := item1.Caption;
txt2 := item2.Caption;
end else
begin
if col < item1.SubItems.Count then txt1 := item1.SubItems.Strings[col];
if col < item2.SubItems.Count then txt2 := item2.SubItems.Strings[col];
end;
Compare := AnsiCompareStr(txt1, txt2);
if lstItems.SortDirection = sdDescending then Compare := -Compare;
end;
procedure TCETodoListWidget.btnRefreshClick(sender: TObject); procedure TCETodoListWidget.btnRefreshClick(sender: TObject);
begin begin
callToolProcess; callToolProcess;