Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Frage zur Klasse CalendarEventsManager (https://www.delphipraxis.net/186815-frage-zur-klasse-calendareventsmanager.html)

Loko789 2. Okt 2015 10:26

Frage zur Klasse CalendarEventsManager
 
Hallo,
Ich nutze die CalendarEventsManager Klasse um per "klick" von der App, Erinnerungen in den Android Kalender zu speichern.
Wenn ich eine neue Erinnerung über "fManager.AddNewReminder(ADate: TDate; ATitle: string)" anlege, sieht sie immer wie folgt aus:
-Datum (Immer ganztägig)
-Titel

Aber ich will eine Erinnerung z.B. eine Startzeit oder eine Länge o.ä. geben.

Ich habe in der Klasse unter "TCalendarEventsManager.AddNewReminder" folgendes gefunden:
Code:
function TCalendarEventsManager.AddNewReminder(ADate: TDate; ATitle: string): integer;
var
  wEvent : JContentValues;
  wUri : Jnet_Uri;
begin
  try
    wEvent := TJContentValues.JavaClass.init;
    wEvent.put(StringToJString('calendar_id'), TJInteger.JavaClass.init(fCalendarID));
    wEvent.put(StringToJString('title'), StringToJString(ATitle));
//    wEvent.put(StringToJString('description'), StringToJString('Description here if needed'));
    wEvent.put(StringToJString('dtstart'), TJLong.JavaClass.init(MilliSecondsBetween(ADate , EncodeDate(1970,1,1))));
    wEvent.put(StringToJString('dtend'), TJLong.JavaClass.init(MilliSecondsBetween(ADate , EncodeDate(1970,1,1))));
    wEvent.put(StringToJString('eventTimezone'), StringToJString('Europe/London'));
    wEvent.put(StringToJString('allDay'), TJBoolean.JavaClass.init(StringToJString('true')));
    wEvent.put(StringToJString('hasAlarm'), TJBoolean.JavaClass.init(StringToJString('true')));
    wEvent.put(StringToJString('accessLevel'), TJInteger.JavaClass.init(3));
//    wEvent.put(StringToJString('guestsCanModify'), TJBoolean.JavaClass.init(StringToJString('true')));
    wUri := fContentResolver.insert(StrToJURI('content://com.android.calendar/events'),wEvent);
    Result := StrToInt(JStringToString(wUri.getLastPathSegment()));

    wEvent.clear;
    wEvent.put(StringToJString('event_id'),TJInteger.JavaClass.init(Result));
    wEvent.put(StringToJString('method'),TJInteger.JavaClass.init(1));
    wEvent.put(StringToJString('minutes'),TJInteger.JavaClass.init(30));
    wEvent.put(StringToJString('event_id'),TJInteger.JavaClass.init(Result));

    fContentResolver.insert(TJCalendarContract_Reminders.JavaClass.CONTENT_URI, wEvent);

  except
    On E:Exception do
      Raise Exception.create('[TCalendarEventsManager.AddNewReminder] : '+E.message);
  end;
end;
Dort steht was mit tstart, dtend. Kann man das "nutzen" oder ist das schon festgelegt?
Bitte kann mir bitte einer weiterhelfen :thumb:

Danke
Gruß

Union 2. Okt 2015 10:39

AW: Frage zur Klasse CalendarEventsManager
 
Dann schreibe doch die gewünschten Daten einfach in den Event. Am Source siehst Du doch, dass das Verhalten absichtlich so programmiert wurde (z.b. allDay=TRUE).

Loko789 2. Okt 2015 10:49

AW: Frage zur Klasse CalendarEventsManager
 
Hallo Union,
ok gut aber was ist wenn ich Termine haben will, wo einer 3 stunden geht und um 20:00 Uhr und der andere 10 stunden und um 12:00 beginnt. :?
Wie kann ich das ändern das wäre mir wichtiger? :hello:

Union 2. Okt 2015 10:53

AW: Frage zur Klasse CalendarEventsManager
 
Indem Du dtStart und dtEnd auf die gewünschten Werte setzt.

Loko789 2. Okt 2015 10:58

AW: Frage zur Klasse CalendarEventsManager
 
Zitat:

Zitat von Union (Beitrag 1317491)
Indem Du dtStart und dtEnd auf die gewünschten Werte setzt.

und wie?
Tut mir leid, wenn ich so doof nachfrage aber ich kenne mich 0% damit aus. :gruebel:

mkinzler 2. Okt 2015 11:42

AW: Frage zur Klasse CalendarEventsManager
 
Delphi-Quellcode:
wEvent.put(StringToJString('dtstart'), TJLong.JavaClass.init(MilliSecondsBetween(ADate , EncodeDate(1970,1,1))));
Was macht wohl put? und was EncodeDate? (Ein Tipp dir Parameter könnten Jahr, Monat, Tag bedeuten)

Lemmy 2. Okt 2015 11:54

AW: Frage zur Klasse CalendarEventsManager
 
was die beiden versuchen dir zu sagen:

schreib ne überladene Methode von AddNewReminder in der du dann Start und Ende als Parameter übergeben kannst...


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:18 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz