tvplanit: Add option for showing/hiding overlayed events to dayview and weekview context menu.

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@5145 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz 2016-09-10 17:26:42 +00:00
parent 981bf5d3a4
commit f1348844bf
12 changed files with 449 additions and 41 deletions

View File

@ -413,7 +413,8 @@ begin
datastore := VpControlLink1.Datastore;
datastore.Resources.AddResourceGroup(GROUP_NAME, [1, 2]);
if datastore.Resource <> nil then
datastore.Resource.Group := GROUP_NAME;
datastore.Resource.Group := GROUP_NAME else
datastore.Resource.Group := '';
// Important: This is not called internally so far!
datastore.RefreshEvents;
end;

View File

@ -954,6 +954,10 @@ msgstr "Andere"
msgid "Pixels"
msgstr "Pixel"
#: vpsr.rspopupresourcegroups
msgid "Overlay events"
msgstr ""
#: vpsr.rsposition
msgid "Position"
msgstr "Position"
@ -1627,3 +1631,4 @@ msgstr "Unbekannte Achsen-Spezifikation: %s"
#: vpsr.sxmldecnotatbeg
msgid "The XML declaration must appear before the first element"
msgstr "Die XML-Deklaration muss vor dem ersten Element erscheinen."

View File

@ -105,13 +105,25 @@ msgstr "Poignée de déclenchement non valide"
msgid "Birth date:"
msgstr "Date de naissance:"
#: vpsr.rsbrowsererror
msgid ""
"Unable to start web browser. Make sure you have it properly setup on your "
"system."
#: vpsr.rsbltotrline
msgid "bottom-left to top-right line"
msgstr ""
#: vpsr.rsbottomline
msgid "bottom line"
msgstr ""
#: vpsr.rsbrowsererror
msgid "Unable to start web browser. Make sure you have it properly setup on your system."
msgstr "Échec de démarrage de votre browser internet. Veuillez verifier que vous l'avez bien configuré sur votre système."
#: vpsr.rsbrushcaption
msgid "Brush"
msgstr ""
#: vpsr.rscalendarelement
msgid "Calendar"
msgstr ""
"Échec de démarrage de votre browser internet. Veuillez verifier que vous l'"
"avez bien configuré sur votre système."
#: vpsr.rscalendarnextmonth
msgctxt "vpsr.rscalendarnextmonth"
@ -182,6 +194,16 @@ msgctxt "vpsr.rscancelbtn"
msgid "Cancel"
msgstr "Annuler"
#: vpsr.rscaption
msgctxt "vpsr.rscaption"
msgid "Caption"
msgstr ""
#: vpsr.rscaptionelement
msgctxt "vpsr.rscaptionelement"
msgid "Caption"
msgstr ""
#: vpsr.rscategory
msgid "Category"
msgstr "Catégorie"
@ -223,6 +245,10 @@ msgstr "Ville:"
msgid "&Close"
msgstr "&Fermer"
#: vpsr.rscolorlbl
msgid "Color:"
msgstr ""
#: vpsr.rscompany
msgctxt "vpsr.rscompany"
msgid "Company"
@ -261,6 +287,10 @@ msgstr "Supprimer un contact..."
msgid "Edit Contact..."
msgstr "Modifier un contact..."
#: vpsr.rscontactselement
msgid "Contacts"
msgstr ""
#: vpsr.rscountry
msgid "Country"
msgstr "Pays"
@ -377,6 +407,10 @@ msgstr "Hier"
msgid "Days"
msgstr "Jours"
#: vpsr.rsdayviewelement
msgid "Day view"
msgstr ""
#: vpsr.rsdbposterror
msgid "Error posting data to the database."
msgstr "Erreur lors de l'enregistrement des données dans la base des données"
@ -386,12 +420,21 @@ msgid "Use the default sound"
msgstr "Utilisez le son par défaut"
#: vpsr.rsdelete
msgctxt "vpsr.rsdelete"
msgid "Delete"
msgstr "Supprimer"
#: vpsr.rsdeletebtn
#, fuzzy
msgctxt "vpsr.rsdeletebtn"
msgid "Delete"
msgstr "Supprimer"
#: vpsr.rsdescriptionlbl
#, fuzzy
#| msgid "Subject:"
msgctxt "vpsr.rsdescriptionlbl"
msgid "Subject:"
msgid "Description:"
msgstr "Sujet:"
#: vpsr.rsdetails
@ -436,6 +479,18 @@ msgstr "Date d'échéance:"
msgid "Error: Duplicate Resource."
msgstr "Erreur: ressource en doublon"
#: vpsr.rseditbtn
msgid "Edit"
msgstr ""
#: vpsr.rseditelementcaption
msgid "Edit element"
msgstr ""
#: vpsr.rseditformatcaption
msgid "Edit format"
msgstr ""
#: vpsr.rseditingfolders
msgid "Folder Editor."
msgstr "Editeur de dossier."
@ -448,6 +503,22 @@ msgstr "Editeur d'éléments de dossier"
msgid "Edit Print Formats..."
msgstr "Modifier les formats d'impression"
#: vpsr.rseditshapecaption
msgid "Edit shape"
msgstr ""
#: vpsr.rselements
msgid "Elements:"
msgstr ""
#: vpsr.rselementtypelbl
msgid "Element type"
msgstr ""
#: vpsr.rsellipse
msgid "ellipse"
msgstr ""
#: vpsr.rsemail
msgid "E-Mail"
msgstr "E-mail"
@ -485,6 +556,18 @@ msgstr ""
msgid "First name:"
msgstr "Prénom:"
#: vpsr.rsfontbtn
msgid "Font..."
msgstr ""
#: vpsr.rsformatlbl
msgid "Format:"
msgstr ""
#: vpsr.rsformats
msgid "Formats:"
msgstr ""
#: vpsr.rsfriday
msgid "Friday"
msgstr "Vendredi"
@ -493,6 +576,10 @@ msgstr "Vendredi"
msgid "from your schedule?"
msgstr "de votre agenda?"
#: vpsr.rsheight
msgid "Height"
msgstr ""
#: vpsr.rshintnextday
msgid "Next day"
msgstr "Jour suivant"
@ -530,6 +617,10 @@ msgstr "Hier"
msgid "Hours"
msgstr "Heures"
#: vpsr.rsinches
msgid "Inches"
msgstr ""
#: vpsr.rsinifilestructure
msgid "Incorrect structure of ini file."
msgstr "Structure du fichier d'ini incorrect"
@ -566,6 +657,14 @@ msgstr "Erreur: année non valide"
msgid "Last name:"
msgstr "Nom:"
#: vpsr.rsleft
msgid "Left"
msgstr ""
#: vpsr.rsleftline
msgid "left line"
msgstr ""
#: vpsr.rslfriday
msgctxt "vpsr.rslfriday"
msgid "F"
@ -575,6 +674,10 @@ msgstr ""
msgid "M"
msgstr ""
#: vpsr.rsloadfilebtn
msgid "Load file..."
msgstr ""
#: vpsr.rslocationlbl
msgid "Location:"
msgstr "Lieu:"
@ -607,10 +710,18 @@ msgstr ""
msgid "Master data"
msgstr "Données de base"
#: vpsr.rsmeasurementcaption
msgid "Measurement"
msgstr ""
#: vpsr.rsminutes
msgid "Minutes"
msgstr "Minutes"
#: vpsr.rsmodelbl
msgid "Mode:"
msgstr ""
#: vpsr.rsmonday
msgid "Monday"
msgstr "Lundi"
@ -656,10 +767,22 @@ msgctxt "vpsr.rsmonthpopuptoday"
msgid "Today"
msgstr "Aujourd'hui"
#: vpsr.rsmonths
msgid "Months"
msgstr ""
#: vpsr.rsmonthviewelement
msgid "Month view"
msgstr ""
#: vpsr.rsnameisrequired
msgid "Error: Name cannot be empty."
msgstr "Erreur: le nom ne peut pas être vide. "
#: vpsr.rsnamelbl
msgid "Name:"
msgstr ""
#: vpsr.rsneedelementname
msgid "Please supply an Element Name"
msgstr "Veuillez fournir un nom d'élément"
@ -668,6 +791,14 @@ msgstr "Veuillez fournir un nom d'élément"
msgid "FormatName cannot be blank"
msgstr "Nom du format ne peut pas être vide"
#: vpsr.rsnewbtn
msgid "New"
msgstr ""
#: vpsr.rsnewfilebtn
msgid "New file"
msgstr ""
#: vpsr.rsno
msgid "N"
msgstr ""
@ -746,6 +877,14 @@ msgstr "EN RETARD!"
msgid "Owner must be a TWinControl descendent"
msgstr "Le propriétaire doit être un descendant de TWinControl"
#: vpsr.rspencaption
msgid "Pen"
msgstr ""
#: vpsr.rspercent
msgid "Percent"
msgstr ""
#: vpsr.rspermanent
msgid "This operation cannot be undone!"
msgstr "Ce processus est irreversible!"
@ -820,6 +959,14 @@ msgctxt "vpsr.rsphonetypelabel9"
msgid "Other"
msgstr "Autre"
#: vpsr.rspixels
msgid "Pixels"
msgstr ""
#: vpsr.rspopupresourcegroups
msgid "Overlay events"
msgstr ""
#: vpsr.rsposition
msgid "Position"
msgstr "Position"
@ -833,6 +980,14 @@ msgctxt "vpsr.rsprintbtn"
msgid "&Print"
msgstr "&Imprimer"
#: vpsr.rsprintformatdesigner
msgid "Print format designer"
msgstr ""
#: vpsr.rsprintorder
msgid "Print order"
msgstr ""
#: vpsr.rsprintprvcancel
msgctxt "vpsr.rsprintprvcancel"
msgid "Cancel"
@ -887,6 +1042,10 @@ msgstr "Imprimer"
msgid "Print controller is not owned by a TVpControlLink!"
msgstr "Le contrôleur d'impression n'est pas la propriété d'un TVpControlLink!"
#: vpsr.rsrectangle
msgid "rectangle"
msgstr ""
#: vpsr.rsrecurrenceendslbl
msgid "Repeat until:"
msgstr "Répétez jusqu'au"
@ -899,23 +1058,51 @@ msgstr "Rendevous à répéter:"
msgid "Reminder"
msgstr "Rappel"
#: vpsr.rsreportsetup
msgid "Report setup"
msgstr ""
#: vpsr.rsresource
msgid "Resource"
msgstr "Resource"
#: vpsr.rsrightline
msgid "right line"
msgstr ""
#: vpsr.rsrotationcaption
msgid "Rotation"
msgstr ""
#: vpsr.rssaturday
msgid "Saturday"
msgstr "Samedi"
#: vpsr.rssavefilebtn
msgid "Save file..."
msgstr ""
#: vpsr.rsselectasound
msgid "Select A Sound"
msgstr "Choissisez un son"
#: vpsr.rsselectresource
msgid "No resource has been selected. Would you like to select one now?"
msgstr "Aucune resource selectionnez. Voulez-vous séléctionnez une resource maintenant?"
#: vpsr.rsshapebtn
msgid "Shape..."
msgstr ""
#: vpsr.rsshapecaption
msgctxt "vpsr.rsshapecaption"
msgid "Shape"
msgstr ""
#: vpsr.rsshapeelement
msgctxt "vpsr.rsshapeelement"
msgid "Shape"
msgstr ""
"Aucune resource selectionnez. Voulez-vous séléctionnez une resource "
"maintenant?"
#: vpsr.rssnoozebtn
msgid "&Snooze"
@ -945,6 +1132,10 @@ msgstr "Début"
msgid "State:"
msgstr "Etat:"
#: vpsr.rsstylelbl
msgid "Style:"
msgstr ""
#: vpsr.rssubjectcaption
msgctxt "vpsr.rssubjectcaption"
msgid "Subject:"
@ -954,10 +1145,6 @@ msgstr "Sujet:"
msgid "Sunday"
msgstr "Dimanche"
#: vpsr.rstallshortchars
msgid "Wy"
msgstr ""
#: vpsr.rstaskcomplete
msgctxt "vpsr.rstaskcomplete"
msgid "Task complete"
@ -975,6 +1162,10 @@ msgstr "Supprimer un tâche..."
msgid "Edit Task..."
msgstr "Modifier un tâche..."
#: vpsr.rstaskselement
msgid "Tasks"
msgstr ""
#: vpsr.rstasktitlenoresource
msgid "Task List"
msgstr "Liste des tâches"
@ -983,6 +1174,10 @@ msgstr "Liste des tâches"
msgid "Task List - "
msgstr "Liste des tâches -"
#: vpsr.rstextcaption
msgid "Text"
msgstr ""
#: vpsr.rsthrough
msgid "Through"
msgstr "Par"
@ -991,6 +1186,14 @@ msgstr "Par"
msgid "Thursday"
msgstr "Jeudi"
#: vpsr.rstimeinclbl
msgid "Time increment:"
msgstr ""
#: vpsr.rstimeincunits
msgid "Time increment units:"
msgstr ""
#: vpsr.rstitle
msgid "Title"
msgstr "Titre"
@ -999,6 +1202,18 @@ msgstr "Titre"
msgid "Title:"
msgstr "Titre:"
#: vpsr.rstltobrline
msgid "top-left to bottom-right line"
msgstr ""
#: vpsr.rstop
msgid "Top"
msgstr ""
#: vpsr.rstopline
msgid "top line"
msgstr ""
#: vpsr.rstrue
msgctxt "vpsr.rstrue"
msgid "T"
@ -1016,6 +1231,14 @@ msgstr "Erreur: Incapable d'ouvrir"
msgid "Untitled"
msgstr "Sans titre"
#: vpsr.rsvisible
msgid "Visible"
msgstr ""
#: vpsr.rsvisualcaption
msgid "Visual"
msgstr ""
#: vpsr.rswednesday
msgid "Wednesday"
msgstr "Mercredi"
@ -1082,6 +1305,22 @@ msgctxt "vpsr.rsweekpopupnavtoday"
msgid "Today"
msgstr "Aujourd'hui"
#: vpsr.rsweeks
msgid "Weeks"
msgstr ""
#: vpsr.rsweekviewelement
msgid "Week view"
msgstr ""
#: vpsr.rswidth
msgid "Width"
msgstr ""
#: vpsr.rswidthlbl
msgid "Width:"
msgstr ""
#: vpsr.rsxdays
msgid "%d days"
msgstr "%d jours"
@ -1106,6 +1345,10 @@ msgstr "Annuel par date"
msgid "Yearly By Day"
msgstr "Annuel par jour"
#: vpsr.rsyears
msgid "Years"
msgstr ""
#: vpsr.rsyes
msgid "Y"
msgstr ""
@ -1139,11 +1382,8 @@ msgid "Circular reference to: "
msgstr "Référence circulaire vers:"
#: vpsr.scommentbeforexmldecl
msgid ""
"Document cannot start with a comment if it also contains an XML declaration"
msgstr ""
"Le document ne peut pas commencer par un commentaire si elle contient "
"également une déclaration XML"
msgid "Document cannot start with a comment if it also contains an XML declaration"
msgstr "Le document ne peut pas commencer par un commentaire si elle contient également une déclaration XML"
#: vpsr.sdataaftervaldoc
msgid "There is invalid data after valid XML document"
@ -1326,9 +1566,7 @@ msgid "Comments can not be placed within other markup"
msgstr "Les commentaires ne peuvent pas être placés dans un autre balisage"
#: vpsr.snointconditional
msgid ""
"Conditional sections not allowed in internal subset of document type "
"declaration"
msgid "Conditional sections not allowed in internal subset of document type declaration"
msgstr ""
#: vpsr.snondatainpedecl
@ -1401,4 +1639,5 @@ msgstr "Spécificateur d'axe inconnu"
#: vpsr.sxmldecnotatbeg
msgid "The XML declaration must appear before the first element"
msgstr "La déclaration XML doit apparaître avant le premier élément"
msgstr "La déclaration XML doit apparaître avant le premier élément"

