Lähdekoodidokumentaatio

Leimaussovellus on toteutettu .NET MAUI:lla. Sovelluskehitys MAUIlla on kieltämättä haastavaa, jos ei ole aiempaa kokemusta Windows-ohjelmoinnista ja XAML:sta. Pitäisin sitä kuitenkin helpompana kuin perinteistä Android-kehitystä vaikkapa Kotlinilla. Muun muassa siitä syystä, että ohjelmointikieli on C#.

Projektinrakenne

Projektinrakenne

Helpoin tapa lähestyä aihetta lienee perehtyä ensin projektin rakenteeseen. Kun lähdetään ylhäältä alas, ensimmäisenä on Shared.dll. Se on tuttu ylläpitosovelluksen puolelta ja sisältää rajapinnan, jota tarvitaan tietojen tuontiin ja vientiin ylläpitosovelluksesta. Shared-dll

Sitten on varsinainen sovellus nimeltään Timestamp Ohjelmassa ensimmäinen lohko on Data. Se sisältää paikallisen tietokannan käsittelyn. Tietokanta on SQLite, kuten lähes kaikissa Android-sovelluksissa. WebApiServicestä löytyy sitten API-kutsujen käsittely.

Models-kansiosta löytyvät sovelluksessa käytettävät tietorakenteet. Periaatteessa voitaisiin käyttää myös Shared-moduulista löytyviä request/response-rakenteita, mutta nyt toteutus on tehty näin.

PageModels-kansiosta tulee vastaan ylläpitosovelluksesta tutut sivukohtaiset Model-rakenteet. Sillä erotuksella, että nyt ei käytetä State-luokkaa niiden hallinnointiin, vaan jokainen model on oma instanssinsa, joka luodaan käynnistyksen yhteydessä. Model-luokka ei ole myöskään yksinkertainen luokka, vaan sen perusluokka on ObservableObject. Sen avulla toteutetaan datan synkronointi luokan ja käyttöliittymäkoodin välillä.

Pages-kansiosta löytyy sitten käyttöliittymän näytöt, yksi per model. Kai näytölle voi laittaa muunkin kuin `x:DataType="pageModels:MainPageModel"` -asetuksen. Esimerkiksi voisi kuvitella `x:DataType="pageModels:State"`, jolloin kaikki taustakoodi olisi yhdessä State-luokassa, mutta en ole kokeillut sitä.

Platforms-kansiossa on ympäristöt, joihin sovelluksen voi kääntää. En ole ehtinyt kokeilla muita kuin kehitysvaiheessa käyttämääni Windows-ympäristöä ja Android-ympäristöä.

Resources sisältää nimensä mukaisesti kuvakkeet, fontit ja tyylimääritykset.
Services-kansio olisi periaatteessa oikea paikka WebApiService-luokalle, mutta se on nyt mielestäni loogisemmassa paikassa, josta se löytyy helpommin.
Utilities-kansioon nimensä mukaan pitäisi laittaa yleiskäyttöiset metodit.

Viimeisenä ovat sovelluksen juuressa olevat tiedostot. Niistä kannattaa mainita MauiProgram.cs joka on varsinainen sovelluksen käynnistystiedosto ASP.NET Coren tapaan. Keystore-tiedostoa tarvitaan, kun Android-versio allekirjoitetaan, jotta se voidaan asentaa puhelimeen. Sen ei tietenkään tarvitse olla projektin kansiossa, eikä sitä saa tallentaa versionhallintaan.