tvplanit: Add option to select category to ical task import form. Update translations (de, en).

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@8385 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
wp_xxyyzz
2022-08-12 13:47:03 +00:00
parent 6c53ea5417
commit b3d76d7f60
19 changed files with 309 additions and 125 deletions

View File

@ -80,6 +80,10 @@ msgstr "Termin"
msgid "Sat" msgid "Sat"
msgstr "Sam" msgstr "Sam"
#: vpsr.rsassignedcategory
msgid "Assigned category"
msgstr "Zugewiesene Kategorie"
#: vpsr.rsasunday #: vpsr.rsasunday
msgid "Sun" msgid "Sun"
msgstr "Son" msgstr "Son"
@ -263,6 +267,10 @@ msgstr "Ereignis aus dem Kalender löschen?"
msgid "Delete this task from your list?" msgid "Delete this task from your list?"
msgstr "Diese Aufgabe von Ihrer Liste löschen?" msgstr "Diese Aufgabe von Ihrer Liste löschen?"
#: vpsr.rscontactitems
msgid "Contact items"
msgstr "Adress-Einträge"
#: vpsr.rscontactpopupadd #: vpsr.rscontactpopupadd
msgid "Add contact..." msgid "Add contact..."
msgstr "Kontakt hinzufügen..." msgstr "Kontakt hinzufügen..."
@ -460,6 +468,10 @@ msgctxt "vpsr.rsevent"
msgid "Event" msgid "Event"
msgstr "Ereignis" msgstr "Ereignis"
#: vpsr.rseventitems
msgid "Event items"
msgstr "Termin-Einträge"
#: vpsr.rseverydays #: vpsr.rseverydays
#, object-pascal-format #, object-pascal-format
msgid "Every %d days" msgid "Every %d days"
@ -561,15 +573,15 @@ msgstr "iCalendar Dateien ('*.ical;*.ics)|*.ical;*.ics"
#: vpsr.rsimporticalevent #: vpsr.rsimporticalevent
msgid "Import ICalendar Event" msgid "Import ICalendar Event"
msgstr "" msgstr "iCalendar-Termin importieren"
#: vpsr.rsimporticaltask #: vpsr.rsimporticaltask
msgid "Import ICalendar Task" msgid "Import ICalendar Task"
msgstr "" msgstr "ICalendar-Aufgabe importieren"
#: vpsr.rsimportvcard #: vpsr.rsimportvcard
msgid "Import VCard" msgid "Import VCard"
msgstr "" msgstr "VCard-Kontakt importieren"
#: vpsr.rsinches #: vpsr.rsinches
msgid "Inches" msgid "Inches"
@ -782,7 +794,7 @@ msgstr "TCanvas wurde nicht zugewiesen"
#: vpsr.rsnocontactsfoundinvcard #: vpsr.rsnocontactsfoundinvcard
#, object-pascal-format #, object-pascal-format
msgid "No contact items found in \"%s\"." msgid "No contact items found in \"%s\"."
msgstr "" msgstr "Keine Kontakt-Einträge in \"%s\" gefunden."
#: vpsr.rsnocontrollink #: vpsr.rsnocontrollink
msgid "Component must be linked to a TVpControlLink" msgid "Component must be linked to a TVpControlLink"
@ -918,6 +930,10 @@ msgctxt "vpsr.rspersonalwebsitelabel"
msgid "Personal" msgid "Personal"
msgstr "Persönlich" msgstr "Persönlich"
#: vpsr.rsphone
msgid "Phone"
msgstr "Telefon"
#: vpsr.rsphonefax #: vpsr.rsphonefax
msgid "Phone/fax" msgid "Phone/fax"
msgstr "Telefon/Fax" msgstr "Telefon/Fax"
@ -1266,6 +1282,10 @@ msgctxt "vpsr.rstaskcomplete"
msgid "Task complete" msgid "Task complete"
msgstr "Aufgabe fertiggestellt" msgstr "Aufgabe fertiggestellt"
#: vpsr.rstaskitems
msgid "Task items"
msgstr "Aufgaben-Einträge"
#: vpsr.rstaskpopupadd #: vpsr.rstaskpopupadd
msgid "Add task..." msgid "Add task..."
msgstr "Aufgabe hinzufügen..." msgstr "Aufgabe hinzufügen..."
@ -1770,4 +1790,3 @@ 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

