From 74f08ceafe9174306c1764958d2b0e7172a5d88f Mon Sep 17 00:00:00 2001 From: wp_xxyyzz Date: Sat, 11 Jun 2016 14:09:10 +0000 Subject: [PATCH] tvplanit: Add new event field "Location". Rename some fields for more consistency. Undo some of the changes in previous commit inspired by CodeTyphoon version. git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@4717 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- components/tvplanit/languages/vpsr.de.po | 4 + components/tvplanit/languages/vpsr.po | 4 + components/tvplanit/source/vpadvds.pas | 99 +++++++++++------- components/tvplanit/source/vpalarmdlg.lfm | 2 +- components/tvplanit/source/vpalarmdlg.pas | 47 +++------ components/tvplanit/source/vpbdeds.pas | 95 ++++++++++------- components/tvplanit/source/vpdata.pas | 44 +++++--- components/tvplanit/source/vpdbds.pas | 78 +++++++++----- components/tvplanit/source/vpdbisamds.pas | 104 ++++++++++++------- components/tvplanit/source/vpevnteditdlg.lfm | 60 +++++++---- components/tvplanit/source/vpevnteditdlg.pas | 14 ++- components/tvplanit/source/vpflxds.pas | 66 +++++++----- components/tvplanit/source/vpmisc.pas | 1 - components/tvplanit/source/vpsr.inc | 1 + 14 files changed, 377 insertions(+), 242 deletions(-) diff --git a/components/tvplanit/languages/vpsr.de.po b/components/tvplanit/languages/vpsr.de.po index 1fc2a0309..2397da100 100644 --- a/components/tvplanit/languages/vpsr.de.po +++ b/components/tvplanit/languages/vpsr.de.po @@ -571,6 +571,10 @@ msgstr "F" msgid "M" msgstr "M" +#: vpsr.rslocationlbl +msgid "Location:" +msgstr "Ort:" + #: vpsr.rslsaturday msgctxt "vpsr.rslsaturday" msgid "S" diff --git a/components/tvplanit/languages/vpsr.po b/components/tvplanit/languages/vpsr.po index f2ef84262..da7235132 100644 --- a/components/tvplanit/languages/vpsr.po +++ b/components/tvplanit/languages/vpsr.po @@ -561,6 +561,10 @@ msgstr "" msgid "M" msgstr "" +#: vpsr.rslocationlbl +msgid "Location:" +msgstr "" + #: vpsr.rslsaturday msgctxt "vpsr.rslsaturday" msgid "S" diff --git a/components/tvplanit/source/vpadvds.pas b/components/tvplanit/source/vpadvds.pas index 020301446..1ab860731 100644 --- a/components/tvplanit/source/vpadvds.pas +++ b/components/tvplanit/source/vpadvds.pas @@ -542,6 +542,8 @@ var I: Integer; Event: TVpEvent; Qry: TAdsQuery; + F: TField; + FixedLoc, FixedLocP: String; begin if (Resource <> nil) and Resource.EventsDirty then begin Qry := TAdsQuery.Create(self); @@ -566,6 +568,14 @@ begin Qry.ParamByName('ID').AsInteger := Event.RecordID; Qry.Open; + if Qry.FieldByName('Location') <> nil then begin + FixedLoc := 'Location, '; + FixedLocP := ':Loc, '; + end else begin + FixedLoc := ''; + FixedLocP := ''; + end; + if Qry.Locate('RecordID', Event.RecordID, []) then begin { existing record found } @@ -576,9 +586,11 @@ begin Qry.FieldByName('EndTime').AsDateTime := Event.EndTime; Qry.FieldByName('ResourceID').AsInteger := Resource.ResourceID; Qry.FieldByName('Description').AsString := Event.Description; - Qry.FieldByName('Notes').AsString := Event.Note; + F := Qry.FieldByName('Location'); // new + if F <> nil then F.AsString := Event.Location; + Qry.FieldByName('Notes') := Event.Notes; Qry.FieldByName('Category').AsInteger := Event.Category; - Qry.FieldByName('DingPath').AsString := Event.AlarmWavPath; + Qry.FieldByName('DingPath').AsString := Event.DingPath; Qry.FieldByName('AllDayEvent').AsBoolean := Event.AllDayEvent; Qry.FieldByName('AlarmSet').AsBoolean := Event.AlarmSet; Qry.FieldByName('AlarmAdvance').AsInteger := Event.AlarmAdv; @@ -605,45 +617,47 @@ begin end else begin Qry.Close; Qry.SQL.Text := 'INSERT INTO Events ' - + '(RecordID, StartTime, EndTime, ResourceID, Description, Notes, ' - + 'SnoozeTime, Category, DingPath, AllDayEvent, AlarmSet, ' + + '(RecordID, StartTime, EndTime, ResourceID, Description, ' + FixedLoc + + + 'Notes, SnoozeTime, Category, DingPath, AllDayEvent, AlarmSet, ' + 'AlarmAdvance, AlarmAdvanceType, RepeatCode, ' + 'RepeatRangeEnd, CustomInterval, ' + 'UserField0, UserField1, UserField2, UserField3, UserField4, ' + 'UserField5, UserField6, UserField7, UserField8, UserField9) ' - + 'VALUES(:RecID, :STime, :ETime, :ResID, :Desc, :Notes, :SnTime, ' - + ':Cat, :DPath, :ADEvent, :ASet, :AAdvance, :AAdvanceType, ' - + ':RCode, :RRangeEnd, :CInterval, :UserField0, ' + + 'VALUES(:RecID, :STime, :ETime, :ResID, :Desc, ' + FixedLocP + + ':Notes, :SnTime, :Cat, :DPath, :ADEvent, :ASet, :AAdvance, ' + + ':AAdvanceType, :RCode, :RRangeEnd, :CInterval, :UserField0, ' + ':UserField1, :UserField2, :UserField3, :UserField4, ' + ':UserField5, :UserField6, :UserField7, :UserField8, ' + ':UserField9)'; - Qry.ParamByName('RecID').AsInteger := Event.RecordID; - Qry.ParamByName('STime').AsDateTime := Event.StartTime; - Qry.ParamByName('ETime').AsDateTime := Event.EndTime; - Qry.ParamByName('ResID').AsInteger := Resource.ResourceID; - Qry.ParamByName('Desc').AsString := Event.Description; - Qry.ParamByName('Notes').AsString := Event.Note; - Qry.ParamByName('SnTime').AsDateTime := Event.SnoozeTime; - Qry.ParamByName('Cat').AsInteger := Event.Category; - Qry.ParamByName('DPath').AsString := Event.AlarmWavPath; - Qry.ParamByName('ADEvent').AsBoolean := Event.AllDayEvent; - Qry.ParamByName('ASet').AsBoolean := Event.AlarmSet; - Qry.ParamByName('AAdvance').AsInteger := Event.AlarmAdv; + Qry.ParamByName('RecID').AsInteger := Event.RecordID; + Qry.ParamByName('STime').AsDateTime := Event.StartTime; + Qry.ParamByName('ETime').AsDateTime := Event.EndTime; + Qry.ParamByName('ResID').AsInteger := Resource.ResourceID; + Qry.ParamByName('Desc').AsString := Event.Description; + if FixedLocP <> '' then + Qry.ParamByName('Loc').AsString := Event.Location; + Qry.ParamByName('Notes').AsString := Event.Notes; + Qry.ParamByName('SnTime').AsDateTime := Event.SnoozeTime; + Qry.ParamByName('Cat').AsInteger := Event.Category; + Qry.ParamByName('DPath').AsString := Event.AlarmWavPath; + Qry.ParamByName('ADEvent').AsBoolean := Event.AllDayEvent; + Qry.ParamByName('ASet').AsBoolean := Event.AlarmSet; + Qry.ParamByName('AAdvance').AsInteger := Event.AlarmAdv; Qry.ParamByName('AAdvanceType').AsInteger := Ord(Event.AlarmAdvType); - Qry.ParamByName('RCode').AsInteger := Ord(Event.RepeatCode); - Qry.ParamByName('RRangeEnd').AsDateTime := Event.RepeatRangeEnd; - Qry.ParamByName('CInterval').AsInteger := Event.CustInterval; - Qry.ParamByName('UserField0').AsString := Event.UserField0; - Qry.ParamByName('UserField1').AsString := Event.UserField1; - Qry.ParamByName('UserField2').AsString := Event.UserField2; - Qry.ParamByName('UserField3').AsString := Event.UserField3; - Qry.ParamByName('UserField4').AsString := Event.UserField4; - Qry.ParamByName('UserField5').AsString := Event.UserField5; - Qry.ParamByName('UserField6').AsString := Event.UserField6; - Qry.ParamByName('UserField7').AsString := Event.UserField7; - Qry.ParamByName('UserField8').AsString := Event.UserField8; - Qry.ParamByName('UserField9').AsString := Event.UserField9; + Qry.ParamByName('RCode').AsInteger := Ord(Event.RepeatCode); + Qry.ParamByName('RRangeEnd').AsDateTime := Event.RepeatRangeEnd; + Qry.ParamByName('CInterval').AsInteger := Event.CustInterval; + Qry.ParamByName('UserField0').AsString := Event.UserField0; + Qry.ParamByName('UserField1').AsString := Event.UserField1; + Qry.ParamByName('UserField2').AsString := Event.UserField2; + Qry.ParamByName('UserField3').AsString := Event.UserField3; + Qry.ParamByName('UserField4').AsString := Event.UserField4; + Qry.ParamByName('UserField5').AsString := Event.UserField5; + Qry.ParamByName('UserField6').AsString := Event.UserField6; + Qry.ParamByName('UserField7').AsString := Event.UserField7; + Qry.ParamByName('UserField8').AsString := Event.UserField8; + Qry.ParamByName('UserField9').AsString := Event.UserField9; Qry.ExecSQL; end; @@ -666,6 +680,8 @@ var I: Integer; Contact: TVpContact; Qry: TAdsQuery; + F: TField; + FixedNote, FixedNoteP: Boolean; begin if (Resource <> nil) and Resource.ContactsDirty then begin { Dump this resource's dirty contacts to the DB } @@ -692,6 +708,14 @@ begin Qry.ParamByName('ID').AsInteger := Contact.RecordID; Qry.Open; + if Qry.FieldByName('Note') <> nil then + FixedNote := 'Note, ' + else if Qry.FieldByName('Notes') <> nil then + FixedNote := 'Notes, ' + else + FixedNote := ''; + if FixedNote <> '' then FixedNoteP := ':Notes, ' else FixedNoteP := ''; + if Qry.Locate('RecordID', Contact.RecordID, []) then begin { existing record found } @@ -714,7 +738,9 @@ begin Qry.FieldByName('State').AsString := Contact.State; Qry.FieldByName('Zip').AsString := Contact.Zip; Qry.FieldByName('Country').AsString := Contact.Country; - Qry.FieldByName('Note').AsString := Contact.Note; + F := Qry.FieldByName('Notes'); + if F = nil then F := Qry.FieldByName('Note'); // deprecated + if F <> nil then F.AsString := Contact.Notes; Qry.FieldByName('Phone1').AsString := Contact.Phone1; Qry.FieldByName('Phone2').AsString := Contact.Phone2; Qry.FieldByName('Phone3').AsString := Contact.Phone3; @@ -753,7 +779,7 @@ begin Qry.SQL.Text := 'INSERT INTO Contacts ' + '(ResourceID, RecordID, FirstName, LastName, Birthdate, ' + 'Anniversary, Title, Company, Job_Position, EMail, Address, ' - + 'City, State, Zip, Country, Note, Phone1, Phone2, Phone3, ' + + 'City, State, Zip, Country, ' + FixedNote +'Phone1, Phone2, Phone3, ' + 'Phone4, Phone5, PhoneType1, PhoneType2, PhoneType3, PhoneType4, ' + 'PhoneType5, Category, Custom1, Custom2, Custom3, Custom4, ' + 'UserField0, UserField1, UserField2, UserField3, UserField4, ' @@ -761,7 +787,7 @@ begin + 'VALUES(:ResourceID, :RecordID, :FirstName, :LastName, ' + ':Birthdate, :Anniversary, :Title, :Company, :Job_Position, ' - + ':EMail, :Address, :City, :State, :Zip, :Country, :Note, ' + + ':EMail, :Address, :City, :State, :Zip, :Country, ' + FixedNoteP + ':Phone1, :Phone2, :Phone3, :Phone4, :Phone5, :PhoneType1, ' + ':PhoneType2, :PhoneType3, :PhoneType4, :PhoneType5, :Category, ' + ':Custom1, :Custom2, :Custom3, :Custom4, :UserField0, ' @@ -785,7 +811,8 @@ begin Qry.ParamByName('State').AsString := Contact.State; Qry.ParamByName('Zip').AsString := Contact.Zip; Qry.ParamByName('Country').AsString := Contact.Country; - Qry.ParamByName('Note').AsString := Contact.Note; + if FixedNoteP <> '' then + Qry.ParamByName('Notes').AsString := Contact.Notes; Qry.ParamByName('Phone1').AsString := Contact.Phone1; Qry.ParamByName('Phone2').AsString := Contact.Phone2; Qry.ParamByName('Phone3').AsString := Contact.Phone3; diff --git a/components/tvplanit/source/vpalarmdlg.lfm b/components/tvplanit/source/vpalarmdlg.lfm index 6e9c2ab9c..52090bf44 100644 --- a/components/tvplanit/source/vpalarmdlg.lfm +++ b/components/tvplanit/source/vpalarmdlg.lfm @@ -129,7 +129,7 @@ object AlarmNotifyForm: TAlarmNotifyForm end end object EventDialog: TVpEventEditDialog - Version = 'v1.03' + Version = 'v1.04' TimeFormat = tf24Hour Options = [] Placement.Position = mpCenterTop diff --git a/components/tvplanit/source/vpalarmdlg.pas b/components/tvplanit/source/vpalarmdlg.pas index 0942c6fed..d56ab221a 100644 --- a/components/tvplanit/source/vpalarmdlg.pas +++ b/components/tvplanit/source/vpalarmdlg.pas @@ -103,7 +103,8 @@ implementation {$R *.dfm} {$ENDIF} -uses VpSR; +uses + StrUtils, VpSR; { TVpNotificationDialog } @@ -147,26 +148,29 @@ end; { TAlarmNotifyForm } procedure TAlarmNotifyForm.PopulateSelf; +var + fmt: String; begin if Event <> nil then begin - Caption := RSReminder; // SubjectCaption.Caption := RSSubjectCaption; // NotesCaption.Caption := RSNotesCaption; SnoozeCaption.Caption := RSSnoozeCaption; DismissBtn.Caption := RSDismissBtn; SnoozeBtn.Caption := RSSnoozeBtn; OpenItemBtn.Caption := RSOpenItemBtn; - lNotes.Caption := Event.Note; + lNotes.Caption := Event.Notes; lSubject.Caption := Event.Description; - lTime.caption := dateTimeToStr(Event.StartTime)+' - '+dateTimeToStr(Event.EndTime); - if Now > Event.StartTime then - Self.Caption := RSOverdue + ' : ' - else - Self.Caption := RSReminder + ' : '; + fmt := IfThen(trunc(Event.StartTime) = Date(), 't', 'ddddd t'); + lTime.Caption := Format('%s - %s', [ + FormatDateTime(fmt, Event.StartTime), + FormatDateTime(fmt, Event.EndTime)] ); + if Event.Location <> '' then + lTime.Caption := lTime.Caption + ' (' + Event.Location + ')'; - Self.Caption := Self.Caption + FormatDateTime(ShortDateFormat + ' ' - + ShortTimeFormat, Event.StartTime); + Caption := Format('%s : %s', [ + IfThen(Now > Event.StartTime, RSOverdue, RSReminder), + FormatDateTime(fmt, Event.StartTime) ]); SnoozeCombo.Items.Clear; SnoozeCombo.Items.Add(RS1Minute); @@ -175,13 +179,6 @@ begin SnoozeCombo.Items.Add(Format(RSXMinutes, [15])); SnoozeCombo.Items.Add(Format(RSXMinutes, [30])); SnoozeCombo.Items.Add(Format(RSXMinutes, [45])); - { - SnoozeCombo.Items.Add(RS5Minutes); - SnoozeCombo.Items.Add(RS10Minutes); - SnoozeCombo.Items.Add(RS15Minutes); - SnoozeCombo.Items.Add(RS30Minutes); - SnoozeCombo.Items.Add(RS45Minutes); - } SnoozeCombo.Items.Add(RS1Hour); SnoozeCombo.Items.Add(Format(RSXHours, [2])); SnoozeCombo.Items.Add(Format(RSXHours, [3])); @@ -190,28 +187,12 @@ begin SnoozeCombo.Items.Add(Format(RSXHours, [6])); SnoozeCombo.Items.Add(Format(RSXHours, [7])); SnoozeCombo.Items.Add(Format(RSXHours, [8])); - { - SnoozeCombo.Items.Add(RS2Hours); - SnoozeCombo.Items.Add(RS3Hours); - SnoozeCombo.Items.Add(RS4Hours); - SnoozeCombo.Items.Add(RS5Hours); - SnoozeCombo.Items.Add(RS6Hours); - SnoozeCombo.Items.Add(RS7Hours); - SnoozeCombo.Items.Add(RS8Hours); - } SnoozeCombo.Items.Add(RS1Day); SnoozeCombo.Items.Add(Format(RSXDays, [2])); SnoozeCombo.Items.Add(Format(RSXDays, [3])); SnoozeCombo.Items.Add(Format(RSXDays, [4])); SnoozeCombo.Items.Add(Format(RSXDays, [5])); SnoozeCombo.Items.Add(Format(RSXDays, [6])); - { - SnoozeCombo.Items.Add(RS2Days); - SnoozeCombo.Items.Add(RS3Days); - SnoozeCombo.Items.Add(RS4Days); - SnoozeCombo.Items.Add(RS5Days); - SnoozeCombo.Items.Add(RS6Days); - } SnoozeCombo.Items.Add(RS1Week); SnoozeCombo.ItemIndex := 0; SnoozeDelay := 5 / MinutesInDay; diff --git a/components/tvplanit/source/vpbdeds.pas b/components/tvplanit/source/vpbdeds.pas index 1238bc7fd..d1ebfbdca 100644 --- a/components/tvplanit/source/vpbdeds.pas +++ b/components/tvplanit/source/vpbdeds.pas @@ -586,6 +586,8 @@ var I: Integer; Event: TVpEvent; Qry: TQuery; + F: TField; + FixedLoc, FixedLocP: String; begin if (Resource <> nil) and Resource.EventsDirty then begin Qry := TQuery.Create(self); @@ -610,6 +612,14 @@ begin Qry.ParamByName('ID').AsInteger := Event.RecordID; Qry.Open; + if Qry.FieldByName('Location') = nil then begin + FixedLoc := ''; + FixedLocP := ''; + end else begin + FixedLoc := 'Location, '; + FixedLocP := ':Loc, '; + end; + if Qry.Locate('RecordID', Event.RecordID, []) then begin { existing record found } @@ -620,9 +630,11 @@ begin Qry.FieldByName('EndTime').AsDateTime := Event.EndTime; Qry.FieldByName('ResourceID').AsInteger := Resource.ResourceID; Qry.FieldByName('Description').AsString := Event.Description; - Qry.FieldByName('Notes').AsString := Event.Note; + F := Qry.FieldByName('Location'); // newe + if F <> nil then F.AsString := Event.Location; + Qry.FieldByName('Notes').AsString := Event.Notes; Qry.FieldByName('Category').AsInteger := Event.Category; - Qry.FieldByName('DingPath').AsString := Event.AlarmWavPath; + Qry.FieldByName('DingPath').AsString := Event.DingPath; Qry.FieldByName('AllDayEvent').AsBoolean := Event.AllDayEvent; Qry.FieldByName('AlarmSet').AsBoolean := Event.AlarmSet; Qry.FieldByName('AlarmAdvance').AsInteger := Event.AlarmAdv; @@ -649,45 +661,46 @@ begin end else begin Qry.Close; Qry.SQL.Text := 'INSERT INTO Events ' - + '(RecordID, StartTime, EndTime, ResourceID, Description, Notes, ' - + 'SnoozeTime, Category, DingPath, AllDayEvent, AlarmSet, ' + + '(RecordID, StartTime, EndTime, ResourceID, Description, ' + FixedLocation + + 'Notes, SnoozeTime, Category, DingPath, AllDayEvent, AlarmSet, ' + 'AlarmAdvance, AlarmAdvanceType, RepeatCode, ' + 'RepeatRangeEnd, CustomInterval, ' + 'UserField0, UserField1, UserField2, UserField3, UserField4, ' + 'UserField5, UserField6, UserField7, UserField8, UserField9) ' - + 'VALUES(:RecID, :STime, :ETime, :ResID, :Desc, :Notes, :SnTime, ' - + ':Cat, :DPath, :ADEvent, :ASet, :AAdvance, :AAdvanceType, ' - + ':RCode, :RRangeEnd, :CInterval, :UserField0, ' + + 'VALUES(:RecID, :STime, :ETime, :ResID, :Desc, ' + FixedLoc + + ':Notes, :SnTime, :Cat, :DPath, :ADEvent, :ASet, :AAdvance, ' + + ':AAdvanceType, :RCode, :RRangeEnd, :CInterval, :UserField0, ' + ':UserField1, :UserField2, :UserField3, :UserField4, ' + ':UserField5, :UserField6, :UserField7, :UserField8, ' + ':UserField9)'; - Qry.ParamByName('RecID').AsInteger := Event.RecordID; - Qry.ParamByName('STime').AsDateTime := Event.StartTime; - Qry.ParamByName('ETime').AsDateTime := Event.EndTime; - Qry.ParamByName('ResID').AsInteger := Resource.ResourceID; - Qry.ParamByName('Desc').AsString := Event.Description; - Qry.ParamByName('Notes').AsString := Event.Note; - Qry.ParamByName('SnTime').AsDateTime := Event.SnoozeTime; - Qry.ParamByName('Cat').AsInteger := Event.Category; - Qry.ParamByName('DPath').AsString := Event.AlarmWavPath; - Qry.ParamByName('ADEvent').AsBoolean := Event.AllDayEvent; - Qry.ParamByName('ASet').AsBoolean := Event.AlarmSet; - Qry.ParamByName('AAdvance').AsInteger := Event.AlarmAdv; + Qry.ParamByName('RecID').AsInteger := Event.RecordID; + Qry.ParamByName('STime').AsDateTime := Event.StartTime; + Qry.ParamByName('ETime').AsDateTime := Event.EndTime; + Qry.ParamByName('ResID').AsInteger := Resource.ResourceID; + Qry.ParamByName('Desc').AsString := Event.Description; + if FixedLocP <> '' then Qry.ParamByName('Loc').AsString := Event.Location; + Qry.ParamByName('Notes').AsString := Event.Notes; + Qry.ParamByName('SnTime').AsDateTime := Event.SnoozeTime; + Qry.ParamByName('Cat').AsInteger := Event.Category; + Qry.ParamByName('DPath').AsString := Event.DingPath; + Qry.ParamByName('ADEvent').AsBoolean := Event.AllDayEvent; + Qry.ParamByName('ASet').AsBoolean := Event.AlarmSet; + Qry.ParamByName('AAdvance').AsInteger := Event.AlarmAdv; Qry.ParamByName('AAdvanceType').AsInteger := Ord(Event.AlarmAdvType); - Qry.ParamByName('RCode').AsInteger := Ord(Event.RepeatCode); - Qry.ParamByName('RRangeEnd').AsDateTime := Event.RepeatRangeEnd; - Qry.ParamByName('CInterval').AsInteger := Event.CustInterval; - Qry.ParamByName('UserField0').AsString := Event.UserField0; - Qry.ParamByName('UserField1').AsString := Event.UserField1; - Qry.ParamByName('UserField2').AsString := Event.UserField2; - Qry.ParamByName('UserField3').AsString := Event.UserField3; - Qry.ParamByName('UserField4').AsString := Event.UserField4; - Qry.ParamByName('UserField5').AsString := Event.UserField5; - Qry.ParamByName('UserField6').AsString := Event.UserField6; - Qry.ParamByName('UserField7').AsString := Event.UserField7; - Qry.ParamByName('UserField8').AsString := Event.UserField8; - Qry.ParamByName('UserField9').AsString := Event.UserField9; + Qry.ParamByName('RCode').AsInteger := Ord(Event.RepeatCode); + Qry.ParamByName('RRangeEnd').AsDateTime := Event.RepeatRangeEnd; + Qry.ParamByName('CInterval').AsInteger := Event.CustInterval; + Qry.ParamByName('UserField0').AsString := Event.UserField0; + Qry.ParamByName('UserField1').AsString := Event.UserField1; + Qry.ParamByName('UserField2').AsString := Event.UserField2; + Qry.ParamByName('UserField3').AsString := Event.UserField3; + Qry.ParamByName('UserField4').AsString := Event.UserField4; + Qry.ParamByName('UserField5').AsString := Event.UserField5; + Qry.ParamByName('UserField6').AsString := Event.UserField6; + Qry.ParamByName('UserField7').AsString := Event.UserField7; + Qry.ParamByName('UserField8').AsString := Event.UserField8; + Qry.ParamByName('UserField9').AsString := Event.UserField9; Qry.ExecSQL; end; @@ -710,6 +723,8 @@ var I: Integer; Contact: TVpContact; Qry: TQuery; + F: TField; + FixedNote, FixedNoteP: String; begin if (Resource <> nil) and Resource.ContactsDirty then begin { Dump this resource's dirty contacts to the DB } @@ -736,6 +751,12 @@ begin Qry.ParamByName('ID').AsInteger := Contact.RecordID; Qry.Open; + // Fix name change of "Note" field + if Qry.FieldByName('Notes') <> nil then FixedNote := 'Notes, ' else + if Qry.FieldByName('Note') <> nil then FixedNote := 'Note, ' + else FixedNote := ''; + if FixedNote <> '' then FixedNoteP := ':Notes, ' else FixeNoteP := ''; + if Qry.Locate('RecordID', Contact.RecordID, []) then begin { existing record found } @@ -758,7 +779,9 @@ begin Qry.FieldByName('State').AsString := Contact.State; Qry.FieldByName('Zip').AsString := Contact.Zip; Qry.FieldByName('Country').AsString := Contact.Country; - Qry.FieldByName('Note').AsString := Contact.Note; + F := Qry.FieldByName('Notes'); + if F = nil then F := Qry.FieldByName('Note'); // deprecated + if F <> nil then F.AsString := Contact.Notes; Qry.FieldByName('Phone1').AsString := Contact.Phone1; Qry.FieldByName('Phone2').AsString := Contact.Phone2; Qry.FieldByName('Phone3').AsString := Contact.Phone3; @@ -797,7 +820,7 @@ begin Qry.SQL.Text := 'INSERT INTO Contacts ' + '(ResourceID, RecordID, FirstName, LastName, Birthdate, ' + 'Anniversary, Title, Company, Job_Position, EMail, Address, ' - + 'City, State, Zip, Country, Note, Phone1, Phone2, Phone3, ' + + 'City, State, Zip, Country, ' + FixedNote + 'Phone1, Phone2, Phone3, ' + 'Phone4, Phone5, PhoneType1, PhoneType2, PhoneType3, PhoneType4, ' + 'PhoneType5, Category, Custom1, Custom2, Custom3, Custom4, ' + 'UserField0, UserField1, UserField2, UserField3, UserField4, ' @@ -805,7 +828,7 @@ begin + 'VALUES(:ResourceID, :RecordID, :FirstName, :LastName, ' + ':Birthdate, :Anniversary, :Title, :Company, :Job_Position, ' - + ':EMail, :Address, :City, :State, :Zip, :Country, :Note, ' + + ':EMail, :Address, :City, :State, :Zip, :Country, ' + FixedNoteP + ':Phone1, :Phone2, :Phone3, :Phone4, :Phone5, :PhoneType1, ' + ':PhoneType2, :PhoneType3, :PhoneType4, :PhoneType5, :Category, ' + ':Custom1, :Custom2, :Custom3, :Custom4, :UserField0, ' @@ -829,7 +852,7 @@ begin Qry.ParamByName('State').AsString := Contact.State; Qry.ParamByName('Zip').AsString := Contact.Zip; Qry.ParamByName('Country').AsString := Contact.Country; - Qry.ParamByName('Note').AsString := Contact.Note; + if FixedNote <> '' then Qry.ParamByName('Notes').AsString := Contact.Notes; Qry.ParamByName('Phone1').AsString := Contact.Phone1; Qry.ParamByName('Phone2').AsString := Contact.Phone2; Qry.ParamByName('Phone3').AsString := Contact.Phone3; diff --git a/components/tvplanit/source/vpdata.pas b/components/tvplanit/source/vpdata.pas index 82e185392..8ae919621 100644 --- a/components/tvplanit/source/vpdata.pas +++ b/components/tvplanit/source/vpdata.pas @@ -188,8 +188,6 @@ type { TVpEvent } TVpEvent = class - private - FLocation: string; protected{private} FOwner: TVpSchedule; FItemIndex: Integer; @@ -205,7 +203,8 @@ type FAlertDisplayed: Boolean; FAlarmAdvType: TVpAlarmAdvType; FRecordID: Int64; - FNote: string; + FLocation: string; + FNotes: string; FDescription: string; FStartTime: TDateTime; FEndTime: TDateTime; @@ -236,7 +235,8 @@ type procedure SetCategory(Value: Integer); procedure SetDescription(const Value: string); procedure SetEndTime(Value: TDateTime); - procedure SetNote(const Value: string); + procedure SetLocation(const Value: String); + procedure SetNotes(const Value: string); procedure SetRecordID(Value: Int64); procedure SetStartTime(Value: TDateTime); procedure SetCustInterval(Value: Integer); @@ -245,7 +245,8 @@ type public constructor Create(Owner: TVpSchedule); destructor Destroy; override; - property AlarmWavPath: string read FDingPath write SetDingPath; + property DingPath: string read FDingPath write SetDingPath; + property AlarmWavPath: string read FDingPath write SetDingPath; deprecated 'Use "DingPath" instead'; property AlertDisplayed: Boolean read FAlertDisplayed write FAlertDisplayed; property AllDayEvent: Boolean read FAllDayEvent write SetAllDayEvent; property Changed: Boolean read FChanged write SetChanged; @@ -255,11 +256,12 @@ type property StartTime : TDateTime read FStartTime write SetStartTime; property EndTime : TDateTime read FEndTime write SetEndTime; property Description : string read FDescription write SetDescription; - property Note : string read FNote write SetNote; + property Notes : string read FNotes write SetNotes; + property Note: String read FNotes write SetNotes; deprecated 'Use "Notes" instead'; property Category : Integer read FCategory write SetCategory; property AlarmSet : Boolean read FAlarmSet write SetAlarmSet; property AlarmAdv : Integer read FAlarmAdv write SetAlarmAdv; - property Location: string read FLocation write FLocation; + property Location: string read FLocation write SetLocation; property Loading : Boolean read FLoading write FLoading; { 0=Minutes, 1=Hours, 2=Days } property AlarmAdvType : TVpAlarmAdvType read FAlarmAdvType write SetAlarmAdvType; @@ -445,7 +447,7 @@ type FState : string; FZip : string; FCountry : string; - FNote : string; + FNotes : string; FPrivateRec : boolean; FCategory : integer; FCustom1 : string; @@ -480,7 +482,7 @@ type procedure SetEMail(const Value: string); procedure SetFirstName(const Value: string); procedure SetLastName(const Value: string); - procedure SetNote(const Value: string); + procedure SetNotes(const Value: string); procedure SetPhone1(const Value: string); procedure SetPhone2(const Value: string); procedure SetPhone3(const Value: string); @@ -528,7 +530,8 @@ type property State : string read FState write SetState; property Zip : string read FZip write SetZip; property Country : string read FCountry write SetCountry; - property Note : string read FNote write SetNote; + property Note : string read FNotes write SetNotes; deprecated 'Use "Notes" instead'; + property Notes : string read FNotes write SetNotes; property Category : integer read FCategory write SetCategory; property Custom1 : string read FCustom1 write SetCustom1; property Custom2 : string read FCustom2 write SetCustom2; @@ -954,10 +957,19 @@ begin end; {=====} -procedure TVpEvent.SetNote(const Value: string); +procedure TVpEvent.SetLocation(const Value: String); begin - if Value <> FNote then begin - FNote := Value; + if Value <> FLocation then begin + FLocation := Value; + Changed := true; + end; +end; +{=====} + +procedure TVpEvent.SetNotes(const Value: string); +begin + if Value <> FNotes then begin + FNotes := Value; Changed := true; end; end; @@ -1604,10 +1616,10 @@ begin end; {=====} -procedure TVpContact.SetNote(const Value: string); +procedure TVpContact.SetNotes(const Value: string); begin - if Value <> FNote then begin - FNote := Value; + if Value <> FNotes then begin + FNotes := Value; Changed := true; end; end; diff --git a/components/tvplanit/source/vpdbds.pas b/components/tvplanit/source/vpdbds.pas index 9d5fa34b7..01e636df1 100644 --- a/components/tvplanit/source/vpdbds.pas +++ b/components/tvplanit/source/vpdbds.pas @@ -143,7 +143,7 @@ begin { Resource ID } with AddFieldDef do begin Name := 'ResourceID'; - DataType := ftAutoInc; //ftInteger; + DataType := ftInteger; Required := true; end; { Description } @@ -249,7 +249,7 @@ begin { Record ID } with AddFieldDef do begin Name := 'RecordID'; - DataType := ftAutoInc; //ftInteger; + DataType := ftInteger; Required := true; end; { StartTime } @@ -277,6 +277,13 @@ begin Size := 255; Required := false; end; + { Locataion } // new + with AddFieldDef do begin + Name := 'Location'; + DataType := ftString; + Size := 255; + Required := false; + end; { Note } with AddFieldDef do begin Name := 'Notes'; @@ -422,7 +429,7 @@ begin { Record ID } with AddFieldDef do begin Name := 'RecordID'; - DataType := ftAutoInc; //ftInteger; + DataType := ftInteger; Required := true; end; { Resource ID } @@ -515,7 +522,7 @@ begin end; { Note } with AddFieldDef do begin - Name := 'Note'; + Name := 'Notes'; // was: "Note" in old version DataType := ftString; Size := 1024; Required := false; @@ -703,7 +710,7 @@ begin { Record ID } with AddFieldDef do begin Name := 'RecordID'; - DataType := ftAutoInc; //ftInteger; + DataType := ftInteger; Required := true; end; { Resource ID } @@ -1014,33 +1021,37 @@ end; procedure TVpCustomDBDataStore.LoadEvents; var Event: TVpEvent; + F: TField; begin if Resource <> nil then { Load this resource's events into memory } with EventsTable do begin - - SetFilterCriteria(EventsTable, - True, - ResourceTable.FieldByName('ResourceID').AsInteger, - TimeRange.StartTime, - TimeRange.EndTime); + SetFilterCriteria( + EventsTable, + True, + ResourceTable.FieldByName('ResourceID').AsInteger, + TimeRange.StartTime, + TimeRange.EndTime + ); First; - while not EventsTable.EOF do begin - Event := Resource.Schedule.AddEvent(FieldByName('RecordID').AsInteger, + Event := Resource.Schedule.AddEvent( + FieldByName('RecordID').AsInteger, FieldByName('StartTime').AsDateTime, - FieldByName('EndTime').AsDateTime); + FieldByName('EndTime').AsDateTime + ); if Event <> nil then begin Event.Loading := true; Event.Description := FieldByName('Description').AsString; - Event.Note := FieldByName('Notes').AsString; + F := FieldByName('Location'); // new + if F <> nil then Event.Location := F.AsString; + Event.Notes := FieldByName('Notes').AsString; Event.Category := FieldByName('Category').AsInteger; Event.AlarmWavPath := FieldByName('DingPath').AsString; Event.AllDayEvent := FieldByName('AllDayEvent').AsBoolean; Event.AlarmSet := FieldByName('AlarmSet').AsBoolean; Event.AlarmAdv := FieldByName('AlarmAdvance').AsInteger; - Event.AlarmAdvType := TVpAlarmAdvType( - FieldByName('AlarmAdvanceType').AsInteger); + Event.AlarmAdvType := TVpAlarmAdvType(FieldByName('AlarmAdvanceType').AsInteger); Event.SnoozeTime := FieldByName('SnoozeTime').AsDateTime; Event.RepeatCode := TVpRepeatType(FieldByName('RepeatCode').AsInteger); Event.RepeatRangeEnd := FieldByName('RepeatRangeEnd').AsDateTime; @@ -1068,6 +1079,7 @@ end; procedure TVpCustomDBDataStore.LoadContacts; var Contact: TVpContact; + F: TField; begin if (Resource <> nil) then with ContactsTable do begin @@ -1092,7 +1104,9 @@ begin Contact.State := FieldByName('State').AsString; Contact.Zip := FieldByName('Zip').AsString; Contact.Country := FieldByName('Country').AsString; - Contact.Note := FieldByName('Note').AsString; + F := FieldByName('Notes'); + if F = nil then F := FieldByName('Note'); // deprecated + if F <> nil then Contact.Notes := F.AsString; Contact.Phone1 := FieldByName('Phone1').AsString; Contact.Phone2 := FieldByName('Phone2').AsString; Contact.Phone3 := FieldByName('Phone3').AsString; @@ -1168,6 +1182,7 @@ procedure TVpCustomDBDataStore.PostContacts; var I: Integer; Contact: TVpContact; + F: TField; begin if (Resource <> nil) and Resource.ContactsDirty then begin { Dump this resource's dirty contacts to the DB } @@ -1216,7 +1231,9 @@ begin ContactsTable.FieldByName('State').AsString := Contact.State; ContactsTable.FieldByName('Zip').AsString := Contact.Zip; ContactsTable.FieldByName('Country').AsString := Contact.Country; - ContactsTable.FieldByName('Note').AsString := Contact.Note; + F := ContactsTable.FieldByName('Notes'); + if F = nil then F := ContactsTable.FieldByName('Note'); + if F <> nil then F.AsString := Contact.Notes; ContactsTable.FieldByName('Phone1').AsString := Contact.Phone1; ContactsTable.FieldByName('Phone2').AsString := Contact.Phone2; ContactsTable.FieldByName('Phone3').AsString := Contact.Phone3; @@ -1273,6 +1290,7 @@ procedure TVpCustomDBDataStore.PostEvents; var J: Integer; Event: TVpEvent; + F: TField; begin if (Resource <> nil) and Resource.EventsDirty then begin { Dump this resource's dirty events to the DB } @@ -1310,9 +1328,11 @@ begin EventsTable.FieldByName('EndTime').AsDateTime := Event.EndTime; EventsTable.FieldByName('ResourceID').AsInteger := Resource.ResourceID; EventsTable.FieldByName('Description').AsString := Event.Description; - EventsTable.FieldByName('Notes').AsString := Event.Note; + F := EventsTable.FieldByName('Location'); // new + if F <> nil then F.AsString := Event.Location; + EventsTable.FieldByName('Notes').AsString := Event.Notes; EventsTable.FieldByName('Category').AsInteger := Event.Category; - EventsTable.FieldByName('DingPath').AsString := Event.AlarmWavPath; + EventsTable.FieldByName('DingPath').AsString := Event.DingPath; EventsTable.FieldByName('AllDayEvent').AsBoolean := Event.AllDayEvent; EventsTable.FieldByName('AlarmSet').AsBoolean := Event.AlarmSet; EventsTable.FieldByName('AlarmAdvance').AsInteger := Event.AlarmAdv; @@ -1573,6 +1593,7 @@ end; procedure TVpCustomDBDataStore.RefreshContacts; var Contact: TVpContact; + F: TField; begin if Resource <> nil then begin { Clear the Contacts } @@ -1599,7 +1620,9 @@ begin Contact.State := FieldByName('State').AsString; Contact.Zip := FieldByName('Zip').AsString; Contact.Country := FieldByName('Country').AsString; - Contact.Note := FieldByName('Note').AsString; + F := FieldByName('Notes'); + if F = nil then F := FieldByName('Note'); // deprecated + if F <> nil then Contact.Notes := F.AsString; Contact.Phone1 := FieldByName('Phone1').AsString; Contact.Phone2 := FieldByName('Phone2').AsString; Contact.Phone3 := FieldByName('Phone3').AsString; @@ -1637,6 +1660,7 @@ end; procedure TVpCustomDBDataStore.RefreshEvents; var Event: TVpEvent; + F: TField; begin if Resource <> nil then begin { Clear the Events } @@ -1659,9 +1683,11 @@ begin Event.Loading := true; {prevents the events changed flag from being set} // Event.RecordID := FieldByName('RecordID').AsInteger; Event.Description := FieldByName('Description').AsString; - Event.Note := FieldByName('Notes').AsString; + F := FieldByName('Location'); // new + if F <> nil then Event.Location := F.AsString; + Event.Notes := FieldByName('Notes').AsString; Event.Category := FieldByName('Category').AsInteger; - Event.AlarmWavPath := FieldByName('DingPath').AsString; + Event.DingPath := FieldByName('DingPath').AsString; Event.AllDayEvent := FieldByName('AllDayEvent').AsBoolean; Event.AlarmSet := FieldByName('AlarmSet').AsBoolean; Event.AlarmAdv := FieldByName('AlarmAdvance').AsInteger; @@ -1823,8 +1849,8 @@ var begin if aUseDateTime then filter := Format('ResourceID = %d ' - + 'and (( (StartTime >= %s) and (EndTime <= %s) ) ' - + ' or ( (RepeatCode > 0) and (%s <= RepeatRangeEnd) ))', + + 'and ( ( (StartTime >= %s) and (EndTime <= %s) ) ' + + ' or ( (RepeatCode > 0) and (%s <= RepeatRangeEnd) ) )', [aResourceID, QuotedStr(FormatDateTime('c', aStartDateTime)), QuotedStr(FormatDateTime('c', aEndDateTime)), diff --git a/components/tvplanit/source/vpdbisamds.pas b/components/tvplanit/source/vpdbisamds.pas index a619850c7..97597d94c 100644 --- a/components/tvplanit/source/vpdbisamds.pas +++ b/components/tvplanit/source/vpdbisamds.pas @@ -78,10 +78,8 @@ type function GetNextID(TableName: string): Int64; override; procedure Load; override; procedure CreateTable(TableName: string); - procedure CreateIndexDefs(const TableName : string; - IndexDefs : TIndexDefs); override; - procedure CreateFieldDefs(const TableName : string; FieldDefs : TFieldDefs); - override; + procedure CreateIndexDefs(const TableName : string; IndexDefs : TIndexDefs); override; + procedure CreateFieldDefs(const TableName : string; FieldDefs : TFieldDefs); override; procedure PostResources; override; procedure PostEvents; override; @@ -574,6 +572,8 @@ var I: Integer; Event: TVpEvent; Qry: TDBISAMQuery; + F: TField; + FixedLoc, FixedLocP: String; begin if (Resource <> nil) and Resource.EventsDirty then begin Qry := TDBISAMQuery.Create(self); @@ -599,6 +599,14 @@ begin Qry.ParamByName('ID').AsInteger := Event.RecordID; Qry.Open; + if Qry.FieldByName('Location') <> nil then begin + FixedLoc := 'Location, '; + FixedLocP := ':Loc, '; + end else begin + FixedLoc := ''; + FixedLocP := ''; + end; + if Qry.Locate('RecordID', Event.RecordID, []) then begin { existing record found } @@ -609,9 +617,11 @@ begin Qry.FieldByName('EndTime').AsDateTime := Event.EndTime; Qry.FieldByName('ResourceID').AsInteger := Resource.ResourceID; Qry.FieldByName('Description').AsString := Event.Description; - Qry.FieldByName('Notes').AsString := Event.Note; + F := Qry.FieldByName('Location'); // new + if F <> nil then F.AsString := Event.Location; + Qry.FieldByName('Notes').AsString := Event.Notes; Qry.FieldByName('Category').AsInteger := Event.Category; - Qry.FieldByName('DingPath').AsString := Event.AlarmWavPath; + Qry.FieldByName('DingPath').AsString := Event.DingPath; Qry.FieldByName('AllDayEvent').AsBoolean := Event.AllDayEvent; Qry.FieldByName('AlarmSet').AsBoolean := Event.AlarmSet; Qry.FieldByName('AlarmAdvance').AsInteger := Event.AlarmAdv; @@ -638,45 +648,46 @@ begin end else begin Qry.Close; Qry.SQL.Text := 'INSERT INTO Events ' - + '(RecordID, StartTime, EndTime, ResourceID, Description, Notes, ' - + 'SnoozeTime, Category, DingPath, AllDayEvent, AlarmSet, ' + + '(RecordID, StartTime, EndTime, ResourceID, Description, ' + FixedLoc + + 'Notes, SnoozeTime, Category, DingPath, AllDayEvent, AlarmSet, ' + 'AlarmAdvance, AlarmAdvanceType, RepeatCode, ' + 'RepeatRangeEnd, CustomInterval, ' + 'UserField0, UserField1, UserField2, UserField3, UserField4, ' + 'UserField5, UserField6, UserField7, UserField8, UserField9) ' - + 'VALUES(:RecID, :STime, :ETime, :ResID, :Desc, :Notes, :SnTime, ' - + ':Cat, :DPath, :ADEvent, :ASet, :AAdvance, :AAdvanceType, ' - + ':RCode, :RRangeEnd, :CInterval, :UserField0, ' + + 'VALUES(:RecID, :STime, :ETime, :ResID, :Desc, ' + FixedLocP + + ':Notes, :SnTime, :Cat, :DPath, :ADEvent, :ASet, :AAdvance, ' + + ':AAdvanceType, :RCode, :RRangeEnd, :CInterval, :UserField0, ' + ':UserField1, :UserField2, :UserField3, :UserField4, ' + ':UserField5, :UserField6, :UserField7, :UserField8, ' + ':UserField9)'; - Qry.ParamByName('RecID').AsInteger := Event.RecordID; - Qry.ParamByName('STime').AsDateTime := Event.StartTime; - Qry.ParamByName('ETime').AsDateTime := Event.EndTime; - Qry.ParamByName('ResID').AsInteger := Resource.ResourceID; - Qry.ParamByName('Desc').AsString := Event.Description; - Qry.ParamByName('Notes').AsString := Event.Note; - Qry.ParamByName('SnTime').AsDateTime := Event.SnoozeTime; - Qry.ParamByName('Cat').AsInteger := Event.Category; - Qry.ParamByName('DPath').AsString := Event.AlarmWavPath; - Qry.ParamByName('ADEvent').AsBoolean := Event.AllDayEvent; - Qry.ParamByName('ASet').AsBoolean := Event.AlarmSet; - Qry.ParamByName('AAdvance').AsInteger := Event.AlarmAdv; + Qry.ParamByName('RecID').AsInteger := Event.RecordID; + Qry.ParamByName('STime').AsDateTime := Event.StartTime; + Qry.ParamByName('ETime').AsDateTime := Event.EndTime; + Qry.ParamByName('ResID').AsInteger := Resource.ResourceID; + Qry.ParamByName('Desc').AsString := Event.Description; + if FixedLocP <> '' then Qry.ParamByName('Loc').AsString := Event.Location; + Qry.ParamByName('Notes').AsString := Event.Note; + Qry.ParamByName('SnTime').AsDateTime := Event.SnoozeTime; + Qry.ParamByName('Cat').AsInteger := Event.Category; + Qry.ParamByName('DPath').AsString := Event.AlarmWavPath; + Qry.ParamByName('ADEvent').AsBoolean := Event.AllDayEvent; + Qry.ParamByName('ASet').AsBoolean := Event.AlarmSet; + Qry.ParamByName('AAdvance').AsInteger := Event.AlarmAdv; Qry.ParamByName('AAdvanceType').AsInteger := Ord(Event.AlarmAdvType); - Qry.ParamByName('RCode').AsInteger := Ord(Event.RepeatCode); - Qry.ParamByName('RRangeEnd').AsDateTime := Event.RepeatRangeEnd; - Qry.ParamByName('CInterval').AsInteger := Event.CustInterval; - Qry.ParamByName('UserField0').AsString := Event.UserField0; - Qry.ParamByName('UserField1').AsString := Event.UserField1; - Qry.ParamByName('UserField2').AsString := Event.UserField2; - Qry.ParamByName('UserField3').AsString := Event.UserField3; - Qry.ParamByName('UserField4').AsString := Event.UserField4; - Qry.ParamByName('UserField5').AsString := Event.UserField5; - Qry.ParamByName('UserField6').AsString := Event.UserField6; - Qry.ParamByName('UserField7').AsString := Event.UserField7; - Qry.ParamByName('UserField8').AsString := Event.UserField8; - Qry.ParamByName('UserField9').AsString := Event.UserField9; + Qry.ParamByName('RCode').AsInteger := Ord(Event.RepeatCode); + Qry.ParamByName('RRangeEnd').AsDateTime := Event.RepeatRangeEnd; + Qry.ParamByName('CInterval').AsInteger := Event.CustInterval; + Qry.ParamByName('UserField0').AsString := Event.UserField0; + Qry.ParamByName('UserField1').AsString := Event.UserField1; + Qry.ParamByName('UserField2').AsString := Event.UserField2; + Qry.ParamByName('UserField3').AsString := Event.UserField3; + Qry.ParamByName('UserField4').AsString := Event.UserField4; + Qry.ParamByName('UserField5').AsString := Event.UserField5; + Qry.ParamByName('UserField6').AsString := Event.UserField6; + Qry.ParamByName('UserField7').AsString := Event.UserField7; + Qry.ParamByName('UserField8').AsString := Event.UserField8; + Qry.ParamByName('UserField9').AsString := Event.UserField9; Qry.ExecSQL; end; @@ -705,6 +716,8 @@ var I: Integer; Contact: TVpContact; Qry: TDBISAMQuery; + F: TField; + FixedNote, FixedNoteP: String; begin if (Resource <> nil) and Resource.ContactsDirty then begin { Dump this resource's dirty contacts to the DB } @@ -732,6 +745,15 @@ begin Qry.ParamByName('ID').AsInteger := Contact.RecordID; Qry.Open; + if Qry.FieldByName('Notes') <> nil then begin + FixedNote := 'Notes, '; FixedNoteP := ':Note, '; + end else + if Qry.FieldByName('Note') <> nil then begin + FixedNote := 'Note, '; FixedNoteP := ':Notes, '; + end else begin + FixedNote := ''; FixedNoteP := ''; + end; + if Qry.Locate('RecordID', Contact.RecordID, []) then begin { existing record found } @@ -750,7 +772,9 @@ begin Qry.FieldByName('State').AsString := Contact.State; Qry.FieldByName('Zip').AsString := Contact.Zip; Qry.FieldByName('Country').AsString := Contact.Country; - Qry.FieldByName('Note').AsString := Contact.Note; + F := Qry.FieldByName('Notes'); + if F = nil then F := Qry.FieldByName('Note'); // deprecated + if F <> nil then F.AsString := Contact.Notes; Qry.FieldByName('Phone1').AsString := Contact.Phone1; Qry.FieldByName('Phone2').AsString := Contact.Phone2; Qry.FieldByName('Phone3').AsString := Contact.Phone3; @@ -786,7 +810,7 @@ begin Qry.SQL.Text := 'INSERT INTO Contacts ' + '(ResourceID, RecordID, FirstName, LastName, Title, Company, ' + 'Job_Position, EMail, Address, City, State, Zip, Country, ' - + 'Note, Phone1, Phone2, Phone3, Phone4, Phone5, PhoneType1, ' + + FixedNote + 'Phone1, Phone2, Phone3, Phone4, Phone5, PhoneType1, ' + 'PhoneType2, PhoneType3, PhoneType4, PhoneType5, Category, ' + 'Custom1, Custom2, Custom3, Custom4, UserField0, UserField1, ' + 'UserField2, UserField3, UserField4, UserField5, UserField6, ' @@ -794,7 +818,7 @@ begin + 'VALUES(:ResourceID, :RecordID, :FirstName, :LastName, :Title, ' + ':Company, :Job_Position, :EMail, :Address, :City, :State, :Zip, ' - + ':Country, :Note, :Phone1, :Phone2, :Phone3, :Phone4, :Phone5, ' + + ':Country, ' + FixedNoteP + ':Phone1, :Phone2, :Phone3, :Phone4, :Phone5, ' + ':PhoneType1, :PhoneType2, :PhoneType3, :PhoneType4, :PhoneType5, ' + ':Category, :Custom1, :Custom2, :Custom3, :Custom4, :UserField0, ' + ':UserField1, :UserField2, :UserField3, :UserField4, :UserField5, ' @@ -813,7 +837,7 @@ begin Qry.ParamByName('State').AsString := Contact.State; Qry.ParamByName('Zip').AsString := Contact.Zip; Qry.ParamByName('Country').AsString := Contact.Country; - Qry.ParamByName('Note').AsString := Contact.Note; + if FixedNoteP <> '' then Qry.ParamByName('Notes').AsString := Contact.Notes; Qry.ParamByName('Phone1').AsString := Contact.Phone1; Qry.ParamByName('Phone2').AsString := Contact.Phone2; Qry.ParamByName('Phone3').AsString := Contact.Phone3; diff --git a/components/tvplanit/source/vpevnteditdlg.lfm b/components/tvplanit/source/vpevnteditdlg.lfm index bf925d8cc..4564717a7 100644 --- a/components/tvplanit/source/vpevnteditdlg.lfm +++ b/components/tvplanit/source/vpevnteditdlg.lfm @@ -1,11 +1,11 @@ object DlgEventEdit: TDlgEventEdit Left = 417 - Height = 385 + Height = 388 Top = 211 Width = 697 BorderStyle = bsToolWindow Caption = 'Add / Edit Events' - ClientHeight = 385 + ClientHeight = 388 ClientWidth = 697 Constraints.MinHeight = 378 Constraints.MinWidth = 594 @@ -16,7 +16,7 @@ object DlgEventEdit: TDlgEventEdit object Panel1: TPanel Left = 0 Height = 41 - Top = 344 + Top = 347 Width = 697 Align = alBottom BevelOuter = bvNone @@ -96,9 +96,9 @@ object DlgEventEdit: TDlgEventEdit Anchors = [akTop, akLeft, akRight] end object CategoryLbl: TLabel - Left = 5 + Left = 403 Height = 15 - Top = 41 + Top = 43 Width = 51 Caption = 'Category:' ParentColor = False @@ -286,7 +286,7 @@ object DlgEventEdit: TDlgEventEdit Width = 74 Caption = '&Reminder:' OnClick = AlarmSetClick - TabOrder = 11 + TabOrder = 12 end object StartTime: TComboBox Left = 231 @@ -296,7 +296,7 @@ object DlgEventEdit: TDlgEventEdit ItemHeight = 15 OnChangeBounds = StartTimeChange OnExit = StartTimeExit - TabOrder = 4 + TabOrder = 5 end object EndTime: TComboBox Left = 231 @@ -306,18 +306,18 @@ object DlgEventEdit: TDlgEventEdit ItemHeight = 15 OnChangeBounds = EndTimeChange OnExit = EndTimeExit - TabOrder = 6 + TabOrder = 7 end object Category: TComboBox - Left = 86 + Left = 484 Height = 21 - Top = 38 + Top = 40 Width = 182 ItemHeight = 15 OnDrawItem = CategoryDrawItem ReadOnly = True Style = csOwnerDrawFixed - TabOrder = 1 + TabOrder = 2 end object RecurringType: TComboBox Left = 379 @@ -327,7 +327,7 @@ object DlgEventEdit: TDlgEventEdit ItemHeight = 15 OnChange = RecurringTypeChange Style = csDropDownList - TabOrder = 7 + TabOrder = 8 end object IntervalUpDown: TUpDown Left = 652 @@ -339,7 +339,7 @@ object DlgEventEdit: TDlgEventEdit Min = 0 OnClick = IntervalUpDownClick Position = 0 - TabOrder = 9 + TabOrder = 10 Wrap = False end object AlarmAdvType: TComboBox @@ -349,7 +349,7 @@ object DlgEventEdit: TDlgEventEdit Width = 93 ItemHeight = 15 Style = csDropDownList - TabOrder = 14 + TabOrder = 15 end object AdvanceUpDown: TUpDown Left = 194 @@ -361,7 +361,7 @@ object DlgEventEdit: TDlgEventEdit Min = 1 OnClick = AdvanceUpDownClick Position = 1 - TabOrder = 13 + TabOrder = 14 Wrap = False end object CBAllDay: TCheckBox @@ -371,14 +371,14 @@ object DlgEventEdit: TDlgEventEdit Width = 89 Caption = 'All Day Event' OnClick = CBAllDayClick - TabOrder = 2 + TabOrder = 3 end object edtUnusedPlaceholder: TEdit Left = 587 Height = 23 Top = 104 Width = 65 - TabOrder = 8 + TabOrder = 9 Text = 'Placeholder control' Visible = False end @@ -431,7 +431,7 @@ object DlgEventEdit: TDlgEventEdit NumGlyphs = 1 MaxLength = 0 OnChangeBounds = StartDateChange - TabOrder = 3 + TabOrder = 4 end object EndDate: TDateEdit Left = 104 @@ -482,7 +482,7 @@ object DlgEventEdit: TDlgEventEdit NumGlyphs = 1 MaxLength = 0 OnChangeBounds = EndDateChange - TabOrder = 5 + TabOrder = 6 end object RepeatUntil: TDateEdit Left = 440 @@ -532,7 +532,7 @@ object DlgEventEdit: TDlgEventEdit } NumGlyphs = 1 MaxLength = 0 - TabOrder = 10 + TabOrder = 11 end object AlarmAdvance: TEdit Left = 130 @@ -540,13 +540,29 @@ object DlgEventEdit: TDlgEventEdit Top = 168 Width = 64 OnChange = AlarmAdvanceChange - TabOrder = 12 + TabOrder = 13 Text = 'AlarmAdvance' end + object LocationLbl: TLabel + Left = 5 + Height = 15 + Top = 43 + Width = 49 + Caption = 'Location:' + FocusControl = LocationEdit + ParentColor = False + end + object LocationEdit: TEdit + Left = 86 + Height = 23 + Top = 39 + Width = 235 + TabOrder = 1 + end end object NotesMemo: TMemo Left = 8 - Height = 102 + Height = 105 Top = 232 Width = 679 Anchors = [akTop, akLeft, akRight, akBottom] diff --git a/components/tvplanit/source/vpevnteditdlg.pas b/components/tvplanit/source/vpevnteditdlg.pas index ea4ecae75..508e6f925 100644 --- a/components/tvplanit/source/vpevnteditdlg.pas +++ b/components/tvplanit/source/vpevnteditdlg.pas @@ -41,7 +41,7 @@ uses {$ENDIF} SysUtils, {$IFDEF VERSION6}Variants,{$ENDIF} Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, VpData, VpEdPop, - VpDateEdit, ComCtrls, VpBase, VpClock, VpBaseDS, VpDlg, VpConst, + ComCtrls, VpBase, VpBaseDS, VpDlg, VpConst, Buttons, EditBtn; type @@ -59,6 +59,8 @@ type TDlgEventEdit = class(TForm) AlarmAdvance: TEdit; + LocationEdit: TEdit; + LocationLbl: TLabel; NotesMemo: TMemo; StartDate: TDateEdit; EndDate: TDateEdit; @@ -307,14 +309,14 @@ begin CBAllDay.Checked := Event.AllDayEvent; AlarmWavPath := Event.AlarmWavPath; - StartDate.Enabled := not CBAllDay.Checked; EndDate.Enabled := not CBAllDay.Checked; EndTime.Enabled := not CBAllDay.Checked; StartTime.Enabled := not CBAllDay.Checked; DescriptionEdit.Text := Event.Description; - NotesMemo.Text := Event.Note; + LocationEdit.Text := Event.Location; + NotesMemo.Text := Event.Notes; AlarmSet.Checked := Event.AlarmSet; AlarmSetClick(Self); if not Event.AlarmSet then @@ -345,7 +347,8 @@ begin Event.EndTime := EndDate.Date + StrToTime(EndTime.Text); Event.RepeatRangeEnd := RepeatUntil.Date; Event.Description := DescriptionEdit.Text; - Event.Note := NotesMemo.Text; + Event.Location := LocationEdit.Text; + Event.Notes := NotesMemo.Text; Event.Category := Category.ItemIndex; Event.AlarmSet := AlarmSet.Checked; Event.AlarmAdv := StrToIntDef(AlarmAdvance.Text, 0); @@ -353,7 +356,7 @@ begin Event.RepeatCode := TVpRepeatType(RecurringType.ItemIndex); Event.CustInterval := StrToIntDef(FCustomInterval.Text, 0); Event.AllDayEvent := CBAllDay.Checked; - Event.AlarmWavPath := AlarmWavPath; + Event.DingPath := AlarmWavPath; end; {=====} @@ -502,6 +505,7 @@ begin CancelBtn.Caption := RSCancelBtn; AppointmentGroupBox.Caption := RSAppointmentGroupBox; DescriptionLbl.Caption := RSDescriptionLbl; + LocationLbl.Caption := RSLocationLbl; CategoryLbl.Caption := RSCategoryLbl; StartTimeLbl.Caption := RSStartTimeLbl; EndTimeLbl.Caption := RSEndTimeLbl; diff --git a/components/tvplanit/source/vpflxds.pas b/components/tvplanit/source/vpflxds.pas index ab8a94282..b7fbcaf2e 100644 --- a/components/tvplanit/source/vpflxds.pas +++ b/components/tvplanit/source/vpflxds.pas @@ -157,10 +157,9 @@ type procedure PurgeResource(Res: TVpResource); override; procedure PurgeEvents(Res: TVpResource); override; procedure PurgeContacts(Res: TVpResource); override; - procedure PurgeTasks(Res: TVpResource); override; - function GetFieldName(Mappings: TCollection; - VPField: string): string; + procedure PurgeTasks(Res: TVpResource); override; + function GetFieldName(Mappings: TCollection; VPField: string): string; function GetNextID(TableName: string): Int64; override; { These are published via the TVpDataSources class, which allows them to } @@ -246,43 +245,39 @@ begin and FContactsDataSrc.DataSet.Active and FTasksDataSrc.DataSet.Active; - result := AllAssigned and AllActive; + Result := AllAssigned and AllActive; end; {=====} function TVpFlexDataStore.GetResourceTable : TDataset; begin result := nil; - if (FResourceDataSrc <> nil) - and (FResourceDataSrc.DataSet <> nil) - then result := FResourceDataSrc.DataSet; + if (FResourceDataSrc <> nil) and (FResourceDataSrc.DataSet <> nil) then + Result := FResourceDataSrc.DataSet; end; {=====} function TVpFlexDataStore.GetEventsTable : TDataset; begin result := nil; - if (FEventsDataSrc <> nil) - and (FEventsDataSrc.DataSet <> nil) - then result := FEventsDataSrc.DataSet; + if (FEventsDataSrc <> nil) and (FEventsDataSrc.DataSet <> nil) then + Result := FEventsDataSrc.DataSet; end; {=====} function TVpFlexDataStore.GetContactsTable : TDataset; begin result := nil; - if (FContactsDataSrc <> nil) - and (FContactsDataSrc.DataSet <> nil) - then result := FContactsDataSrc.DataSet; + if (FContactsDataSrc <> nil) and (FContactsDataSrc.DataSet <> nil) then + Result := FContactsDataSrc.DataSet; end; {=====} function TVpFlexDataStore.GetTasksTable : TDataset; begin result := nil; - if (FTasksDataSrc <> nil) - and (FTasksDataSrc.DataSet <> nil) - then result := FTasksDataSrc.DataSet; + if (FTasksDataSrc <> nil) and (FTasksDataSrc.DataSet <> nil) then + Result := FTasksDataSrc.DataSet; end; {=====} @@ -575,15 +570,22 @@ begin if (FN1 <> '') then Event.Description := FieldByName(FN1).AsString; - FN1 := GetFieldName(FEventMappings, 'Note'); + FN1 := GetFieldName(FEventMappings, 'Location'); // new if (FN1 <> '') then - Event.Note := FieldByName(FN1).AsString; + 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, 'AlarmWavPath'); + FN1 := GetFieldName(FEventMappings, 'DingPath'); + if FN1 = '' then + FN1 := GetFieldName(FEventMappings, 'AlarmWavPath'); // deprectated if (FN1 <> '') then Event.AlarmWavPath := FieldByName(FN1).AsString; @@ -746,9 +748,11 @@ begin if FN <> '' then Contact.Country := FieldByName(FN).AsString; - FN := GetFieldName(FContactMappings, 'Note'); + FN := GetFieldName(FContactMappings, 'Notes'); + if FN = '' then + FN := GetFieldName(FContactMappings, 'Note'); // deprecated if FN <> '' then - Contact.Note := FieldByName(FN).AsString; + Contact.Notes := FieldByName(FN).AsString; FN := GetFieldName(FContactMappings, 'Phone1'); if FN <> '' then @@ -1161,15 +1165,23 @@ begin if FN <> '' then EventsTable.FieldByName(FN).AsString := Event.Description; - FN := GetFieldName(FEventMappings, 'Note'); + FN := GetFieldName(FEventMappings, 'Location'); // new if FN <> '' then - EventsTable.FieldByName(FN).AsString := Event.Note; + EventsTable.FieldByName(FN).AsString := Event.Location; + + FN := GetFieldName(FEventMappings, 'Notes'); + if FN = '' then + FN := GetFieldName(FEventMappings, 'Note'); // deprecated + if FN <> '' then + EventsTable.FieldByName(FN).AsString := Event.Notes; FN := GetFieldName(FEventMappings, 'Category'); if FN <> '' then EventsTable.FieldByName(FN).AsInteger := Event.Category; - FN := GetFieldName(FEventMappings, 'AlarmWavPath'); + FN := GetFieldName(FEventMappings, 'DingPath'); + if FN = '' then + FN := GetFieldName(FEventMappings, 'AlarmWavPath'); // deprecated if FN <> '' then EventsTable.FieldByName(FN).AsString := Event.AlarmWavPath; @@ -1380,9 +1392,11 @@ begin if FN <> '' then ContactsTable.FieldByName(FN).AsString := Contact.Country; - FN := GetFieldName(FContactMappings, 'Note'); + FN := GetFieldName(FContactMappings, 'Notes'); + if FN = '' then + FN := GetFieldName(FContactMappings, 'Note'); // deprecated if FN <> '' then - ContactsTable.FieldByName(FN).AsString := Contact.Note; + ContactsTable.FieldByName(FN).AsString := Contact.Notes; FN := GetFieldName(FContactMappings, 'Phone1'); if FN <> '' then diff --git a/components/tvplanit/source/vpmisc.pas b/components/tvplanit/source/vpmisc.pas index 062cdb80a..2dc63fe7c 100644 --- a/components/tvplanit/source/vpmisc.pas +++ b/components/tvplanit/source/vpmisc.pas @@ -588,5 +588,4 @@ begin canvas.Free; end; - end. diff --git a/components/tvplanit/source/vpsr.inc b/components/tvplanit/source/vpsr.inc index 05bf5e5d3..db8b9ebf7 100644 --- a/components/tvplanit/source/vpsr.inc +++ b/components/tvplanit/source/vpsr.inc @@ -222,6 +222,7 @@ resourcestring RSDlgEventEdit = 'Event'; RSAppointmentGroupBox = 'Appointment'; RSDescriptionLbl = 'Subject:'; + RSLocationLbl = 'Location:'; RSCategoryLbl = 'Category:'; RSStartTimeLbl = 'Start Time:'; RSEndTimeLbl = 'End Time:';