View File

@ -957,6 +957,10 @@ msgstr "Andere"
msgid "Pixels"
msgstr ""
#: vpsr.rspopupresourcegroups
msgid "Overlay events"
msgstr ""
#: vpsr.rsposition
msgid "Position"
msgstr "Positie"

View File

@ -944,6 +944,10 @@ msgstr ""
msgid "Pixels"
msgstr ""
#: vpsr.rspopupresourcegroups
msgid "Overlay events"
msgstr ""
#: vpsr.rsposition
msgid "Position"
msgstr ""

View File

@ -954,6 +954,10 @@ msgstr "Другой"
msgid "Pixels"
msgstr ""
#: vpsr.rspopupresourcegroups
msgid "Overlay events"
msgstr ""
#: vpsr.rsposition
msgid "Position"
msgstr "Позиция"

View File

@ -143,6 +143,7 @@ type
public
constructor Create(Owner: TVpResources);
destructor Destroy; override;
procedure GetResourceGroups(AList: TList);
property Loading: Boolean read FLoading write FLoading;
property Changed: Boolean read FChanged write SetChanged;
property Deleted: Boolean read FDeleted write SetDeleted;
@ -888,6 +889,19 @@ begin
inherited;
end;
{ Returns all resource groups attached to this resource }
procedure TVpResource.GetResourceGroups(AList: TList);
var
i: Integer;
grp: TVpResourceGroup;
begin
for i:=0 to Owner.ResourceGroupCount - 1 do begin
grp := Owner.ResourceGroups[i];
if grp.ResourceID = FResourceID then
AList.Add(grp);
end;
end;
procedure TVpResource.SetContacts(const Value: TVpContacts);
begin
FContacts := Value;