@ -80,6 +80,10 @@ msgstr "Appointment"
msgid "Sat" msgid "Sat"
msgstr "Sat" msgstr "Sat"
#: vpsr.rsassignedcategory
msgid "Assigned category"
msgstr "Assigned category"
#: vpsr.rsasunday #: vpsr.rsasunday
msgid "Sun" msgid "Sun"
msgstr "Sun" msgstr "Sun"
@ -262,6 +266,10 @@ msgstr "Delete event from schedule?"
msgid "Delete this task from your list?" msgid "Delete this task from your list?"
msgstr "Delete this task from your list?" msgstr "Delete this task from your list?"
#: vpsr.rscontactitems
msgid "Contact items"
msgstr "Contact items"
#: vpsr.rscontactpopupadd #: vpsr.rscontactpopupadd
msgid "Add contact..." msgid "Add contact..."
msgstr "Add contact..." msgstr "Add contact..."
@ -454,6 +462,10 @@ msgctxt "vpsr.rsevent"
msgid "Event" msgid "Event"
msgstr "Event" msgstr "Event"
#: vpsr.rseventitems
msgid "Event items"
msgstr "Event items"
#: vpsr.rseverydays #: vpsr.rseverydays
#, object-pascal-format #, object-pascal-format
msgid "Every %d days" msgid "Every %d days"
@ -555,15 +567,15 @@ msgstr "iCalendar files (*.ical;*.ics)|*.ical;*.ics"
#: vpsr.rsimporticalevent #: vpsr.rsimporticalevent
msgid "Import ICalendar Event" msgid "Import ICalendar Event"
msgstr "" msgstr "Import ICalendar Event"
#: vpsr.rsimporticaltask #: vpsr.rsimporticaltask
msgid "Import ICalendar Task" msgid "Import ICalendar Task"
msgstr "" msgstr "Import ICalendar Task"
#: vpsr.rsimportvcard #: vpsr.rsimportvcard
msgid "Import VCard" msgid "Import VCard"
msgstr "" msgstr "Import VCard"
#: vpsr.rsinches #: vpsr.rsinches
msgid "Inches" msgid "Inches"
@ -774,7 +786,7 @@ msgstr "TCanvas not assigned"
#: vpsr.rsnocontactsfoundinvcard #: vpsr.rsnocontactsfoundinvcard
#, object-pascal-format #, object-pascal-format
msgid "No contact items found in \"%s\"." msgid "No contact items found in \"%s\"."
msgstr "" msgstr "No contact items found in \"%s\"."
#: vpsr.rsnocontrollink #: vpsr.rsnocontrollink
msgid "Component must be linked to a TVpControlLink" msgid "Component must be linked to a TVpControlLink"
@ -910,6 +922,10 @@ msgctxt "vpsr.rspersonalwebsitelabel"
msgid "Personal" msgid "Personal"
msgstr "Personal" msgstr "Personal"
#: vpsr.rsphone
msgid "Phone"
msgstr "Phone"
#: vpsr.rsphonefax #: vpsr.rsphonefax
msgid "Phone/fax" msgid "Phone/fax"
msgstr "Phone/fax" msgstr "Phone/fax"
@ -1250,6 +1266,10 @@ msgstr "Sunday"
msgid "Task complete" msgid "Task complete"
msgstr "Task complete" msgstr "Task complete"
#: vpsr.rstaskitems
msgid "Task items"
msgstr "Task items"
#: vpsr.rstaskpopupadd #: vpsr.rstaskpopupadd
msgid "Add task..." msgid "Add task..."
msgstr "Add task..." msgstr "Add task..."
@ -1751,4 +1771,3 @@ msgstr "Unknown axis specifier: %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 "The XML declaration must appear before the first element" msgstr "The XML declaration must appear before the first element"

View File

@ -70,6 +70,10 @@ msgstr ""
msgid "Sat" msgid "Sat"
msgstr "La" msgstr "La"
#: vpsr.rsassignedcategory
msgid "Assigned category"
msgstr ""
#: vpsr.rsasunday #: vpsr.rsasunday
msgid "Sun" msgid "Sun"
msgstr "Su" msgstr "Su"
@ -253,6 +257,10 @@ msgstr ""
msgid "Delete this task from your list?" msgid "Delete this task from your list?"
msgstr "" msgstr ""
#: vpsr.rscontactitems
msgid "Contact items"
msgstr ""
#: vpsr.rscontactpopupadd #: vpsr.rscontactpopupadd
msgid "Add contact..." msgid "Add contact..."
msgstr "" msgstr ""
@ -450,6 +458,10 @@ msgctxt "vpsr.rsevent"
msgid "Event" msgid "Event"
msgstr "" msgstr ""
#: vpsr.rseventitems
msgid "Event items"
msgstr ""
#: vpsr.rseverydays #: vpsr.rseverydays
#, object-pascal-format #, object-pascal-format
msgid "Every %d days" msgid "Every %d days"
@ -909,6 +921,10 @@ msgctxt "vpsr.rspersonalwebsitelabel"
msgid "Personal" msgid "Personal"
msgstr "" msgstr ""
#: vpsr.rsphone
msgid "Phone"
msgstr ""
#: vpsr.rsphonefax #: vpsr.rsphonefax
msgid "Phone/fax" msgid "Phone/fax"
msgstr "" msgstr ""
@ -1257,6 +1273,10 @@ msgctxt "vpsr.rstaskcomplete"
msgid "Task complete" msgid "Task complete"
msgstr "" msgstr ""
#: vpsr.rstaskitems
msgid "Task items"
msgstr ""
#: vpsr.rstaskpopupadd #: vpsr.rstaskpopupadd
msgid "Add task..." msgid "Add task..."
msgstr "" msgstr ""

View File

@ -86,6 +86,10 @@ msgstr "Rendevous"
msgid "Sat" msgid "Sat"
msgstr "Sam" msgstr "Sam"
#: vpsr.rsassignedcategory
msgid "Assigned category"
msgstr ""
#: vpsr.rsasunday #: vpsr.rsasunday
msgid "Sun" msgid "Sun"
msgstr "Dim" msgstr "Dim"
@ -269,6 +273,10 @@ msgstr "Supprimer l'événement du calendrier"
msgid "Delete this task from your list?" msgid "Delete this task from your list?"
msgstr "Supprimer la tache de votre liste?" msgstr "Supprimer la tache de votre liste?"
#: vpsr.rscontactitems
msgid "Contact items"
msgstr ""
#: vpsr.rscontactpopupadd #: vpsr.rscontactpopupadd
msgid "Add contact..." msgid "Add contact..."
msgstr "Ajouter un contact..." msgstr "Ajouter un contact..."
@ -466,6 +474,10 @@ msgctxt "vpsr.rsevent"
msgid "Event" msgid "Event"
msgstr "Événement" msgstr "Événement"
#: vpsr.rseventitems
msgid "Event items"
msgstr ""
#: vpsr.rseverydays #: vpsr.rseverydays
#, object-pascal-format #, object-pascal-format
msgid "Every %d days" msgid "Every %d days"
@ -924,6 +936,10 @@ msgctxt "vpsr.rspersonalwebsitelabel"
msgid "Personal" msgid "Personal"
msgstr "Personnel" msgstr "Personnel"
#: vpsr.rsphone
msgid "Phone"
msgstr ""
#: vpsr.rsphonefax #: vpsr.rsphonefax
msgid "Phone/fax" msgid "Phone/fax"
msgstr "" msgstr ""
@ -1274,6 +1290,10 @@ msgctxt "vpsr.rstaskcomplete"
msgid "Task complete" msgid "Task complete"
msgstr "Tache terminé" msgstr "Tache terminé"
#: vpsr.rstaskitems
msgid "Task items"
msgstr ""
#: vpsr.rstaskpopupadd #: vpsr.rstaskpopupadd
msgid "Add task..." msgid "Add task..."
msgstr "Ajouter un tâche..." msgstr "Ajouter un tâche..."

