Jak natychmiast zmienić indeks w OptionSelector (bez animacji)? [Zamknięte]

16

W mojej aplikacji używam OptionSelector do wybierania z listy stacji rowerowych. Mam również element mapy z oznaczeniami miejsc dla każdej stacji.

Po dotknięciu znacznika miejsca zmienia on także OptionSelector na indeks odpowiedniej stacji, ponieważ jest to dobry UX.

To, co nie jest dobre w UX, to to, jak OptionSelector reaguje na tę zmianę indeksu, która animuje się tak, jakby została poruszona palcem użytkownika. Innymi słowy, długo po tym, jak użytkownik dotknie znacznika mapy i otrzyma wszystkie potrzebne informacje, OptionSelector nadal „obraca się” na indeks stacji.

Oto film demonstrujący to zachowanie: https://www.youtube.com/watch?v=jXKWlAmNYsw

Chciałbym, aby ten OptionSelector natychmiast zmienił indeks bez animacji. Czy jest na to sposób?

Oto jak obecnie robię różne rzeczy. Bardzo się cieszę, że mogę to poprawić, jeśli jest to niewłaściwy sposób. Używam WorkerScript (wątek QML, mniej więcej) do wykonywania wywołań API. Kiedy ten WorkerScript powraca, przesuwa OptionSelector tak:

WorkerScript {
    id: queryStationsWorker
    source: "../js/getstations.js"

    onMessage: {
        [...]

        // Move the OptionSelector to the corresponding station's index.
        stationSelector.selectedIndex = getLastStationIndex(lastStation.contents.stationName, stationsModel)

        /*
         * For the sake of clarity:
         *
         * getLastStationIndex() is a function which just returns an integer.
         * lastStation is a U1DB database used for state saving.
         * stationsModel is a model containing all of the stations.
         */
    }
}

Doceniona jakakolwiek pomoc lub wgląd - na zdrowie!

Aaron Hastings
źródło
Czy możesz podać nam tylko kod wystarczający do odtworzenia problemu? Wideo jest oczywiście pomocne, ale bardzo trudno jest ci pomóc bez fragmentu kodu do ponownego użycia (patrz sscce.org )
Sylvain Pineau,
Cześć Sylvain. Przeprosiny za opóźnienie. Oto plik QML, którego możesz użyć do przetestowania. Wystarczy utworzyć nowy projekt interfejsu użytkownika Ubuntu Simple i zastąpić główny plik QML tym: pastebin.ubuntu.com/9534780
Aaron Hastings

Odpowiedzi:

0

Możesz zobaczyć kopię pliku qml OptionSelector tutaj, który używa UbuntuNumberAnimation, gdy nie jest rozwinięty. Nie ma opcji, aby ją wyłączyć, a jeśli ta funkcja jest wymagana, będziesz musiał załatać aktualizację i poczekać chwilę na nowe wersje biblioteki.

Możesz jednak utworzyć własny otwarty widget wyboru, usunąć część animacji i upewnić się, że zmieniłeś jej nazwę w celu użycia w kodzie. Polecam tę trasę.

Martin Owens -doctormo-
źródło