Paikka QT-asiakas
Miten sitä käytetään?
Penkkivalmiste
Käyttäjä voi klikata sijainti ikoni näkyviin kartan. Jos Location Services
on aktivoitu laitteessa, käyttäjän sijainti näkyy kartalla, sekä kaikkien muiden jäsenen sijainti, jotka jakavat sijaintinsa (kaikista keskustelusta valittu tili). Käyttäjä voi vaihtaa sijainti jakaminen päälle ja pois napsauttamalla sijainti jakamista painikkeita. Väärinmuodossa käyttäjän sijainti on jakettu 15 minuuttia, mutta tätä asetusta voidaan muuttaa sovelluksen asetuksissa.
Kun käyttäjä jakaa sijaintinsa keskustelussa, punainen sijainti ikoni näkyy keskustelua ikoni. Jos käyttäjä saa sijainnin toiselta jäseneltä, oranssi sijainti ikoni näkyy kaikissa keskusteluissa, joissa jäsen on läsnä.
Käyttäjä voi vuorovaikuttaa kartan kanssa uudistamalla, suurentamalla, siirtämällä ja sulkemalla sitä. Kartta voidaan myös kiinnittää tai purkaa. Kun kartta on purkaa, se voidaan purkaa uudelleen, jos käyttäjä on oikeassa tilillä. Tämä ominaisuus mahdollistaa käyttäjän säilyttävän kartan näkyvillä, kun jatkaa Jami-käyttöä.
Edistynyt käyttö
Monenvälinen jakaminen
Scenario
Käyttäjä jakaa sijainnin jo keskustelulla A ja B.
Merkintä
Jos käyttäjä siirtyy keskustelulle C, kartta on edelleen näkyvissä ja käyttäjälle on kaksi vaihtoehtoa
Klikkaa paikkansa jakamista koskevaa nappia ja jakaa paikkansa myös C:n keskustelujen jäsenille.
Klikkaa sijainnin jakamista koskeva lopullinen nappia. Tämä tuo esiin näkyvää näkyvää, joka mahdollistaa käyttäjän joko kokonaan poistaa sijainnin jakaminen tai lopettaa vain sijainnin jakaminen C:n keskustelujen jäsenten kanssa.
Pinnitetty ikkuna
Jos ikkuna on puristettu, käyttäjä ei voi napsauttaa sijainnin jakelu-painiketta, koska ikkuna ei ole enää yhteydessä keskustelulle. Aloittaakseen sijainnin jakamista uusille ihmisille käyttäjän on painettava ikkuna uudelleen. Huomaa, että ikkuna puristaminen ei vaikuta jatkuvaan sijainnin jakeluun. Lisäksi, napsauttamalla sijainnin jakelu lopunpainiketta, kun ikkuna on puristettu, lopetetaan kaikki nykyinen sijainnin jakelu ja ei ilmene yhtään näkyvää, jonka avulla käyttäjä voi valita tiettyä keskustelua, jolla lopettaa jakelu.
Useat tilinit
Jokaisella tilillä on oma ainutlaatuinen kartta. Jos käyttäjä purkaa kartan A-tilillä ollessaan, siirtyy sitten B-tiliin ja purkaa kartan, kaksi kartta näkyy.
Miten se toimii?
Esitelmä
Tämä ominaisuus on jaettu kolmeen osaan:
Lähetä asento
Työpaikka
Aseman ilmaiseminen
Paikan määrittämiseksi käytetään [Qt Positioning]https://doc.qt.io/qt-6/qtpositioning-index.html) API. Kun paikka on määritelty, se lähetetään viestiä DHT: lle ja lähetetään asiakkaan. Saatu paikka näkyy sitten käyttämällä [OpenLayers]https://openlayers.org/) JavaScript-kirjaston.
Lähetys positio
Heti kun kartta on avattu, Positioning
luokka huolehtii nykyisen aseman saamisesta käyttämällä QGeoPositionInfoSource
luokan QtPositioning
moduulia.
Paikalla
localPositionReceived
-signaalin kautta, jotta käyttäjä voi nähdä oman asemansaDHT:n kautta kaikki keskusteluja
positionShareConvIds_
-luettelossa. Tämä luettelo sisältää kaikki keskustelujen avaimet, joiden kanssa käyttäjä haluaa jakaa asemansa.
JSON-muodostus on seuraava:
Tyypi (paikka- tai pysähtymisviesti)
Laiheus
Pitkäisyys
Aika (ei QtClient käyttänyt)
Esimerkki: {\"lat\":45.51616583988481,\"long\":-73.620693,\"aika\":1671658862000,\"tyyppi\":\"Position\"}
Kun lähetetään sijainti daemonille, myös tekijän URI lähetetään.
Kun käyttäjä lopettaa keskustelun yhteydessä olevan aseman jakamisen, keskustelun tunnus poistetaan positionShareConvIds_
-luettelosta.
Työpaikka
Kun positio vastaanotetaan, se käynnistää ”onPositionReceived() ” -luettelon. Olipa kyseessä paikallinen positio QtPositioning
-moduulesta tai positio toisesta yhteyteen.
Lisätään (URI ei ole luettelossa)
Päivitetty (URI on jo luettelossa)
Poistettu (tyyppinen = ”Stop”)
Jos sijainti ei päivitettäisi tiettyä aikaa, se poistetaan luettelosta.
Aseman ilmaiseminen
Kun positio vastaanotetaan (slot onPositionReceived()
käynnistetään), positio lähetetään Qml:lle, joka puolestaan lähettää tiedot [OpenLayers]https://openlayers.org/) JavaScript-kirjastolle. Qt WebEngine
-moduuli mahdollistaa sillan kirjaston verkkotekniikan ja Qml:n välillä. Jokainen positio edustaa tasoa, joka lisätään kartalle. newPosition()
-toiminta lisää uuden taidan, updatePosition()
-toiminta päivittää taidan koordinaatteja ja removePosition()
-toiminta poistaa taidan.