View File

@ -80,6 +80,10 @@ msgstr "Afspraak"
msgid "Sat" msgid "Sat"
msgstr "Za" msgstr "Za"
#: vpsr.rsassignedcategory
msgid "Assigned category"
msgstr ""
#: vpsr.rsasunday #: vpsr.rsasunday
msgid "Sun" msgid "Sun"
msgstr "Zo" msgstr "Zo"
@ -263,6 +267,10 @@ msgstr "Gebeurtenis wissen uit de kalender?"
msgid "Delete this task from your list?" msgid "Delete this task from your list?"
msgstr "Deze taak uit de lijst wissen?" msgstr "Deze taak uit de lijst wissen?"
#: vpsr.rscontactitems
msgid "Contact items"
msgstr ""
#: vpsr.rscontactpopupadd #: vpsr.rscontactpopupadd
msgid "Add contact..." msgid "Add contact..."
msgstr "Contact toevoegen..." msgstr "Contact toevoegen..."
@ -460,6 +468,10 @@ msgctxt "vpsr.rsevent"
msgid "Event" msgid "Event"
msgstr "Gebeurtenis" msgstr "Gebeurtenis"
#: vpsr.rseventitems
msgid "Event items"
msgstr ""
#: vpsr.rseverydays #: vpsr.rseverydays
#, object-pascal-format #, object-pascal-format
msgid "Every %d days" msgid "Every %d days"
@ -918,6 +930,10 @@ msgctxt "vpsr.rspersonalwebsitelabel"
msgid "Personal" msgid "Personal"
msgstr "Persoonlijk" msgstr "Persoonlijk"
#: vpsr.rsphone
msgid "Phone"
msgstr ""
#: vpsr.rsphonefax #: vpsr.rsphonefax
msgid "Phone/fax" msgid "Phone/fax"
msgstr "" msgstr ""
@ -1268,6 +1284,10 @@ msgctxt "vpsr.rstaskcomplete"
msgid "Task complete" msgid "Task complete"
msgstr "Taak afgerond" msgstr "Taak afgerond"
#: vpsr.rstaskitems
msgid "Task items"
msgstr ""
#: vpsr.rstaskpopupadd #: vpsr.rstaskpopupadd
msgid "Add task..." msgid "Add task..."
msgstr "Taak toevoegen..." msgstr "Taak toevoegen..."

View File

@ -80,6 +80,10 @@ msgstr "Spotkanie"
msgid "Sat" msgid "Sat"
msgstr "Sob" msgstr "Sob"
#: vpsr.rsassignedcategory
msgid "Assigned category"
msgstr ""
#: vpsr.rsasunday #: vpsr.rsasunday
msgid "Sun" msgid "Sun"
msgstr "Nie" msgstr "Nie"
@ -263,6 +267,10 @@ msgstr "Skasować wydarzenie z kalendarza?"
msgid "Delete this task from your list?" msgid "Delete this task from your list?"
msgstr "Skasować zadanie z listy?" msgstr "Skasować zadanie z listy?"
#: vpsr.rscontactitems
msgid "Contact items"
msgstr ""
#: vpsr.rscontactpopupadd #: vpsr.rscontactpopupadd
msgid "Add contact..." msgid "Add contact..."
msgstr "Dodawanie kontaktu..." msgstr "Dodawanie kontaktu..."
@ -460,6 +468,10 @@ msgctxt "vpsr.rsevent"
msgid "Event" msgid "Event"
msgstr "Wydarzenie" msgstr "Wydarzenie"
#: vpsr.rseventitems
msgid "Event items"
msgstr ""
#: vpsr.rseverydays #: vpsr.rseverydays
#, object-pascal-format #, object-pascal-format
msgid "Every %d days" msgid "Every %d days"
@ -918,6 +930,10 @@ msgctxt "vpsr.rspersonalwebsitelabel"
msgid "Personal" msgid "Personal"
msgstr "Osobisty" msgstr "Osobisty"
#: vpsr.rsphone
msgid "Phone"
msgstr ""
#: vpsr.rsphonefax #: vpsr.rsphonefax
msgid "Phone/fax" msgid "Phone/fax"
msgstr "Telefon/Fax" msgstr "Telefon/Fax"
@ -1266,6 +1282,10 @@ msgctxt "vpsr.rstaskcomplete"
msgid "Task complete" msgid "Task complete"
msgstr "Zadanie wykonane" msgstr "Zadanie wykonane"
#: vpsr.rstaskitems
msgid "Task items"
msgstr ""
#: vpsr.rstaskpopupadd #: vpsr.rstaskpopupadd
msgid "Add task..." msgid "Add task..."
msgstr "Dodaj zadanie..." msgstr "Dodaj zadanie..."

View File

