Koha jagamine QT kliendil
Kuidas seda kasutada?
Väikesed kasutused
Kõneluses saab kasutaja panna paika asukoha ikonile, et näidata kaarti. Kui Location Services
on seadmes aktiivne, näitab kasutaja asukoht kaardi, koos kõigi teiste liikmete asukohaga, kes jagavad oma asukoha (kõigist valitud kontotest). Kasutaja saab asukoha jagamist sisse ja välja lülitada, klippides asukoha jagamise nuppe.
Kui kasutaja jagab oma asukoha vestluses, ilmub vestlusikonil punane asukoha ikona. Kui kasutaja saab asukoha teise liikme poolt, ilmub kõikidel vestlustel, kus liikme on kohal, oranžne asukoha ikona.
Kasutaja saab kaardiga suhtleda, tehes uusimist, suurendades sisse ja välja, liigutades ja sulgedes. Kaardi saab ka kinnitada või lahti kinnitada. Kui kaardi on lahti kinnitatud, saab seda uuesti kinnitada, kui kasutaja on õiges kontos. See funktsioon võimaldab kasutajal hoida kaarti nähtavaks, jätkama Jami kasutamist.
Arenenud kasutamine
Mitme jagamine
Scenario
Kasutaja jagab juba asukohta vestlus A ja vestlus B.
Eesmärk
Kui kasutaja läheb vestlus C, kaart on endiselt nähtav ja kasutajal on kaks valikut
Pange paari, et jagada ka asukohta C vestlusliikmetega.
Pange paari nuppu paari, mis võimaldab kasutajal kas täielikult kustutada asukoha jagamist või lõpetada vaid oma asukoha jagamine vestlus C liikmetega.
Pinnitud aken
Kui akend on lahti kinnitatud, ei saa kasutaja klõpsata asukoha jagamise nuppu, sest akend ei ole enam ühendatud vestlusele. Selleks et alustada asukoha jagamist uute inimestega, peab kasutaja akend uuesti kinnitama.
Mitmed kontod
Iga konto on oma unikaalne kaart. Kui kasutaja eemaldab kaardi A konto ajal, siis vahetab konto B ja eemaldab kaardi, on kaks kaarti nähtav.
Kuidas see toimib?
Sisend
See funktsioon on jagatud kolmele osale:
Saada oma asukoht
Töökoha saamine
Positsiooni näitus
Asukohta kindlaksmääramiseks kasutatakse [Qt Positsioon]https://doc.qt.io/qt-6/qtpositioning-index.html) API. Kui asukoht on kindlaks määratud, saadetakse see DHT-i sõnumiina ja edastatakse kliendile.
Positsiooni saatmine
Kui kaard avatakse, hoolitseb Positioning
klass praeguse positsiooni taastamisest, kasutades QGeoPositionInfoSource
klassi QtPositioning
mooduli. Positsioon muundatakse JSON-formaadile ja edastatakse positionManager
le. See klass koordineerib kogu positsiooni jagamise protsessi. Positsioon jagatakse siis sendPosition()
funktsiooni kaudu.
Kohalik
localPositionReceived
signaali kaudu, et kasutaja saaks näha oma positsiooniDHT-i all on kõik vestlused
positionShareConvIds_
nimekirjas. See nimekiri sisaldab kõigi vestluste võtmeid, millega kasutaja soovib oma positsiooni jagada.
Positsiooni JSON-formaat on järgmine:
Tüüp (positsiooni või peatamise sõnum)
Laius
Pikkus
Aeg (QtClient ei kasuta)
Näiteks: {\"lat\":45.516583988481,\"lõnge\":-73.620693,\"ajal\":1671658862000,\"tiip\":\"Positsioon\"}
Kui saadetakse positsioon deemonile, edastatakse autori URI.
Kui kasutaja lõpetab oma positsiooni jagamise vestluse käigus, eemaldatakse vestluse ID lihtsalt positionShareConvIds_
nimekirjast.
Töökoha saamine
Kui positsioon saab, aktiveeritakse „onPositionReceived() “ ruudus. Kas see on kohalik positsioon QtPositioning
moodulis või positsioon teisest kontaktis.
Lisatud (URI ei ole loetelus)
Päevastik (URI on juba nimekirjas)
Võtmine (type = „Stop“)
Seaduses säilitatakse positsioon positionObject
tüüpi objekti kujul.
Positsiooni näitus
Kui positsioon saab (slot onPositionReceived()
aktiveeritud), edastatakse positsioon Qml’le, mis omakorda saadab teabe [OpenLayers]https://openlayers.org/) JavaScript- raamatukogule. Qt WebEngine
moodul võimaldab sildida raamatukogu veebitehnoloogia ja Qml vahel. Iga positsiooni esindab kaardile lisatud kihts. newPosition()
funktsioon lisab uut kihts, updatePosition()
funktsioon uuendab kihts koordinaate ja removePosition()
funktsioon eemaldab kihts.