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

  1. Klikkaa paikkansa jakamista koskevaa nappia ja jakaa paikkansa myös C:n keskustelujen jäsenille.

  2. 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:

  1. Lähetä asento

  2. Työpaikka

  3. 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 asemansa

  • DHT: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.