@ -70,6 +70,10 @@ msgstr ""
msgid "Sat" msgid "Sat"
msgstr "" msgstr ""
#: vpsr.rsassignedcategory
msgid "Assigned category"
msgstr ""
#: vpsr.rsasunday #: vpsr.rsasunday
msgid "Sun" msgid "Sun"
msgstr "" msgstr ""
@ -252,6 +256,10 @@ msgstr ""
msgid "Delete this task from your list?" msgid "Delete this task from your list?"
msgstr "" msgstr ""
#: vpsr.rscontactitems
msgid "Contact items"
msgstr ""
#: vpsr.rscontactpopupadd #: vpsr.rscontactpopupadd
msgid "Add contact..." msgid "Add contact..."
msgstr "" msgstr ""
@ -444,6 +452,10 @@ msgctxt "vpsr.rsevent"
msgid "Event" msgid "Event"
msgstr "" msgstr ""
#: vpsr.rseventitems
msgid "Event items"
msgstr ""
#: vpsr.rseverydays #: vpsr.rseverydays
#, object-pascal-format #, object-pascal-format
msgid "Every %d days" msgid "Every %d days"
@ -900,6 +912,10 @@ msgctxt "vpsr.rspersonalwebsitelabel"
msgid "Personal" msgid "Personal"
msgstr "" msgstr ""
#: vpsr.rsphone
msgid "Phone"
msgstr ""
#: vpsr.rsphonefax #: vpsr.rsphonefax
msgid "Phone/fax" msgid "Phone/fax"
msgstr "" msgstr ""
@ -1240,6 +1256,10 @@ msgstr ""
msgid "Task complete" msgid "Task complete"
msgstr "" msgstr ""
#: vpsr.rstaskitems
msgid "Task items"
msgstr ""
#: vpsr.rstaskpopupadd #: vpsr.rstaskpopupadd
msgid "Add task..." msgid "Add task..."
msgstr "" msgstr ""

View File

@ -80,6 +80,10 @@ msgstr "Встреча"
msgid "Sat" msgid "Sat"
msgstr "Сб" msgstr "Сб"
#: vpsr.rsassignedcategory
msgid "Assigned category"
msgstr ""
#: vpsr.rsasunday #: vpsr.rsasunday
msgid "Sun" msgid "Sun"
msgstr "Вск" msgstr "Вск"
@ -263,6 +267,10 @@ msgstr "Удалить событие из расписания?"
msgid "Delete this task from your list?" msgid "Delete this task from your list?"
msgstr "Удалить эту задачу из вашего списка?" msgstr "Удалить эту задачу из вашего списка?"
#: vpsr.rscontactitems
msgid "Contact items"
msgstr ""
#: vpsr.rscontactpopupadd #: vpsr.rscontactpopupadd
msgid "Add contact..." msgid "Add contact..."
msgstr "Добавить контакт..." msgstr "Добавить контакт..."
@ -460,6 +468,10 @@ msgctxt "vpsr.rsevent"
msgid "Event" msgid "Event"
msgstr "Событие" msgstr "Событие"
#: vpsr.rseventitems
msgid "Event items"
msgstr ""
#: vpsr.rseverydays #: vpsr.rseverydays
#, object-pascal-format #, object-pascal-format
msgid "Every %d days" msgid "Every %d days"
@ -918,6 +930,10 @@ msgctxt "vpsr.rspersonalwebsitelabel"
msgid "Personal" msgid "Personal"
msgstr "Персонал" msgstr "Персонал"
#: vpsr.rsphone
msgid "Phone"
msgstr ""
#: vpsr.rsphonefax #: vpsr.rsphonefax
msgid "Phone/fax" msgid "Phone/fax"
msgstr "" msgstr ""
@ -1266,6 +1282,10 @@ msgctxt "vpsr.rstaskcomplete"
msgid "Task complete" msgid "Task complete"
msgstr "Задача выполнена" msgstr "Задача выполнена"
#: vpsr.rstaskitems
msgid "Task items"
msgstr ""
#: vpsr.rstaskpopupadd #: vpsr.rstaskpopupadd
msgid "Add task..." msgid "Add task..."
msgstr "Добавит задачу..." msgstr "Добавит задачу..."

View File

@ -168,6 +168,7 @@ resourcestring
RSConfirmDeleteContact = 'Delete contact %s?'; RSConfirmDeleteContact = 'Delete contact %s?';
RSLoadVCardsTitle = 'Import from vCard(s)'; RSLoadVCardsTitle = 'Import from vCard(s)';
RSVCardFilter = 'vCard files (*.vcf)|*.vcf'; RSVCardFilter = 'vCard files (*.vcf)|*.vcf';
RSContactItems = 'Contact items';
{Event Specific} {Event Specific}
RSEvent = 'Event'; RSEvent = 'Event';
@ -189,6 +190,8 @@ resourcestring
RSNoEventItemsFoundInICAL = 'No event items found in "%s".'; RSNoEventItemsFoundInICAL = 'No event items found in "%s".';
RSNoTaskItemsFoundInICAL = 'No task items found in "%s".'; RSNoTaskItemsFoundInICAL = 'No task items found in "%s".';
RSNoContactsFoundInVCARD = 'No contact items found in "%s".'; RSNoContactsFoundInVCARD = 'No contact items found in "%s".';
RSAssignedCategory = 'Assigned category';
RSEventItems = 'Event items';
{Task Specific} {Task Specific}
RSConfirmDeleteTask = 'Delete this task from your list?'; RSConfirmDeleteTask = 'Delete this task from your list?';
@ -198,6 +201,7 @@ resourcestring
RSTaskPopupDelete = 'Delete task...'; RSTaskPopupDelete = 'Delete task...';
RSTaskTitleResource = 'Task list - '; {!!.01} RSTaskTitleResource = 'Task list - '; {!!.01}
RSTaskTitleNoResource = 'Task list'; {!!.01} RSTaskTitleNoResource = 'Task list'; {!!.01}
RSTaskItems = 'Task items';
{ Popup specific } { Popup specific }
RSPopupAddEvent = 'Add event...'; RSPopupAddEvent = 'Add event...';
@ -281,6 +285,7 @@ resourcestring
RSBirthDateLbl = 'Birth date:'; RSBirthDateLbl = 'Birth date:';
RSAgeLbl = 'Age:'; RSAgeLbl = 'Age:';
RSAnniversaryLbl = 'Anniversary:'; RSAnniversaryLbl = 'Anniversary:';
RSPhone = 'Phone';
RSPhoneFax = 'Phone/fax'; RSPhoneFax = 'Phone/fax';
RSWebsites = 'Websites'; RSWebsites = 'Websites';
RSUppercaseContact = 'CONTACT'; RSUppercaseContact = 'CONTACT';

