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 := VpControlLink1.Datastore;
datastore.Resources.AddResourceGroup(GROUP_NAME, [1, 2]); datastore.Resources.AddResourceGroup(GROUP_NAME, [1, 2]);
if datastore.Resource <> nil then 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! // Important: This is not called internally so far!
datastore.RefreshEvents; datastore.RefreshEvents;
end; end;

View File

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

View File

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

View File

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

View File

@ -143,6 +143,7 @@ type
public public
constructor Create(Owner: TVpResources); constructor Create(Owner: TVpResources);
destructor Destroy; override; destructor Destroy; override;
procedure GetResourceGroups(AList: TList);
property Loading: Boolean read FLoading write FLoading; property Loading: Boolean read FLoading write FLoading;
property Changed: Boolean read FChanged write SetChanged; property Changed: Boolean read FChanged write SetChanged;
property Deleted: Boolean read FDeleted write SetDeleted; property Deleted: Boolean read FDeleted write SetDeleted;
@ -888,6 +889,19 @@ begin
inherited; inherited;
end; 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); procedure TVpResource.SetContacts(const Value: TVpContacts);
begin begin
FContacts := Value; FContacts := Value;

View File

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

View File

@ -39,7 +39,7 @@ uses
{$ELSE} {$ELSE}
Windows, Consts, Messages, Windows, Consts, Messages,
{$ENDIF} {$ENDIF}
Buttons, Classes, Controls, StdCtrls, ExtCtrls, Forms, Graphics, Buttons, Classes, Controls, StdCtrls, ExtCtrls, Forms, Graphics, Menus,
SysUtils, VpBase, VpData, VpConst; SysUtils, VpBase, VpData, VpConst;
type type
@ -141,6 +141,9 @@ function GetRealFontHeight(AFont: TFont): Integer;
function DecodeLineEndings(const AText: String): String; function DecodeLineEndings(const AText: String): String;
function EncodeLineEndings(const AText: String): String; function EncodeLineEndings(const AText: String): String;
procedure AddResourceGroupMenu(AMenu: TMenuItem; AResource: TVpResource;
AEventHandler: TNotifyEvent);
{$IFDEF LCL} {$IFDEF LCL}
procedure HighDPI(FromDPI: integer); procedure HighDPI(FromDPI: integer);
procedure ScaleDPI(Control: TControl; FromDPI: integer); procedure ScaleDPI(Control: TControl; FromDPI: integer);
@ -159,7 +162,7 @@ uses
{$IFDEF LCL} {$IFDEF LCL}
DateUtils, DateUtils,
{$ENDIF} {$ENDIF}
VpException, VpSR; VpException, VpSR, VpBaseDS;
procedure StripString(var Str: string); procedure StripString(var Str: string);
begin begin
@ -691,6 +694,70 @@ begin
Result := StringReplace(AText, LineEnding, '\n', [rfReplaceAll]); Result := StringReplace(AText, LineEnding, '\n', [rfReplaceAll]);
end; 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} {$IFDEF LCL}
procedure HighDPI(FromDPI: integer); procedure HighDPI(FromDPI: integer);
var var

View File

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

View File

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

View File

@ -34,6 +34,7 @@ type
ADEventBorderColor: TColor; ADEventBorderColor: TColor;
protected protected
function BuildEventString(AEvent: TVpEvent; AStartTime, AEndTime: TDateTime): String;
procedure Clear; procedure Clear;
function DrawAllDayEvents(ADate: TDateTime; DayRect: TRect; var EAIndex: Integer): Boolean; function DrawAllDayEvents(ADate: TDateTime; DayRect: TRect; var EAIndex: Integer): Boolean;
procedure DrawBorders; procedure DrawBorders;
@ -74,6 +75,30 @@ begin
FWeekView := AWeekView; FWeekView := AWeekView;
end; 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; procedure TVpWeekViewPainter.Clear;
begin begin
RenderCanvas.Brush.Color := RealColor; RenderCanvas.Brush.Color := RealColor;
@ -491,8 +516,10 @@ var
todayStartTime: TDateTime; todayStartTime: TDateTime;
todayEndTime: TDateTime; todayEndTime: TDateTime;
strLen: Integer; strLen: Integer;
timefmt: String; oldFontColor: TColor;
begin begin
oldFontColor := RenderCanvas.Font.Color;
{ format the display text } { format the display text }
todayStartTime := AEvent.StartTime; todayStartTime := AEvent.StartTime;
todayEndTime := AEvent.EndTime; todayEndTime := AEvent.EndTime;
@ -508,22 +535,14 @@ begin
{ set the event font } { set the event font }
RenderCanvas.Font.Assign(FWeekView.EventFont); RenderCanvas.Font.Assign(FWeekView.EventFont);
RenderCanvas.Font.Size := ScaleY(RenderCanvas.Font.Size, DesignTimeDPI); RenderCanvas.Font.Size := ScaleY(RenderCanvas.Font.Size, DesignTimeDPI);
if AEvent.IsOverlayed then
RenderCanvas.Font.Color := clGray;
RenderCanvas.Brush.Color := RealColor; RenderCanvas.Brush.Color := RealColor;
{ Build the event text } { Build the event text }
if FWeekView.ShowEventTime then dayStr := BuildEventString(AEvent, todayStartTime, todayEndTime);
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);
strLen := RenderCanvas.TextWidth(dayStr); 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); dayStr := GetDisplayString(RenderCanvas, dayStr, 0, WidthOf(TextRect) - TextMargin * 2);
{ Write the event text } { Write the event text }
@ -531,6 +550,8 @@ begin
TextRect.Left + TextMargin, TextRect.Top + TextMargin div 2, TextRect.Left + TextMargin, TextRect.Top + TextMargin div 2,
dayStr dayStr
); );
RenderCanvas.Font.Color := oldFontColor;
end; end;
procedure TVpWeekViewPainter.DrawHeader; procedure TVpWeekViewPainter.DrawHeader;