View File

@ -350,6 +350,8 @@ type
procedure PopupPrevMonth(Sender: TObject);
procedure PopupNextYear(Sender: TObject);
procedure PopupPrevYear(Sender: TObject);
procedure PopupPickResourceGroupEvent(Sender: TObject);
procedure PopupDropdownEvent(Sender: TObject);
procedure InitializeDefaultPopup;
procedure Paint; override;
procedure Loaded; override;
@ -769,12 +771,15 @@ begin
dvMouseDownPoint := Point(0, 0);
dvMouseDown := false;
{ size }
// Size
Height := 225;
Width := 265;
// popup menu
FDefaultPopup := TPopupMenu.Create(Self);
Self.PopupMenu := FDefaultPopup;
FDefaultPopup.OnPopup := PopupDropDownEvent;
LoadLanguage;
dvHookUp;
@ -884,6 +889,8 @@ var
NewItem: TMenuItem;
NewSubItem: TMenuItem;
begin
FDefaultPopup.Items.Clear;
if RSDayPopupAdd <> '' then begin
NewItem := TMenuItem.Create(Self);
NewItem.Caption := RSDayPopupAdd;
@ -1002,6 +1009,9 @@ begin
NewItem.Add(NewSubItem);
end;
end;
if (Datastore <> nil) and (Datastore.Resource <> nil) then
AddResourceGroupMenu(FDefaultPopup.Items, Datastore.Resource, PopupPickResourceGroupEvent);
end;
{=====}
@ -1148,6 +1158,22 @@ begin
end;
{=====}
procedure TVpDayView.PopupPickResourceGroupEvent(Sender: TObject);
var
grp: TVpResourceGroup;
begin
if TMenuItem(Sender).Tag = 0 then
Datastore.Resource.Group := ''
else
Datastore.Resource.Group := TMenuItem(Sender).Caption;
Datastore.UpdateGroupEvents;
end;
procedure TVpDayView.PopupDropDownEvent(Sender: TObject);
begin
InitializeDefaultPopup;
end;
procedure TVpDayView.Loaded;
begin
inherited;

