From 8ef2d6471fa5d7ab0493294000c4ceb3ce83d3de Mon Sep 17 00:00:00 2001 From: wp_xxyyzz Date: Tue, 16 Aug 2022 15:04:39 +0000 Subject: [PATCH] tvplanit: Create default popupmenu items in the constructor rather than when the menu drops down. Adjust translation of popupmenu items. git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@8392 8e941d3f-bd1b-0410-a28a-d453659cc2b4 --- .../tvplanit/examples/fulldemo/demomain.pas | 8 +- components/tvplanit/source/vpbase.pas | 63 ++++++- components/tvplanit/source/vpcontactgrid.pas | 48 +++-- components/tvplanit/source/vpdayview.pas | 167 ++++++++---------- components/tvplanit/source/vpmisc.pas | 33 ++-- components/tvplanit/source/vpmonthview.pas | 55 +++--- components/tvplanit/source/vptasklist.pas | 91 +++------- components/tvplanit/source/vpweekview.pas | 118 ++++++------- 8 files changed, 292 insertions(+), 291 deletions(-) diff --git a/components/tvplanit/examples/fulldemo/demomain.pas b/components/tvplanit/examples/fulldemo/demomain.pas index 5b93b0a7c..f46a803db 100644 --- a/components/tvplanit/examples/fulldemo/demomain.pas +++ b/components/tvplanit/examples/fulldemo/demomain.pas @@ -1169,6 +1169,12 @@ begin OpenDialog.Filter := rsXMLFiles + '|*.xml'; + VpDayView1.LoadLanguage; + VpWeekView1.LoadLanguage; + VpMonthView1.LoadLanguage; + VpTaskList1.LoadLanguage; + VpContactGrid1.LoadLanguage; + // These settings work correctly only for Windows. {$IFDEF WINDOWS} UpdateFormatSettings(ALang); @@ -1182,7 +1188,7 @@ begin VpWeekView1.TimeFormat := tfmt; VpMonthView1.TimeFormat := tfmt; {$ENDIF} - + firstWeekDay := GetFirstDayofWeek(ALang); // not correct at the moment VpMonthView1.WeekStartsOn := firstWeekDay; VpWeekView1.WeekStartsOn := firstWeekDay; diff --git a/components/tvplanit/source/vpbase.pas b/components/tvplanit/source/vpbase.pas index 587f2e6d2..04b238a09 100644 --- a/components/tvplanit/source/vpbase.pas +++ b/components/tvplanit/source/vpbase.pas @@ -38,7 +38,8 @@ uses {$ELSE} Windows, Messages. {$ENDIF} - Classes, Graphics, Controls, Dialogs, Forms, ExtCtrls, SysUtils, ImgList, + Classes, Graphics, + Controls, Dialogs, Forms, ExtCtrls, SysUtils, ImgList, Menus, VpConst, VpSR; const @@ -76,6 +77,31 @@ type TVpHintMode = (hmPlannerHint, hmComponentHint); + TVpMenuItemKind = (mikSeparator, + mikAddEvent, mikEditEvent, mikDeleteEvent, + mikAddTask, mikEditTask, mikDeleteTask, + mikAddContact, mikEditContact, mikDeleteContact, + mikImportEventFromICal, mikImportTaskFromICal, mikImportContactFromVCards, + mikResourceGroups, mikNoOverlaidEvents, + mikChangeDate, mikCustomDate, mikToday, mikYesterday, mikTomorrow, + mikPrevDay, mikNextDay, mikPrevWeek, mikNextWeek, + mikPrevMonth, mikNextMonth, mikPrevYear, mikNextYear + ); + + const + VpMenuCaptions: array[TVpMenuItemKind] of String = ('-', + RSPopupAddEvent, RSPopupEditEvent, RSPopupDeleteEvent, + RSTaskPopupAdd, RSTaskPopupEdit, RSTaskPopupDelete, + RSContactPopupAdd, RSContactPopupEdit, RSContactPopupDelete, + RSPopupAddEventFromICal, RSPopupAddTaskFromICal, RSContactPopupAddVCards, + RSPopupResourceGroups, RSNoOverlayedEvents, + RSPopupChangeDate, RSCustomDate, RSToday, RSYesterday, RSTomorrow, + RSPrevDay, RSNextDay, RSPrevWeek, RSNextWeek, + RSPrevMonth, RSNextMonth, RSPrevYear, RSNextYear + ); + + type + { XML definitions } DOMString = WideString; @@ -392,6 +418,15 @@ type AData: pointer): TRect; override; end; + TVpMenuItem = class(TMenuItem) + private + FKind: TVpMenuItemKind; + procedure SetKind(AValue: TVpMenuItemKind); + public + procedure Translate; + property Kind: TVpMenuItemKind read FKind write SetKind; + end; + implementation @@ -974,5 +1009,31 @@ begin Result := inherited CalcHintRect(MAX_HINT_WIDTH, AHint, AData); end; + +{ TVpMenuItem } + +procedure TVpMenuItem.SetKind(AValue: TVpMenuItemKind); +begin + FKind := AValue; + Caption := VpMenuCaptions[FKind]; +end; + +procedure TVpMenuItem.Translate; + + procedure _Translate(AItem: TMenuItem); + var + i: Integer; + begin + if (AItem is TVpMenuItem) then + AItem.Caption := VpMenuCaptions[TVpMenuItem(AItem).Kind]; + if AItem.Count > 0then + for i := 0 to AItem.Count-1 do + _Translate(AItem.Items[i]); + end; + +begin + _Translate(self); +end; + end. diff --git a/components/tvplanit/source/vpcontactgrid.pas b/components/tvplanit/source/vpcontactgrid.pas index e90e51cfc..c8b048664 100644 --- a/components/tvplanit/source/vpcontactgrid.pas +++ b/components/tvplanit/source/vpcontactgrid.pas @@ -200,7 +200,6 @@ type procedure PopupAddContact(Sender: TObject); procedure PopupAddVCards(Sender: TObject); procedure PopupDeleteContact(Sender: TObject); - procedure PopupDropdownEvent(Sender: TObject); procedure PopupEditContact(Sender: TObject); procedure EditContact; procedure EndEdit(Sender: TObject); @@ -501,7 +500,10 @@ begin Width := 225; FDefaultPopup := TPopupMenu.Create(Self); - FDefaultPopup.OnPopup := PopupDropDownEvent; + Self.PopupMenu := FDefaultPopup; + InitializeDefaultPopup; + + LoadLanguage; cgHookUp; end; @@ -1242,7 +1244,6 @@ begin if Assigned(cgInplaceEditor) and not cgInplaceEditor.Visible then Invalidate; end; -{=====} procedure TVpContactGrid.MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); @@ -1254,7 +1255,6 @@ begin ColumnWidth := cgNewColWidth; end; end; -{=====} procedure TVpContactGrid.cgSpawnContactEditDialog(IsNewContact: Boolean); var @@ -1502,43 +1502,46 @@ end; procedure TVpContactGrid.InitializeDefaultPopup; var - NewItem: TMenuItem; + NewItem: TVpMenuItem; begin FDefaultPopup.Items.Clear; if RSContactPopupAdd <> '' then begin - NewItem := TMenuItem.Create(Self); - NewItem.Caption := RSContactPopupAdd; + NewItem := TVpMenuItem.Create(Self); + NewItem.Kind := mikAddContact; NewItem.OnClick := PopupAddContact; NewItem.Tag := 0; FDefaultPopup.Items.Add(NewItem); end; - if RsContactPopupAddVCards <> '' then begin - NewItem := TMenuItem.Create(Self); - NewItem.Caption := RSContactPopupAddVCards; - NewItem.OnClick := PopupAddVCards; - NewItem.Tag := 0; - FDefaultPopup.Items.Add(NewItem); - end; - if RSContactPopupEdit <> '' then begin - NewItem := TMenuItem.Create(Self); - NewItem.Caption := RSContactPopupEdit; + NewItem := TVpMenuItem.Create(Self); + NewItem.Kind := mikEditContact; NewItem.OnClick := PopupEditContact; NewItem.Tag := 1; FDefaultPopup.Items.Add(NewItem); end; if RSContactPopupDelete <> '' then begin - NewItem := TMenuItem.Create(Self); - NewItem.Caption := RSContactPopupDelete; + NewItem := TVpMenuItem.Create(Self); + NewItem.Kind := mikDeleteContact; NewItem.OnClick := PopupDeleteContact; NewItem.Tag := 1; FDefaultPopup.Items.Add(NewItem); end; + + if RsContactPopupAddVCards <> '' then begin + NewItem := TVpMenuItem.Create(Self); + NewItem.Kind := mikSeparator; + FDefaultPopup.Items.Add(NewItem); + + NewItem := TVpMenuItem.Create(Self); + NewItem.Kind := mikImportContactFromVCards; + NewItem.OnClick := PopupAddVCards; + NewItem.Tag := 0; + FDefaultPopup.Items.Add(NewItem); + end; end; -{=====} procedure TVpContactGrid.PopupAddContact(Sender: TObject); var @@ -1634,11 +1637,6 @@ begin DeleteActiveContact (True); end; -procedure TVpContactGrid.PopupDropDownEvent(Sender: TObject); -begin - InitializeDefaultPopup; -end; - procedure TVpContactGrid.PopupEditContact (Sender : TObject); begin if ReadOnly then diff --git a/components/tvplanit/source/vpdayview.pas b/components/tvplanit/source/vpdayview.pas index a5ae3d3fd..76fc06759 100644 --- a/components/tvplanit/source/vpdayview.pas +++ b/components/tvplanit/source/vpdayview.pas @@ -889,7 +889,7 @@ begin // popup menu FDefaultPopup := TPopupMenu.Create(Self); Self.PopupMenu := FDefaultPopup; - FDefaultPopup.OnPopup := PopupDropDownEvent; + InitializeDefaultPopup; LoadLanguage; @@ -1010,14 +1010,18 @@ begin end; procedure TVpDayView.LoadLanguage; +var + item: TMenuItem; begin dvDayUpBtn.Hint := RSNextDay; dvDayDownBtn.Hint := RSPrevDay; dvTodayBtn.Hint := RSToday; dvWeekUpBtn.Hint := RSNextWeek; dvWeekDownBtn.Hint := RSPrevWeek; - FDefaultPopup.Items.Clear; - InitializeDefaultPopup; + + for item in FDefaultPopup.Items do + if item is TVpMenuItem then + TVpMenuItem(item).Translate; end; {=====} @@ -1134,32 +1138,24 @@ end; procedure TVpDayView.InitializeDefaultPopup; var - NewItem: TMenuItem; - NewSubItem: TMenuItem; + NewItem: TVpMenuItem; + NewSubItem: TVpMenuItem; canEdit: Boolean; begin canEdit := (FActiveEvent <> nil) and FActiveEvent.CanEdit; FDefaultPopup.Items.Clear; if RSPopupAddEvent <> '' then begin // Add - NewItem := TMenuItem.Create(Self); - NewItem.Caption := RSPopupAddEvent; + NewItem := TVpMenuItem.Create(Self); + NewItem.Kind := mikAddEvent; NewItem.OnClick := PopupAddEvent; NewItem.Tag := 0; FDefaultPopup.Items.Add(NewItem); end; - if RSPopupAddEventFromICal <> '' then begin - NewItem := TMenuItem.Create(Self); - NewItem.Caption := RSPopupAddEventFromICal; // Import from iCal - NewItem.OnClick := PopupAddFromICalFile; - NewItem.Tag := 0; - FDefaultPopup.Items.Add(NewItem); - end; - if RSPopupEditEvent <> '' then begin // Edit - NewItem := TMenuItem.Create(Self); - NewItem.Caption := RSPopupEditEvent; + NewItem := TVpMenuItem.Create(Self); + NewItem.Kind := mikEditEvent; NewItem.Enabled := canEdit; NewItem.OnClick := PopupEditEvent; NewItem.Tag := 1; @@ -1167,139 +1163,151 @@ begin end; if RSPopupDeleteEvent <> '' then begin // Delete - NewItem := TMenuItem.Create(Self); - NewItem.Caption := RSPopupDeleteEvent; + NewItem := TVpMenuItem.Create(Self); + NewItem.Kind := mikDeleteEvent; NewItem.Enabled := canEdit; NewItem.OnClick := PopupDeleteEvent; NewItem.Tag := 1; FDefaultPopup.Items.Add(NewItem); end; - NewItem := TMenuItem.Create(Self); // ---- - NewItem.Caption := '-'; + NewItem := TVpMenuItem.Create(Self); // ---- + NewItem.Kind := mikSeparator; FDefaultPopup.Items.Add(NewItem); - if RSPopupChangeDate <> '' then begin // Change date > - NewItem := TMenuItem.Create(Self); - NewItem.Caption := RSPopupChangeDate; + if RSPopupAddEventFromICal <> '' then begin + NewItem := TVpMenuItem.Create(Self); // Import from iCal + NewItem.Kind := mikImportEventFromICal; + NewItem.OnClick := PopupAddFromICalFile; + NewItem.Tag := 0; + FDefaultPopup.Items.Add(NewItem); + end; + + NewItem := TVpMenuItem.Create(Self); // ---- + NewItem.Kind := mikSeparator; + FDefaultPopup.Items.Add(NewItem); + + if RSPopupChangeDate <> '' then begin // Change date + NewItem := TVpMenuItem.Create(Self); + NewItem.Kind := mikChangeDate; NewItem.Tag := 0; FDefaultPopup.Items.Add(NewItem); if RSToday <> '' then begin // Today - NewSubItem := TMenuItem.Create(Self); - NewSubItem.Caption := RSToday; + NewSubItem := TVpMenuItem.Create(Self); + NewSubItem.Kind := mikToday; NewSubItem.OnClick := PopupToday; NewSubItem.Tag := 0; NewItem.Add(NewSubItem); end; - NewSubItem := TMenuItem.Create(Self); // --- - NewSubItem.Caption := '-'; + NewSubItem := TVpMenuItem.Create(Self); // --- + NewSubItem.Kind := mikSeparator; NewItem.Add(NewSubItem); if RSYesterday <> '' then begin // Yesterday - NewSubItem := TMenuItem.Create(Self); - NewSubItem.Caption := RSYesterday; + NewSubItem := TVpMenuItem.Create(Self); + NewSubItem.Kind := mikYesterday; NewSubItem.OnClick := PopupYesterday; NewSubItem.Tag := 0; NewItem.Add(NewSubItem); end; if RSTomorrow <> '' then begin // Tomorrow - NewSubItem := TMenuItem.Create(Self); - NewSubItem.Caption := RSTomorrow; + NewSubItem := TVpMenuItem.Create(Self); + NewSubItem.Kind := mikTomorrow; NewSubItem.OnClick := PopupTomorrow; NewSubItem.Tag := 0; NewItem.Add(NewSubItem); end; - NewSubItem := TMenuItem.Create(Self); // -- - NewSubItem.Caption := '-'; + NewSubItem := TVpMenuItem.Create(Self); // -- + NewSubItem.Kind := mikSeparator; NewItem.Add(NewSubItem); if RSNextDay <> '' then begin // Next day - NewSubItem := TMenuItem.Create(Self); - NewSubItem.Caption := RSNextDay; + NewSubItem := TVpMenuItem.Create(Self); + NewSubItem.Kind := mikNextDay; NewSubItem.OnClick := PopupNextDay; NewSubItem.Tag := 0; NewItem.Add(NewSubItem); end; if RSPrevDay <> '' then begin // Prev day - NewSubItem := TMenuItem.Create(Self); - NewSubItem.Caption := RSPrevDay; + NewSubItem := TVpMenuItem.Create(Self); + NewSubItem.Kind := mikPrevDay; NewSubItem.OnClick := PopupPrevDay; NewSubItem.Tag := 0; NewItem.Add(NewSubItem); end; - NewSubItem := TMenuItem.Create(Self); // --- - NewSubItem.Caption := '-'; + NewSubItem := TVpMenuItem.Create(Self); // --- + NewSubItem.Kind := mikSeparator; NewItem.Add(NewSubItem); if RSNextWeek <> '' then begin // Next week - NewSubItem := TMenuItem.Create(Self); - NewSubItem.Caption := RSNextWeek; + NewSubItem := TVpMenuItem.Create(Self); + NewSubItem.Kind := mikNextWeek; NewSubItem.OnClick := PopupNextWeek; NewSubItem.Tag := 0; NewItem.Add(NewSubItem); end; if RSPrevWeek <> '' then begin // Prev week - NewSubItem := TMenuItem.Create(Self); - NewSubItem.Caption := RSPrevWeek; + NewSubItem := TVpMenuItem.Create(Self); + NewSubItem.Kind := mikPrevWeek; NewSubItem.OnClick := PopupPrevWeek; NewSubItem.Tag := 0; NewItem.Add(NewSubItem); end; - NewSubItem := TMenuItem.Create(Self); // --- - NewSubItem.Caption := '-'; + NewSubItem := TVpMenuItem.Create(Self); // --- + NewSubItem.Kind := mikSeparator; NewItem.Add(NewSubItem); if RSNextMonth <> '' then begin // Next month - NewSubItem := TMenuItem.Create(Self); - NewSubItem.Caption := RSNextMonth; + NewSubItem := TVpMenuItem.Create(Self); + NewSubItem.Kind := mikNextMonth; NewSubItem.OnClick := PopupNextMonth; NewSubItem.Tag := 0; NewItem.Add(NewSubItem); end; if RSPrevMonth <> '' then begin // Prev Month - NewSubItem := TMenuItem.Create(Self); - NewSubItem.Caption := RSPrevMonth; + NewSubItem := TVpMenuItem.Create(Self); + NewSubItem.Kind := mikPrevMonth; NewSubItem.OnClick := PopupPrevMonth; NewSubItem.Tag := 0; NewItem.Add(NewSubItem); end; - NewSubItem := TMenuItem.Create(Self); // --- - NewSubItem.Caption := '-'; + NewSubItem := TVpMenuItem.Create(Self); // --- + NewSubItem.Kind := mikSeparator; NewItem.Add(NewSubItem); if RSNextYear <> '' then begin // Next year - NewSubItem := TMenuItem.Create(Self); - NewSubItem.Caption := RSNextYear; + NewSubItem := TVpMenuItem.Create(Self); + NewSubItem.Kind := mikNextYear; NewSubItem.OnClick := PopupNextYear; NewSubItem.Tag := 0; NewItem.Add(NewSubItem); end; if RSPrevYear <> '' then begin // Prev year - NewSubItem := TMenuItem.Create(Self); - NewSubItem.Caption := RSPrevYear; + NewSubItem := TVpMenuItem.Create(Self); + NewSubItem.Kind := mikPrevYear; NewSubItem.OnClick := PopupPrevYear; NewSubItem.Tag := 0; NewItem.Add(NewSubItem); end; - NewSubItem := TMenuItem.Create(Self); // --- - NewSubItem.Caption := '-'; + NewSubItem := TVpMenuItem.Create(Self); // --- + NewSubItem.Kind := mikSeparator; NewItem.Add(NewSubItem); - if RSCustomDate <> '' then begin // Prev year - NewSubItem := TMenuItem.Create(Self); - NewSubItem.Caption := RSCustomDate; + if RSCustomDate <> '' then begin // Custom date + NewSubItem := TVpMenuItem.Create(Self); + NewSubItem.Kind := mikCustomDate; NewSubItem.OnClick := PopupCustomDate; NewSubItem.Tag := 0; NewItem.Add(NewSubItem); @@ -1309,7 +1317,6 @@ begin if (Datastore <> nil) and (Datastore.Resource <> nil) then AddResourceGroupMenu(FDefaultPopup.Items, Datastore.Resource, PopupPickResourceGroupEvent); end; -{=====} procedure TVpDayView.PopupAddEvent(Sender: TObject); var @@ -1414,51 +1421,23 @@ begin end; procedure TVpDayView.PopupNextMonth(Sender: TObject); -var - M, D, Y: Word; begin - DecodeDate(Date, Y, M, D); - if M = 12 then begin - M := 1; - Y := Y + 1; - end else - M := M + 1; - if (D > DaysInAMonth(Y, M)) then - D := DaysInAMonth(Y, M); - - Date := EncodeDate(Y, M, D); + Date := IncMonth(Date, +1); end; procedure TVpDayView.PopupPrevMonth(Sender: TObject); -var - M, D, Y: Word; begin - DecodeDate(Date, Y, M, D); - if M = 1 then begin - M := 12; - Y := Y - 1; - end else - M := M - 1; - if (D > DaysInAMonth(Y, M)) then - D := DaysInAMonth(Y, M); - - Date := EncodeDate(Y, M, D); + Date := IncMonth(Date, -1); end; procedure TVpDayView.PopupNextYear(Sender: TObject); -var - M, D, Y : Word; begin - DecodeDate(Date, Y, M, D); - Date := EncodeDate(Y + 1, M, 1); + Date := IncYear(Date); end; procedure TVpDayView.PopupPrevYear(Sender: TObject); -var - M, D, Y: Word; begin - DecodeDate(Date, Y, M, D); - Date := EncodeDate(Y - 1, M, 1); + Date := IncYear(Date, -1); end; procedure TVpDayView.PopupCustomDate(Sender: TObject); diff --git a/components/tvplanit/source/vpmisc.pas b/components/tvplanit/source/vpmisc.pas index 85d903fda..a38f5aba6 100644 --- a/components/tvplanit/source/vpmisc.pas +++ b/components/tvplanit/source/vpmisc.pas @@ -958,8 +958,9 @@ var datastore: TVpCustomDatastore; grp: TVpResourceGroup; list: TList; - newItem: TMenuItem; - newSubItem: TMenuItem; + newItem: TVpMenuItem; + newSubItem: TVpMenuItem; + newSubItem1: TMenuItem; i: Integer; begin if (AMenu = nil) or (AResource = nil) or (AResource.Owner = nil) then @@ -974,13 +975,13 @@ begin try datastore.Resource.GetResourceGroups(list); if list.Count > 0 then begin - newItem := TMenuItem.Create(AMenu.Owner); - newItem.Caption := RSPopupResourceGroups; + newItem := TVpMenuItem.Create(AMenu.Owner); + newItem.Kind := mikResourceGroups; newItem.Tag := 0; AMenu.Add(newItem); - newSubItem := TMenuItem.Create(AMenu.Owner); - newSubItem.Caption := RSNoOverlayedEvents; + newSubItem := TVpMenuItem.Create(AMenu.Owner); + newSubItem.Kind := mikNoOverlaidEvents; newSubItem.OnClick := AEventHandler; newSubItem.GroupIndex := 1; newSubItem.AutoCheck := true; @@ -989,21 +990,21 @@ begin newItem.Add(newSubItem); if list.Count > 1 then begin - newSubItem := TMenuItem.Create(AMenu.Owner); - newSubItem.Caption := '-'; + newSubItem := TVpMenuItem.Create(AMenu.Owner); + newSubItem.Kind := mikSeparator; newItem.Add(newSubItem); end; for i:=0 to list.Count-1 do begin grp := TVpResourceGroup(list[i]); - newSubItem := TMenuItem.Create(AMenu.Owner); - newSubItem.Caption := grp.Caption; - newSubItem.OnClick := AEventHandler; - newSubItem.GroupIndex := 1; - newSubItem.AutoCheck := true; - newSubItem.Checked := (datastore.Resource.Group = grp); - newSubItem.Tag := PtrInt(grp); - newItem.Add(NewSubItem); + newSubItem1 := TMenuItem.Create(AMenu.Owner); + newSubItem1.Caption := grp.Caption; + newSubItem1.OnClick := AEventHandler; + newSubItem1.GroupIndex := 1; + newSubItem1.AutoCheck := true; + newSubItem1.Checked := (datastore.Resource.Group = grp); + newSubItem1.Tag := PtrInt(grp); + newItem.Add(NewSubItem1); end; end; finally diff --git a/components/tvplanit/source/vpmonthview.pas b/components/tvplanit/source/vpmonthview.pas index fd81d0ce9..569e6a472 100644 --- a/components/tvplanit/source/vpmonthview.pas +++ b/components/tvplanit/source/vpmonthview.pas @@ -275,7 +275,6 @@ type { Popup menu } procedure InitializeDefaultPopup; - procedure PopupDropDownEvent(Sender: TObject); procedure PopupToday(Sender: TObject); procedure PopupNextMonth(Sender: TObject); procedure PopupPrevMonth(Sender: TObject); @@ -550,8 +549,8 @@ begin Width := 300; FDefaultPopup := TPopupMenu.Create(Self); - FDefaultPopup.OnPopup := PopupDropDownEvent; Self.PopupMenu := FDefaultPopup; + InitializeDefaultPopup; LoadLanguage; mvHookUp; @@ -619,13 +618,14 @@ begin end; procedure TVpMonthView.LoadLanguage; +var + item: TMenuItem; begin - FDefaultPopup.Items.Clear; - InitializeDefaultPopup; + for item in FDefaultPopup.Items do + if item is TVpMenuItem then + TVpMenuItem(item).Translate; end; -{=====} - procedure TVpMonthView.Invalidate; begin inherited; @@ -1227,71 +1227,66 @@ end; procedure TVpMonthView.InitializeDefaultPopup; var - NewItem : TMenuItem; + NewItem : TVpMenuItem; begin FDefaultPopup.Items.Clear; if RSToday <> '' then begin - NewItem := TMenuItem.Create(Self); - NewItem.Caption := RSToday; + NewItem := TVpMenuItem.Create(Self); + NewItem.Kind := mikToday; NewItem.OnClick := PopupToday; FDefaultPopup.Items.Add(NewItem); end; - NewItem := TMenuItem.Create(Self); - NewItem.Caption := '-'; + NewItem := TVpMenuItem.Create(Self); + NewItem.Kind := mikSeparator; FDefaultPopup.Items.Add(NewItem); if RSNextMonth <> '' then begin - NewItem := TMenuItem.Create(Self); - NewItem.Caption := RSNextMonth; + NewItem := TVpMenuItem.Create(Self); + NewItem.Kind := mikNextMonth; NewItem.OnClick := PopupNextMonth; FDefaultPopup.Items.Add(NewItem); end; if RSPrevMonth <> '' then begin - NewItem := TMenuItem.Create(Self); - NewItem.Caption := RSPrevMonth; + NewItem := TVpMenuItem.Create(Self); + NewItem.Kind := mikPrevMonth; NewItem.OnClick := PopupPrevMonth; FDefaultPopup.Items.Add(NewItem); end; - NewItem := TMenuItem.Create(Self); - NewItem.Caption := '-'; + NewItem := TVpMenuItem.Create(Self); + NewItem.Kind := mikSeparator; FDefaultPopup.Items.Add(NewItem); if RSNextYear <> '' then begin - NewItem := TMenuItem.Create(Self); - NewItem.Caption := RSNextYear; + NewItem := TVpMenuItem.Create(Self); + NewItem.Kind := mikNextYear; NewItem.OnClick := PopupNextYear; FDefaultPopup.Items.Add(NewItem); end; if RSPrevYear <> '' then begin - NewItem := TMenuItem.Create(Self); - NewItem.Caption := RSPrevYear; + NewItem := TVpMenuItem.Create(Self); + NewItem.Kind := mikPrevYear; NewItem.OnClick := PopupPrevYear; FDefaultPopup.Items.Add(NewItem); end; - NewItem := TMenuItem.Create(Self); - NewItem.Caption := '-'; + NewItem := TVpMenuItem.Create(Self); + NewItem.Kind := mikSeparator; FDefaultPopup.Items.Add(NewItem); if RSCustomDate <> '' then begin - NewItem := TMenuItem.Create(Self); - NewItem.Caption := RSCustomDate; + NewItem := TVpMenuItem.Create(Self); + NewItem.Kind := mikCustomDate; NewItem.OnClick := PopupCustomDate; NewItem.Tag := 0; FDefaultPopup.Items.Add(NewItem); end; end; -procedure TVpMonthView.PopupDropDownEvent(Sender: TObject); -begin - InitializeDefaultPopup; -end; - procedure TVpMonthView.PopupToday(Sender: TObject); begin Date := Now; diff --git a/components/tvplanit/source/vptasklist.pas b/components/tvplanit/source/vptasklist.pas index c620de1bf..e8064544e 100644 --- a/components/tvplanit/source/vptasklist.pas +++ b/components/tvplanit/source/vptasklist.pas @@ -174,7 +174,6 @@ type procedure PopupAddTask(Sender: TObject); procedure PopupAddFromICalFile(Sender: TObject); procedure PopupDeleteTask(Sender: TObject); - procedure PopupDropdownEvent(Sender: TObject); procedure PopupEditTask(Sender: TObject); procedure tlSetVScrollPos; procedure tlCalcRowHeight; @@ -434,7 +433,6 @@ begin // DoubleBuffered := False; {$ENDIF} end; -{=====} { procedure TVpTLInPlaceEdit.Move(const Loc: TRect; Redraw: Boolean); begin @@ -445,14 +443,12 @@ begin if Redraw then Invalidate; SetFocus; end; } -{=====} procedure TVpTLInPlaceEdit.CreateParams(var Params: TCreateParams); begin inherited CreateParams(Params); Params.Style := Params.Style{ or ES_MULTILINE}; end; -{=====} procedure TVpTLInPlaceEdit.KeyDown(var Key: Word; Shift: TShiftState); var @@ -491,7 +487,6 @@ begin inherited; end; end; -{=====} (*****************************************************************************) { TVpTaskList } @@ -535,11 +530,13 @@ begin Width := 169; FDefaultPopup := TPopupMenu.Create(Self); - FDefaultPopup.OnPopup := PopupDropDownEvent; + Self.PopupMenu := FDefaultPopup; + InitializeDefaultPopup; + + LoadLanguage; tlHookUp; end; -{=====} destructor TVpTaskList.Destroy; begin @@ -552,7 +549,6 @@ begin inherited; end; -{=====} procedure TVpTaskList.DeleteActiveTask(Verify: Boolean); var @@ -575,12 +571,14 @@ begin end; end; end; -{=====} procedure TVpTaskList.LoadLanguage; +var + item: TMenuItem; begin - FDefaultPopup.Items.Clear; - InitializeDefaultPopup; + for item in FDefaultPopup.Items do + if item is TVpMenuItem then + TVpMenuItem(item).Translate; end; procedure TVpTaskList.LinkHandler(Sender: TComponent; @@ -592,7 +590,6 @@ begin neInvalidate : Invalidate; end; end; -{=====} procedure TVpTaskList.tlHookUp; var @@ -608,7 +605,6 @@ begin end; end; end; -{=====} procedure TVpTaskList.Loaded; begin @@ -654,14 +650,12 @@ begin False { Display Only - True for a printed version, } ); { False for an interactive version } end; -{=====} procedure TVpTaskList.PaintToCanvas(ACanvas: TCanvas; ARect: TRect; Angle: TVpRotationAngle); begin RenderToCanvas(ACanvas, ARect, Angle, 1, Now, -1, -1, gr30Min, True); end; -{=====} procedure TVpTaskList.RenderToCanvas(RenderCanvas: TCanvas; RenderIn: TRect; Angle: TVpRotationAngle; Scale: Extended; RenderDate : TDateTime; @@ -687,7 +681,6 @@ begin Invalidate; end; end; -{=====} procedure TVpTaskList.tlCalcRowHeight; var @@ -706,7 +699,6 @@ begin tlRowHeight := tlRowHeight + TextMargin * 2; Canvas.Font.Assign(SaveFont); end; -{=====} procedure TVpTaskList.SetDrawingStyle(const Value: TVpDrawingStyle); begin @@ -715,7 +707,6 @@ begin Repaint; end; end; -{=====} procedure TVpTaskList.SetTaskIndex(Value: Integer); begin @@ -732,7 +723,6 @@ begin Invalidate; end; end; -{=====} function TVpTaskList.GetTaskIndex: Integer; begin @@ -742,7 +732,6 @@ begin Result := FActiveTask.Owner.IndexOf(FActiveTask); // result := FActiveTask.ItemIndex; end; -{=====} procedure TVpTaskList.SetLineColor(Value: TColor); begin @@ -751,7 +740,6 @@ begin Invalidate; end; end; -{=====} procedure TVpTaskList.SetMaxVisibleTasks(Value: Word); begin @@ -761,7 +749,6 @@ begin Invalidate; end; end; -{=====} {$IFNDEF LCL} procedure TVpTaskList.WMSize(var Msg: TWMSize); @@ -773,7 +760,6 @@ begin { force a repaint on resize } Invalidate; end; -{=====} procedure TVpTaskList.CreateParams(var Params: TCreateParams); begin @@ -787,7 +773,6 @@ begin {$ENDIF} end; end; -{=====} procedure TVpTaskList.CreateWnd; begin @@ -795,7 +780,6 @@ begin tlCalcRowHeight; tlSetVScrollPos; end; -{=====} {$IFNDEF LCL} procedure TVpTaskList.WMLButtonDown(var Msg: TWMLButtonDown); @@ -812,7 +796,6 @@ begin tlSetActiveTaskByCoord (Point(Msg.XPos, Msg.YPos)); end; end; -{=====} {$IFNDEF LCL} procedure TVpTaskList.WMRButtonDown(var Msg: TWMRButtonDown); @@ -844,7 +827,6 @@ begin FDefaultPopup.Popup(Msg.XPos + ClientOrigin.x, Msg.YPos + ClientOrigin.y); end; end; -{=====} {$IFNDEF LCL} procedure TVpTaskList.WMLButtonDblClk(var Msg: TWMLButtonDblClk); @@ -863,47 +845,49 @@ begin if not ReadOnly then tlSpawnTaskEditDialog(FActiveTask = nil); end; -{=====} procedure TVpTaskList.InitializeDefaultPopup; var - NewItem: TMenuItem; + NewItem: TVpMenuItem; begin FDefaultPopup.Items.Clear; if RSTaskPopupAdd <> '' then begin // "Add" - NewItem := TMenuItem.Create(Self); - NewItem.Caption := RSTaskPopupAdd; + NewItem := TVpMenuItem.Create(Self); + NewItem.Kind := mikAddTask; NewItem.OnClick := PopupAddTask; NewItem.Tag := 0; FDefaultPopup.Items.Add(NewItem); end; - if RSPopupAddTaskFromICal <> '' then begin // Import from iCal - NewItem := TMenuItem.Create(Self); - NewItem.Caption := RSPopupAddTaskFromICal; - NewItem.OnClick := PopupAddFromICalFile; - NewItem.Tag := 0; - FDefaultPopup.Items.Add(NewItem); - end; - if RSTaskPopupEdit <> '' then begin // "Edit" - NewItem := TMenuItem.Create(Self); - NewItem.Caption := RSTaskPopupEdit; + NewItem := TVpMenuItem.Create(Self); + NewItem.Kind := mikEditTask; NewItem.OnClick := PopupEditTask; NewItem.Tag := 1; FDefaultPopup.Items.Add(NewItem); end; if RSTaskPopupDelete <> '' then begin // "Delete" - NewItem := TMenuItem.Create(Self); - NewItem.Caption := RSTaskPopupDelete; + NewItem := TVpMenuItem.Create(Self); + NewItem.Kind := mikDeleteTask; NewItem.OnClick := PopupDeleteTask; NewItem.Tag := 1; FDefaultPopup.Items.Add(NewItem); end; + + if RSPopupAddTaskFromICal <> '' then begin // Import from iCal + NewItem := TVpMenuItem.Create(Self); + NewItem.Kind := mikSeparator; + FDefaultPopup.Items.Add(NewItem); + + NewItem := TVpMenuItem.Create(Self); + NewItem.Kind := mikImportTaskFromICal; + NewItem.OnClick := PopupAddFromICalFile; + NewItem.Tag := 0; + FDefaultPopup.Items.Add(NewItem); + end; end; -{=====} procedure TVpTaskList.PopupAddTask(Sender: TObject); begin @@ -915,7 +899,6 @@ begin Repaint; tlSpawnTaskEditDialog(True); end; -{=====} procedure TVpTaskList.PopupAddFromICalFile(Sender: TObject); var @@ -958,11 +941,6 @@ begin end; end; -procedure TVpTaskList.PopupDropdownEvent(Sender: TObject); -begin - InitializeDefaultPopup; -end; - procedure TVpTaskList.PopupEditTask(Sender: TObject); begin if ReadOnly then @@ -973,7 +951,6 @@ begin tlSpawnTaskEditDialog(False); end; end; -{=====} procedure TVpTaskList.tlSpawnTaskEditDialog(IsNewTask: Boolean); var @@ -1019,7 +996,6 @@ begin end; Invalidate; end; -{=====} {$IFNDEF LCL} procedure TVpTaskList.CMWantSpecialKey(var Msg: TCMWantSpecialKey); @@ -1028,7 +1004,6 @@ begin Msg.Result := 1; end; {$ENDIF} -{=====} procedure TVpTaskList.tlEditInPlace(Sender: TObject); begin @@ -1038,7 +1013,6 @@ begin tlClickTimer.Enabled := false; EditTask; end; -{=====} procedure TVpTaskList.EditTask; var @@ -1085,7 +1059,6 @@ begin Invalidate; end; end; -{=====} procedure TVpTaskList.EndEdit(Sender: TObject); begin @@ -1103,7 +1076,6 @@ begin Invalidate; end; end; -{=====} procedure TVpTaskList.KeyDown(var Key: Word; Shift: TShiftState); var @@ -1174,7 +1146,6 @@ begin if TaskIndex >= tlItemsBefore + tlVisibleItems then tlItemsBefore := TaskIndex - tlVisibleItems + 1; end; -{=====} {$IFNDEF LCL} procedure TVpTaskList.WMVScroll(var Msg: TWMVScroll); @@ -1208,7 +1179,6 @@ begin end; Invalidate; end; -{=====} procedure TVpTaskList.tlSetVScrollPos; var @@ -1231,7 +1201,7 @@ begin end; SetScrollInfo(Handle, SB_VERT, SI, True); end; -{=====} + procedure TVpTaskList.SetShowIcon(const v: Boolean); begin if v <> FShowIcon then begin @@ -1239,7 +1209,6 @@ begin Invalidate; end; end; -{=====} procedure TVpTaskList.SetShowResourceName(Value: Boolean); begin @@ -1248,7 +1217,6 @@ begin Invalidate; end; end; -{=====} procedure TVpTaskList.tlSetActiveTaskByCoord(Pnt: TPoint); var @@ -1293,7 +1261,6 @@ begin end; end; end; -{=====} function TVpTaskList.tlVisibleTaskToTaskIndex(const VisTaskIndex: Integer): Integer; var diff --git a/components/tvplanit/source/vpweekview.pas b/components/tvplanit/source/vpweekview.pas index 970d529c9..d5b22dbbd 100644 --- a/components/tvplanit/source/vpweekview.pas +++ b/components/tvplanit/source/vpweekview.pas @@ -215,7 +215,6 @@ type procedure PopupPrevYear(Sender: TObject); procedure PopupCustomDate(Sender: TObject); procedure PopupPickResourceGroupEvent(Sender: TObject); - procedure PopupDropdownEvent(Sender: TObject); procedure InitializeDefaultPopup; { internal methods } @@ -552,14 +551,15 @@ begin FDefaultPopup := TPopupMenu.Create (Self); Self.PopupMenu := FDefaultPopup; - FDefaultPopup.OnPopup := PopupDropDownEvent; - LoadLanguage; + InitializeDefaultPopup; FAllDayEventAttr.BackgroundColor := Color; FAllDayEventAttr.EventBackgroundColor := clBtnFace; FAllDayEventAttr.EventBorderColor := LineColor; FAllDayEventAttr.Font.Assign (Font); + LoadLanguage; + wvHookUp; SetActiveDate(Now); end; @@ -665,15 +665,15 @@ begin end; end; - procedure TVpWeekView.LoadLanguage; +var + item: TMenuItem; begin - FDefaultPopup.Items.Clear; - InitializeDefaultPopup; + for item in FDefaultPopup.Items do + if item is TVpMenuItem then + TVpMenuItem(item).Translate; end; -{=====} - procedure TVpWeekView.Invalidate; begin inherited; @@ -716,7 +716,6 @@ begin end; end; end; -{=====} procedure TVpWeekView.Loaded; begin @@ -724,7 +723,6 @@ begin wvLoaded := true; wvPopulate; end; -{=====} function TVpWeekView.GetControlType : TVpItemType; begin @@ -745,7 +743,6 @@ begin False // Display Only ); end; -{=====} procedure TVpWeekView.PaintToCanvas(ACanvas: TCanvas; ARect: TRect; Angle: TVpRotationAngle; ADate: TDateTime); @@ -770,14 +767,12 @@ begin wvPainting := false; end; end; -{=====} procedure TVpWeekView.wvPopulate; begin if DataStore <> nil then DataStore.Date := FActiveDate; end; -{=====} procedure TVpWeekView.DeleteActiveEvent(Verify: Boolean); var @@ -1173,32 +1168,24 @@ end; procedure TVpWeekView.InitializeDefaultPopup; var - NewItem: TMenuItem; - NewSubItem: TMenuItem; + NewItem: TVpMenuItem; + NewSubItem: TVpMenuItem; canEdit: Boolean; begin canEdit := (FActiveEvent <> nil) and FActiveEvent.CanEdit; FDefaultPopup.Items.Clear; if RSPopupAddEvent <> '' then begin // Add - NewItem := TMenuItem.Create(Self); - NewItem.Caption := RSPopupAddEvent; + NewItem := TVpMenuItem.Create(Self); + NewItem.Kind := mikAddEvent; NewItem.OnClick := PopupAddEvent; NewItem.Tag := 0; FDefaultPopup.Items.Add(NewItem); end; - if RSPopupAddEventFromICal <> '' then begin - NewItem := TMenuItem.Create(Self); - NewItem.Caption := RSPopupAddEventFromICal; // Import from iCal - NewItem.OnClick := PopupAddFromICalFile; - NewItem.Tag := 0; - FDefaultPopup.Items.Add(NewItem); - end; - if RSPopupEditEvent <> '' then begin // Edit - NewItem := TMenuItem.Create(Self); - NewItem.Caption := RSPopupEditEvent; + NewItem := TVpMenuItem.Create(Self); + NewItem.Kind := mikEditEvent; NewItem.Enabled := canEdit; NewItem.OnClick := PopupEditEvent; NewItem.Tag := 1; @@ -1206,99 +1193,111 @@ begin end; if RSPopupDeleteEvent <> '' then begin // Delete - NewItem := TMenuItem.Create(Self); - NewItem.Caption := RSPopupDeleteEvent; + NewItem := TVpMenuItem.Create(Self); + NewItem.Kind := mikDeleteEvent; NewItem.Enabled := canEdit; NewItem.OnClick := PopupDeleteEvent; NewItem.Tag := 1; FDefaultPopup.Items.Add(NewItem); end; - NewItem := TMenuItem.Create(Self); // --- - NewItem.Caption := '-'; + NewItem := TVpMenuItem.Create(Self); // --- + NewItem.Kind := mikSeparator; + FDefaultPopup.Items.Add(NewItem); + + if RSPopupAddEventFromICal <> '' then begin + NewItem := TVpMenuItem.Create(Self); + NewItem.Kind := mikImportEventFromICal; // Import from iCal + NewItem.OnClick := PopupAddFromICalFile; + NewItem.Tag := 0; + FDefaultPopup.Items.Add(NewItem); + end; + + NewItem := TVpMenuItem.Create(Self); // --- + NewItem.Kind := mikSeparator; FDefaultPopup.Items.Add(NewItem); if RSPopupChangeDate <> '' then begin // Change date - NewItem := TMenuItem.Create(Self); - NewItem.Caption := RSPopupChangeDate; + NewItem := TVpMenuItem.Create(Self); + NewItem.Kind := mikChangeDate; NewItem.Tag := 0; FDefaultPopup.Items.Add(NewItem); if RSToday <> '' then begin // Today - NewSubItem := TMenuItem.Create(Self); - NewSubItem.Caption := RSToday; + NewSubItem := TVpMenuItem.Create(Self); + NewSubItem.Kind := mikToday; NewSubItem.OnClick := PopupToday; NewSubItem.Tag := 0; NewItem.Add(NewSubItem); end; - NewSubItem := TMenuItem.Create(Self); // ------- - NewSubItem.Caption := '-'; + NewSubItem := TVpMenuItem.Create(Self); // ------- + NewSubItem.Kind := mikSeparator; NewItem.Add(NewSubItem); if RSNextWeek <> '' then begin // Next week - NewSubItem := TMenuItem.Create(Self); - NewSubItem.Caption := RSNextWeek; + NewSubItem := TVpMenuItem.Create(Self); + NewSubItem.Kind := mikNextWeek; NewSubItem.OnClick := PopupNextWeek; NewSubItem.Tag := 0; NewItem.Add(NewSubItem); end; if RSPrevWeek <> '' then begin // Previous week - NewSubItem := TMenuItem.Create(Self); - NewSubItem.Caption := RSPrevWeek; + NewSubItem := TVpMenuItem.Create(Self); + NewSubItem.Kind := mikPrevWeek; NewSubItem.OnClick := PopupPrevWeek; NewSubItem.Tag := 0; NewItem.Add(NewSubItem); end; - NewSubItem := TMenuItem.Create(Self); // ----- - NewSubItem.Caption := '-'; + NewSubItem := TVpMenuItem.Create(Self); // ----- + NewSubItem.Kind := mikSeparator; NewItem.Add(NewSubItem); if RSNextMonth <> '' then begin // Next month - NewSubItem := TMenuItem.Create(Self); - NewSubItem.Caption := RSNextMonth; + NewSubItem := TVpMenuItem.Create(Self); + NewSubItem.Kind := mikNextMonth; NewSubItem.OnClick := PopupNextMonth; NewSubItem.Tag := 0; NewItem.Add(NewSubItem); end; if RSPrevMonth <> '' then begin // Previous month - NewSubItem := TMenuItem.Create(Self); - NewSubItem.Caption := RSPrevMonth; + NewSubItem := TVpMenuItem.Create(Self); + NewSubItem.Kind := mikPrevMonth; NewSubItem.OnClick := PopupPrevMonth; NewSubItem.Tag := 0; NewItem.Add(NewSubItem); end; - NewSubItem := TMenuItem.Create(Self); // ------- - NewSubItem.Caption := '-'; + NewSubItem := TVpMenuItem.Create(Self); // ------- + NewSubItem.Kind := mikSeparator; NewItem.Add(NewSubItem); if RSNextYear <> '' then begin // Next year - NewSubItem := TMenuItem.Create(Self); - NewSubItem.Caption := RSNextYear; + NewSubItem := TVpMenuItem.Create(Self); + NewSubItem.Kind := mikNextYear; NewSubItem.OnClick := PopupNextYear; NewSubItem.Tag := 0; NewItem.Add(NewSubItem); end; if RSPrevYear <> '' then begin // previous year - NewSubItem := TMenuItem.Create(Self); - NewSubItem.Caption := RSPrevYear; + NewSubItem := TVpMenuItem.Create(Self); + NewSubItem.Kind := mikPrevYear; NewSubItem.OnClick := PopupPrevYear; NewSubItem.Tag := 0; NewItem.Add(NewSubItem); end; - NewSubItem := TMenuItem.Create(Self); // --- - NewSubItem.Caption := '-'; + NewSubItem := TVpMenuItem.Create(Self); // --- + NewSubItem.Kind := mikSeparator; NewItem.Add(NewSubItem); if RSCustomDate <> '' then begin // Custom date - NewSubItem := TMenuItem.Create(Self); - NewSubItem.Caption := RSCustomDate; + NewSubItem := TVpMenuItem.Create(Self); + NewSubItem.Kind := mikCustomDate; NewSubItem.OnClick := PopupCustomDate; NewSubItem.Tag := 0; NewItem.Add(NewSubItem); @@ -1434,11 +1433,6 @@ begin Datastore.UpdateGroupEvents; end; -procedure TVpWeekView.PopupDropDownEvent(Sender: TObject); -begin - InitializeDefaultPopup; -end; - procedure TVpWeekView.wvSpawnEventEditDialog(IsNewEvent: Boolean); var AllowIt: Boolean;