Bagaimana cara mengubah indeks di OptionSelector segera (tanpa animasi)? [Tutup]

16

Di aplikasi saya, saya menggunakan OptionSelector untuk memilih dari daftar stasiun sepeda. Saya juga memiliki komponen peta dengan penanda tempat untuk setiap stasiun.

Ketika saya mengetuk penanda tempat, ia juga mengubah pemilih opsi ke indeks stasiun yang sesuai, karena ini adalah UX yang bagus.

Apa yang tidak baik UX adalah bagaimana OptionSelector merespons perubahan indeks ini, yang menjiwai dirinya sendiri seolah-olah telah dijentikkan oleh jari pengguna. Dengan kata lain, lama setelah pengguna mengetuk penanda peta dan menerima semua informasi yang mereka butuhkan, pemilih Option masih "berputar" ke indeks stasiun.

Berikut adalah video yang menunjukkan perilaku ini: https://www.youtube.com/watch?v=jXKWlAmNYsw

Saya ingin OptionSelector ini segera mengubah indeksnya, tanpa animasi. Apakah ada cara untuk melakukan ini?

Beginilah cara saya saat ini melakukan sesuatu. Saya lebih dari senang untuk dikoreksi jika ini adalah cara yang salah tentang hal ini. Saya menggunakan WorkerScript (utas QML, lebih atau kurang) untuk melakukan panggilan API. Ketika WorkerScript ini kembali, ia menggerakkan OptionSelector seperti:

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.
         */
    }
}

Bantuan atau wawasan apa pun dihargai - tepuk tangan!

Aaron Hastings
sumber
Bisakah tolong beri kami kode yang cukup untuk mereproduksi masalah Anda? Video ini tentu saja membantu tetapi cukup sulit untuk membantu Anda tanpa potongan kode untuk digunakan kembali (Lihat sscce.org )
Sylvain Pineau
Hai Sylvain. Permintaan maaf atas keterlambatan ini. Ini adalah file QML yang dapat Anda gunakan untuk menguji. Cukup buat proyek Ubuntu Simple UI baru dan ganti file QML utama Anda dengan ini: pastebin.ubuntu.com/9534780
Aaron Hastings

Jawaban:

0

Anda dapat melihat salinan OptionSelector qml di sini menggunakan UbuntuNumberAnimation ketika tidak diperluas. Tidak ada opsi untuk mematikannya dan jika fitur ini diperlukan Anda harus menambal upstream dan menunggu beberapa saat untuk versi baru perpustakaan.

Anda bisa membuat widget pemilih terbuka sendiri, menghapus bagian animasi dan pastikan Anda mengganti nama untuk digunakan dalam kode Anda. Saya merekomendasikan rute ini.

Martin Owens -doctormo-
sumber