View File

@ -39,7 +39,7 @@ uses
{$ELSE}
Windows, Consts, Messages,
{$ENDIF}
Buttons, Classes, Controls, StdCtrls, ExtCtrls, Forms, Graphics,
Buttons, Classes, Controls, StdCtrls, ExtCtrls, Forms, Graphics, Menus,
SysUtils, VpBase, VpData, VpConst;
type
@ -141,6 +141,9 @@ function GetRealFontHeight(AFont: TFont): Integer;
function DecodeLineEndings(const AText: String): String;
function EncodeLineEndings(const AText: String): String;
procedure AddResourceGroupMenu(AMenu: TMenuItem; AResource: TVpResource;
AEventHandler: TNotifyEvent);
{$IFDEF LCL}
procedure HighDPI(FromDPI: integer);
procedure ScaleDPI(Control: TControl; FromDPI: integer);
@ -159,7 +162,7 @@ uses
{$IFDEF LCL}
DateUtils,
{$ENDIF}
VpException, VpSR;
VpException, VpSR, VpBaseDS;
procedure StripString(var Str: string);
begin
@ -691,6 +694,70 @@ begin
Result := StringReplace(AText, LineEnding, '\n', [rfReplaceAll]);
end;
procedure AddResourceGroupMenu(AMenu: TMenuItem; AResource: TVpResource;
AEventHandler: TNotifyEvent);
var
datastore: TVpCustomDatastore;
grp: TVpResourceGroup;
list: TList;
newItem: TMenuItem;
newSubItem: TMenuItem;
i: Integer;
begin
if (AMenu = nil) or (AResource = nil) or (AResource.Owner = nil) then
exit;
datastore := AResource.Owner.Owner as TVpCustomDatastore;
if (RSPopupResourceGroups <> '') and
(datastore <> nil) and (datastore.Resource <> nil) then
begin
list := TList.Create;
try
datastore.Resource.GetResourceGroups(list);
if list.Count > 0 then begin
newItem := TMenuItem.Create(AMenu.Owner);
newItem.Caption := '-';
AMenu.Add(newItem);
newItem := TMenuItem.Create(AMenu.Owner);
newItem.Caption := RSPopupResourceGroups;
newItem.Tag := 0;
AMenu.Add(newItem);
newSubItem := TMenuItem.Create(AMenu.Owner);
newSubItem.Caption := 'none';
newSubItem.OnClick := AEventHandler;
newSubItem.GroupIndex := 1;
newSubItem.AutoCheck := true;
newSubItem.Checked := datastore.Resource.Group = '';
newSubItem.Tag := 0;
newItem.Add(newSubItem);
if list.Count > 1 then begin
newSubItem := TMenuItem.Create(AMenu.Owner);
newSubItem.Caption := '-';
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.Caption);
newSubItem.Tag := PtrInt(grp);
newItem.Add(NewSubItem);
end;
end;
finally
list.Free;
end;
end;
end;
{$IFDEF LCL}
procedure HighDPI(FromDPI: integer);
var