View File

@ -312,11 +312,11 @@ type
destructor Destroy; override; destructor Destroy; override;
function CanEdit: Boolean; function CanEdit: Boolean;
function CopyToSchedule(ASchedule: TVpSchedule): TVpEvent; function CopyToSchedule(ASchedule: TVpSchedule): TVpEvent;
class procedure GetAlarmParams(ATrigger: TDateTime; out AdvTime: Integer;
out AdvTimeUnits: TVpAlarmAdvType);
function GetResource: TVpResource; function GetResource: TVpResource;
function IsOverlayed: Boolean; function IsOverlayed: Boolean;
procedure LoadFromICalendar(AEntry: TVpICalEvent); procedure LoadFromICalendar(AEntry: TVpICalEvent);
class procedure GetAlarmParams(ATrigger: TDateTime; out AdvTime: Integer;
out AdvTimeUnits: TVpAlarmAdvType);
property Owner: TVpSchedule read FOwner; property Owner: TVpSchedule read FOwner;
property ResourceID: Integer read FResourceID write FResourceID; property ResourceID: Integer read FResourceID write FResourceID;
property Loading : Boolean read FLoading write FLoading; property Loading : Boolean read FLoading write FLoading;
@ -2922,6 +2922,10 @@ begin
{ Category } { Category }
{ tvplanit has only 1 category, ical may have several. We pick the first one { tvplanit has only 1 category, ical may have several. We pick the first one
defined by TVpCategorytype. If none is found we select ctOther. } defined by TVpCategorytype. If none is found we select ctOther. }
if AEntry.PickedCategory > -1 then
FCategory := AEntry.PickedCategory
else
begin
FCategory :=ord(ctOther); FCategory :=ord(ctOther);
datastore := TVpCustomDatastore(Owner.Owner.Owner.Owner); datastore := TVpCustomDatastore(Owner.Owner.Owner.Owner);
cat := datastore.FindBestTaskCategory(AEntry.Categories); cat := datastore.FindBestTaskCategory(AEntry.Categories);
@ -2932,6 +2936,7 @@ begin
break; break;
end; end;
end; end;
end;
procedure TVpTask.SetCategory(const Value: Integer); procedure TVpTask.SetCategory(const Value: Integer);
begin begin
@ -3089,8 +3094,8 @@ begin
begin begin
previewForm := TVpImportPreviewICalTaskForm.Create(nil); previewForm := TVpImportPreviewICalTaskForm.Create(nil);
previewForm.Position := poMainFormCenter; previewForm.Position := poMainFormCenter;
previewForm.Calendar := ical;
previewForm.Datastore := datastore; previewForm.Datastore := datastore;
previewForm.Calendar := ical;
if ADefaultCategory <> -1 then if ADefaultCategory <> -1 then
previewForm.DefaultCategory := CategoryLabel(TVpCategoryType(ADefaultCategory)); previewForm.DefaultCategory := CategoryLabel(TVpCategoryType(ADefaultCategory));
if not previewForm.Execute then if not previewForm.Execute then

View File

@ -107,6 +107,7 @@ type
FCompletedTimeTZ: String; FCompletedTimeTZ: String;
FDuration: double; FDuration: double;
FCategories: TStrings; FCategories: TStrings;
FPickedCategory: Integer;
FPriority: integer; FPriority: integer;
FStatus: String; FStatus: String;
function GetCategory(AIndex: integer): String; function GetCategory(AIndex: integer): String;
@ -126,6 +127,7 @@ type
property CompletedTime[UTC: Boolean]: TDateTime read GetCompletedTime; property CompletedTime[UTC: Boolean]: TDateTime read GetCompletedTime;
property Category[AIndex: Integer]: String read GetCategory; property Category[AIndex: Integer]: String read GetCategory;
property CategoryCount: Integer read GetCategoryCount; property CategoryCount: Integer read GetCategoryCount;
property PickedCategory: Integer read FPickedCategory write FPickedCategory;
property Priority: Integer read FPriority; // 0=undefined, 1-highest, 9=lowest property Priority: Integer read FPriority; // 0=undefined, 1-highest, 9=lowest
property Status: String read FStatus; property Status: String read FStatus;
end; end;
@ -485,6 +487,8 @@ begin
FCategories := TStringList.Create; FCategories := TStringList.Create;
FCategories.Delimiter := ','; // ToDo categories are separated by comma in ical file. FCategories.Delimiter := ','; // ToDo categories are separated by comma in ical file.
FCategories.StrictDelimiter := true; FCategories.StrictDelimiter := true;
FStartTime := NO_DATE;
FDueTime := NO_DATE;
end; end;
destructor TVpICalToDo.Destroy; destructor TVpICalToDo.Destroy;

View File

@ -29,7 +29,7 @@ object VpImportPreviewForm: TVpImportPreviewForm
end> end>
ExtendedSelect = False ExtendedSelect = False
FixedCols = 0 FixedCols = 0
Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goColSizing, goEditing, goThumbTracking, goSmoothScroll] Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goColSizing, goEditing, goSmoothScroll]
TabOrder = 0 TabOrder = 0
OnDrawCell = GridDrawCell OnDrawCell = GridDrawCell
OnGetCheckboxState = GridGetCheckboxState OnGetCheckboxState = GridGetCheckboxState

View File

