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
This commit is contained in:
wp_xxyyzz
2022-08-16 15:04:39 +00:00
parent e3c03b1a72
commit 8ef2d6471f
8 changed files with 292 additions and 291 deletions

View File

@ -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.

View File

@ -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

View File

@ -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);

View File

@ -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

View File

@ -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;

View File

@ -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

View File

@ -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;