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

  1. Klik på knappen til at dele placering for også at dele placering med medlemmer af samtalen C.

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

  1. Sende en position

  2. At modtage en stilling

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

  • På 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.