Lokation Deling på QT-kunder
Hvordan skal man bruge den?
Udelægtsmæssig brug
I en samtale kan brugeren klikke på lokationsikonet for at vise et kort. Hvis Location Services
er aktiveret på enheden, vises brugerens position på kortet, sammen med placeringen af alle andre medlemmer, der deler deres placering (fra alle samtaler i den valgte konto). Brugeren kan slå lokationsdeling på og af ved at klikke på lokationsdeling knapperne. Som standard deles brugerens placering i 15 minutter, men denne indstilling kan ændres i appens indstillinger.
Når en bruger deler sin placering i en samtale, vises et rødt placeringsikon på samtale ikon. Hvis brugeren modtager en placering fra et andet medlem, vises et orange placeringsikon på alle samtaler, hvor medlemmet er til stede.
Brugeren kan interagere med kortet ved at nylige, zoome ind og ud, flytte det og lukke det. Kortet kan også blive pinnet eller unpinned. Når kortet er unpinned, kan det genpinned, hvis brugeren er i den rigtige konto. Denne funktion giver brugeren mulighed for at holde kortet synligt, mens du fortsætter med at bruge Jami.
Avanceret brug
Multi-deling
scenariet
Brugeren deler allerede placeringen med samtale A og samtale B.
Funktion
Hvis brugeren skifter til samtale C, er kortet stadig synligt, og brugeren har to muligheder
Klik på knappen til at dele placering for også at dele placering med medlemmer af samtalen C.
Klik på slutknappen for at dele placering. Dette vil vise en pop-up, der giver brugeren mulighed for enten at slukke for at dele placering helt eller kun stoppe med at dele deres placering med medlemmer af samtalen C.
Fjernt vinduet
Hvis vinduet er opspillet, vil brugeren ikke kunne klikke på placeringsdelingsknappen, fordi vinduet ikke længere er forbundet med en samtale. For at begynde at dele placering med nye mennesker, skal brugeren genpinde vinduet. Bemærk, at opspillet ikke påvirker nogen løbende placeringsholding.
Flere konti
Hver konto har sit eget unikke kort. Hvis brugeren slukker kortet, mens han er på konto A, skifter han til konto B og slukker kortet, vil to kort være synlige. Kortene for konto A og B viser placeringer delt med disse konti, henholdsvis, og er helt adskilt fra hinanden
Hvordan fungerer det?
Indledning
Denne funktion er opdelt i tre dele:
Sende en position
At modtage en stilling
Indstilling af en position
For at bestemme placeringen, [Qt Positioning]https://doc.qt.io/qt-6/qtpositioning-index.html) API bruges. Når placeringen er bestemt, sendes den som en besked på DHT og overføres til klienten. Den modtagne position vises derefter ved hjælp af [OpenLayers]https://openlayers.org/) JavaScript-biblioteket.
Sende en position
Så snart et kort er åbnet, tager Positioning
klassen sig af at hente den nuværende position ved hjælp af QGeoPositionInfoSource
klassen i QtPositioning
modulen.
Lokalt gennem det
lokaltPositionReceived
signal, så brugeren kan se sin egen positionPå DHT til alle samtaler i
positionShareConvIds_
listen. Denne liste indeholder nøglerne til alle samtaler, som brugeren ønsker at dele sin position med. Fra denne nøgle, får man alle deltagernes URI’er og en positionmelding sendes til hver deltager.
JSON-format for en position er følgende:
Type (position eller stop-meddelelse)
Breedtegraden
Længde
Tid (ikke anvendt af QtClient)
Et eksempel på data: {\"lat\":45.51616583988481,\"lang\":-73.620693,\"tid\":1671658862000,\"type\":\"Position\"}
Når du sender positionen til daemon, bliver forfatterens URI også sendt.
Når brugeren stopper med at dele sin position med en samtale, fjernes samtaleens ID blot fra listen positionShareConvIds_
.
At modtage en stilling
Når en position modtages, aktiveres det »onPositionReceived() « -slottet. Uanset om det er en lokal position fra QtPositioning
-modulen eller en position fra en anden kontakt.
Tilføjede (URI er ikke til stede i listen)
Opdateret (URI er allerede til stede i listen)
Fjernet (type = »Stop«)
Positionen opbevares i listen som et objekt af typen positionObject
. Denne type giver mulighed for en vogthund for hver stilling. Hvis positionen ikke opdateres inden for en bestemt tidsramme, fjernes den fra listen.
Indstilling af en position
Når en position modtages (slot onPositionReceived()
aktiveres), overføres den til Qml, som igen sender oplysningerne til [OpenLayers]https://openlayers.org/) JavaScript-biblioteket. Qt WebEngine
modul giver mulighed for at bygge broen mellem biblioteksens webteknologi og Qml. Hver position er repræsenteret ved et lag, der tilføjes kortet.