@ -9,7 +9,6 @@ uses
Forms, Controls, Dialogs, Grids, ExtCtrls, StdCtrls; Forms, Controls, Dialogs, Grids, ExtCtrls, StdCtrls;
type type
{ TVpImportPreviewForm } { TVpImportPreviewForm }
TVpImportPreviewForm = class(TForm) TVpImportPreviewForm = class(TForm)
@ -57,7 +56,7 @@ uses
constructor TVpImportPreviewForm.Create(AOwner: TComponent); constructor TVpImportPreviewForm.Create(AOwner: TComponent);
begin begin
inherited; inherited;
Grid.Options := Grid.Options + [goRowSelect]; Grid.Options := Grid.Options + [goEditing, goRowSelect, goThumbTracking];
FItems := TFPList.Create; FItems := TFPList.Create;
end; end;
@ -148,7 +147,7 @@ begin
begin begin
ts := Grid.Canvas.TextStyle; ts := Grid.Canvas.TextStyle;
ts.SingleLine := false; ts.SingleLine := false;
ts.Wordbreak := true; ts.EndEllipsis := true;
Grid.Canvas.TextStyle := ts; Grid.Canvas.TextStyle := ts;
end; end;
end; end;
@ -176,28 +175,6 @@ begin
Grid.RowCount := Grid.FixedRows + FItems.Count; Grid.RowCount := Grid.FixedRows + FItems.Count;
CalcRowHeights; CalcRowHeights;
end; end;
{
var
i: Integer;
begin
FItems.Clear;
if FCalendar <> nil then
begin
case FKind of
icEvent:
for i := 0 to FCalendar.Count-1 do
if (FCalendar.Entry[i] is TVpICalEvent) then
FItems.Add(FCalendar.Entry[i]);
icToDo:
for i := 0 to FCalendar.Count-1 do
if (FCalendar.Entry[i] is TVpICalToDo) then
FItems.Add(FCalendar.Entry[i]);
end;
Grid.RowCount := Grid.FixedRows + FItems.Count;
CalcRowHeights;
end else
Grid.RowCount := Grid.FixedRows;
end;
}
end. end.

View File

