tvplanit: Refactor datastore's LoadEvents (new method LoadEventsOfResource)
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@5141 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
parent
8c0fcef2ac
commit
2899adfc3e
@ -264,6 +264,7 @@ type
|
||||
|
||||
procedure Load; virtual;
|
||||
procedure LoadEvents; virtual; abstract;
|
||||
procedure LoadEventsOfResource(AResID: Integer); virtual; abstract;
|
||||
procedure LoadContacts; virtual; abstract;
|
||||
procedure LoadTasks; virtual; abstract;
|
||||
|
||||
|
@ -79,22 +79,25 @@ type
|
||||
|
||||
procedure Load; override;
|
||||
procedure LoadEvents; override;
|
||||
procedure LoadEventsOfResource(AResID: integer); override;
|
||||
procedure LoadContacts; override;
|
||||
procedure LoadTasks; override;
|
||||
|
||||
procedure RefreshEvents; override;
|
||||
procedure RefreshContacts; override;
|
||||
procedure RefreshTasks; override;
|
||||
procedure RefreshResource; override;
|
||||
|
||||
procedure PostEvents; override;
|
||||
procedure PostContacts; override;
|
||||
procedure PostTasks; override;
|
||||
procedure PostResources; override;
|
||||
{ - Added}
|
||||
|
||||
procedure PurgeResource(Res: TVpResource); override;
|
||||
procedure PurgeEvents(Res: TVpResource); override;
|
||||
procedure PurgeContacts(Res: TVpResource); override;
|
||||
procedure PurgeTasks(Res: TVpResource); override;
|
||||
{ - End}
|
||||
|
||||
procedure SetResourceByName(Value: string); override;
|
||||
procedure CreateFieldDefs(const TableName : string;
|
||||
FieldDefs : TFieldDefs); virtual;
|
||||
@ -1028,24 +1031,28 @@ begin
|
||||
end;
|
||||
{=====}
|
||||
|
||||
{ Load this resource's events into memory }
|
||||
procedure TVpCustomDBDataStore.LoadEvents;
|
||||
begin
|
||||
if Resource <> nil then
|
||||
LoadEventsOfResource(Resource.ResourceID);
|
||||
end;
|
||||
|
||||
{ Load the events of the specified resource into memory }
|
||||
procedure TVpCustomDBDataStore.LoadEventsOfResource(AResID: Integer);
|
||||
var
|
||||
res: TVpResource;
|
||||
Event: TVpEvent;
|
||||
F: TField;
|
||||
begin
|
||||
if Resource <> nil then
|
||||
{ Load this resource's events into memory }
|
||||
// Find the resource belonging to the specified ID.
|
||||
res := Resources.GetResource(AResID);
|
||||
if res <> nil then
|
||||
with EventsTable do begin
|
||||
SetFilterCriteria(
|
||||
EventsTable,
|
||||
True,
|
||||
ResourceTable.FieldByName('ResourceID').AsInteger,
|
||||
TimeRange.StartTime,
|
||||
TimeRange.EndTime
|
||||
);
|
||||
SetFilterCriteria(EventsTable, true, AResID, TimeRange.StartTime, TimeRange.EndTime);
|
||||
First;
|
||||
while not EventsTable.EOF do begin
|
||||
Event := Resource.Schedule.AddEvent(
|
||||
Event := res.Schedule.AddEvent(
|
||||
FieldByName('RecordID').AsInteger,
|
||||
FieldByName('StartTime').AsDateTime,
|
||||
FieldByName('EndTime').AsDateTime
|
||||
@ -1053,7 +1060,7 @@ begin
|
||||
if Event <> nil then begin
|
||||
Event.Loading := true;
|
||||
Event.Description := FieldByName('Description').AsString;
|
||||
F := FieldByName('Location'); // new
|
||||
F := FieldByName('Location');
|
||||
if F <> nil then Event.Location := F.AsString;
|
||||
Event.Notes := FieldByName('Notes').AsString;
|
||||
Event.Category := FieldByName('Category').AsInteger;
|
||||
@ -1086,12 +1093,10 @@ begin
|
||||
if F <> nil then Event.UserField8 := F.AsString;
|
||||
F := FindField('UserField9');
|
||||
if F <> nil then Event.UserField9 := F.AsString;
|
||||
|
||||
Event.Loading := false;
|
||||
end;
|
||||
Next;
|
||||
end; {while}
|
||||
|
||||
end; {with EventsTable}
|
||||
end;
|
||||
{=====}
|
||||
|
@ -144,7 +144,7 @@ type
|
||||
destructor Destroy; override;
|
||||
procedure Load; override;
|
||||
|
||||
procedure LoadEvents; override;
|
||||
procedure LoadEventsOfResource(AResID: Integer); override;
|
||||
procedure LoadContacts; override;
|
||||
procedure LoadTasks; override;
|
||||
procedure RefreshEvents; override;
|
||||
@ -540,6 +540,150 @@ begin
|
||||
end;
|
||||
{=====}
|
||||
|
||||
procedure TVpFlexDataStore.LoadEventsOfResource(AResID: Integer);
|
||||
var
|
||||
res: TVpResource;
|
||||
Event: TVpEvent;
|
||||
{Field Name}
|
||||
FN1, FN2, FN3: string;
|
||||
begin
|
||||
res := Resources.GetResource(AResID);
|
||||
if (FEventsDataSrc = nil) or (FEventsDataSrc.DataSet = nil) then
|
||||
Exit;
|
||||
|
||||
if (res <> nil) then begin
|
||||
SetFilterCriteria(FEventsDataSrc.DataSet, True, AResID,
|
||||
TimeRange.StartTime, TimeRange.EndTime);
|
||||
|
||||
if (FEventsDataSrc = nil) or
|
||||
(FEventsDataSrc.DataSet = nil) or (not FEventsDataSrc.DataSet.Active)
|
||||
then
|
||||
Exit;
|
||||
|
||||
with FEventsDataSrc.Dataset do begin
|
||||
First;
|
||||
|
||||
while not EOF do begin
|
||||
FN1 := GetFieldName(FEventMappings, 'RecordID');
|
||||
FN2 := GetFieldName(FEventMappings, 'StartTime');
|
||||
FN3 := GetFieldName(FEventMappings, 'EndTime');
|
||||
if (FN1 <> '') and (FN2 <> '') and (FN3 <> '') then begin
|
||||
Event := res.Schedule.AddEvent(FieldByName(FN1).AsInteger,
|
||||
FieldByName(FN2).AsDateTime, FieldByName(FN3).AsDateTime);
|
||||
|
||||
if Event <> nil then begin
|
||||
Event.Loading := true;
|
||||
|
||||
FN1 := GetFieldName(FEventMappings, 'Description');
|
||||
if (FN1 <> '') then
|
||||
Event.Description := FieldByName(FN1).AsString;
|
||||
|
||||
FN1 := GetFieldName(FEventMappings, 'Location'); // new
|
||||
if (FN1 <> '') then
|
||||
Event.Location := FieldByName(FN1).AsString;
|
||||
|
||||
FN1 := GetFieldName(FEventMappings, 'Notes');
|
||||
if (FN1 = '') then FN1 := GetFieldName(FEventMappings, 'Note'); // deprecated
|
||||
if (FN1 <> '') then
|
||||
Event.Notes := FieldByName(FN1).AsString;
|
||||
|
||||
FN1 := GetFieldName(FEventMappings, 'Category');
|
||||
if (FN1 <> '') then
|
||||
Event.Category := FieldByName(FN1).AsInteger;
|
||||
|
||||
FN1 := GetFieldName(FEventMappings, 'DingPath');
|
||||
if FN1 = '' then
|
||||
FN1 := GetFieldName(FEventMappings, 'AlarmWavPath'); // deprectated
|
||||
if (FN1 <> '') then
|
||||
Event.DingPath := FieldByName(FN1).AsString;
|
||||
|
||||
FN1 := GetFieldName(FEventMappings, 'AllDayEvent');
|
||||
if (FN1 <> '') then
|
||||
Event.AllDayEvent := FieldByName(FN1).AsBoolean;
|
||||
|
||||
FN1 := GetFieldName(FEventMappings, 'AlarmSet');
|
||||
if (FN1 <> '') then
|
||||
Event.AlarmSet := FieldByName(FN1).AsBoolean;
|
||||
|
||||
FN1 := GetFieldName(FEventMappings, 'AlarmAdvance');
|
||||
if FN1 = '' then
|
||||
FN1 := GetFieldName(FEventMappings, 'AlarmAdv'); // deprecated
|
||||
if (FN1 <> '') then
|
||||
Event.AlarmAdvance := FieldByName(FN1).AsInteger;
|
||||
|
||||
FN1 := GetFieldName(FEventMappings, 'AlarmAdvanceType');
|
||||
if FN1 = '' then
|
||||
FN1 := GetFieldName(FEventMappings, 'AlarmAdvType'); // deprecated
|
||||
if (FN1 <> '') then
|
||||
Event.AlarmAdvanceType := TVpAlarmAdvType(FieldByName(FN1).AsInteger);
|
||||
|
||||
FN1 := GetFieldName(FEventMappings, 'SnoozeTime');
|
||||
if (FN1 <> '') then
|
||||
Event.SnoozeTime := FieldByName(FN1).AsDateTime;
|
||||
|
||||
FN1 := GetFieldName(FEventMappings, 'RepeatCode');
|
||||
if (FN1 <> '') then
|
||||
Event.RepeatCode := TVpRepeatType(FieldByName(FN1).AsInteger);
|
||||
|
||||
FN1 := GetFieldName(FEventMappings, 'RepeatRangeEnd');
|
||||
if (FN1 <> '') then
|
||||
Event.RepeatRangeEnd := FieldByName(FN1).AsDateTime;
|
||||
|
||||
FN1 := GetfieldName(FEventMappings, 'CustomInterval');
|
||||
if FN1 = '' then
|
||||
FN1 := GetFieldName(FEventMappings, 'CustInterval');
|
||||
if (FN1 <> '') then
|
||||
Event.CustomInterval := FieldByName(FN1).AsInteger;
|
||||
|
||||
FN1 := GetFieldName(FEventMappings, 'UserField0');
|
||||
if (FN1 <> '') then
|
||||
Event.UserField0 := FieldByName(FN1).AsString;
|
||||
|
||||
FN1 := GetFieldName(FEventMappings, 'UserField1');
|
||||
if (FN1 <> '') then
|
||||
Event.UserField1 := FieldByName(FN1).AsString;
|
||||
|
||||
FN1 := GetFieldName(FEventMappings, 'UserField2');
|
||||
if (FN1 <> '') then
|
||||
Event.UserField2 := FieldByName(FN1).AsString;
|
||||
|
||||
FN1 := GetFieldName(FEventMappings, 'UserField3');
|
||||
if (FN1 <> '') then
|
||||
Event.UserField3 := FieldByName(FN1).AsString;
|
||||
|
||||
FN1 := GetFieldName(FEventMappings, 'UserField4');
|
||||
if (FN1 <> '') then
|
||||
Event.UserField4 := FieldByName(FN1).AsString;
|
||||
|
||||
FN1 := GetFieldName(FEventMappings, 'UserField5');
|
||||
if (FN1 <> '') then
|
||||
Event.UserField5 := FieldByName(FN1).AsString;
|
||||
|
||||
FN1 := GetFieldName(FEventMappings, 'UserField6');
|
||||
if (FN1 <> '') then
|
||||
Event.UserField6 := FieldByName(FN1).AsString;
|
||||
|
||||
FN1 := GetFieldName(FEventMappings, 'UserField7');
|
||||
if (FN1 <> '') then
|
||||
Event.UserField7 := FieldByName(FN1).AsString;
|
||||
|
||||
FN1 := GetFieldName(FEventMappings, 'UserField8');
|
||||
if (FN1 <> '') then
|
||||
Event.UserField8 := FieldByName(FN1).AsString;
|
||||
|
||||
FN1 := GetFieldName(FEventMappings, 'UserField9');
|
||||
if (FN1 <> '') then
|
||||
Event.UserField9 := FieldByName(FN1).AsString;
|
||||
|
||||
Event.Loading := false;
|
||||
end; {if Event <> nil}
|
||||
end; {if (FN1 <> '') and (FN2 <> '') and (FN3 <> '')}
|
||||
Next;
|
||||
end; {while}
|
||||
end; {with FEventsDataSrc.Dataset}
|
||||
end; {if resource <> nil}
|
||||
end;
|
||||
(*
|
||||
procedure TVpFlexDataStore.LoadEvents;
|
||||
var
|
||||
Event: TVpEvent;
|
||||
@ -681,7 +825,7 @@ begin
|
||||
end; {while}
|
||||
end; {with FEventsDataSrc.Dataset}
|
||||
end; {if resource <> nil}
|
||||
end;
|
||||
end;*)
|
||||
{=====}
|
||||
|
||||
procedure TVpFlexDataStore.LoadContacts;
|
||||
|
Loading…
Reference in New Issue
Block a user