View File

@ -207,6 +207,7 @@ resourcestring
RSHintPrevWeek = 'Previous week'; {!!.01}
RSHintPrevDay = 'Previous day';
RsHintNextDay = 'Next day';
RSPopupResourceGroups = 'Overlay events';
{ field names }
RSPosition = 'Position';

View File

@ -190,6 +190,8 @@ type
procedure PopupPrevMonth(Sender: TObject);
procedure PopupNextYear(Sender: TObject);
procedure PopupPrevYear(Sender: TObject);
procedure PopupPickResourceGroupEvent(Sender: TObject);
procedure PopupDropdownEvent(Sender: TObject);
procedure InitializeDefaultPopup;
procedure Paint; override;
procedure Loaded; override;
@ -463,6 +465,7 @@ begin
FDefaultPopup := TPopupMenu.Create (Self);
Self.PopupMenu := FDefaultPopup;
FDefaultPopup.OnPopup := PopupDropDownEvent;
LoadLanguage;
FAllDayEventAttr.BackgroundColor := Color;
@ -901,6 +904,8 @@ var
NewItem: TMenuItem;
NewSubItem: TMenuItem;
begin
FDefaultPopup.Items.Clear;
if RSWeekPopupAdd <> '' then begin
NewItem := TMenuItem.Create (Self);
NewItem.Caption := RSWeekPopupAdd;
@ -987,6 +992,9 @@ begin
NewItem.Add (NewSubItem);
end;
end;
if (Datastore <> nil) and (Datastore.Resource <> nil) then
AddResourceGroupMenu(FDefaultPopup.Items, Datastore.Resource, PopupPickResourceGroupEvent);
end;
{=====}
@ -994,7 +1002,6 @@ procedure TVpWeekView.PopupAddEvent(Sender: TObject);
var
StartTime: TDateTime;
EndTime: TDateTime;
begin
if ReadOnly then
Exit;
@ -1112,7 +1119,22 @@ begin
DecodeDate(Date, Y, M, D);
Date := EncodeDate(Y - 1, M, 1);
end;
{=====}
procedure TVpWeekView.PopupPickResourceGroupEvent(Sender: TObject);
var
grp: TVpResourceGroup;
begin
if TMenuItem(Sender).Tag = 0 then
Datastore.Resource.Group := ''
else
Datastore.Resource.Group := TMenuItem(Sender).Caption;
Datastore.UpdateGroupEvents;
end;
procedure TVpWeekView.PopupDropDownEvent(Sender: TObject);
begin
InitializeDefaultPopup;
end;
procedure TVpWeekView.wvSpawnEventEditDialog(NewEvent: Boolean);
var