@ -23,7 +23,6 @@ inherited VpImportPreviewICalEventForm: TVpImportPreviewICalEventForm
Width = 634 Width = 634
end> end>
OnGetEditText = GridGetEditText OnGetEditText = GridGetEditText
OnPickListSelect = GridPickListSelect
OnSetEditText = GridSetEditText OnSetEditText = GridSetEditText
ColWidths = ( ColWidths = (
33 33

View File

@ -15,7 +15,6 @@ type
TVpImportPreviewICalEventForm = class(TVpImportPreviewForm) TVpImportPreviewICalEventForm = class(TVpImportPreviewForm)
procedure GridGetEditText(Sender: TObject; ACol, ARow: Integer; procedure GridGetEditText(Sender: TObject; ACol, ARow: Integer;
var Value: string); var Value: string);
procedure GridPickListSelect(Sender: TObject);
procedure GridSetEditText(Sender: TObject; ACol, ARow: Integer; procedure GridSetEditText(Sender: TObject; ACol, ARow: Integer;
const Value: string); const Value: string);
private private
@ -80,8 +79,6 @@ begin
case ACol of case ACol of
1: Result := GetEventText(event); 1: Result := GetEventText(event);
2: Result := Grid.Columns[2].PickList[event.PickedCategory]; 2: Result := Grid.Columns[2].PickList[event.PickedCategory];
//if FDatastore <> nil then
// Result := FDatastore.FindBestEventCategory(TVpICalEvent(item).Categories);
end; end;
end; end;
end; end;
@ -114,15 +111,14 @@ begin
RSEndTimeLbl + ' ' + sEndTime; RSEndTimeLbl + ' ' + sEndTime;
Result := Result + LineEnding + Result := Result + LineEnding +
RSDescriptionLbl + ' ' + AEvent.Summary + LineEnding + RSDescriptionLbl + ' ' + AEvent.Summary;
RSCategoryLbl + ' ';
// Categories // Categories
if Assigned(FDatastore) then if Assigned(FDatastore) then
begin begin
cat := AEvent.Categories.Text; cat := AEvent.Categories.CommaText;
if cat = '' then cat := '(none)'; if cat = '' then cat := RSNoneStr;
Result := Result + cat; Result := Result + LineEnding + RSCategoryLbl + ' ' + cat;
end; end;
// Recurrence // Recurrence
@ -186,27 +182,11 @@ procedure TVpImportPreviewICalEventForm.GridGetEditText(Sender: TObject; ACol,
var var
event: TVpICalEvent; event: TVpICalEvent;
begin begin
DebugLn('GetEditText: "' + Value + '"');
event := TVpICalEvent(FItems[Grid.Row - Grid.FixedRows]); event := TVpICalEvent(FItems[Grid.Row - Grid.FixedRows]);
if event <> nil then if event <> nil then
Value := Grid.Columns[2].PickList[event.PickedCategory]; Value := Grid.Columns[2].PickList[event.PickedCategory];
end; end;
procedure TVpImportPreviewICalEventForm.GridPickListSelect(Sender: TObject);
var
item: TVpICalEntry;
cat: String;
col: TGridcolumn;
begin
item := TVpICalEntry(FItems[Grid.Row - Grid.FixedRows]);
if item <> nil then
begin
col := Grid.Columns[2];
//TVpICalEvent(item).PickedCategory := Grid.Columns[2].PickList.IndexOf(ItemIndex);
end;
end;
procedure TVpImportPreviewICalEventForm.GridSetEditText(Sender: TObject; ACol, procedure TVpImportPreviewICalEventForm.GridSetEditText(Sender: TObject; ACol,
ARow: Integer; const Value: string); ARow: Integer; const Value: string);
var var
@ -215,10 +195,8 @@ begin
event := TVpICalEvent(FItems[Grid.Row - Grid.FixedRows]); event := TVpICalEvent(FItems[Grid.Row - Grid.FixedRows]);
if event <> nil then if event <> nil then
event.PickedCategory := Grid.Columns[2].PickList.IndexOf(Value);; event.PickedCategory := Grid.Columns[2].PickList.IndexOf(Value);;
// DebugLn('SetEditText: "' + Value + '"');
end; end;
function TVpImportPreviewICalEventForm.IsChecked(ARow: Integer): Boolean; function TVpImportPreviewICalEventForm.IsChecked(ARow: Integer): Boolean;
var var
item: TVpICalEntry; item: TVpICalEntry;
@ -248,11 +226,13 @@ begin
if (FCalendar <> nil) and (FDataStore <> nil) and (Grid.Columns.Count = 2) then if (FCalendar <> nil) and (FDataStore <> nil) and (Grid.Columns.Count = 2) then
begin begin
Grid.Columns[1].Title.Caption := RSEventItems;
with Grid.Columns.Add do with Grid.Columns.Add do
begin begin
SizePriority := 0; SizePriority := 0;
Width := 160; Width := 160;
Title.Caption := 'Category to be applied'; Title.Caption := RSAssignedCategory;
ButtonStyle := cbsPickList; ButtonStyle := cbsPickList;
L := TStringList.Create; L := TStringList.Create;
try try

View File

@ -20,11 +20,13 @@ inherited VpImportPreviewICalTaskForm: TVpImportPreviewICalTaskForm
PickList.Strings = ( ) PickList.Strings = ( )
ReadOnly = True ReadOnly = True
Title.Caption = 'Items' Title.Caption = 'Items'
Width = 634 Width = 630
end> end>
OnGetEditText = GridGetEditText
OnSetEditText = GridSetEditText
ColWidths = ( ColWidths = (
33 33
634 630
) )
end end
inherited ButtonPanel: TPanel inherited ButtonPanel: TPanel

View File

@ -6,13 +6,17 @@ interface
uses uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, Classes, SysUtils, Forms, Controls, Graphics, Dialogs,
VpData, VpBaseDS, VpImportPreview, VpICal; VpData, VpBaseDS, VpImportPreview, VpICal, Grids;
type type
{ TVpImportPreviewICalTaskForm } { TVpImportPreviewICalTaskForm }
TVpImportPreviewICalTaskForm = class(TVpImportPreviewForm) TVpImportPreviewICalTaskForm = class(TVpImportPreviewForm)
procedure GridGetEditText(Sender: TObject; ACol, ARow: Integer;
var Value: string);
procedure GridSetEditText(Sender: TObject; ACol, ARow: Integer;
const Value: string);
private private
FCalendar: TVpICalendar; FCalendar: TVpICalendar;
FDatastore: TVpCustomDatastore; FDatastore: TVpCustomDatastore;
@ -32,7 +36,6 @@ type
property Calendar: TVpICalendar read FCalendar write SetCalendar; property Calendar: TVpICalendar read FCalendar write SetCalendar;
property Datastore: TVpCustomDatastore read FDatastore write FDatastore; property Datastore: TVpCustomDatastore read FDatastore write FDatastore;
property DefaultCategory: String read FDefaultCategory write FDefaultCategory; property DefaultCategory: String read FDefaultCategory write FDefaultCategory;
// property Kind: TVpICalItemKind read FKind write SetKind;
end; end;
@ -44,7 +47,7 @@ implementation
{$R *.lfm} {$R *.lfm}
uses uses
VpSR; VpSR, VpConst;
constructor TVPImportPreviewICalTaskForm.Create(AOwner: TComponent); constructor TVPImportPreviewICalTaskForm.Create(AOwner: TComponent);
begin begin
@ -66,39 +69,70 @@ end;
function TVpImportPreviewICalTaskForm.GetCellText(ACol, ARow: Integer): String; function TVpImportPreviewICalTaskForm.GetCellText(ACol, ARow: Integer): String;
var var
item: TVpICalEntry; task: TVpICalToDo;
begin begin
Result := ''; Result := '';
if (ACol = 1) and (ARow >= Grid.FixedRows) then if (ARow >= Grid.FixedRows) then
begin begin
item := TVpICalEntry(FItems[ARow - Grid.FixedRows]); task := TVpICalToDo(FItems[ARow - Grid.FixedRows]);
if item <> nil then case ACol of
Result := GetTaskText(TVpICalToDo(item)); 1: Result := GetTaskText(task);
2: Result := Grid.Columns[2].PickList[task.PickedCategory]
end; end;
end; end;
end;
procedure TVpImportPreviewICalTaskForm.GridGetEditText(Sender: TObject; ACol,
ARow: Integer; var Value: string);
var
task: TVpICalToDo;
begin
task := TVpICalToDo(FItems[Grid.Row - Grid.FixedRows]);
if task <> nil then
Value := Grid.Columns[2].PickList[task.PickedCategory];
end;
procedure TVpImportPreviewICalTaskForm.GridSetEditText(Sender: TObject; ACol,
ARow: Integer; const Value: string);
var
task: TVpICalToDo;
begin
task:= TVpICalToDo(FItems[Grid.Row - Grid.FixedRows]);
if task <> nil then
task.PickedCategory := Grid.Columns[2].PickList.IndexOf(Value);;
end;
function TVpImportPreviewICalTaskForm.GetTaskText(AToDo: TVpICalToDo): String; function TVpImportPreviewICalTaskForm.GetTaskText(AToDo: TVpICalToDo): String;
var var
s: String; s: String;
cat: String; dt: TDateTime;
begin begin
Result := RSDescriptionLbl + ' ' + AToDo.Summary + LineEnding + Result := RSDescriptionLbl + ' ' + AToDo.Summary;
RSDueDateLabel + ' ' + FormatDateTime(FTimeFormat, AToDo.DueTime[false]) + LineEnding +
RSCreatedOn + ' ' + FormatDateTime(FTimeFormat, AToDo.StartTime[false]); dt := AToDo.DueTime[false];
if dt <> NO_DATE then
s := FormatDateTime(FTimeFormat, dt)
else
s := RSNoneStr;
Result := Result + LineEnding + RSDueDateLabel + ' ' + s;
dt := AToDo.StartTime[false];
if dt <> NO_DATE then
s := FormatDateTime(FTimeFormat, dt)
else
s := RSNoneStr;
Result := Result + LineEnding + RSCreatedOn + ' ' + s;
case TVpTask.GetTaskPriority(AToDo.Priority) of case TVpTask.GetTaskPriority(AToDo.Priority) of
tpLow: s := RSLow; tpLow: s := RSLow;
tpNormal: s := RSNormal; tpNormal: s := RSNormal;
tpHigh: s := RSHigh; tpHigh: s := RSHigh;
end; end;
Result := Result + LineEnding + RSPriorityLabel + ' ' + s + LineEnding + RSCategoryLabel + ' '; Result := Result + LineEnding + RSPriorityLabel + ' ' + s;
if Assigned(FDatastore) then s := AToDo.Categories.CommaText;
begin if s = '' then s := RSNoneStr;
cat := FDatastore.FindBestTaskCategory(AToDo.Categories); Result := Result + LineEnding + RSCategoryLabel + ' ' + s;
if cat = '' then cat := FDefaultCategory;
Result := Result + cat;
end;
end; end;
function TVpImportPreviewICalTaskForm.IsChecked(ARow: Integer): Boolean; function TVpImportPreviewICalTaskForm.IsChecked(ARow: Integer): Boolean;
@ -116,13 +150,50 @@ end;
procedure TVpImportPreviewICalTaskForm.PrepareItems; procedure TVpImportPreviewICalTaskForm.PrepareItems;
var var
i: Integer; i: Integer;
ct: TVpCategoryType;
cat: String;
L: TStrings;
task: TVpICalToDo;
begin begin
FItems.Clear; FItems.Clear;
if FCalendar <> nil then if FCalendar <> nil then
for i := 0 to FCalendar.Count-1 do for i := 0 to FCalendar.Count-1 do
if (FCalendar.Entry[i] is TVpICalToDo) then if (FCalendar.Entry[i] is TVpICalToDo) then
FItems.Add(FCalendar.Entry[i]); FItems.Add(FCalendar.Entry[i]);
inherited; inherited;
if (FCalendar <> nil) and (FDataStore <> nil) and (Grid.Columns.Count = 2) then
begin
Grid.Columns[1].Title.Caption := RSTaskItems;
with Grid.Columns.Add do
begin
SizePriority := 0;
Width := 160;
Title.Caption := RSAssignedCategory;
ButtonStyle := cbsPickList;
L := TStringList.Create;
try
for ct in TVpCategoryType do
L.Add(CategoryLabel(ct));
PickList.Assign(L);
finally
L.Free;
end;
end;
for i := 0 to FItems.Count-1 do
begin
task := TVpICalToDo(FItems[i]);
cat := FDatastore.FindBestTaskCategory(task.Categories);
if cat = '' then cat := FDefaultCategory;
if cat <> '' then
task.PickedCategory := Grid.Columns[2].PickList.IndexOf(cat)
else
task.PickedCategory := ord(ctOther);
end;
end;
end; end;
procedure TVpImportPreviewICalTaskForm.SetCalendar(const AValue: TVpICalendar); procedure TVpImportPreviewICalTaskForm.SetCalendar(const AValue: TVpICalendar);

View File

@ -20,11 +20,11 @@ inherited VpImportPreviewVCardForm: TVpImportPreviewVCardForm
PickList.Strings = ( ) PickList.Strings = ( )
ReadOnly = True ReadOnly = True
Title.Caption = 'Items' Title.Caption = 'Items'
Width = 634 Width = 630
end> end>
ColWidths = ( ColWidths = (
33 33
634 630
) )
end end
inherited ButtonPanel: TPanel inherited ButtonPanel: TPanel

View File

@ -79,39 +79,19 @@ begin
s := ACard.GetWorkAddress; s := ACard.GetWorkAddress;
if s <> '' then if s <> '' then
Result := Result + LineEnding + 'Work address: ' + s; Result := Result + LineEnding + RSWorkAddress + ' ' + s;
s := ACard.GetHomeAddress; s := ACard.GetHomeAddress;
if s <> '' then if s <> '' then
Result := Result + LineEnding + 'Home address: ' + s; Result := Result + LineEnding + RSHomeAddress + ' ' + s;
s := ACard.GetPhone; s := ACard.GetPhone;
if s <> '' then if s <> '' then
Result := Result + LineEnding + 'Phone: ' + s; Result := Result + LineEnding + RSPhone + ' ' + s;
s := ACard.GetEMail; s := ACard.GetEMail;
if s <> '' then if s <> '' then
Result := Result + LineEnding + 'E-Mail: ' + s; Result := Result + LineEnding + RSEMail + ': ' + s;
(*
Result := RSDescriptionLbl + ' ' + AToDo.Summary + LineEnding +
RSDueDateLabel + ' ' + FormatDateTime(FTimeFormat, AToDo.DueTime[false]) + LineEnding +
RSCreatedOn + ' ' + FormatDateTime(FTimeFormat, AToDo.StartTime[false]);
case TVpTask.GetTaskPriority(AToDo.Priority) of
tpLow: s := RSLow;
tpNormal: s := RSNormal;
tpHigh: s := RSHigh;
end;
Result := Result + LineEnding + RSPriorityLabel + ' ' + s + LineEnding + RSCategoryLabel + ' ';
if Assigned(FDatastore) then
begin
cat := FDatastore.FindBestTaskCategory(AToDo.Categories);
if cat = '' then cat := FDefaultCategory;
Result := Result + cat;
end;
*)
end; end;
function TVpImportPreviewVCardForm.IsChecked(ARow: Integer): Boolean; function TVpImportPreviewVCardForm.IsChecked(ARow: Integer): Boolean;
@ -134,7 +114,10 @@ begin
if FVCards <> nil then if FVCards <> nil then
for i := 0 to FVCards.Count-1 do for i := 0 to FVCards.Count-1 do
FItems.Add(FVCards.Card[i]); FItems.Add(FVCards.Card[i]);
inherited; inherited;
Grid.Columns[1].Title.Caption := RSContactItems;
end; end;
procedure TVpImportPreviewVCardForm.SetVCards(const AValue: TVpVCards); procedure TVpImportPreviewVCardForm.SetVCards(const AValue: TVpVCards);