diff --git a/changelog.md b/changelog.md index f8250f48..fd72dc7e 100644 --- a/changelog.md +++ b/changelog.md @@ -7,6 +7,7 @@ ### enhancements - some UI/UX improvements on seelen wallpaper manager. +- UI/UX improvements on wi-fi toolbar module. ### fix - popups and context menus fast flashing. diff --git a/src/apps/toolbar/i18n/translations/af.yml b/src/apps/toolbar/i18n/translations/af.yml index 980752e2..4909a33e 100644 --- a/src/apps/toolbar/i18n/translations/af.yml +++ b/src/apps/toolbar/i18n/translations/af.yml @@ -14,6 +14,11 @@ network: hidden: Verborge netwerk connect: Konnekteer more: Meer netwerkinstellings + scanning: Soek vir netwerke + secured: Geënkripteerde netwerk + available: Beskikbare netwerke + saved: Gestoorde netwerke + connected: Gekoppel aan settings: restart: Begin oor log_out: Teken uit diff --git a/src/apps/toolbar/i18n/translations/am.yml b/src/apps/toolbar/i18n/translations/am.yml index 50a831b0..56f76c55 100644 --- a/src/apps/toolbar/i18n/translations/am.yml +++ b/src/apps/toolbar/i18n/translations/am.yml @@ -14,6 +14,11 @@ network: more: ተጨማሪ የአውታረ መረብ ቅንብሮች not_found: ምንም አውታረመረቦች አልተገኙም connect: አገናኝ + secured: የተመሰጠረ አውታረ መረብ + connected: ጋር ተገናኝቷል። + available: የሚገኙ አውታረ መረቦች + saved: የተቀመጡ አውታረ መረቦች + scanning: አውታረ መረቦችን በመቃኘት ላይ settings: restart: እንደገና ጀምር title: ቅንብሮች diff --git a/src/apps/toolbar/i18n/translations/ar.yml b/src/apps/toolbar/i18n/translations/ar.yml index 1623551e..166e9d65 100644 --- a/src/apps/toolbar/i18n/translations/ar.yml +++ b/src/apps/toolbar/i18n/translations/ar.yml @@ -14,6 +14,11 @@ network: password: كلمة المرور disconnect: قطع الاتصال connect: يتصل + connected: متصل ب + scanning: المسح للشبكات + available: الشبكات المتاحة + secured: شبكة مشفرة + saved: الشبكات المحفوظة settings: title: إعدادات app_settings: إعدادات التطبيقات diff --git a/src/apps/toolbar/i18n/translations/az.yml b/src/apps/toolbar/i18n/translations/az.yml index f181c1d9..685a588a 100644 --- a/src/apps/toolbar/i18n/translations/az.yml +++ b/src/apps/toolbar/i18n/translations/az.yml @@ -14,6 +14,11 @@ network: hidden: Gizli şəbəkə disconnect: Ayırd etmək connect: Qoşulmaq + secured: Şifrələnmiş şəbəkə + connected: qoşuldu + saved: Saxlanan şəbəkələr + scanning: Şəbəkələrin skan edilməsi + available: Mövcud şəbəkələr settings: shutdown: Söndür restart: Yenidən başlamaq diff --git a/src/apps/toolbar/i18n/translations/bg.yml b/src/apps/toolbar/i18n/translations/bg.yml index 6eca1c05..a302cc23 100644 --- a/src/apps/toolbar/i18n/translations/bg.yml +++ b/src/apps/toolbar/i18n/translations/bg.yml @@ -14,6 +14,11 @@ network: hidden: Скрита мрежа more: Повече мрежови настройки disconnect: Изключете + available: Налични мрежи + connected: Свързан с + secured: Криптирана мрежа + saved: Запазени мрежи + scanning: Сканиране за мрежи settings: shutdown: Изключвам log_out: Излез от профила си diff --git a/src/apps/toolbar/i18n/translations/bn.yml b/src/apps/toolbar/i18n/translations/bn.yml index 861ac4f7..51b54827 100644 --- a/src/apps/toolbar/i18n/translations/bn.yml +++ b/src/apps/toolbar/i18n/translations/bn.yml @@ -14,6 +14,11 @@ network: connect: সংযুক্ত করুন more: আরও নেটওয়ার্ক সেটিংস hidden: লুকানো নেটওয়ার্ক + saved: সংরক্ষিত নেটওয়ার্ক + available: উপলব্ধ নেটওয়ার্ক + connected: সাথে সংযুক্ত + scanning: নেটওয়ার্কের জন্য স্ক্যান করা হচ্ছে + secured: এনক্রিপ্ট করা নেটওয়ার্ক settings: app_settings: অ্যাপ সেটিংস restart: আবার শুরু diff --git a/src/apps/toolbar/i18n/translations/bs.yml b/src/apps/toolbar/i18n/translations/bs.yml index 744a1383..2bf7e290 100644 --- a/src/apps/toolbar/i18n/translations/bs.yml +++ b/src/apps/toolbar/i18n/translations/bs.yml @@ -14,6 +14,11 @@ network: more: Više mrežnih postavki hidden: Skrivena mreža connect: Povezati + saved: Sačuvane mreže + scanning: Skeniranje za mreže + secured: Šifrovana mreža + connected: Povezano na + available: Dostupne mreže settings: shutdown: Ugasiti log_out: Odjaviti se diff --git a/src/apps/toolbar/i18n/translations/ca.yml b/src/apps/toolbar/i18n/translations/ca.yml index 4e67620c..a5a08b6f 100644 --- a/src/apps/toolbar/i18n/translations/ca.yml +++ b/src/apps/toolbar/i18n/translations/ca.yml @@ -14,6 +14,11 @@ network: connect: Conectar disconnect: Desconectar hidden: Xarxa oculta + connected: Connectat a + available: Xarxes disponibles + saved: Xarxes guardades + secured: Xarxa xifrada + scanning: Escaneig de xarxes settings: app_settings: Configuració de l'aplicació title: Configuració diff --git a/src/apps/toolbar/i18n/translations/cs.yml b/src/apps/toolbar/i18n/translations/cs.yml index b937d0fc..b2ff474e 100644 --- a/src/apps/toolbar/i18n/translations/cs.yml +++ b/src/apps/toolbar/i18n/translations/cs.yml @@ -14,6 +14,11 @@ network: more: Více nastavení sítě disconnect: Odpojit connect: Připojit + connected: Připojeno k + saved: Uložené sítě + available: Dostupné sítě + secured: Šifrovaná síť + scanning: Vyhledávání sítí settings: app_settings: Nastavení aplikace restart: Restart diff --git a/src/apps/toolbar/i18n/translations/cy.yml b/src/apps/toolbar/i18n/translations/cy.yml index 0471a112..a8e4fd9c 100644 --- a/src/apps/toolbar/i18n/translations/cy.yml +++ b/src/apps/toolbar/i18n/translations/cy.yml @@ -14,6 +14,11 @@ network: more: Mwy o osodiadau rhwydwaith disconnect: Ddatgysylltith connect: Chysyllta ’ + saved: Rhwydweithiau wedi'u cadw + scanning: Sganio am rwydweithiau + available: Rhwydweithiau sydd ar gael + connected: Wedi'i gysylltu â + secured: Rhwydwaith wedi'i amgryptio settings: restart: Ail-ddechrau log_out: Allgofnodi diff --git a/src/apps/toolbar/i18n/translations/da.yml b/src/apps/toolbar/i18n/translations/da.yml index 5efcfbc9..b7fd735c 100644 --- a/src/apps/toolbar/i18n/translations/da.yml +++ b/src/apps/toolbar/i18n/translations/da.yml @@ -14,6 +14,11 @@ network: not_found: Ingen netværk fundet more: Flere netværksindstillinger hidden: Skjult netværk + connected: Forbundet til + saved: Gemte netværk + available: Tilgængelige netværk + scanning: Scanning efter netværk + secured: Krypteret netværk settings: sleep: Søvn shutdown: Lukke ned diff --git a/src/apps/toolbar/i18n/translations/de.yml b/src/apps/toolbar/i18n/translations/de.yml index 8e68d8e1..9cc4a5c3 100644 --- a/src/apps/toolbar/i18n/translations/de.yml +++ b/src/apps/toolbar/i18n/translations/de.yml @@ -14,6 +14,11 @@ network: password: Passwort disconnect: Trennen connect: Verbinden + connected: Verbunden mit + saved: Gespeicherte Netzwerke + secured: Verschlüsseltes Netzwerk + available: Verfügbare Netzwerke + scanning: Nach Netzwerken suchen settings: title: Einstellungen app_settings: App-Einstellungen diff --git a/src/apps/toolbar/i18n/translations/el.yml b/src/apps/toolbar/i18n/translations/el.yml index 6b01eb4d..275b3733 100644 --- a/src/apps/toolbar/i18n/translations/el.yml +++ b/src/apps/toolbar/i18n/translations/el.yml @@ -14,6 +14,11 @@ network: connect: Συνδέω-συωδεομαι hidden: Κρυμμένο δίκτυο not_found: Δεν βρέθηκαν δίκτυα + connected: Συνδεδεμένο με + scanning: Σάρωση για δίκτυα + saved: Αποθηκευμένα δίκτυα + available: Διαθέσιμα δίκτυα + secured: Κρυπτογραφημένο δίκτυο settings: app_settings: Ρυθμίσεις εφαρμογής shutdown: ΤΕΡΜΑΤΙΣΜΟΣ ΛΕΙΤΟΥΡΓΙΑΣ diff --git a/src/apps/toolbar/i18n/translations/en.yml b/src/apps/toolbar/i18n/translations/en.yml index 332f3b6c..1264dbd4 100644 --- a/src/apps/toolbar/i18n/translations/en.yml +++ b/src/apps/toolbar/i18n/translations/en.yml @@ -10,7 +10,12 @@ media: multimedia: Multimedia comunications: Communications network: - not_found: No networks found + connected: Connected to + saved: Saved networks + available: Available networks + not_found: No Wi-Fi networks found + secured: Encrypted network + scanning: Scanning for networks more: More Network Settings hidden: Hidden Network placeholder: diff --git a/src/apps/toolbar/i18n/translations/es.yml b/src/apps/toolbar/i18n/translations/es.yml index 72296d48..05971f4e 100644 --- a/src/apps/toolbar/i18n/translations/es.yml +++ b/src/apps/toolbar/i18n/translations/es.yml @@ -14,6 +14,11 @@ network: password: Contraseña disconnect: Desconectar connect: Conectar + available: Redes disponibles + connected: Conectado a + secured: Red cifrada + saved: Redes guardadas + scanning: Escaneo de redes settings: title: Configuraciones app_settings: Configuraciones de la aplicación diff --git a/src/apps/toolbar/i18n/translations/et.yml b/src/apps/toolbar/i18n/translations/et.yml index 24f6ff3c..744c191a 100644 --- a/src/apps/toolbar/i18n/translations/et.yml +++ b/src/apps/toolbar/i18n/translations/et.yml @@ -14,6 +14,11 @@ network: not_found: Võrgustikke pole leitud connect: Ühendama hidden: Varjatud võrk + available: Saadaolevad võrgud + scanning: Võrkude otsimine + saved: Salvestatud võrgud + secured: Krüpteeritud võrk + connected: 'Ühendatud:' settings: log_out: Logi välja restart: Taaskäivita diff --git a/src/apps/toolbar/i18n/translations/eu.yml b/src/apps/toolbar/i18n/translations/eu.yml index ceee4ed0..cdcd7a30 100644 --- a/src/apps/toolbar/i18n/translations/eu.yml +++ b/src/apps/toolbar/i18n/translations/eu.yml @@ -14,6 +14,11 @@ network: hidden: Ezkutuko sarea disconnect: Deskonektatu more: Sareko ezarpen gehiago + connected: Honekin konektatuta + scanning: Sareak bilatzen + secured: Sare zifratua + available: Eskuragarri dauden sareak + saved: Gordetako sareak settings: restart: Berriro hasi shutdown: Itzali diff --git a/src/apps/toolbar/i18n/translations/fa.yml b/src/apps/toolbar/i18n/translations/fa.yml index 9db411c8..87a63345 100644 --- a/src/apps/toolbar/i18n/translations/fa.yml +++ b/src/apps/toolbar/i18n/translations/fa.yml @@ -14,6 +14,11 @@ network: hidden: شبکه پنهان more: تنظیمات بیشتر شبکه not_found: هیچ شبکه ای پیدا نشده است + available: شبکه های موجود + saved: شبکه های ذخیره شده + connected: متصل به + scanning: اسکن شبکه ها + secured: شبکه رمزگذاری شده settings: app_settings: تنظیمات برنامه restart: مجدداً diff --git a/src/apps/toolbar/i18n/translations/fi.yml b/src/apps/toolbar/i18n/translations/fi.yml index bb9d898f..f5b3dddc 100644 --- a/src/apps/toolbar/i18n/translations/fi.yml +++ b/src/apps/toolbar/i18n/translations/fi.yml @@ -14,6 +14,11 @@ network: disconnect: Katkaista more: Lisää verkkoasetuksia hidden: Piilotettu verkko + available: Käytettävissä olevat verkot + saved: Tallennetut verkot + connected: 'Yhdistetty:' + secured: Salattu verkko + scanning: Etsii verkkoja settings: sleep: Nukkua log_out: Kirjautua ulos diff --git a/src/apps/toolbar/i18n/translations/fr.yml b/src/apps/toolbar/i18n/translations/fr.yml index 0894935b..0350c63a 100644 --- a/src/apps/toolbar/i18n/translations/fr.yml +++ b/src/apps/toolbar/i18n/translations/fr.yml @@ -14,6 +14,11 @@ network: password: Mot de passe disconnect: Déconnecter connect: Connecter + connected: Connecté à + available: Réseaux disponibles + saved: Réseaux enregistrés + secured: Réseau crypté + scanning: Recherche de réseaux settings: title: Paramètres app_settings: Paramètres de l'application diff --git a/src/apps/toolbar/i18n/translations/gu.yml b/src/apps/toolbar/i18n/translations/gu.yml index 1f66b282..32ca615a 100644 --- a/src/apps/toolbar/i18n/translations/gu.yml +++ b/src/apps/toolbar/i18n/translations/gu.yml @@ -14,6 +14,11 @@ network: not_found: કોઈ નેટવર્ક મળ્યાં નથી hidden: છુપાયેલું નેટવર્ક more: વધુ નેટવર્ક સેટિંગ્સ + connected: સાથે જોડાયેલ છે + secured: એન્ક્રિપ્ટેડ નેટવર્ક + available: ઉપલબ્ધ નેટવર્ક્સ + saved: સાચવેલા નેટવર્ક્સ + scanning: નેટવર્ક્સ માટે સ્કેનિંગ settings: restart: પુનઃપ્રારંભ sleep: ઊંઘ diff --git a/src/apps/toolbar/i18n/translations/he.yml b/src/apps/toolbar/i18n/translations/he.yml index 2cc48dc0..b9397e79 100644 --- a/src/apps/toolbar/i18n/translations/he.yml +++ b/src/apps/toolbar/i18n/translations/he.yml @@ -14,6 +14,11 @@ network: hidden: רשת נסתרת not_found: לא נמצאו רשתות more: הגדרות רשת נוספות + connected: מחובר ל + available: רשתות זמינות + saved: רשתות שמורות + secured: רשת מוצפנת + scanning: סריקה לאיתור רשתות settings: app_settings: הגדרות אפליקציה restart: איתחול diff --git a/src/apps/toolbar/i18n/translations/hi.yml b/src/apps/toolbar/i18n/translations/hi.yml index ab271f64..b930907d 100644 --- a/src/apps/toolbar/i18n/translations/hi.yml +++ b/src/apps/toolbar/i18n/translations/hi.yml @@ -14,6 +14,11 @@ network: hidden: छिपा हुआ नेटवर्क disconnect: डिस्कनेक्ट connect: जोड़ना + connected: से जुड़ा + secured: एन्क्रिप्टेड नेटवर्क + saved: सहेजे गए नेटवर्क + scanning: नेटवर्क के लिए स्कैनिंग + available: उपलब्ध नेटवर्क settings: restart: पुनः आरंभ करें sleep: नींद diff --git a/src/apps/toolbar/i18n/translations/hr.yml b/src/apps/toolbar/i18n/translations/hr.yml index 26d29ff8..77247fce 100644 --- a/src/apps/toolbar/i18n/translations/hr.yml +++ b/src/apps/toolbar/i18n/translations/hr.yml @@ -14,6 +14,11 @@ network: hidden: Skrivena mreža disconnect: Odspojiti more: Više mrežnih postavki + connected: Povezan s + secured: Šifrirana mreža + available: Dostupne mreže + scanning: Traženje mreža + saved: Spremljene mreže settings: log_out: Odjavite se sleep: Spavati diff --git a/src/apps/toolbar/i18n/translations/hu.yml b/src/apps/toolbar/i18n/translations/hu.yml index 9ba9c09d..ef1a103c 100644 --- a/src/apps/toolbar/i18n/translations/hu.yml +++ b/src/apps/toolbar/i18n/translations/hu.yml @@ -14,6 +14,11 @@ network: hidden: Rejtett hálózat connect: Összekapcsol more: További hálózati beállítások + connected: Csatlakozva a következőhöz + saved: Mentett hálózatok + scanning: Hálózatok keresése + secured: Titkosított hálózat + available: Elérhető hálózatok settings: app_settings: Alkalmazásbeállítások restart: Újrakezd diff --git a/src/apps/toolbar/i18n/translations/hy.yml b/src/apps/toolbar/i18n/translations/hy.yml index 378c77aa..665cb8e8 100644 --- a/src/apps/toolbar/i18n/translations/hy.yml +++ b/src/apps/toolbar/i18n/translations/hy.yml @@ -14,6 +14,11 @@ network: more: Ավելի շատ ցանցային պարամետրեր connect: Միացնել not_found: Networks անցեր չեն գտնվել + scanning: Ցանցերի սկանավորում + secured: Կոդավորված ցանց + saved: Պահպանված ցանցեր + connected: Միացված է + available: Հասանելի ցանցեր settings: shutdown: Անջատել title: Կարգավորումներ diff --git a/src/apps/toolbar/i18n/translations/id.yml b/src/apps/toolbar/i18n/translations/id.yml index 4045b52f..d9a16655 100644 --- a/src/apps/toolbar/i18n/translations/id.yml +++ b/src/apps/toolbar/i18n/translations/id.yml @@ -14,6 +14,11 @@ network: not_found: Tidak ada jaringan yang ditemukan hidden: Jaringan tersembunyi more: Lebih banyak pengaturan jaringan + connected: Terhubung ke + saved: Jaringan yang disimpan + secured: Jaringan terenkripsi + available: Jaringan yang tersedia + scanning: Memindai jaringan settings: restart: Mengulang kembali app_settings: Pengaturan aplikasi diff --git a/src/apps/toolbar/i18n/translations/is.yml b/src/apps/toolbar/i18n/translations/is.yml index 151b6b4b..94b23866 100644 --- a/src/apps/toolbar/i18n/translations/is.yml +++ b/src/apps/toolbar/i18n/translations/is.yml @@ -14,6 +14,11 @@ network: not_found: Engin net fundust hidden: Falið net connect: Tengdu + scanning: Leitar að netkerfum + connected: Tengdur við + saved: Vistað netkerfi + secured: Dulkóðað net + available: Tiltæk netkerfi settings: restart: Endurræsa log_out: Að skrá þig út diff --git a/src/apps/toolbar/i18n/translations/it.yml b/src/apps/toolbar/i18n/translations/it.yml index 6543b4d7..b9869cef 100644 --- a/src/apps/toolbar/i18n/translations/it.yml +++ b/src/apps/toolbar/i18n/translations/it.yml @@ -14,6 +14,11 @@ network: not_found: Nessuna reti trovata more: Più impostazioni di rete hidden: Rete nascosta + connected: Connesso a + scanning: Scansione delle reti + saved: Reti salvate + secured: Rete crittografata + available: Reti disponibili settings: restart: Ricomincia app_settings: Impostazioni dell'app diff --git a/src/apps/toolbar/i18n/translations/ja.yml b/src/apps/toolbar/i18n/translations/ja.yml index 27d77bc7..92569438 100644 --- a/src/apps/toolbar/i18n/translations/ja.yml +++ b/src/apps/toolbar/i18n/translations/ja.yml @@ -14,6 +14,11 @@ network: hidden: 隠れたネットワーク more: 詳しい設定 disconnect: 切断 + connected: に接続されています + scanning: ネットワークのスキャン + saved: 保存されたネットワーク + secured: 暗号化されたネットワーク + available: 利用可能なネットワーク settings: restart: 再起動 log_out: ログアウト diff --git a/src/apps/toolbar/i18n/translations/ka.yml b/src/apps/toolbar/i18n/translations/ka.yml index 854d466c..dda9da43 100644 --- a/src/apps/toolbar/i18n/translations/ka.yml +++ b/src/apps/toolbar/i18n/translations/ka.yml @@ -14,6 +14,11 @@ network: connect: დაკავშირება more: მეტი ქსელის პარამეტრები hidden: დამალული ქსელი + secured: დაშიფრული ქსელი + connected: დაკავშირებულია + available: ხელმისაწვდომი ქსელები + saved: შენახული ქსელები + scanning: სკანირება ქსელებისთვის settings: restart: Რესტარტი shutdown: Გათიშვა diff --git a/src/apps/toolbar/i18n/translations/km.yml b/src/apps/toolbar/i18n/translations/km.yml index 9ecbfc69..98f34a81 100644 --- a/src/apps/toolbar/i18n/translations/km.yml +++ b/src/apps/toolbar/i18n/translations/km.yml @@ -14,6 +14,11 @@ network: connect: តផ្ជាប់ more: ការកំណត់បណ្តាញច្រើនទៀត disconnect: ផ្ដាច់ + saved: បណ្តាញដែលបានរក្សាទុក + connected: បានភ្ជាប់ទៅ + available: បណ្តាញដែលមាន + scanning: កំពុងស្កេនរកបណ្តាញ + secured: បណ្តាញដែលបានអ៊ិនគ្រីប settings: shutdown: បិទ log_out: ចាកចេញ diff --git a/src/apps/toolbar/i18n/translations/ko.yml b/src/apps/toolbar/i18n/translations/ko.yml index 4733c9bd..171471e3 100644 --- a/src/apps/toolbar/i18n/translations/ko.yml +++ b/src/apps/toolbar/i18n/translations/ko.yml @@ -14,6 +14,11 @@ network: password: 비밀번호 disconnect: 연결 끊기 connect: 연결 + connected: 연결됨 + available: 사용 가능한 네트워크 + saved: 저장된 네트워크 + secured: 암호화된 네트워크 + scanning: 네트워크 검색 중 settings: title: 설정 app_settings: 앱 설정 diff --git a/src/apps/toolbar/i18n/translations/ku.yml b/src/apps/toolbar/i18n/translations/ku.yml index c7a4fef7..5d81a4ed 100644 --- a/src/apps/toolbar/i18n/translations/ku.yml +++ b/src/apps/toolbar/i18n/translations/ku.yml @@ -14,6 +14,11 @@ network: hidden: Tora Hidden more: Mîhengên bêtir torê not_found: Tora torgilok nehat dîtin + scanning: Ji bo toran lêgerîn + connected: Girêdayî + available: Torên berdest + secured: Tora şîfrekirî + saved: torên Saved settings: shutdown: Temirandin sleep: Xew diff --git a/src/apps/toolbar/i18n/translations/lb.yml b/src/apps/toolbar/i18n/translations/lb.yml index 3e202d4a..23bde393 100644 --- a/src/apps/toolbar/i18n/translations/lb.yml +++ b/src/apps/toolbar/i18n/translations/lb.yml @@ -14,6 +14,11 @@ network: hidden: Verstoppt Netzwierk more: Méi Netzwierk Astellunge connect: Connecten + secured: Verschlësselte Reseau + scanning: Scannen fir Netzwierker + available: Verfügbar Netzwierker + saved: Gespäichert Netzwierker + connected: Verbonne mat settings: restart: Neistart shutdown: Ausmaachen diff --git a/src/apps/toolbar/i18n/translations/lo.yml b/src/apps/toolbar/i18n/translations/lo.yml index 8449f863..c1f882ab 100644 --- a/src/apps/toolbar/i18n/translations/lo.yml +++ b/src/apps/toolbar/i18n/translations/lo.yml @@ -14,6 +14,11 @@ network: not_found: ບໍ່ພົບເຄືອຂ່າຍທີ່ພົບ more: ການຕັ້ງຄ່າເຄືອຂ່າຍເພີ່ມເຕີມ connect: ເຊື່ອມຕໍ່ + saved: ເຄືອຂ່າຍທີ່ບັນທຶກໄວ້ + secured: ເຄືອຂ່າຍເຂົ້າລະຫັດ + scanning: ກຳລັງສະແກນຫາເຄືອຂ່າຍ + available: ເຄືອຂ່າຍທີ່ມີຢູ່ + connected: ເຊື່ອມຕໍ່ກັບ settings: shutdown: ປິດ​ເຄື່ອງ restart: ເລີ່ມ​ຕົ້ນ​ໃຫມ່ diff --git a/src/apps/toolbar/i18n/translations/lt.yml b/src/apps/toolbar/i18n/translations/lt.yml index 089e01a6..4e95aaf9 100644 --- a/src/apps/toolbar/i18n/translations/lt.yml +++ b/src/apps/toolbar/i18n/translations/lt.yml @@ -14,6 +14,11 @@ network: not_found: Jokių tinklų nerasta more: Daugiau tinklo nustatymų hidden: Paslėptas tinklas + saved: Išsaugoti tinklai + connected: Prisijungta prie + scanning: Tinklų nuskaitymas + secured: Šifruotas tinklas + available: Galimi tinklai settings: log_out: Atsijungti restart: Perkrauti diff --git a/src/apps/toolbar/i18n/translations/lv.yml b/src/apps/toolbar/i18n/translations/lv.yml index fab3fd71..b848bc65 100644 --- a/src/apps/toolbar/i18n/translations/lv.yml +++ b/src/apps/toolbar/i18n/translations/lv.yml @@ -14,6 +14,11 @@ network: hidden: Slēpts tīkls more: Vairāk tīkla iestatījumu not_found: Neto atrasti tīkli + saved: Saglabātie tīkli + scanning: Tīklu meklēšana + available: Pieejamie tīkli + connected: Savienots ar + secured: Šifrēts tīkls settings: log_out: Izlogoties sleep: Gulēt diff --git a/src/apps/toolbar/i18n/translations/mk.yml b/src/apps/toolbar/i18n/translations/mk.yml index 5fa8f7cf..dfcf0d3a 100644 --- a/src/apps/toolbar/i18n/translations/mk.yml +++ b/src/apps/toolbar/i18n/translations/mk.yml @@ -14,6 +14,11 @@ network: disconnect: Исклучување connect: Поврзете се more: Повеќе мрежни поставки + scanning: Скенирање за мрежи + saved: Зачувани мрежи + available: Достапни мрежи + connected: Поврзан со + secured: Шифрирана мрежа settings: shutdown: Исклучи restart: Рестарт diff --git a/src/apps/toolbar/i18n/translations/mn.yml b/src/apps/toolbar/i18n/translations/mn.yml index bcdd1cf1..ef21b403 100644 --- a/src/apps/toolbar/i18n/translations/mn.yml +++ b/src/apps/toolbar/i18n/translations/mn.yml @@ -14,6 +14,11 @@ network: disconnect: Тусгаарлах connect: Холбох more: Сүлжээний илүү олон тохиргоо + available: Боломжтой сүлжээнүүд + secured: Шифрлэгдсэн сүлжээ + saved: Хадгалсан сүлжээнүүд + connected: '-д холбогдсон' + scanning: Сүлжээг хайж байна settings: shutdown: Унтраах restart: Дахин ачааллах diff --git a/src/apps/toolbar/i18n/translations/ms.yml b/src/apps/toolbar/i18n/translations/ms.yml index 9b20868d..7ea86fd5 100644 --- a/src/apps/toolbar/i18n/translations/ms.yml +++ b/src/apps/toolbar/i18n/translations/ms.yml @@ -14,6 +14,11 @@ network: hidden: Rangkaian Tersembunyi not_found: Tiada rangkaian dijumpai connect: Sambung + saved: Rangkaian yang disimpan + scanning: Mengimbas untuk rangkaian + secured: Rangkaian yang disulitkan + connected: Disambungkan ke + available: Rangkaian yang tersedia settings: shutdown: Menutup log_out: Log keluar diff --git a/src/apps/toolbar/i18n/translations/mt.yml b/src/apps/toolbar/i18n/translations/mt.yml index 7efa229f..c36dc7f7 100644 --- a/src/apps/toolbar/i18n/translations/mt.yml +++ b/src/apps/toolbar/i18n/translations/mt.yml @@ -14,6 +14,11 @@ network: disconnect: Skonnettja hidden: Netwerk moħbi more: Aktar settings tan-netwerk + scanning: Skennjar għal netwerks + saved: Netwerks salvati + connected: Konnessi ma' + available: Netwerks disponibbli + secured: Netwerk kriptat settings: restart: Erġa ibda shutdown: Għalaq diff --git a/src/apps/toolbar/i18n/translations/ne.yml b/src/apps/toolbar/i18n/translations/ne.yml index b222f9be..760aa1e1 100644 --- a/src/apps/toolbar/i18n/translations/ne.yml +++ b/src/apps/toolbar/i18n/translations/ne.yml @@ -14,6 +14,11 @@ network: hidden: लुकेको नेटवर्क more: अधिक नेटवर्क सेटिंग्स connect: जोड्नु + saved: सुरक्षित नेटवर्कहरू + scanning: नेटवर्कहरूको लागि स्क्यान गर्दै + connected: मा जोडिएको छ + available: उपलब्ध नेटवर्कहरू + secured: ईन्क्रिप्टेड नेटवर्क settings: shutdown: बन्द गर restart: फेरि शुरु गर्नु diff --git a/src/apps/toolbar/i18n/translations/nl.yml b/src/apps/toolbar/i18n/translations/nl.yml index f163d654..24cb2e74 100644 --- a/src/apps/toolbar/i18n/translations/nl.yml +++ b/src/apps/toolbar/i18n/translations/nl.yml @@ -14,6 +14,11 @@ network: more: Meer netwerkinstellingen hidden: Verborgen netwerk disconnect: Verbinding verbreken + connected: Verbonden met + saved: Opgeslagen netwerken + scanning: Scannen naar netwerken + available: Beschikbare netwerken + secured: Versleuteld netwerk settings: app_settings: App instellingen shutdown: Afsluiten diff --git a/src/apps/toolbar/i18n/translations/no.yml b/src/apps/toolbar/i18n/translations/no.yml index 8dca7131..a1ac1c35 100644 --- a/src/apps/toolbar/i18n/translations/no.yml +++ b/src/apps/toolbar/i18n/translations/no.yml @@ -14,6 +14,11 @@ network: more: Flere nettverksinnstillinger hidden: Skjult nettverk not_found: Ingen nettverk funnet + connected: Koblet til + saved: Lagrede nettverk + available: Tilgjengelige nettverk + scanning: Skanner etter nettverk + secured: Kryptert nettverk settings: restart: Omstart shutdown: Skru av diff --git a/src/apps/toolbar/i18n/translations/pa.yml b/src/apps/toolbar/i18n/translations/pa.yml index b7be74dc..a6038856 100644 --- a/src/apps/toolbar/i18n/translations/pa.yml +++ b/src/apps/toolbar/i18n/translations/pa.yml @@ -14,6 +14,11 @@ network: disconnect: ਡਿਸਕਨੈਕਟ connect: ਕਨੈਕਟ ਕਰੋ more: ਹੋਰ ਨੈੱਟਵਰਕ ਸੈਟਿੰਗਾਂ + connected: ਨਾਲ ਜੁੜਿਆ ਹੋਇਆ ਹੈ + available: ਉਪਲਬਧ ਨੈੱਟਵਰਕ + saved: ਸੁਰੱਖਿਅਤ ਕੀਤੇ ਨੈੱਟਵਰਕ + secured: ਐਨਕ੍ਰਿਪਟਡ ਨੈੱਟਵਰਕ + scanning: ਨੈੱਟਵਰਕਾਂ ਲਈ ਸਕੈਨ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ settings: shutdown: ਸ਼ਟ ਡਾਉਨ title: ਸੈਟਿੰਗਜ਼ diff --git a/src/apps/toolbar/i18n/translations/pl.yml b/src/apps/toolbar/i18n/translations/pl.yml index b8d956af..0ce9e5a8 100644 --- a/src/apps/toolbar/i18n/translations/pl.yml +++ b/src/apps/toolbar/i18n/translations/pl.yml @@ -14,6 +14,11 @@ network: not_found: Nie znaleziono sieci more: Więcej ustawień sieciowych hidden: Ukryta sieć + connected: Połączony z + saved: Zapisane sieci + scanning: Skanowanie w poszukiwaniu sieci + available: Dostępne sieci + secured: Szyfrowana sieć settings: app_settings: Ustawienia aplikacji log_out: Wyloguj diff --git a/src/apps/toolbar/i18n/translations/ps.yml b/src/apps/toolbar/i18n/translations/ps.yml index 84c81b1e..f2cd3e92 100644 --- a/src/apps/toolbar/i18n/translations/ps.yml +++ b/src/apps/toolbar/i18n/translations/ps.yml @@ -14,6 +14,11 @@ network: hidden: پټه شبکه more: نور د شبکې تنظیمات disconnect: منحل + saved: خوندي شوي شبکې + scanning: د شبکو لپاره سکین کول + available: شته شبکې + secured: کوډ شوی شبکه + connected: سره نښلول شوی settings: restart: بیا روښانه کول shutdown: ‍‍‍بندول diff --git a/src/apps/toolbar/i18n/translations/pt.yml b/src/apps/toolbar/i18n/translations/pt.yml index d5f1f5ce..f6a39f1a 100644 --- a/src/apps/toolbar/i18n/translations/pt.yml +++ b/src/apps/toolbar/i18n/translations/pt.yml @@ -14,6 +14,11 @@ network: password: Senha disconnect: desconectar connect: Conectar + connected: Conectado a + available: Redes disponíveis + scanning: Procurando redes + saved: Redes salvas + secured: Rede criptografada settings: title: Configurações app_settings: Configurações do aplicativo diff --git a/src/apps/toolbar/i18n/translations/ro.yml b/src/apps/toolbar/i18n/translations/ro.yml index 6ecfa78b..1e82b818 100644 --- a/src/apps/toolbar/i18n/translations/ro.yml +++ b/src/apps/toolbar/i18n/translations/ro.yml @@ -14,6 +14,11 @@ network: disconnect: Deconectat more: Mai multe setări de rețea hidden: Rețea ascunsă + connected: Conectat la + scanning: Scanare pentru rețele + saved: Rețele salvate + secured: Rețea criptată + available: Rețele disponibile settings: shutdown: Închide sleep: Dormi diff --git a/src/apps/toolbar/i18n/translations/ru.yml b/src/apps/toolbar/i18n/translations/ru.yml index 9a0c8774..7f2ad1dc 100644 --- a/src/apps/toolbar/i18n/translations/ru.yml +++ b/src/apps/toolbar/i18n/translations/ru.yml @@ -14,6 +14,11 @@ network: password: Пароль disconnect: Отключить connect: Подключить + saved: Сохраненные сети + available: Доступные сети + connected: Подключено к + secured: Зашифрованная сеть + scanning: Сканирование сетей settings: title: Настройки app_settings: Настройки приложения diff --git a/src/apps/toolbar/i18n/translations/si.yml b/src/apps/toolbar/i18n/translations/si.yml index e3c21ae7..c61bc0f6 100644 --- a/src/apps/toolbar/i18n/translations/si.yml +++ b/src/apps/toolbar/i18n/translations/si.yml @@ -14,6 +14,11 @@ network: disconnect: විසන්ධි කරන්න connect: සම්බන්ධ කරන්න hidden: සැඟවුණු ජාලය + scanning: ජාල සඳහා ස්කෑන් කිරීම + saved: සුරැකි ජාල + secured: සංකේතාත්මක ජාලය + connected: වෙත සම්බන්ධ කර ඇත + available: පවතින ජාල settings: restart: යළි අරඹන්න shutdown: වසා දමන්න diff --git a/src/apps/toolbar/i18n/translations/sk.yml b/src/apps/toolbar/i18n/translations/sk.yml index 12f75776..f4447a05 100644 --- a/src/apps/toolbar/i18n/translations/sk.yml +++ b/src/apps/toolbar/i18n/translations/sk.yml @@ -14,6 +14,11 @@ network: connect: Pripojiť more: Viac nastavení siete not_found: Nenašli sa žiadne siete + available: Dostupné siete + connected: Pripojené k + saved: Uložené siete + scanning: Skenovanie sietí + secured: Šifrovaná sieť settings: log_out: Odhlásiť sa restart: Reštart diff --git a/src/apps/toolbar/i18n/translations/so.yml b/src/apps/toolbar/i18n/translations/so.yml index 326b91f3..75b9eb3b 100644 --- a/src/apps/toolbar/i18n/translations/so.yml +++ b/src/apps/toolbar/i18n/translations/so.yml @@ -14,6 +14,11 @@ network: more: Meelo badan oo shabakad ah disconnect: Ka furid connect: Ku xirid + scanning: Sawirka shabakadaha + saved: Shabakado la keydiyay + secured: Shabakadda qarsoon + connected: Ku xidhan + available: Shabakado la heli karo settings: shutdown: Bakhtii log_out: Ka bax diff --git a/src/apps/toolbar/i18n/translations/sr.yml b/src/apps/toolbar/i18n/translations/sr.yml index d9c69400..ec429d8a 100644 --- a/src/apps/toolbar/i18n/translations/sr.yml +++ b/src/apps/toolbar/i18n/translations/sr.yml @@ -14,6 +14,11 @@ network: more: Више мрежних поставки connect: Повезати disconnect: Прекинути везу + connected: Повезано са + available: Доступне мреже + saved: Сачуване мреже + secured: Шифрована мрежа + scanning: Скенирање за мреже settings: restart: Поново покренути shutdown: Искључити diff --git a/src/apps/toolbar/i18n/translations/sv.yml b/src/apps/toolbar/i18n/translations/sv.yml index 1f2733f6..f1b508ca 100644 --- a/src/apps/toolbar/i18n/translations/sv.yml +++ b/src/apps/toolbar/i18n/translations/sv.yml @@ -14,6 +14,11 @@ network: disconnect: Koppla ifrån connect: Ansluta hidden: Doldnätverk + connected: Ansluten till + scanning: Söker efter nätverk + secured: Krypterat nätverk + available: Tillgängliga nätverk + saved: Sparade nätverk settings: shutdown: Stänga av restart: Omstart diff --git a/src/apps/toolbar/i18n/translations/sw.yml b/src/apps/toolbar/i18n/translations/sw.yml index b18a09d8..34b5804a 100644 --- a/src/apps/toolbar/i18n/translations/sw.yml +++ b/src/apps/toolbar/i18n/translations/sw.yml @@ -14,6 +14,11 @@ network: disconnect: Kukatwa connect: Unganisha hidden: Mtandao uliofichwa + connected: Imeunganishwa kwa + saved: Mitandao iliyohifadhiwa + secured: Mtandao uliosimbwa kwa njia fiche + available: Mitandao inayopatikana + scanning: Inatafuta mitandao settings: restart: Anzisha tena title: Mipangilio diff --git a/src/apps/toolbar/i18n/translations/ta.yml b/src/apps/toolbar/i18n/translations/ta.yml index 2fcc5551..b1ecf75d 100644 --- a/src/apps/toolbar/i18n/translations/ta.yml +++ b/src/apps/toolbar/i18n/translations/ta.yml @@ -14,6 +14,11 @@ network: not_found: நெட்வொர்க்குகள் எதுவும் கிடைக்கவில்லை hidden: மறைக்கப்பட்ட பிணையம் disconnect: துண்டிக்கவும் + connected: இணைக்கப்பட்டது + scanning: நெட்வொர்க்குகளை ஸ்கேன் செய்கிறது + saved: சேமிக்கப்பட்ட நெட்வொர்க்குகள் + secured: மறைகுறியாக்கப்பட்ட நெட்வொர்க் + available: கிடைக்கும் நெட்வொர்க்குகள் settings: title: அமைப்புகள் sleep: தூங்கு diff --git a/src/apps/toolbar/i18n/translations/te.yml b/src/apps/toolbar/i18n/translations/te.yml index 52ad358b..5d817791 100644 --- a/src/apps/toolbar/i18n/translations/te.yml +++ b/src/apps/toolbar/i18n/translations/te.yml @@ -14,6 +14,11 @@ network: connect: కనెక్ట్ hidden: దాచిన నెట్‌వర్క్ more: మరిన్ని నెట్‌వర్క్ సెట్టింగులు + connected: కనెక్ట్ చేయబడింది + available: అందుబాటులో ఉన్న నెట్‌వర్క్‌లు + scanning: నెట్‌వర్క్‌ల కోసం స్కాన్ చేస్తోంది + saved: సేవ్ చేసిన నెట్‌వర్క్‌లు + secured: ఎన్‌క్రిప్టెడ్ నెట్‌వర్క్ settings: log_out: లాగ్ అవుట్ app_settings: అనువర్తన సెట్టింగులు diff --git a/src/apps/toolbar/i18n/translations/tg.yml b/src/apps/toolbar/i18n/translations/tg.yml index a242521e..c11e7461 100644 --- a/src/apps/toolbar/i18n/translations/tg.yml +++ b/src/apps/toolbar/i18n/translations/tg.yml @@ -14,6 +14,11 @@ network: more: Танзимоти шабака disconnect: Ьудо кардан connect: Пайваст кардан + connected: Ба + scanning: Сканкунии шабакаҳо + secured: Шабакаи рамзгузорӣ + saved: Шабакаҳои захирашуда + available: Шабакаҳои дастрас settings: restart: Оғози дубора shutdown: Пӯшида шудан diff --git a/src/apps/toolbar/i18n/translations/th.yml b/src/apps/toolbar/i18n/translations/th.yml index bd9e5a8a..f5c5033a 100644 --- a/src/apps/toolbar/i18n/translations/th.yml +++ b/src/apps/toolbar/i18n/translations/th.yml @@ -14,6 +14,11 @@ network: not_found: ไม่พบเครือข่าย disconnect: ตัดการเชื่อมต่อ hidden: เครือข่ายที่ซ่อน + available: เครือข่ายที่มีอยู่ + secured: เครือข่ายที่เข้ารหัส + scanning: กำลังสแกนหาเครือข่าย + saved: เครือข่ายที่บันทึกไว้ + connected: เชื่อมต่อกับ settings: restart: เริ่มต้นใหม่ app_settings: การตั้งค่าแอป diff --git a/src/apps/toolbar/i18n/translations/tl.yml b/src/apps/toolbar/i18n/translations/tl.yml index 29916211..169d6ca1 100644 --- a/src/apps/toolbar/i18n/translations/tl.yml +++ b/src/apps/toolbar/i18n/translations/tl.yml @@ -14,6 +14,11 @@ network: disconnect: Idiskonekta more: Higit pang mga setting ng network connect: Kumonekta + connected: Nakakonekta sa + scanning: Pag-scan para sa mga network + available: Magagamit na mga network + saved: Mga naka-save na network + secured: Naka-encrypt na network settings: app_settings: Mga Setting ng App shutdown: Shutdown diff --git a/src/apps/toolbar/i18n/translations/tr.yml b/src/apps/toolbar/i18n/translations/tr.yml index 23ded3d5..394f0b80 100644 --- a/src/apps/toolbar/i18n/translations/tr.yml +++ b/src/apps/toolbar/i18n/translations/tr.yml @@ -14,6 +14,11 @@ network: hidden: Gizli Ağ not_found: Ağ bulunamadı disconnect: Bağlantıyı Kes + connected: 'Şuraya bağlanıldı:' + saved: Kayıtlı ağlar + secured: Şifreli ağ + available: Mevcut ağlar + scanning: Ağlar taranıyor settings: shutdown: Kapat app_settings: Uygulama Ayarları diff --git a/src/apps/toolbar/i18n/translations/uk.yml b/src/apps/toolbar/i18n/translations/uk.yml index 37ea9c81..f3688af5 100644 --- a/src/apps/toolbar/i18n/translations/uk.yml +++ b/src/apps/toolbar/i18n/translations/uk.yml @@ -14,6 +14,11 @@ network: more: Більше налаштувань мережі connect: З'єднувати not_found: Жодних мереж не знайдено + connected: Підключено до + available: Доступні мережі + scanning: Сканування мереж + saved: Збережені мережі + secured: Зашифрована мережа settings: log_out: Вийти shutdown: Закрити diff --git a/src/apps/toolbar/i18n/translations/ur.yml b/src/apps/toolbar/i18n/translations/ur.yml index 965e510a..bf06e59c 100644 --- a/src/apps/toolbar/i18n/translations/ur.yml +++ b/src/apps/toolbar/i18n/translations/ur.yml @@ -14,6 +14,11 @@ network: not_found: کوئی نیٹ ورک نہیں ملا connect: کنیکٹ more: نیٹورک کی مزید معلومات + connected: سے جڑا ہوا ہے۔ + secured: خفیہ کردہ نیٹ ورک + available: دستیاب نیٹ ورکس + saved: محفوظ کردہ نیٹ ورکس + scanning: نیٹ ورکس کے لیے سکیننگ settings: restart: ریسٹارٹ log_out: لاگ آوٹ diff --git a/src/apps/toolbar/i18n/translations/uz.yml b/src/apps/toolbar/i18n/translations/uz.yml index 5536aae1..bf330244 100644 --- a/src/apps/toolbar/i18n/translations/uz.yml +++ b/src/apps/toolbar/i18n/translations/uz.yml @@ -14,6 +14,11 @@ network: disconnect: Ajratmoq more: Ko'proq tarmoq sozlamalari not_found: Tarmoq topilmadi + available: Mavjud tarmoqlar + saved: Saqlangan tarmoqlar + connected: ga ulangan + secured: Shifrlangan tarmoq + scanning: Tarmoqlarni skanerlash settings: restart: Qayta ishga tushirish shutdown: O'chirish; yopish diff --git a/src/apps/toolbar/i18n/translations/vi.yml b/src/apps/toolbar/i18n/translations/vi.yml index abe5b85a..e1faad67 100644 --- a/src/apps/toolbar/i18n/translations/vi.yml +++ b/src/apps/toolbar/i18n/translations/vi.yml @@ -14,6 +14,11 @@ network: disconnect: Ngắt kết nối connect: Kết nối more: Nhiều cài đặt mạng hơn + connected: Đã kết nối với + saved: Mạng đã lưu + available: Mạng có sẵn + secured: Mạng được mã hóa + scanning: Đang quét mạng settings: sleep: Ngủ log_out: Đăng xuất diff --git a/src/apps/toolbar/i18n/translations/yo.yml b/src/apps/toolbar/i18n/translations/yo.yml index 805439e0..d187e41b 100644 --- a/src/apps/toolbar/i18n/translations/yo.yml +++ b/src/apps/toolbar/i18n/translations/yo.yml @@ -14,6 +14,11 @@ network: hidden: Nẹtiwọki ti o farapamọ connect: Sopọ more: Awọn eto nẹtiwọọki diẹ sii + saved: Awọn nẹtiwọki ti a fipamọ + secured: Nẹtiwọọki ti paroko + connected: Ti sopọ si + scanning: Ṣiṣayẹwo fun awọn nẹtiwọki + available: Awọn nẹtiwọki ti o wa settings: shutdown: Paade title: Ètò diff --git a/src/apps/toolbar/i18n/translations/zh.yml b/src/apps/toolbar/i18n/translations/zh.yml index fd220210..1df0d028 100644 --- a/src/apps/toolbar/i18n/translations/zh.yml +++ b/src/apps/toolbar/i18n/translations/zh.yml @@ -14,6 +14,11 @@ network: password: 密码 disconnect: 断开连接 connect: 连接 + available: 可用网络 + scanning: 扫描网络 + connected: 连接到 + saved: 已保存的网络 + secured: 加密网络 settings: title: 设置 app_settings: 应用设置 diff --git a/src/apps/toolbar/i18n/translations/zu.yml b/src/apps/toolbar/i18n/translations/zu.yml index 4439a2dc..0dbf1159 100644 --- a/src/apps/toolbar/i18n/translations/zu.yml +++ b/src/apps/toolbar/i18n/translations/zu.yml @@ -14,6 +14,11 @@ network: more: Izilungiselelo eziningi zenethiwekhi not_found: Awekho amanethiwekhi atholakele disconnect: Thukulula + scanning: Iskenela amanethiwekhi + secured: Inethiwekhi ebethelwe + connected: Kuxhunywe ku + available: Amanethiwekhi atholakalayo + saved: Amanethiwekhi alondoloziwe settings: shutdown: Vala shaqa log_out: Phuma diff --git a/src/apps/toolbar/modules/network/domain.ts b/src/apps/toolbar/modules/network/domain.ts index 7a52c559..0b107294 100644 --- a/src/apps/toolbar/modules/network/domain.ts +++ b/src/apps/toolbar/modules/network/domain.ts @@ -1,16 +1,18 @@ -export interface WlanBssEntry { - ssid: string | null; - bssid: string; - channel_frequency: number; - signal: number; - connected: boolean; - connected_channel: boolean; -} - -export interface WlanProfile { - profileName: string; - ssid: string; - authentication: string; - encryption: string; - password: string; -} +export interface WlanBssEntry { + ssid: string | null; + bssid: string; + channelFrequency: number; + signal: number; + connected: boolean; + connectedChannel: boolean; + secured: boolean; + known: boolean; +} + +export interface WlanProfile { + profileName: string; + ssid: string; + authentication: string; + encryption: string; + password: string; +} diff --git a/src/apps/toolbar/modules/network/infra/WlanSelector.tsx b/src/apps/toolbar/modules/network/infra/WlanSelector.tsx index f7c3470f..6076be39 100644 --- a/src/apps/toolbar/modules/network/infra/WlanSelector.tsx +++ b/src/apps/toolbar/modules/network/infra/WlanSelector.tsx @@ -1,5 +1,5 @@ import { invoke } from '@tauri-apps/api/core'; -import { Popover } from 'antd'; +import { Button, Popover, Tooltip } from 'antd'; import { PropsWithChildren, useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { useSelector } from 'react-redux'; @@ -8,6 +8,9 @@ import { SeelenCommand, useWindowFocusChange } from 'seelen-core'; import { BackgroundByLayersV2 } from '../../../../seelenweg/components/BackgroundByLayers/infra'; import { Selectors } from '../../shared/store/app'; +import { Icon } from 'src/apps/shared/components/Icon'; + +import { WlanBssEntry } from '../domain'; import { WlanSelectorEntry } from './WlanSelectorEntry'; @@ -15,6 +18,7 @@ function WlanSelector({ open }: { open: boolean }) { const [selected, setSelected] = useState(null); const entries = useSelector(Selectors.wlanBssEntries); + const { t } = useTranslation(); useEffect(() => { @@ -23,37 +27,103 @@ function WlanSelector({ open }: { open: boolean }) { } }, [open]); - let ssids = new Set(); - let filtered = entries - .toSorted((a, b) => b.signal - a.signal) - .filter((entry) => { - let ssid = entry.ssid || '__HIDDEN_SSID__'; - if (ssids.has(ssid)) { - return false; - } - ssids.add(ssid); - return true; - }); + let hidden = entries.filter((e) => !e.ssid).toSorted((a, b) => b.signal - a.signal); + let grouped = entries.reduce((groups, entry) => { + if (!entry.ssid) { + return groups; + } + if (!groups[entry.ssid]) { + groups[entry.ssid] = [entry]; + return groups; + } + groups[entry.ssid]!.push(entry); + groups[entry.ssid]!.sort((e1, e2) => e2.signal - e1.signal); + return groups; + }, {} as Record); + + let sorted = Object.values(grouped).toSorted((a, b) => { + let signalA = Math.max(...a.map((e) => e.signal)); + let signalB = Math.max(...b.map((e) => e.signal)); + return signalB - signalA; + }); + + let connected = sorted.find((group) => group.some((e) => e.connected)); + let known = sorted.filter( + (group) => group.every((e) => !e.connected) && group.some((e) => e.known), + ); + let unknown = sorted.filter( + (group) => group.every((e) => !e.connected) && group.every((e) => !e.known), + ); return (
+ + {connected && ( + <> +
{t('network.connected')}
+
+ setSelected(connected![0].ssid)} + /> +
+ + )} + + {known.length > 0 && ( + <> +
{t('network.saved')}
+
+ {known.map((group) => { + let ssid = group[0].ssid!; + return ( + setSelected(ssid)} + /> + ); + })} +
+ + )} + +
+ {t('network.available')} + + + +
- {filtered.length === 0 && ( + {unknown.length === 0 && (
{t('network.not_found')}
)} - {filtered.map((entry) => { - let ssid = entry.ssid || '__HIDDEN_SSID__'; + {unknown.map((group) => { + let ssid = group[0].ssid!; return ( setSelected(ssid)} /> ); })} + {hidden.length > 0 && ( + setSelected('__HIDDEN_SSID__')} + /> + )}
+
invoke(SeelenCommand.OpenFile, { path: 'ms-settings:network' })}> {t('network.more')} @@ -95,6 +165,7 @@ export function WithWlanSelector({ children }: PropsWithChildren) { onOpenChange={setOpenPreview} arrow={false} content={} + destroyTooltipOnHide > {children} diff --git a/src/apps/toolbar/modules/network/infra/WlanSelectorEntry.tsx b/src/apps/toolbar/modules/network/infra/WlanSelectorEntry.tsx index 6b130bca..9b4398d0 100644 --- a/src/apps/toolbar/modules/network/infra/WlanSelectorEntry.tsx +++ b/src/apps/toolbar/modules/network/infra/WlanSelectorEntry.tsx @@ -1,5 +1,5 @@ import { invoke } from '@tauri-apps/api/core'; -import { Button, Input } from 'antd'; +import { Button, Input, Tooltip } from 'antd'; import { useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { SeelenCommand } from 'seelen-core'; @@ -10,11 +10,13 @@ import { Icon } from '../../../../shared/components/Icon'; import { cx } from '../../../../shared/styles'; export function WlanSelectorEntry(props: { - entry: WlanBssEntry; + group: [WlanBssEntry, ...WlanBssEntry[]]; selected: boolean; - onClick: () => void; + onClick?: () => void; }) { - let { entry, selected, onClick } = props; + let { group, selected, onClick } = props; + let entry = group[0]; + let isHiddenGroup = !entry.ssid; let [loading, setLoading] = useState(false); let [showFields, setShowFields] = useState(false); @@ -26,16 +28,18 @@ export function WlanSelectorEntry(props: { const { t } = useTranslation(); useEffect(() => { - if (!selected) { - setShowFields(false); - setShowErrors(false); - setSsid(entry.ssid || ''); - setPassword(''); - } + setShowFields(selected && !entry.known && (!entry.ssid || entry.secured)); + setSsid(entry.ssid || ''); + setPassword(''); + setShowErrors(false); }, [selected]); function onConnection() { - setLoading(true); + function onfulfilled(success: boolean) { + setLoading(false); + setShowFields(!success); + setShowErrors(!success); + } function onrejected(error: any) { console.error(error); @@ -43,23 +47,13 @@ export function WlanSelectorEntry(props: { setShowErrors(true); } + setLoading(true); + if (entry.connected) { invoke(SeelenCommand.WlanDisconnect).then(() => setLoading(false), onrejected); return; } - if (!entry.ssid && !showFields) { - setShowFields(true); - setLoading(false); - return; - } - - function onfulfilled(success: boolean) { - setLoading(false); - setShowFields(!success); - setShowErrors(!success); - } - if (showFields) { invoke('wlan_connect', { ssid, password, hidden: !entry.ssid }).then( onfulfilled, @@ -95,6 +89,14 @@ export function WlanSelectorEntry(props: { signalIcon = 'GrWifiLow'; } + let frequencies: string[] = []; + if (group.some((e) => e.channelFrequency < 5_000_000)) { + frequencies.push('2.4G'); + } + if (group.some((e) => e.channelFrequency > 5_000_000)) { + frequencies.push('5G'); + } + return (
- {entry.ssid || t('network.hidden')} + {entry.ssid || `${t('network.hidden')} (${group.length})`} + {!isHiddenGroup &&
{frequencies.join('/')}
} + {!isHiddenGroup && entry.secured && ( + + + + )}
{showFields && (
@@ -133,7 +141,12 @@ export function WlanSelectorEntry(props: { )} {selected && (
-
diff --git a/src/background/modules/network/application/scanner.rs b/src/background/modules/network/application/scanner.rs index e120ce0d..850720d2 100644 --- a/src/background/modules/network/application/scanner.rs +++ b/src/background/modules/network/application/scanner.rs @@ -1,257 +1,348 @@ -use std::{ - sync::atomic::{AtomicBool, Ordering}, - time::Duration, -}; - -use itertools::Itertools; -use windows::{ - core::GUID, - Win32::{ - Foundation::HANDLE, - NetworkManagement::WiFi::{ - dot11_BSS_type_any, wlan_interface_state_connected, - wlan_intf_opcode_current_connection, WlanCloseHandle, WlanEnumInterfaces, - WlanGetNetworkBssList, WlanOpenHandle, WlanQueryInterface, WlanScan, - WLAN_API_VERSION_2_0, WLAN_BSS_ENTRY, WLAN_BSS_LIST, WLAN_CONNECTION_ATTRIBUTES, - WLAN_INTERFACE_INFO_LIST, - }, - }, -}; - -use crate::{error_handler::Result, modules::network::domain::WlanBssEntry}; - -use super::NetworkManager; - -impl From<&WLAN_BSS_ENTRY> for WlanBssEntry { - fn from(entry: &WLAN_BSS_ENTRY) -> Self { - let ssid = String::from_utf8_lossy(&entry.dot11Ssid.ucSSID) - .replace("\0", "") - .to_string(); - - let ssid = if ssid.is_empty() { None } else { Some(ssid) }; - - let bssid = entry - .dot11Bssid - .iter() - .map(|b| format!("{:02x}", b)) - .join(":"); - - Self { - ssid, - bssid, - channel_frequency: entry.ulChCenterFrequency, - signal: entry.uLinkQuality, - connected: false, - connected_channel: false, - } - } -} - -static SCANNING: AtomicBool = AtomicBool::new(false); - -impl NetworkManager { - fn open_wlan() -> Result { - let mut client_handle = HANDLE::default(); - let mut negotiated_version = 0; - - let result = unsafe { - WlanOpenHandle( - WLAN_API_VERSION_2_0, - None, - &mut negotiated_version, - &mut client_handle, - ) - }; - - if result != 0 { - return Err(format!("Failed to open Wlan, error code: {}", result).into()); - } - - Ok(client_handle) - } - - fn get_connected_wlan<'a>( - handle: HANDLE, - guid: &GUID, - ) -> Option<&'a WLAN_CONNECTION_ATTRIBUTES> { - let mut connection_ptr = std::ptr::null_mut::(); - let mut data_size = 0; - unsafe { - WlanQueryInterface( - handle, - guid, - wlan_intf_opcode_current_connection, - None, - &mut data_size, - &mut connection_ptr as *mut _ as _, - None, - ); - - if connection_ptr.is_null() { - None - } else { - Some(&*connection_ptr) - } - } - } - - pub fn is_connected_to(ssid: &str) -> Result { - let client_handle = Self::open_wlan()?; - unsafe { - let mut interface_list_ptr: *mut WLAN_INTERFACE_INFO_LIST = std::ptr::null_mut(); - let result = WlanEnumInterfaces(client_handle, None, &mut interface_list_ptr); - - if result != 0 || interface_list_ptr.is_null() { - return Err(format!("Failed to get interface list, error code: {}", result).into()); - } - - let interface_list = &*interface_list_ptr; - let interfaces = std::slice::from_raw_parts( - interface_list.InterfaceInfo.as_ptr(), - interface_list.dwNumberOfItems as usize, - ); - - for interface in interfaces { - let connection = Self::get_connected_wlan(client_handle, &interface.InterfaceGuid); - - if let Some(connection) = connection { - let connected_ssid = String::from_utf8_lossy( - &connection.wlanAssociationAttributes.dot11Ssid.ucSSID, - ) - .replace("\0", "") - .to_string(); - - if connected_ssid == ssid { - return Ok(connection.isState.0 & wlan_interface_state_connected.0 - == connection.isState.0); - } - } - } - - WlanCloseHandle(client_handle, None); - } - - Ok(false) - } - - pub fn scan_networks() -> Result> { - let client_handle = Self::open_wlan()?; - let mut wlan_entries = Vec::new(); - - unsafe { - let mut interface_list_ptr: *mut WLAN_INTERFACE_INFO_LIST = std::ptr::null_mut(); - let result = WlanEnumInterfaces(client_handle, None, &mut interface_list_ptr); - - if result != 0 || interface_list_ptr.is_null() { - return Err(format!("Failed to get interface list, error code: {}", result).into()); - } - - let interface_list = &*interface_list_ptr; - let interfaces = std::slice::from_raw_parts( - interface_list.InterfaceInfo.as_ptr(), - interface_list.dwNumberOfItems as usize, - ); - - for interface in interfaces { - let interface_guid = interface.InterfaceGuid; - let result = WlanScan(client_handle, &interface_guid, None, None, None); - - if result != 0 { - return Err(format!("Failed to scan, error code: {}", result).into()); - } - - let mut bss_list_ptr = std::ptr::null_mut::(); - let result = WlanGetNetworkBssList( - client_handle, - &interface_guid, - None, - dot11_BSS_type_any, - true, - None, - &mut bss_list_ptr, - ); - - if result != 0 || bss_list_ptr.is_null() { - return Err(format!("Failed to get bss list, error code: {}", result).into()); - } - - let bss_list = &*bss_list_ptr; - if bss_list.dwNumberOfItems == 0 { - continue; - } - - let connection = Self::get_connected_wlan(client_handle, &interface_guid); - let is_connected = match connection { - Some(connection) => { - connection.isState.0 & wlan_interface_state_connected.0 - == connection.isState.0 - } - None => false, - }; - - let entries = std::slice::from_raw_parts( - bss_list.wlanBssEntries.as_ptr(), - bss_list.dwNumberOfItems as usize, - ); - - for entry in entries { - let mut wrapped_entry = WlanBssEntry::from(entry); - - if let Some(connection) = connection { - if connection.wlanAssociationAttributes.dot11Ssid.ucSSID - == entry.dot11Ssid.ucSSID - { - wrapped_entry.connected = is_connected; - } - - if connection.wlanAssociationAttributes.dot11Bssid == entry.dot11Bssid { - wrapped_entry.connected_channel = is_connected; - } - } - - wlan_entries.push(wrapped_entry); - } - } - - WlanCloseHandle(client_handle, None); - } - - Ok(wlan_entries) - } - - pub fn start_scanning(cb: F) - where - F: Fn(Vec) + Send + 'static, - { - SCANNING.store(true, Ordering::SeqCst); - std::thread::spawn(move || { - let mut attempts = 0; - loop { - if !SCANNING.load(Ordering::SeqCst) { - break; - } - - match Self::scan_networks() { - Ok(entries) => { - // sometimes we get an empty list, because the wlan list is updating after the scan - // so we will wait ~10 seconds before show empty list - if !entries.is_empty() || attempts > 3 { - cb(entries); - } else { - attempts += 1; - } - } - Err(err) => { - log::error!("{}", err); - } - } - - std::thread::sleep(Duration::from_secs(3)); - } - }); - } - - pub fn stop_scanning() { - SCANNING.store(false, Ordering::SeqCst); - } -} +use std::{ + sync::atomic::{AtomicBool, Ordering}, + time::Duration, +}; + +use itertools::Itertools; +use windows::{ + core::GUID, + Win32::{ + Foundation::HANDLE, + NetworkManagement::WiFi::{ + dot11_BSS_type_any, wlan_interface_state_connected, + wlan_intf_opcode_current_connection, WlanCloseHandle, WlanEnumInterfaces, + WlanGetAvailableNetworkList2, WlanGetNetworkBssList, WlanGetProfile, + WlanGetProfileList, WlanOpenHandle, WlanQueryInterface, WlanScan, + DOT11_CAPABILITY_INFO_PRIVACY, WLAN_API_VERSION_2_0, + WLAN_AVAILABLE_NETWORK_INCLUDE_ALL_ADHOC_PROFILES, + WLAN_AVAILABLE_NETWORK_INCLUDE_ALL_MANUAL_HIDDEN_PROFILES, + WLAN_AVAILABLE_NETWORK_LIST_V2, WLAN_AVAILABLE_NETWORK_V2, WLAN_BSS_ENTRY, + WLAN_BSS_LIST, WLAN_CONNECTION_ATTRIBUTES, WLAN_INTERFACE_INFO_LIST, + WLAN_PROFILE_INFO_LIST, + }, + }, +}; +use windows_core::{PCWSTR, PWSTR}; + +use crate::{error_handler::Result, modules::network::domain::WlanBssEntry}; + +use super::NetworkManager; + +impl From<&WLAN_BSS_ENTRY> for WlanBssEntry { + fn from(entry: &WLAN_BSS_ENTRY) -> Self { + let ssid = String::from_utf8_lossy(&entry.dot11Ssid.ucSSID) + .replace("\0", "") + .to_string(); + + let ssid = if ssid.is_empty() { None } else { Some(ssid) }; + + let bssid = entry + .dot11Bssid + .iter() + .map(|b| format!("{:02x}", b)) + .join(":"); + + Self { + ssid, + bssid, + channel_frequency: entry.ulChCenterFrequency, + signal: entry.uLinkQuality, + connected: false, + connected_channel: false, + secured: entry.usCapabilityInformation as u32 & DOT11_CAPABILITY_INFO_PRIVACY + == DOT11_CAPABILITY_INFO_PRIVACY, + known: false, + } + } +} + +static SCANNING: AtomicBool = AtomicBool::new(false); + +impl NetworkManager { + fn open_wlan() -> Result { + let mut client_handle = HANDLE::default(); + let mut negotiated_version = 0; + + let result = unsafe { + WlanOpenHandle( + WLAN_API_VERSION_2_0, + None, + &mut negotiated_version, + &mut client_handle, + ) + }; + + if result != 0 { + return Err(format!("Failed to open Wlan, error code: {}", result).into()); + } + + Ok(client_handle) + } + + fn get_connected_wlan<'a>( + handle: HANDLE, + guid: &GUID, + ) -> Option<&'a WLAN_CONNECTION_ATTRIBUTES> { + let mut connection_ptr = std::ptr::null_mut::(); + let mut data_size = 0; + unsafe { + WlanQueryInterface( + handle, + guid, + wlan_intf_opcode_current_connection, + None, + &mut data_size, + &mut connection_ptr as *mut _ as _, + None, + ); + + if connection_ptr.is_null() { + None + } else { + Some(&*connection_ptr) + } + } + } + + pub fn is_connected_to(ssid: &str) -> Result { + let client_handle = Self::open_wlan()?; + unsafe { + let mut interface_list_ptr: *mut WLAN_INTERFACE_INFO_LIST = std::ptr::null_mut(); + let result = WlanEnumInterfaces(client_handle, None, &mut interface_list_ptr); + + if result != 0 || interface_list_ptr.is_null() { + return Err(format!("Failed to get interface list, error code: {}", result).into()); + } + + let interface_list = &*interface_list_ptr; + let interfaces = std::slice::from_raw_parts( + interface_list.InterfaceInfo.as_ptr(), + interface_list.dwNumberOfItems as usize, + ); + + for interface in interfaces { + let connection = Self::get_connected_wlan(client_handle, &interface.InterfaceGuid); + + if let Some(connection) = connection { + let connected_ssid = String::from_utf8_lossy( + &connection.wlanAssociationAttributes.dot11Ssid.ucSSID, + ) + .replace("\0", "") + .to_string(); + + if connected_ssid == ssid { + return Ok(connection.isState.0 & wlan_interface_state_connected.0 + == connection.isState.0); + } + } + } + + WlanCloseHandle(client_handle, None); + } + + Ok(false) + } + + pub fn get_profiles(client_handle: HANDLE, interface_guid: &GUID) -> Result<()> { + unsafe { + let mut profile_list_ptr = std::ptr::null_mut::(); + let result = + WlanGetProfileList(client_handle, interface_guid, None, &mut profile_list_ptr); + if result != 0 || profile_list_ptr.is_null() { + return Err(format!("Failed to get profile list, error code: {}", result).into()); + } + + let profile_list = &*profile_list_ptr; + let entries = std::slice::from_raw_parts( + profile_list.ProfileInfo.as_ptr(), + profile_list.dwNumberOfItems as usize, + ); + + for entry in entries { + let profile_name = PCWSTR(entry.strProfileName.as_ptr()); + let mut profile_xml = PWSTR::null(); + let result = WlanGetProfile( + client_handle, + interface_guid, + profile_name, + None, + &mut profile_xml, + None, + None, + ); + + if result != 0 { + return Err(format!("Failed to get profile, error code: {}", result).into()); + } + + if !profile_xml.is_null() { + let profile: serde_json::Value = + quick_xml::de::from_str(&profile_xml.to_string()?)?; + println!("{:#?}", profile) + } + } + } + Ok(()) + } + + pub fn get_available_networks( + client_handle: HANDLE, + interface_guid: &GUID, + ) -> Result> { + unsafe { + let mut network_list_ptr = std::ptr::null_mut::(); + let result = WlanGetAvailableNetworkList2( + client_handle, + interface_guid, + WLAN_AVAILABLE_NETWORK_INCLUDE_ALL_ADHOC_PROFILES + & WLAN_AVAILABLE_NETWORK_INCLUDE_ALL_MANUAL_HIDDEN_PROFILES, + None, + &mut network_list_ptr, + ); + + if result != 0 || network_list_ptr.is_null() { + return Err(format!("Failed to get network list, error code: {}", result).into()); + } + + let network_list = &*network_list_ptr; + let entries = std::slice::from_raw_parts( + network_list.Network.as_ptr(), + network_list.dwNumberOfItems as usize, + ); + Ok(entries.to_vec()) + } + } + + pub fn scan_networks() -> Result> { + let client_handle = Self::open_wlan()?; + let mut wlan_entries = Vec::new(); + + unsafe { + let mut interface_list_ptr: *mut WLAN_INTERFACE_INFO_LIST = std::ptr::null_mut(); + let result = WlanEnumInterfaces(client_handle, None, &mut interface_list_ptr); + + if result != 0 || interface_list_ptr.is_null() { + return Err(format!("Failed to get interface list, error code: {}", result).into()); + } + + let interface_list = &*interface_list_ptr; + let interfaces = std::slice::from_raw_parts( + interface_list.InterfaceInfo.as_ptr(), + interface_list.dwNumberOfItems as usize, + ); + + for interface in interfaces { + let interface_guid = interface.InterfaceGuid; + + let available_networks = + Self::get_available_networks(client_handle, &interface_guid)?; + // let profiles = Self::get_profiles(client_handle, &interface_guid)?; + let result = WlanScan(client_handle, &interface_guid, None, None, None); + + if result != 0 { + return Err(format!("Failed to scan, error code: {}", result).into()); + } + + let mut bss_list_ptr = std::ptr::null_mut::(); + let result = WlanGetNetworkBssList( + client_handle, + &interface_guid, + None, + dot11_BSS_type_any, + true, + None, + &mut bss_list_ptr, + ); + + if result != 0 || bss_list_ptr.is_null() { + return Err(format!("Failed to get bss list, error code: {}", result).into()); + } + + let bss_list = &*bss_list_ptr; + if bss_list.dwNumberOfItems == 0 { + continue; + } + + let connection = Self::get_connected_wlan(client_handle, &interface_guid); + let is_connected = match connection { + Some(connection) => { + connection.isState.0 & wlan_interface_state_connected.0 + == connection.isState.0 + } + None => false, + }; + + let entries = std::slice::from_raw_parts( + bss_list.wlanBssEntries.as_ptr(), + bss_list.dwNumberOfItems as usize, + ); + + for entry in entries { + let mut wrapped_entry = WlanBssEntry::from(entry); + + if let Some(connection) = connection { + if connection.wlanAssociationAttributes.dot11Ssid.ucSSID + == entry.dot11Ssid.ucSSID + { + wrapped_entry.connected = is_connected; + } + + if connection.wlanAssociationAttributes.dot11Bssid == entry.dot11Bssid { + wrapped_entry.connected_channel = is_connected; + } + } + + if let Some(network) = available_networks + .iter() + .find(|n| n.dot11Ssid.ucSSID == entry.dot11Ssid.ucSSID) + { + let profile = PCWSTR::from_raw(network.strProfileName.as_ptr()); + wrapped_entry.known = !profile.is_null() && !profile.is_empty(); + } + + wlan_entries.push(wrapped_entry); + } + } + + WlanCloseHandle(client_handle, None); + } + + Ok(wlan_entries) + } + + pub fn start_scanning(cb: F) + where + F: Fn(Vec) + Send + 'static, + { + SCANNING.store(true, Ordering::SeqCst); + std::thread::spawn(move || { + let mut attempts = 0; + loop { + if !SCANNING.load(Ordering::SeqCst) { + break; + } + + match Self::scan_networks() { + Ok(entries) => { + // sometimes we get an empty list, because the wlan list is updating after the scan + // so we will wait ~10 seconds before show empty list + if !entries.is_empty() || attempts > 3 { + cb(entries); + } else { + attempts += 1; + } + } + Err(err) => { + log::error!("{}", err); + } + } + + std::thread::sleep(Duration::from_secs(3)); + } + }); + } + + pub fn stop_scanning() { + SCANNING.store(false, Ordering::SeqCst); + } +} diff --git a/src/background/modules/network/domain/mod.rs b/src/background/modules/network/domain/mod.rs index e95ef4e7..4afeb8a7 100644 --- a/src/background/modules/network/domain/mod.rs +++ b/src/background/modules/network/domain/mod.rs @@ -164,6 +164,10 @@ pub struct WlanBssEntry { pub bssid: String, pub channel_frequency: u32, pub signal: u32, + /// true if the network is a saved profile + pub known: bool, + /// true if the network is encrypted like WEP, WPA, or WPA2 + pub secured: bool, /// true if the interface is connected to this network pub connected: bool, /// true if the interface is connected to this network and is using this channel frequency diff --git a/src/background/modules/network/infrastructure.rs b/src/background/modules/network/infrastructure.rs index 1522e884..68f586e0 100644 --- a/src/background/modules/network/infrastructure.rs +++ b/src/background/modules/network/infrastructure.rs @@ -75,8 +75,12 @@ async fn try_connect_to_profile(ssid: &str) -> Result { if output.status.success() { // wait to ensure connection - sleep_millis(2000); - Ok(NetworkManager::is_connected_to(ssid)?) + let mut attempts = 0; + while !NetworkManager::is_connected_to(ssid)? && attempts < 10 { + attempts += 1; + sleep_millis(1000); + } + Ok(attempts < 10) } else { Err(output.into()) } diff --git a/static/themes/default/theme.toolbar.css b/static/themes/default/theme.toolbar.css index 23bca7ec..22c92907 100644 --- a/static/themes/default/theme.toolbar.css +++ b/static/themes/default/theme.toolbar.css @@ -171,10 +171,18 @@ padding: 0 40px; } +@keyframes rotate { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + .wlan-selector { margin: var(--popups-margin); width: 260px; - max-height: 50vh; box-shadow: 0 0 10px 10px #0001; display: flex; flex-direction: column; @@ -183,12 +191,27 @@ background-color: var(--color-gray-50); border-radius: 10px; } + + .wlan-selector-title { + font-size: 0.8rem; + color: var(--color-gray-600); + font-weight: 600; + padding: 8px 14px 0; + display: flex; + justify-content: space-between; + align-items: center + } + + .wlan-selector-refresh { + animation: rotate 1s linear infinite; + } } .wlan-selector-entries { padding: 8px; - flex: 1; overflow-y: auto; + border-bottom: 1px solid var(--color-gray-300); + max-height: 30vh; .wlan-selector-empty { font-style: italic; @@ -212,25 +235,33 @@ .wlan-entry-info { font-weight: 600; - gap: 10px; -} + gap: 8px; -.wlan-entry-info-ssid { - color: var(--color-gray-800); - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; + .wlan-entry-info-ssid { + flex: 1; + color: var(--color-gray-800); + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + } + + .wlan-entry-info-channel { + font-size: 0.5rem; + color: var(--color-gray-600); + border: 1px solid var(--color-gray-600); + border-radius: 4px; + padding: 2px 4px + } } .wlan-selector-footer { - border-top: solid 1px var(--color-gray-300); - padding: 8px 16px; + padding: 8px; font-weight: 600; font-size: 0.8rem; > span { padding: 2px 6px; - border-radius: 8px; + border-radius: 4px; &:hover { background-color: var(--color-gray-200);