[K] GadesList, czyli lista zadań

Jeżdżąc co sobotę na duże zakupy, muszę przygotowywać sporą listę sprawunków. Jako że karteczki nie są dla mnie, bo zawsze czegoś nie doczytam albo coś mi umknie, wyjściem pozostają aplikacje na smartfona. Wypróbowałem ich trochę i ostatecznie wybrałem parę lat temu Tasks. Straciłem do niej serce po tym, jak zakupiłem wersję komercyjną, która miała mi dać dostęp do listy także na ekranie komputera. Chciałem wygodnie planować zakupy na dużym ekranie, bo jednak ogarnianie dużej listy jest wygodniejsze na ekranie 2K i za pomocą myszki.

No i niestety, wyszło wtedy na jaw, że aplikacja, zwłaszcza właśnie ta przeglądarkowa, ma spore niedoróbki. Najbardziej wkurzające (mnie) są rozjazdy w sortowaniu - po prostu nie da się posortować identycznie listy na komputerze i na smartfonie. Albo problemem są statusy (zadanie wykonane lub nie), albo... polskie litery w nazwach. Problem, który został w językach programowania rozwiązany ze dwadzieścia lat temu, współczesnemu deweloperowi sprawia ogromną trudność - bo, oczywiście, napisałem do twórcy. I usłyszałem, że żadnych poprawek nie będzie, bo - uwaga - twórca musi odpowiadać na tyle maili z całego świata, że nie ma już czasu na programowanie... Serio.

Zrób to sam

Dużego doświadczenia w pisaniu aplikacji na Androida nie mam, ale postanowiłem, że skoro tak, to napiszę swoją własną listę, bo w końcu jak trudne może to być? Aplikacja musi spełnić tylko kilka wymagań:

  • wygodna obsługa - przede wszystkim duże kontrolki i wygodna edycja
  • sortowanie - najpierw zadania nieukończone, potem ukończone, a w ramach każdej grupy - sortowanie alfabetyczn z uwzględnieniem języka polskiego
  • wszystko na jednym ekranie, żadnych zaawansowanych edytorów, formatek i tym podobnych elementów
  • opcjonalnie możliwość eksportu listy do komputera i importu stamtąd (JAKOŚ)

Co do samych "zadań", to mają one tylko trzy parametry: zaznaczenie, nazwę i liczność. Uznałem, że pasuje to i do listy zadań, i do listy zakupów, i jest dla mnie kompletnie wystarczające. Nie potrzebuję dat, jednostek, kolorów, grupowania - tylko płaska, prosta lista.

Wygoda - rzecz względna

Jak widać, aplikacja jest ekstremalnie prosta:

W górne pole wpisujemy nazwę zadania lub produktu - pole działa jednocześnie jako filtr, ograniczając widoczność elementów listy tylko do tych pasujących. To pozwala uniknąć dodawania drugi raz tego samego albo po prostu wyszukać jakiś element w celu szybszego zaznaczenia.

Jeśli dodamy element do listy, jest on domyślnie "odznaczony", czyli wędruje na górę listy. Ma też domyślną liczność ustawioną na jeden, a samą liczność łatwo zmieniamy przyciskami "+" i "-". I to w zasadzie tyle.

Obsługa sprowadza się zatem do wyszukania elementów i "odznaczenia" ich - to są albo zadania do wykonania, albo zakupy do zrobienia. Potem, jeśli zadanie zostaje wykonane albo produkt kupiony, po prostu klikamy w pole zaznaczenia i już - na górze listy zostają tylko elementy "nieukończone", więc widzimy na bieżąco i bez szukania, co jeszcze mamy do załatwienia.

Jeśli chcemy zmienić nazwę zadania/produktu, wystarczy przytrzymać palec na elemencie i pojawia się edytor. Jeśli chcemy usunąć, tak samo długo trzeba przycisnąć znak "krzyżyka" - zrobiłem tak, aby przypadkowe dotknięcie nie powodowało zamieszania.

Wymiana danych

Pewien zgryz miałem w kwestii wymiany (eksportu i importu) danych. Niby nie było to krytyczne wymaganie, ale z drugiej strony chciałem jakoś ten problem rozwiązać. Stanęło na wykorzystaniu dysku Google'a - akurat integracja z tym miejscem składowania danych jest w Androidzie dość dobrze zorganizowana. Trzeba wprawdzie zadać sobie nieco trudu w generowaniu certyfikatów OAuth, konfigurowaniu całości, odpowiednim budowaniu projektu i tak dalej, ale opłacało się - aplikacja potrafi wyeksportować listę i zapisać ją na dysku Google'a, a także wczytać ją z powrotem, więc jest to też jakiś tam rodzaj kopii zapasowej.

Żeby już do końca wykorzystać możliwości, jakie daje takie podejście, napisałem jeszcze aplikację desktopową, która również potrafi zmieniać rzeczony plik - mam więc dokładnie to, czego oczekiwałem od Tasks. Mogę wygodnie edytować listę na komputerze, po czym wczytać ją do smartfona i jechać na zakupy. A że sam oprogramowywałem obie wersje, sortowanie zachowuje się spójnie i jednakowo w obu.

Android Studio

Bardzo spodobało mi się Android Studio w obecnej odsłonie - działa ono na "silniku" od JetBrains, a te środowiska bardzo lubię i cenię. Kodowanie nie jest może aż tak proste jak w Pythonie czy Javie, bo trzeba mieć świadomość całej architektury projektu (zwłaszcza roli plików dla Gradle), ale koniec końców jakoś się wszystko udało.

Ciekawe, że można dzięki profilom, budować różne wersje na różne okazje, np. osobne wersje "testowe" z nadmiarowym kodem ułatwiającym debugowanie oraz pełne wersje "wydaniowe". I faktycznie ma to znaczenie, bo np. moja lista działała bardzo brzydko w wersji z debugowaniem, a po przejściu na release nagle wszystko zaczęło działać płynnie i szybko.

Dlaczego nie publikuję aplikacji w sklepie Google'a? Bo póki co nie planuję rozpoczęcia tworzenia aplikacji na Androida, zaś założenie konta w sklepie... kosztuje. Nie są to zaporowe koszty, ale zdecyduję się na nie tylko wówczas, gdy po pierwsze, będę miał pomysły na inne aplikacje, a po drugie - więcej czasu na ich pisanie i (przede wszystkim) testowanie.

Komentarze