Profile zliczające zdarzenia z kalendarza(v2)
Opis działania:
Profil zlicza wybrane dni/wydarzenia z kalendarza/kalendarzy google w celu późniejszego przedstawienia w formie klikalnego widgetu. Docelowym przeznaczeniem widgetu miało być zliczanie dni wolnych od pracy oraz urlopów. Profil w tej formie w której jest przedstawiony wymaga osobnych kalendarzy dla dni wolnych od pracy, urlopu szkolnego, czy tez wypoczynkowego.
Wykonanie Profilu:
Tworzymy Context dla profilu:
Add profile 'zliczanie wolnego' ->
State -> App -> Calendar entry:
W polu 'Calendar' wybieramy kalendarz z którego pobierane będą dane, umownie nazywamy go 'wolne'
Tworzymy task dla profilu:
New task->:
1) Sprawdzanie daty wprowadzenia zmian w pliku.
Add-> File-> Read line:
'File' wybieramy plik z którego będziemy czytać dane.
'Line' wybieramy linijke tekstu w której zamieściliśmy date zapisu pliku.
'To Var' wpisujemy zmienną jaka będzie przedstawiać date zapisu naszego pliku, na tej podstawie profil będzie decydować czy dokonać zmian w pliku, uchroni nas to przed dwukrotnym nadpisaniem pliku urlopów w ciągu jednego dnia, u siebie zmienną nazwałem '%DataZapisuPliku'
2) Rozdzielanie i przeliczanie wolnego.
Dodajemy warunek konieczny do wykonania dalszej części tasku, który odpowiada za przeliczanie wolnego.
Add -> Task -> If:
%DataZapisuPliku != %DATE
3) Jeśli warunek z punktu 2 jest spełniony pobieramy dane związane z kalendarzem 'wolne' z pliku urlopów.
Add -> File -> Read Line:
'File' wybieramy plik urlopów.
'Line' wybieramy linie w której są wyniki dla kalendarza 'wolne'.
'To Var' nazywamy zmienną do której będzie przekierowana linijka dotycząca kalendarza 'wolne', umownie nazwijmy ją '%wolne'.
4) Rozdzielamy zmienną '%wolne' w celu wydzielenia liczby wykorzystanych dni.
Add -> Variable -> Variable Split:
'Name' %wolne
'Splitter' tu wstawiamy znak rozdzielający poszczególne wyrazy w zmiennej, w przypadku spacji nie musimy wstawiać nic.
Jeśli w zmiennej '%wolne' były dwa wyrazy np. 'wolne 5' utworzą się nam 2 zmienne '%wolne1' '%wolne2'.
5) Przeliczanie urlopu. Powyżej ustaliliśmy że mamy po podzieleniu zmiennej '%wolne' dwie zmienne, tworzymy nową zmienną '%wolne3', która będzie naszym wynikiem.
Add -> Variable -> Variable Set:
'Name' %wolne3
'To' %wolne2+1
Zaznaczamy opcję 'Do Maths'
6) Tworzymy zmienną '%ZAP'
Add -> Variable -> Variable Set:
'Name' %ZAP
'To' 1
7) Zamykamy task 'If'
Add -> Task -> EndIf
8) Wczytujemy pozostałe dane potrzebne do prawidłowego zapisania pliku urlopów/dni wolnych.
Add -> Task -> If:
UZAP = 1
9) Do tej pory wczytaliśmy dwie linijki (Data zapisu pliku i wolne)z pliku z urlopami/dniami wolnymi, punkt 9 wykonujemy tyle razy ile to konieczne, jeśli mamy oprócz dni wolnych urlop wypoczynkowy i szkoleniowy wykonujemy poniższą operację 2 razy. Jeśli mamy jakieś dodatkowe dni np. wolne za święta musimy również je uwzględnić.
Add -> File -> Read Line
'File' plik z urlopami/dniami wolnymi
'Line' wybieramy interesującą nas linie.
'To Var' nazywamy zmienną jaka będzie odpowiadać za wczytaną linie np. '%urlop'.
10) Zmieniamy wartość zmiennej '%ZAP'
Add -> Variable -> Variable Set:
'Name' %ZAP
'To' 2
11) Zamykamy task 'If'
Add -> Task -> EndIf
12) Przystępujemy do zapisania pliku z urlopami/dniami wolnymi.
Add -> Task -> If:
%ZAP = 2
13) Kasujemy stary plik z urlopami/dniami wolnymi.
Add -> File -> Delete File
14) Zapisujemy nowe dane do pliku.
Add -> File -> Write File
'File' wpisujemy ścieżkę do pliku
'Text' W polu text wpisujemy zmienne które mają być zapisane do pliku. Poniżej przykład jak to może wyglądać dla naszego profilu.
%DATE
%wolne1 wolne3
%urlop
%DataZapisuPliku
UWAGA: Zmienną '%DATE' zapisujemy w linii z której wcześniej pobieraliśmy dane do zmiennej %DataZapisuPliku, zaś linia druga jest linią którą chcieliśmy zaktualizować. Zmiennej '%DataZapisuPlików' w zasadzie nie musieli byśmy zapisywać aby całość działała, gdyż jest to data ostatniego zapisu. Zmienną '%DataZapisuPliku' jednak warto sobie zapisać na wypadek gdybyśmy wyjechali na weekend zapominając wziąść ze sobą telefon, a ten z kolei by nam się rozładował, mamy wówczas możliwość szybkiej edycji pliku urlopów bez żmudnego przeglądania całego kalendarza.
Reszta zmiennych oczywiście musi znaleść się na swoim miejscu.
15) Zmieniamy wartość zmiennej '%ZAP'
Add -> Variable -> Variable Set:
'Name' %ZAP
'To' 3
16) Zamykamy task 'If'
Add -> Task -> EndIf
17) Czyszczenie zmiennych
Add -> Task -> If
%ZAP = 3
18) Add -> Variable -> Variable Clear
'Name' %wolne
19) Add -> Variable -> Variable Clear
'Name' %wolne1
20) Add -> Variable -> Variable Clear
'Name' %wolne2
21) Add -> Variable -> Variable Clear
'Name' %wolne3
22) Add -> Variable -> Variable Clear
'Name' %urlop
23) Add -> Variable -> Variable Clear
'Name' %DataZapisuPliku
24) Zamykamy task 'If'
Add -> Task -> EndIf
25) Add -> Variable -> Variable Clear
'Name' %ZAP
'If' DataZapisuPliku ! Set
Tworzenie tasku dla naszego profilu dobiegło końca, na tej samej zasadzie możemy teraz stworzyć resztę profili urlopowych.
Gdy mamy wszystko gotowe pozostało nam stworzyć widget.
Wykonanie widgetu:
Tworzenie widgetu w formie klikalnej ikony wyświetlającego aktualny stan urlopowy:
W oknie głównym programu klikamy zakładkę 'Tasks'
Add -> New Task
nazywamy task, nazwa ta będzie wyświetlana na pulpicie pod ikoną widgetu.
1) Add -> File -> Read Paragraph
'File' wybieramy plik z którego będą odczytywane dane.
'Para' 1
'To Var' wpisujemy nazwę zmiennej
2) Add -> Alert -> Popup
'Title' Wpisujemy nazwę, będzie ona widoczna na górnej belce widgetu.
'Text' Wpisujemy nazwę zmiennej utworzonej w poprzednim punkcie.
'Layout' Wybieramy scene dla naszego widgetu, domyślnie dostępna jest jedna
'Timeout' ustawiamy czas po jakim widget/popup powinien zniknąć, ja ustawiłem maksymalnie w prawo, dzięki temu widget/popup nie zniknie puki go nie kliknę bądź nie użyje przycisku back.
3) Add -> Variable -> Variable Clear
Nazwa zmiennej którą użyliśmy.
Mała uwaga do punktu trzeciego, zmienna nie zostanie wyczyszczona puki nie klikniemy sceny, używając przycisku back co prawda scena zniknie z pulpitu telefonu, lecz wykonywanie tasku zakończy się na punkcie 2, jeśli znasz rozwiązanie problemu proszę o info na PW.
Poniżej foto jak może się prezentować nasz widget.
![](https://forum.android.com.pl/assets/files/monthly_03_2012/post-95826-14255703732606.png)
Profile:
Zliczanie_WG.prf.xml - File Shared from Box - Free Online File Storage
Zliczanie_UW.prf.xml - File Shared from Box - Free Online File Storage
Zliczanie_US.prf.xml - File Shared from Box - Free Online File Storage
Zliczanie_UD.prf.xml - File Shared from Box - Free Online File Storage
Task widgetu:
Urlopy.tsk.xml - File Shared from Box - Free Online File Storage
Scena ze zrzutu ekranu:
Popup268x353.scn.xml - File Shared from Box - Free Online File Storage
Plik na którym operują profile:
Tasker-urlopy.txt - File Shared from Box - Free Online File Storage