View File

@ -34,6 +34,7 @@ type
ADEventBorderColor: TColor;
protected
function BuildEventString(AEvent: TVpEvent; AStartTime, AEndTime: TDateTime): String;
procedure Clear;
function DrawAllDayEvents(ADate: TDateTime; DayRect: TRect; var EAIndex: Integer): Boolean;
procedure DrawBorders;
@ -74,6 +75,30 @@ begin
FWeekView := AWeekView;
end;
function TVpWeekViewPainter.BuildEventString(AEvent: TVpEvent;
AStartTime, AEndTime: TDateTime): String;
var
timeFmt: String;
res: TVpResource;
begin
if FWeekView.ShowEventTime then
begin
timefmt := IfThen(FWeekView.TimeFormat = tf24Hour, 'hh:nn', 'hh:nn AM/PM');
Result := Format('%s - %s: ', [
FormatDateTime(timeFmt, AStartTime),
FormatDateTime(timeFmt, AEndTime)
]);
Result := Result + ' ' + AEvent.Description;
end else
Result := AEvent.Description;
if AEvent.IsOverlayed then
begin
res := FWeekView.Datastore.Resources.GetResource(AEvent.ResourceID);
Result := Format('[%s] %s', [res.Description, Result]);
end;
end;
procedure TVpWeekViewPainter.Clear;
begin
RenderCanvas.Brush.Color := RealColor;
@ -491,8 +516,10 @@ var
todayStartTime: TDateTime;
todayEndTime: TDateTime;
strLen: Integer;
timefmt: String;
oldFontColor: TColor;
begin
oldFontColor := RenderCanvas.Font.Color;
{ format the display text }
todayStartTime := AEvent.StartTime;
todayEndTime := AEvent.EndTime;
@ -508,22 +535,14 @@ begin
{ set the event font }
RenderCanvas.Font.Assign(FWeekView.EventFont);
RenderCanvas.Font.Size := ScaleY(RenderCanvas.Font.Size, DesignTimeDPI);
if AEvent.IsOverlayed then
RenderCanvas.Font.Color := clGray;
RenderCanvas.Brush.Color := RealColor;
{ Build the event text }
if FWeekView.ShowEventTime then
begin
timefmt := IfThen(FWeekView.TimeFormat = tf24Hour, 'hh:nn', 'hh:nn AM/PM');
dayStr := Format('%s - %s: ', [
FormatDateTime(timeFmt, todayStartTime),
FormatDateTime(timeFmt, todayEndTime)
]);
end else
dayStr := '';
dayStr := IfThen(dayStr = '', AEvent.Description, dayStr + ' ' + AEvent.Description);
dayStr := BuildEventString(AEvent, todayStartTime, todayEndTime);
strLen := RenderCanvas.TextWidth(dayStr);
if (strLen > WidthOf(TextRect) - TextMargin) then // wp: shouldn't this be 2*TextMargin ?
if (strLen > WidthOf(TextRect) - TextMargin) then // wp: shouldn't this be 2*TextMargin ?
dayStr := GetDisplayString(RenderCanvas, dayStr, 0, WidthOf(TextRect) - TextMargin * 2);
{ Write the event text }
@ -531,6 +550,8 @@ begin
TextRect.Left + TextMargin, TextRect.Top + TextMargin div 2,
dayStr
);
RenderCanvas.Font.Color := oldFontColor;
end;
procedure TVpWeekViewPainter.DrawHeader;