QT ক্লায়েন্টের অবস্থান ভাগ করা
কিভাবে ব্যবহার করবেন?
ক্ষুদ্র ব্যবহার
একটি কথোপকথনে, ব্যবহারকারী একটি মানচিত্র প্রদর্শন করতে অবস্থান আইকনে ক্লিক করতে পারেন। যদি Location Services ডিভাইসে সক্ষম করা হয়, তবে ব্যবহারকারীর অবস্থান মানচিত্রে প্রদর্শিত হবে, তাদের অবস্থান ভাগ করে নেওয়া অন্যান্য সদস্যদের অবস্থানগুলির সাথে (নির্বাচিত অ্যাকাউন্টের সমস্ত কথোপকথন থেকে) । ব্যবহারকারী অবস্থান ভাগ করে নেওয়ার বোতামগুলি ক্লিক করে অবস্থান ভাগ করে নেওয়ার এবং বন্ধ করার জন্য টগল করতে পারেন। ডিফল্টরূপে, ব্যবহারকারীর অবস্থান 15 মিনিটের জন্য ভাগ করা হয়, তবে অ্যাপ্লিকেশনটির সেটিংসগুলিতে এই সেটিংসটি পরিবর্তন করা যেতে পারে।
যখন কোনও ব্যবহারকারী কোনও কথোপকথনে তাদের অবস্থান ভাগ করে নিচ্ছেন, তখন কথোপকথনের আইকনে একটি লাল অবস্থান আইকন উপস্থিত হবে। যদি ব্যবহারকারী অন্য সদস্য থেকে অবস্থান গ্রহণ করে, তবে সদস্য উপস্থিত থাকা সমস্ত কথোপকথনে একটি কমলা অবস্থান আইকন প্রদর্শিত হবে।
ব্যবহারকারী মানচিত্রের সাথে যোগাযোগ করতে পারেন, এটিকে রিচার্জ করে, জুম করে এবং আউট করে, এটি সরিয়ে এবং এটি বন্ধ করে। মানচিত্রটি পিন করা বা unpinnedও হতে পারে। যখন মানচিত্রটি unpinned হয়, তখন এটি পুনরায় পুনরায় পিন করা যেতে পারে যদি ব্যবহারকারী সঠিক অ্যাকাউন্টে থাকে। এই বৈশিষ্ট্যটি ব্যবহারকারীকে জামি ব্যবহার চালিয়ে যাওয়ার সময় মানচিত্রটি দৃশ্যমান রাখতে দেয়।
উন্নত ব্যবহার
মাল্টি-শ্বেয়ারিং
চিত্রনাট্য
ব্যবহারকারী ইতিমধ্যে কথোপকথন A এবং কথোপকথন B সঙ্গে অবস্থান ভাগ করছে.
বৈশিষ্ট্য
যদি ব্যবহারকারী C কথোপকথনে স্যুইচ করেন, মানচিত্রটি এখনও দৃশ্যমান এবং ব্যবহারকারীর দুটি বিকল্প রয়েছে
C কথোপকথনের সদস্যদের সাথে অবস্থান ভাগ করতে অবস্থান ভাগ করে নেওয়ার বোতামে ক্লিক করুন।
অবস্থান ভাগ করে নেওয়ার শেষ বোতামে ক্লিক করুন। এটি একটি পপ-আপ উপস্থিত করবে যা ব্যবহারকারীকে সম্পূর্ণরূপে অবস্থান ভাগ করে নেওয়ার বন্ধ করতে দেয় বা কেবল কথোপকথনের সদস্যদের সাথে তাদের অবস্থান ভাগ করে নেওয়া বন্ধ করে দেয়।
পিনযুক্ত উইন্ডো
উইন্ডোটি যদি অপিন করা হয়, তবে ব্যবহারকারী অবস্থান ভাগ করে নেওয়ার বোতামে ক্লিক করতে পারবেন না কারণ উইন্ডোটি আর কোনও কথোপকথনে সংযুক্ত নয়। নতুন ব্যক্তিদের সাথে অবস্থান ভাগ করে নেওয়ার শুরু করতে ব্যবহারকারীকে উইন্ডোটি পুনরায় পিন করতে হবে। নোট করুন যে উইন্ডোটি অপিন করা কোনও চলমান অবস্থান ভাগ করে নেওয়ার প্রভাবিত করে না। অতিরিক্তভাবে, উইন্ডোটি অপিন করা অবস্থায় অবস্থান ভাগ করে নেওয়ার শেষ বোতামে ক্লিক করা সমস্ত বর্তমান অবস্থান ভাগ করে নেওয়ার বন্ধ করবে এবং কোনও পপ-আপ উপস্থিত হবে না যা ব্যবহারকারীকে ভাগ করে নেওয়ার জন্য নির্দিষ্ট কথোপকথন নির্বাচন করতে দেয়।
একাধিক অ্যাকাউন্ট
প্রতিটি অ্যাকাউন্টের নিজস্ব অনন্য মানচিত্র রয়েছে। যদি ব্যবহারকারী অ্যাকাউন্ট এ এ থাকা অবস্থায় মানচিত্রটি আনপিন করে, তারপরে অ্যাকাউন্ট বিতে স্যুইচ করে এবং মানচিত্রটি আনপিন করে, দুটি মানচিত্র দৃশ্যমান হবে। অ্যাকাউন্ট এ এবং বি এর জন্য মানচিত্রগুলি সেই অ্যাকাউন্টগুলির সাথে ভাগ করা অবস্থানগুলি প্রদর্শন করে, যথাক্রমে, এবং একে অপরের থেকে সম্পূর্ণ পৃথক
এটা কিভাবে কাজ করে?
প্রবর্তন
এই বৈশিষ্ট্যটি তিনটি অংশে বিভক্তঃ
একজনের অবস্থান পাঠানো
পদ গ্রহণ
অবস্থান প্রদর্শন
অবস্থান নির্ধারণের জন্য, [Qt Positioning] (https://doc.qt.io/qt-6/qtpositioning-index.html) API ব্যবহার করা হয়। অবস্থান নির্ধারণ করার পরে, এটি DHT এ একটি বার্তা হিসাবে প্রেরণ করা হয় এবং ক্লায়েন্টকে প্রেরণ করা হয়। প্রাপ্ত অবস্থানটি তারপরে [OpenLayers] (https://openlayers.org/) জাভাস্ক্রিপ্ট লাইব্রেরি ব্যবহার করে প্রদর্শিত হয়।
পজিশন পাঠানো
একবার একটি মানচিত্র খোলা হলে, Positioning ক্লাস QGeoPositionInfoSource ক্লাস ব্যবহার করে বর্তমান অবস্থানটি পুনরুদ্ধার করে। QtPositioning মডিউলের QtPositioning ক্লাসটি JSON ফর্ম্যাটে রূপান্তরিত হয় এবং positionManager এ প্রেরণ করা হয়। এই ক্লাসটি পুরো অবস্থান ভাগ করে নেওয়ার প্রক্রিয়াটি সমন্বয় করে। অবস্থানটি পরে sendPosition() ফাংশনটির মাধ্যমে ভাগ করা হয়। এটি ভাগ করা হয়ঃ
localPositionReceivedসংকেত দিয়ে ব্যবহারকারী নিজের অবস্থান দেখতে পারবেনDHT-এ
positionShareConvIds_তালিকায় সমস্ত কথোপকথনের জন্য। এই তালিকায় ব্যবহারকারী তাদের অবস্থান ভাগ করতে চান এমন সমস্ত কথোপকথনের কী রয়েছে। এই কী থেকে, সমস্ত অংশগ্রহণকারীর ইউআরআইগুলি পাওয়া যায় এবং প্রতিটি অংশগ্রহণকারীর কাছে একটি অবস্থান বার্তা প্রেরণ করা হয়।
একটি অবস্থান JSON বিন্যাস নিম্নরূপঃ
টাইপ (পজিশন বা স্টপ বার্তা)
অক্ষাংশ
দৈর্ঘ্য
সময় (QtClient দ্বারা ব্যবহৃত না)
তথ্যের একটি উদাহরণঃ {\"ল্যাট\":45.51616583988481,\"লং\":-73.620693,\"টাইম\":1671658862000,\"টাইপ\":\"পজিশন\"}
ডেমোনকে অবস্থান পাঠানোর সময়, লেখকের ইউআরআইও প্রেরণ করা হয়।
যখন ব্যবহারকারী একটি কথোপকথনে তার অবস্থান ভাগ করা বন্ধ করে দেয়, তখন কথোপকথনের আইডি কেবল positionShareConvIds_ তালিকা থেকে সরানো হয়। প্রতিটি অংশগ্রহণকারীকে একটি "স্টপ" বার্তাও প্রেরণ করা হয়।
পদ গ্রহণ
যখন একটি অবস্থান প্রাপ্ত হয়, তখন এটি 'onPositionReceived()'স্লটটি সক্রিয় করে। এটি QtPositioning মডিউল থেকে স্থানীয় অবস্থান হোক বা অন্য কোনও যোগাযোগের অবস্থান। positionManager স্তরে, objectListSharingUris_ তালিকাটি ক্লায়েন্টের সমস্ত অবস্থান সংরক্ষণ করে। অবস্থানটি হয়ঃ
যোগ করা হয়েছে (উইআরআই তালিকায় উপস্থিত নেই)
আপডেট করা হয়েছে (উইআরআই তালিকাটিতে ইতিমধ্যেই উপস্থিত রয়েছে)
মুছে ফেলা (টাইপ = "স্টপ")
অবস্থানটি positionObject টাইপের একটি বস্তুর আকারে তালিকায় সংরক্ষিত হয়। এই টাইপটি প্রতিটি অবস্থানের জন্য একটি ওয়াচডগকে অনুমতি দেয়। যদি নির্দিষ্ট সময়ের মধ্যে অবস্থানটি আপডেট না করা হয় তবে এটি তালিকা থেকে সরানো হয়।
অবস্থান প্রদর্শন
যখন একটি অবস্থান প্রাপ্ত হয় (slot onPositionReceived() ট্রিগার করা হয়), অবস্থানটি Qml এ প্রেরণ করা হয় যা তারপরে তথ্যটি [OpenLayers]https://openlayers.org/) জাভাস্ক্রিপ্ট লাইব্রেরিতে প্রেরণ করে। Qt WebEngine মডিউলটি লাইব্রেরির ওয়েব প্রযুক্তি এবং Qml এর মধ্যে সেতু তৈরি করতে দেয়। প্রতিটি অবস্থান মানচিত্রে যুক্ত স্তর দ্বারা প্রতিনিধিত্ব করা হয়। newPosition() ফাংশন একটি নতুন স্তর যুক্ত করে, updatePosition() ফাংশন স্তরের সমন্বয় আপডেট করে এবং `removePosition() ফাংশন স্তরটি সরিয়ে দেয়।