Nuova release dell’IDE che porta diverse novità principalmente per iOS ma anche per tutte le piattaforme.
Dopo un veloce ciclo in beta, arriva per tutti gli sviluppatori di questo ambiente una nuova release dell’IDE, la terza per il 2019.
Diverse novità riguardanti iOS, che avranno in seguito o già ora effetto anche nelle altre piattaforme.
iOS
Dopo l’uscita di iOS13, i cui la caratteristica principale è il DarkMode, era necessario implementare questa anche nelle applicazioni prodotte con Xojo. La soluzione è molto semplice, e presto sarà disponibile per tutte le piattaforme, e si basa sull’introduzione dei ColorGroup. Ora è possibile definire dei gruppi di colori: singoli, per nome (come quelli standard per tipologia su iOS, a coppie in base a essere in modalità Dark o meno) e automaticamente il colore esatto verrà utilizzato a runtime. Una soluzione semplice, realizzata con un editor visuale apposito (ma è anche possibile crearli via codice) che rende quasi triviale il loro utilizzo. Per assegnarli a livello di colore di UI, dove prima era possibile indicare un colore ora è ancora possibile farlo o è possibile scegliere uno dei colorGroup definiti.
Visto che questa caratteristica è presente solo a partire da iOS13 è stata introdotta anche la possibilità di verificare la versione corrente di sistema in modo da semplificare la scelta del codice di effettuare una operazione particolare.
Questa nuova funzione System.Version (per iOS è Xojo.System.Version) permette di confrontare la versione a runtime con una stringa espressa come “13” o “13.1” o “13.1.1”, la funzione stessa si occuperà di fare le verifiche interne in base alla stringa passata.
Altra novità importante riguarda iOSRectangle che permette ora di impostare il Vibrancy su parti dell’interfaccia in modo semplice.
Altre piccole novità per le altre piattaforme
Ora è possibile eseguire i report a partire dai RowSet (in pratica hanno implementato internamente la classe che avevo proposto qui).
Come per il tipo Text è possibile vedere direttamente in forma leggibile se una stringa è vuota utilizzando il metodo isEmpty (in pratica possiamo scrivere if miaStringa.isEmpty then… che è decisamente più leggibile e autodocumentato rispetto a confronto con una stringa vuota e inoltre rende più semplice il passaggio da codice scritto per il framework XOJO alle API2.0.
Infine una piccola ma importante novità per il metodo toString dell’oggetto Datetime.
Precedentemente se lo usavamo senza argomenti potevano ottenere la versione sqlDateTime della data.
Usando gli argomenti localeDesiderata (opzionalmente nil), e i formatStyle per giorno e ora potevamo avere diverse opzioni di formattazione. Ma queste erano decisamente limitate. Ora è possibile utilizzare diverse formattazioni localizzabili e comporre una stringa per ottenere il valore desiderato. Nella tabella che segue i valori utilizzabili (attualmente mancanti da guida al linguaggio).
La data mostrata negli esempi è il 9 febbraio 2019 alle 08:07:06 e 347038874 nanosecondi. Se il valore è differente tra mattino e sera tra parentesi la stessa data alle ore 10 della sera.
Parte | Codice | Esempio | Italiano | Tedesco |
Era | G (era della data) | G GGGG GGGGG | d.C. dopo Cristo dC | n. Chr. n. Chr. n. Chr |
Year | r (per date in liguaggi composti) | r | 2019 | 2019 |
u (per date con anno esteso) | u | 2019 | 2019 | |
U o y o Y (U per ciclico, y standard, Y con week) | U o y o Y UU o yy o YY | 2019 19 | 2019 19 | |
Quarter | q o Q | q o Q qq o QQ qqq o QQQ qqqq o QQQQ | 1 01 T1 1° trimestre | 1 01 Q1 1. Quartal |
Month | M o L | L LL LLL LLLL LLLLL | 2 02 feb febbraio F | 2 02 Feb Februar F |
Week | w (settimana dell’anno) | w ww | 6 06 | 6 06 |
W (settimana del mese) | W WW | 1 01 | 1 01 | |
Day | d (giorno del mese) | d dd | 9 09 | 9 09 |
D (giorno dell’anno) | D | 40 | 40 | |
F (giorno della settimana nel mese) | F | 2 | 2 | |
g (giorno giuliano modificato) | g | 2458524 | 2458524 | |
Weekday | c (num/nome nella settimana locale) | c ccc cccc ccccc | 6 sab sabato S | 6 Sa Samstag S |
e (num/nome nella settimana locale) | e ee eee eeee eeeee | 6 06 sab sabato S | 6 06 Sa. Samstag S | |
E (nome nella settimana) | E EEEE EEEEE | sab sabato S | Sa. Samstag S | |
Period | a (standard) | a aaaaa | AM (PM) m. (p.) | AM (PM) m (p) |
b (con mezzogiorno e/o mezzanotte) | b bbbbb | AM (PM, mezzogiorno) m. (p., mezzogiorno) | AM (PM) m (p) | |
B (completo) | B | di mattina (di sera, mezzogiorno, di notte) | morgens (abends, mittags, nachts) | |
Hour | h (1-12) | h hh | 8 (10) 08 (10) | 8 (10) 08 (10) |
H (0-23) | H HH | 8 (22, 0) 08 (22, 00) | 8 (22, 0) 08 (22, 00) | |
k (1-24) | k kk | 8 (22, 24) 08 (22, 24) | 8 (22, 24) 08 (22, 24) | |
K (0-11) | K KK | 8 (10, 0) 08 (10, 00) | 8 (10, 0) 08 (10, 00) | |
Minute | m | m mm | 7 07 | 7 07 |
Second | s | s ss | 6 06 | 6 06 |
S (millisecondi) | S SS SSS | 3 34 345 | 3 34 345 | |
A (millisecondi del giorno) | A | 29226345 | 29226345 | |
Zone | O | O OOOO | GMT+1 GMT+01:00 | GMT+1 GMT+01:00 |
v | v vvvv | CET Ora dell’Europa centrale | MEZ Mitteleuropäische Zeit | |
V | V VV VVVV VVVVV | itrom Europe/Rome Roma Ora Italia | itrom Europe/Rome Rom Italien Zeit | |
x o X (X ha Z con GMT0) | x xx xxx | +01 +0100 +01:00 | +01 +0100 +01:00 | |
z | z zzzz | CET Ora standard dell’Europa Centrale | MEZ Mitteleuropäische Normalzeit | |
Z | Z ZZZZ ZZZZZ | +0100 GMT+01:00 +01:00 | +0100 GMT+01:00 +01:00 |
Quindi ora abbiamo abbastanza libertà nei formati da utilizzare per le nostre date.