added persistent option auto-refresh

This commit is contained in:
Basile Burg 2015-02-01 01:48:55 +01:00
parent 87d588d475
commit a8430f74f9
2 changed files with 72 additions and 7 deletions

View File

@ -41,10 +41,10 @@ inherited CETodoListWidget: TCETodoListWidget
TabOrder = 0 TabOrder = 0
end end
object lstfilter: TListFilterEdit object lstfilter: TListFilterEdit
Left = 38 Left = 68
Height = 23 Height = 23
Top = 2 Top = 2
Width = 513 Width = 483
ButtonWidth = 28 ButtonWidth = 28
NumGlyphs = 1 NumGlyphs = 1
Align = alCustom Align = alCustom
@ -52,6 +52,19 @@ inherited CETodoListWidget: TCETodoListWidget
MaxLength = 0 MaxLength = 0
TabOrder = 1 TabOrder = 1
end end
object btnGo: TBitBtn
Left = 32
Height = 22
Hint = 'refresh the list'
Top = 2
Width = 28
Align = alLeft
BorderSpacing.Around = 2
Layout = blGlyphBottom
OnClick = btnGoClick
Spacing = 0
TabOrder = 2
end
end end
object lstItems: TListView[1] object lstItems: TListView[1]
Left = 4 Left = 4
@ -90,5 +103,10 @@ inherited CETodoListWidget: TCETodoListWidget
inherited contextMenu: TPopupMenu inherited contextMenu: TPopupMenu
left = 40 left = 40
top = 72 top = 72
object mnuAutoRefresh: TMenuItem[0]
AutoCheck = True
Caption = 'Auto resfresh'
OnClick = mnuAutoRefreshClick
end
end end
end end

View File

@ -56,12 +56,17 @@ type
{ TCETodoListWidget } { TCETodoListWidget }
TCETodoListWidget = class(TCEWidget, ICEMultiDocObserver, ICEProjectObserver) TCETodoListWidget = class(TCEWidget, ICEMultiDocObserver, ICEProjectObserver, ICESessionOptionsObserver)
btnRefresh: TBitBtn; btnRefresh: TBitBtn;
btnGo: TBitBtn;
lstItems: TListView; lstItems: TListView;
lstfilter: TListFilterEdit; lstfilter: TListFilterEdit;
mnuAutoRefresh: TMenuItem;
Panel1: TPanel; Panel1: TPanel;
procedure btnGoClick(Sender: TObject);
procedure mnuAutoRefreshClick(Sender: TObject);
private private
fAutoRefresh: Boolean;
fProj: TCEProject; fProj: TCEProject;
fDoc: TCESynMemo; fDoc: TCESynMemo;
fToolProcess: TCheckedAsyncProcess; fToolProcess: TCheckedAsyncProcess;
@ -91,6 +96,11 @@ type
procedure filterItems(sender: TObject); procedure filterItems(sender: TObject);
protected protected
procedure SetVisible(Value: boolean); override; procedure SetVisible(Value: boolean); override;
// ICESessionOptionsObserver
procedure optset_AutoReafresh(aReader: TReader);
procedure optget_AutoReafresh(aWriter: TWriter);
procedure sesoptDeclareProperties(aFiler: TFiler); override;
procedure sesoptAfterLoad; override;
public public
constructor create(aOwner: TComponent); override; constructor create(aOwner: TComponent); override;
destructor destroy; override; destructor destroy; override;
@ -166,7 +176,8 @@ begin
fLogMessager := TCELogMessageSubject.create; fLogMessager := TCELogMessageSubject.create;
lstItems.OnDblClick := @lstItemsDoubleClick; lstItems.OnDblClick := @lstItemsDoubleClick;
btnRefresh.OnClick := @btnRefreshClick; btnRefresh.OnClick := @btnRefreshClick;
fAutoRefresh := true;
mnuAutoRefresh.Checked := true;
// http://bugs.freepascal.org/view.php?id=27137 // http://bugs.freepascal.org/view.php?id=27137
// TODO-cCleanup: remove comment after next Laz release // TODO-cCleanup: remove comment after next Laz release
// TODO-cfeature, try the new TListViewFilterEdit here. // TODO-cfeature, try the new TListViewFilterEdit here.
@ -176,6 +187,8 @@ begin
try try
png.LoadFromLazarusResource('arrow_update'); png.LoadFromLazarusResource('arrow_update');
btnRefresh.Glyph.Assign(png); btnRefresh.Glyph.Assign(png);
png.LoadFromLazarusResource('arrow_pen');
btnGo.Glyph.Assign(png);
finally finally
png.Free; png.Free;
end; end;
@ -197,6 +210,30 @@ end;
{$ENDREGION} {$ENDREGION}
{$REGION ICESessionOptionsObserver --------------------------------------------}
procedure TCETodoListWidget.optset_AutoReafresh(aReader: TReader);
begin
fAutoRefresh := aReader.ReadBoolean;
end;
procedure TCETodoListWidget.optget_AutoReafresh(aWriter: TWriter);
begin
aWriter.WriteBoolean(fAutoRefresh);
end;
procedure TCETodoListWidget.sesoptDeclareProperties(aFiler: TFiler);
begin
inherited;
aFiler.DefineProperty(Name + '_AutoRefresh', @optset_AutoReafresh, @optget_AutoReafresh, true);
end;
procedure TCETodoListWidget.sesoptAfterLoad;
begin
inherited;
mnuAutoRefresh.Checked := fAutoRefresh;
end;
{$ENDREGIOn}
{$REGION ICEMultiDocObserver ---------------------------------------------------} {$REGION ICEMultiDocObserver ---------------------------------------------------}
procedure TCETodoListWidget.docNew(aDoc: TCESynMemo); procedure TCETodoListWidget.docNew(aDoc: TCESynMemo);
begin begin
@ -206,7 +243,7 @@ procedure TCETodoListWidget.docFocused(aDoc: TCESynMemo);
begin begin
if aDoc = fDoc then exit; if aDoc = fDoc then exit;
fDoc := aDoc; fDoc := aDoc;
if Visible then if Visible and fAutoRefresh then
callToolProcess; callToolProcess;
end; end;
@ -232,7 +269,7 @@ end;
procedure TCETodoListWidget.projChanged(aProject: TCEProject); procedure TCETodoListWidget.projChanged(aProject: TCEProject);
begin begin
if fProj <> aProject then exit; if fProj <> aProject then exit;
if Visible then if Visible and fAutoRefresh then
callToolProcess; callToolProcess;
end; end;
@ -247,7 +284,7 @@ procedure TCETodoListWidget.projFocused(aProject: TCEProject);
begin begin
if aProject = fProj then exit; if aProject = fProj then exit;
fProj := aProject; fProj := aProject;
if Visible then if Visible and fAutoRefresh then
callToolProcess; callToolProcess;
end; end;
@ -404,6 +441,16 @@ begin
end; end;
end; end;
procedure TCETodoListWidget.btnGoClick(Sender: TObject);
begin
lstItemsDoubleClick(nil);
end;
procedure TCETodoListWidget.mnuAutoRefreshClick(Sender: TObject);
begin
fAutoRefresh := mnuAutoRefresh.Checked;
end;
procedure TCETodoListWidget.lstItemsDoubleClick(sender: TObject); procedure TCETodoListWidget.lstItemsDoubleClick(sender: TObject);
var var
itm: TTodoItem; itm: TTodoItem;