diff --git a/.github/workflows/flutter_ci.yml b/.github/workflows/flutter_ci.yml new file mode 100644 index 000000000..c5029b8bf --- /dev/null +++ b/.github/workflows/flutter_ci.yml @@ -0,0 +1,40 @@ +name: Flutter CI + +on: + push: + branches: + - master + - dev + pull_request: + branches: + - master + - dev + +jobs: + build: + name: Build and Test + runs-on: ubuntu-latest + + steps: + - name: Check out code + uses: actions/checkout@v2 + + - name: Set up Flutter + uses: subosito/flutter-action@@v2 + with: + flutter-version: 3.13.6 + + - name: Install dependencies + run: flutter pub get + + - name: Run tests + run: flutter test + + - name: Build APK + run: flutter build apk + + - name: Archive and upload artifacts + uses: actions/upload-artifact@v2 + with: + name: build + path: build/app/outputs/flutter-apk/app-release.apk \ No newline at end of file diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml index 0152a8609..c2b0ccf31 100644 --- a/android/app/src/debug/AndroidManifest.xml +++ b/android/app/src/debug/AndroidManifest.xml @@ -1,5 +1,4 @@ -<manifest xmlns:android="http://schemas.android.com/apk/res/android" - package="com.cybearjinni.app"> +<manifest xmlns:android="http://schemas.android.com/apk/res/android"> <!-- Flutter needs it to communicate with the running application to allow setting breakpoints, to provide hot reload, etc. --> diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 56bb6cf1c..6e88767ca 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -1,6 +1,5 @@ <manifest xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools" - package="com.cybearjinni.app"> + xmlns:tools="http://schemas.android.com/tools"> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> diff --git a/android/app/src/profile/AndroidManifest.xml b/android/app/src/profile/AndroidManifest.xml index 0152a8609..c2b0ccf31 100644 --- a/android/app/src/profile/AndroidManifest.xml +++ b/android/app/src/profile/AndroidManifest.xml @@ -1,5 +1,4 @@ -<manifest xmlns:android="http://schemas.android.com/apk/res/android" - package="com.cybearjinni.app"> +<manifest xmlns:android="http://schemas.android.com/apk/res/android"> <!-- Flutter needs it to communicate with the running application to allow setting breakpoints, to provide hot reload, etc. --> diff --git a/assets/translations/af-ZA.json b/assets/translations/af-ZA.json index 643c79cb6..92f8201fa 100644 --- a/assets/translations/af-ZA.json +++ b/assets/translations/af-ZA.json @@ -1,112 +1,112 @@ { - "Create_new_account": "Skep nuwe rekening", - "Actions_History": "Aksies Geskiedenis", - "Empty_history": "Leë geskiedenis", - "History_Settings_Page": "Geskiedenis-instellingsbladsy", - "Lamps_Page": "Lampe Bladsy", - "Name:_": "Naam: {}", - "Room:_": "Kamer: {}", - "Lamps_Settings_Page": "Lampe-instellingsbladsy", - "Welcome_to_your_Smart_Home": "Welkom by jou slimhuis", - "Scene_Settings_Page": "Toneelinstellingsbladsy", - "Move_to_blinds_full_settings_page": "Skuif na blindings se volledige instellingsbladsy", - "Blinds_Page": "Blindings Bladsy", - "Down": "Af", - "Stop": "Stop", - "Up": "Op", - "Smart_Devices_Settings_Page": "Smart Devices -instellingsbladsy", - "Air_Conditioners": "Lugversorgers", - "Blinds": "Blindings", - "Medical_Device": "Mediese toestel", - "Medical_Devices": "Mediese toestelle", - "Smart_Phone": "Slimfoon", - "Smart_Phones": "Slimfone", - "Smart_Speakers": "Slim luidsprekers", - "Smart_Devices_page": "Smart Devices -bladsy", - "History": "Geskiedenis", - "Scene": "Toneel", - "Scenes": "Tonele", - "Lamps": "Lampe", - "Devices": "Toestelle", - "Email_is_required": "E -pos is vereis", - "Email_cannot_contain_spaces": "E -pos kan nie ruimtes bevat nie", - "Email_is_invalid": "E -pos is ongeldig", - "Email": "E -pos", - "Password_is_required": "Wagwoord word benodig", - "Password_cannot_contain_spaces": "Wagwoord kan nie spasies bevat nie", - "Password_must_be_bigger_than__characters": "Wagwoord moet groter wees as {} karakters", - "Password": "Wagwoord", - "Log_In": "Teken aan", - "Forgot_password": "Wagwoord vergeet", - "Forgot_password?": "Wagwoord vergeet?", - "title": "titel", - "number": "nommer", - "IP_is_required": "IP word benodig", - "IP_syntax_is_incorrect": "IP -sintaksis is verkeerd", - "Add_Smart_Device": "Voeg slimtoestel by", - "Cancel": "Kanselleer", - "Add": "Byvoeg", - "Light": "Lig", - "Device_ip:_": "Toestel IP: {}", - "New_devices": "Nuwe toestelle", - "Add_devices": "Voeg toestelle by", - "Device_type:_": "Toesteltipe: {}", - "Room_name_is_required": "Kamernaam word benodig", - "Room_name:": "Kamernaam:", - "Device_name_is_required": "Toestelnaam is nodig", - "Device_name:": "Toestel naam:", - "Update": "Opdateer", - "IP": "Ip", - "This_is_firebase": "Dit is Firebase", - "Device_with_ip:_": "Toestel met IP: {}", - "Update_WiFi_configuration": "Update wifi -konfigurasie", - "WiFi_name_is_required": "Wifi -naam is vereis", - "WiFi_Name": "Wifi naam", - "WiFi_password_is_required": "WiFi -wagwoord is nodig", - "WiFi_Password": "WiFi -wagwoord", - "Insert_WiFi_Credentials": "Voeg wifi -geloofsbriewe in", - "Conditioners": "Opknapper", - "Medical": "Medies", - "Phones": "Telefone", - "Speakers": "Luidsprekers", - "Send": "Stuur", - "All_Devices": "Alle toestelle", - "Summary": "Opsomming", - "Switches": "Skakelaars", - "Boilers": "Kookpot", - "Lights": "Ligte", - "RGBw_Lights": "RGBW ligte", - "_Switches": "{} Skakelaars", - "_SmartTvs": "{} Slim TV's", - "_RGBW_Lights": "{} RGBW ligte", - "_Lights": "{} Ligte", - "_Boilers": "{} Kookpot", - "_Blinds": "{}Blindings", - "Rooms": "Kamers", - "_device": "{} toestel", - "_devices": "{} toestelle", - "_SmartPlugs": "{} slimProppe", - "On": "Op", - "Off": "Af", - "Color": "Kleur", - "White": "Wit", - "Area": "area", - "Areas": "Gebiede", - "Automations": "Outomatisering", - "Scenes_In_Folder": "Tonele in vouer", - "Select": "Uitkies", - "Exist": "Bestaan", - "OK": "Ok", - "Nothing": "Niks", - "No_need_here": "Geen behoefte hier nie", - "Do_not_need": "Hoef nie", - "Finish": "Voltooi", - "Select_Purposes_Of_The_Area": "kiesDoeleindesVanDieGebied", - "Pulling_Up_all_blinds": "Trek alle blindings op", - "Stopping_all_blinds": "Stop alle blindings", - "Pulling_down_all_blinds": "Trek alle blindings af", - "Turning_On_boiler": "Skakel die ketel aan", - "Turning_Off_boiler": "Skakel ketel uit", - "Waiting_for_user_to_get_connected_to_WiFi": "Wag vir die gebruiker om aan WiFi gekoppel te word", - "Can't_add_unsupported_device": "Kan nie onder ondersteunde toestel byvoeg nie" - } \ No newline at end of file + "Create_new_account": "Skep nuwe rekening", + "Actions_History": "Aksies Geskiedenis", + "Empty_history": "Leë geskiedenis", + "History_Settings_Page": "Geskiedenis-instellingsbladsy", + "Lamps_Page": "Lampe Bladsy", + "Name:_": "Naam: {}", + "Area:_": "Kamer: {}", + "Lamps_Settings_Page": "Lampe-instellingsbladsy", + "Welcome_to_your_Smart_Home": "Welkom by jou slimhuis", + "Scene_Settings_Page": "Toneelinstellingsbladsy", + "Move_to_blinds_full_settings_page": "Skuif na blindings se volledige instellingsbladsy", + "Blinds_Page": "Blindings Bladsy", + "Down": "Af", + "Stop": "Stop", + "Up": "Op", + "Smart_Devices_Settings_Page": "Smart Devices -instellingsbladsy", + "Air_Conditioners": "Lugversorgers", + "Blinds": "Blindings", + "Medical_Device": "Mediese toestel", + "Medical_Devices": "Mediese toestelle", + "Smart_Phone": "Slimfoon", + "Smart_Phones": "Slimfone", + "Smart_Speakers": "Slim luidsprekers", + "Smart_Devices_page": "Smart Devices -bladsy", + "History": "Geskiedenis", + "Scene": "Toneel", + "Scenes": "Tonele", + "Lamps": "Lampe", + "Devices": "Toestelle", + "Email_is_required": "E -pos is vereis", + "Email_cannot_contain_spaces": "E -pos kan nie ruimtes bevat nie", + "Email_is_invalid": "E -pos is ongeldig", + "Email": "E -pos", + "Password_is_required": "Wagwoord word benodig", + "Password_cannot_contain_spaces": "Wagwoord kan nie spasies bevat nie", + "Password_must_be_bigger_than__characters": "Wagwoord moet groter wees as {} karakters", + "Password": "Wagwoord", + "Log_In": "Teken aan", + "Forgot_password": "Wagwoord vergeet", + "Forgot_password?": "Wagwoord vergeet?", + "title": "titel", + "number": "nommer", + "IP_is_required": "IP word benodig", + "IP_syntax_is_incorrect": "IP -sintaksis is verkeerd", + "Add_Smart_Device": "Voeg slimtoestel by", + "Cancel": "Kanselleer", + "Add": "Byvoeg", + "Light": "Lig", + "Device_ip:_": "Toestel IP: {}", + "New_devices": "Nuwe toestelle", + "Add_devices": "Voeg toestelle by", + "Device_type:_": "Toesteltipe: {}", + "Area_name_is_required": "Kamernaam word benodig", + "Area_name:": "Kamernaam:", + "Device_name_is_required": "Toestelnaam is nodig", + "Device_name:": "Toestel naam:", + "Update": "Opdateer", + "IP": "Ip", + "This_is_firebase": "Dit is Firebase", + "Device_with_ip:_": "Toestel met IP: {}", + "Update_WiFi_configuration": "Update wifi -konfigurasie", + "WiFi_name_is_required": "Wifi -naam is vereis", + "WiFi_Name": "Wifi naam", + "WiFi_password_is_required": "WiFi -wagwoord is nodig", + "WiFi_Password": "WiFi -wagwoord", + "Insert_WiFi_Credentials": "Voeg wifi -geloofsbriewe in", + "Conditioners": "Opknapper", + "Medical": "Medies", + "Phones": "Telefone", + "Speakers": "Luidsprekers", + "Send": "Stuur", + "All_Devices": "Alle toestelle", + "Summary": "Opsomming", + "Switches": "Skakelaars", + "Boilers": "Kookpot", + "Lights": "Ligte", + "RGBw_Lights": "RGBW ligte", + "_Switches": "{} Skakelaars", + "_SmartTvs": "{} Slim TV's", + "_RGBW_Lights": "{} RGBW ligte", + "_Lights": "{} Ligte", + "_Boilers": "{} Kookpot", + "_Blinds": "{}Blindings", + "Areas": "Kamers", + "_device": "{} toestel", + "_devices": "{} toestelle", + "_SmartPlugs": "{} slimProppe", + "On": "Op", + "Off": "Af", + "Color": "Kleur", + "White": "Wit", + "Area": "area", + "Areas": "Gebiede", + "Automations": "Outomatisering", + "Scenes_In_Folder": "Tonele in vouer", + "Select": "Uitkies", + "Exist": "Bestaan", + "OK": "Ok", + "Nothing": "Niks", + "No_need_here": "Geen behoefte hier nie", + "Do_not_need": "Hoef nie", + "Finish": "Voltooi", + "Select_Purposes_Of_The_Area": "kiesDoeleindesVanDieGebied", + "Pulling_Up_all_blinds": "Trek alle blindings op", + "Stopping_all_blinds": "Stop alle blindings", + "Pulling_down_all_blinds": "Trek alle blindings af", + "Turning_On_boiler": "Skakel die ketel aan", + "Turning_Off_boiler": "Skakel ketel uit", + "Waiting_for_user_to_get_connected_to_WiFi": "Wag vir die gebruiker om aan WiFi gekoppel te word", + "Can't_add_unsupported_device": "Kan nie onder ondersteunde toestel byvoeg nie" +} \ No newline at end of file diff --git a/assets/translations/am-ET.json b/assets/translations/am-ET.json index a21d42ee4..e8fe89c83 100644 --- a/assets/translations/am-ET.json +++ b/assets/translations/am-ET.json @@ -5,7 +5,7 @@ "History_Settings_Page": "የታሪክ ቅንብሮች ገጽ", "Lamps_Page": "የአምፖሎች ገጽ", "Name:_": "ስም: {}", - "Room:_": "ክፍል: {}", + "Area:_": "ክፍል: {}", "Lamps_Settings_Page": "የአምፖሎች ቅንብሮች ገጽ", "Welcome_to_your_Smart_Home": "እንኳን ወደ ስማርት ቤትዎ በደህና መጡ", "Scene_Settings_Page": "የትዕይንት ቅንብሮች ገጽ", @@ -51,8 +51,8 @@ "New_devices": "አዳዲስ መገልገያዎች", "Add_devices": "መገልገያዎችን አክል", "Device_type:_": "የመገልገያ ዓይነት: {}", - "Room_name_is_required": "የክፍሉ ስም ያስፈልጋል", - "Room_name:": "የክፍሉ ስም:", + "Area_name_is_required": "የክፍሉ ስም ያስፈልጋል", + "Area_name:": "የክፍሉ ስም:", "Device_name_is_required": "የመገልገያ ስም ያስፈልጋል", "Device_name:": "የመገልገያ ስም:", "Update": "አዘምን", @@ -82,7 +82,7 @@ "_Lights": "{} መብራቶች", "_Boilers": "{} ማሞቂያዎች", "_Blinds": "{} መጋረጃዎች", - "Rooms": "ክፍሎች", + "Areas": "ክፍሎች", "_device": "{} መገልገያ", "_devices": "{} መገልገያዎች", "_SmartPlugs": "{} ስማርት መሰኪያዎች", @@ -109,4 +109,4 @@ "Turning_Off_boiler": "ማሞቂያውን በማጥፋት ላይ", "Waiting_for_user_to_get_connected_to_WiFi": "ተጠቃሚ ወደ ዋይፋይ እስኪገናኝ በመጠበቅ ላይ", "Can't_add_unsupported_device": "የማይደገፍ መ ማከል አይቻልም" -} +} \ No newline at end of file diff --git a/assets/translations/ar-AE.json b/assets/translations/ar-AE.json index 2fa90ca3b..676230439 100644 --- a/assets/translations/ar-AE.json +++ b/assets/translations/ar-AE.json @@ -1,113 +1,112 @@ { - "Create_new_account": "انشاء حساب جديد", - "Actions_History": "سجل الإجراءات", - "Empty_history": "تاريخ فارغ", - "History_Settings_Page": "صفحة سجل إعدادات", - "Lamps_Page": "صفحة المصابيح", - "Name:_": "اسم: {}", - "Room:_": "غرفة: {}", - "Lamps_Settings_Page": "صفحة الاعدادات للمصابيح", - "Welcome_to_your_Smart_Home": "اهلا وسهلا بك بيتك الذكي", - "Scene_Settings_Page": "صفحة إعدادات المشهد", - "Move_to_blinds_full_settings_page": "انتقل إلى صفحة الإعدادات الستائر الكاملة", - "Blinds_Page": "صفحة الستائر", - "Down": "تحت", - "Stop": "توقف", - "Up": "فوق", - "Smart_Devices_Settings_Page": "صفحة الاعداد للاجهزة الذكية", - "Air_Conditioners": "مكيف هواء", - "Blinds": "ستائر", - "Medical_Device": "جهاز طبي", - "Medical_Devices": "اجهزة طبية", - "Smart_Phone": "هاتف ذكي", - "Smart_Phones": "هواتف ذكية", - "Smart_Speakers": "سماعات ذكية", - "Smart_Devices_page": "صفحة الاجهزة الذكية", - "History": "تاريخ", - "Scene": "مشهد", - "Scenes": "مشاهد", - "Lamps": "مصابيح", - "Devices": "اجهزة", - "Email_is_required": "البريد الالكتروني مطلوب", - "Email_cannot_contain_spaces": "البريد الالكتروني لا يمكن ان يحتوي على مسافة", - "Email_is_invalid": "البريد الالكتروني غير صالح", - "Email": "بريد الالكتروني", - "Password_is_required": "كلمة المرور مطلوبة", - "Password_cannot_contain_spaces": "لا يمكن أن تحتوي كلمة المرور على مسافات", - "Password_must_be_bigger_than__characters": "يجب أن تكون كلمة المرور أكبر من {} الحروف", - "Password": "كلمة المرور", - "Log_In": "تسجيل الدخول", - "Forgot_password": "نسيت كلمة المرور", - "Forgot_password?": "نسيت كلمة المرور؟", - "title": "عنوان", - "number": "رقم", - "IP_is_required": "عنوان بروتوكول الإنترنت مطلوب", - "IP_syntax_is_incorrect": "بناء عنوان بروتوكول الإنترنت غير صحيح", - "Add_Smart_Device": "اضف جهاز ذكي", - "Cancel": "الغاء", - "Add": "اضف", - "Light": "نور", - "Device_ip:_": "جهاز عنوان بروتوكول الإنترنت: {}", - "New_devices": "جهاز جديد", - "Add_devices": "اضف جهاز", - "Device_type:_": "نوع الجهاز: {}", - "Room_name_is_required": "اسم الغرفة مطلوب", - "Room_name:": "اسم الغرفة:", - "Device_name_is_required": "اسم الجهاز مطلوب", - "Device_name:": "اسم الجهاز:", - "Update": "تحديث", - "IP": "عنوان بروتوكول الإنترنت", - "This_is_firebase": "هذا فيربيس", - "Device_with_ip:_": "جهاز عنوان بروتوكول الإنترنت: {}", - "Update_WiFi_configuration": "تحديث تكوين الواي-فاي", - "WiFi_name_is_required": "اسم الواي-فاي مطلوب", - "WiFi_Name": "اسم الواي-فاي", - "WiFi_password_is_required": "كلمه المرور للواي-فاي مطلوبة", - "WiFi_Password": "كلمه المرور للواي-فاي", - "Insert_WiFi_Credentials": "أدخل بيانات اعتماد الواي-فاي", - "Conditioners": "مكيفات", - "Medical": "طبي", - "Phones": "هواتف", - "Speakers": "مكبرات الصوت", - "Send": "ارسل", - "All_Devices": "كل الاجهزة", - "Summary": "ملخص", - "Switches": "لوح تحكم", - "Boilers": "المرجل", - "Lights": "مصابيح", - "RGBw_Lights": "RGBw اضوائ", - "_Switches": "{} لوح تحكم", - "_SmartTvs": "{} تلفاز ذكي", - "_RGBW_Lights": "{} RGBW اضواء", - "_Lights": "{} مصابيج", - "_Boilers": "{} المرجل", - "_Blinds": "{} ستائر", - "Rooms": "غرف", - "_device": "{} جاهز", - "_devices": "{} اجهزة", - "_SmartPlugs": "{} مقابس ذكية", - "On": "تشغيل", - "Off": "توقيف", - "Color": "لون", - "White": "ابيض", - "Area": "منطقة", - "Areas": "مناطق", - "Automations": "اليات", - "Scenes_In_Folder": "مشاهد في المجلد", - "Select": "تحديد", - "Exist": "خروج", - "OK": "موافق", - "Nothing": "لاشي", - "No_need_here": "غير مطلوب هنا", - "Do_not_need": "غير مطلوب", - "Finish": "جاهز", - "Select_Purposes_Of_The_Area": "حدد الغرض من المنطقة", - "Pulling_Up_all_blinds": "رافع جميع الستائر", - "Stopping_all_blinds": "توقيف جميع الستائر", - "Pulling_down_all_blinds": "اغلاق جميع الستائر", - "Turning_On_boiler": "ابدا تشغيل المرجل", - "Turning_Off_boiler": "اوقف تشغيل المرجل", - "Waiting_for_user_to_get_connected_to_WiFi": "في انتظار المستخدم ان يتصل بشكة واي-فاي", - "Can't_add_unsupported_device": "لا يمكن اضافة اجهزة غير مدعومة" - } - \ No newline at end of file + "Create_new_account": "انشاء حساب جديد", + "Actions_History": "سجل الإجراءات", + "Empty_history": "تاريخ فارغ", + "History_Settings_Page": "صفحة سجل إعدادات", + "Lamps_Page": "صفحة المصابيح", + "Name:_": "اسم: {}", + "Area:_": "غرفة: {}", + "Lamps_Settings_Page": "صفحة الاعدادات للمصابيح", + "Welcome_to_your_Smart_Home": "اهلا وسهلا بك بيتك الذكي", + "Scene_Settings_Page": "صفحة إعدادات المشهد", + "Move_to_blinds_full_settings_page": "انتقل إلى صفحة الإعدادات الستائر الكاملة", + "Blinds_Page": "صفحة الستائر", + "Down": "تحت", + "Stop": "توقف", + "Up": "فوق", + "Smart_Devices_Settings_Page": "صفحة الاعداد للاجهزة الذكية", + "Air_Conditioners": "مكيف هواء", + "Blinds": "ستائر", + "Medical_Device": "جهاز طبي", + "Medical_Devices": "اجهزة طبية", + "Smart_Phone": "هاتف ذكي", + "Smart_Phones": "هواتف ذكية", + "Smart_Speakers": "سماعات ذكية", + "Smart_Devices_page": "صفحة الاجهزة الذكية", + "History": "تاريخ", + "Scene": "مشهد", + "Scenes": "مشاهد", + "Lamps": "مصابيح", + "Devices": "اجهزة", + "Email_is_required": "البريد الالكتروني مطلوب", + "Email_cannot_contain_spaces": "البريد الالكتروني لا يمكن ان يحتوي على مسافة", + "Email_is_invalid": "البريد الالكتروني غير صالح", + "Email": "بريد الالكتروني", + "Password_is_required": "كلمة المرور مطلوبة", + "Password_cannot_contain_spaces": "لا يمكن أن تحتوي كلمة المرور على مسافات", + "Password_must_be_bigger_than__characters": "يجب أن تكون كلمة المرور أكبر من {} الحروف", + "Password": "كلمة المرور", + "Log_In": "تسجيل الدخول", + "Forgot_password": "نسيت كلمة المرور", + "Forgot_password?": "نسيت كلمة المرور؟", + "title": "عنوان", + "number": "رقم", + "IP_is_required": "عنوان بروتوكول الإنترنت مطلوب", + "IP_syntax_is_incorrect": "بناء عنوان بروتوكول الإنترنت غير صحيح", + "Add_Smart_Device": "اضف جهاز ذكي", + "Cancel": "الغاء", + "Add": "اضف", + "Light": "نور", + "Device_ip:_": "جهاز عنوان بروتوكول الإنترنت: {}", + "New_devices": "جهاز جديد", + "Add_devices": "اضف جهاز", + "Device_type:_": "نوع الجهاز: {}", + "Area_name_is_required": "اسم الغرفة مطلوب", + "Area_name:": "اسم الغرفة:", + "Device_name_is_required": "اسم الجهاز مطلوب", + "Device_name:": "اسم الجهاز:", + "Update": "تحديث", + "IP": "عنوان بروتوكول الإنترنت", + "This_is_firebase": "هذا فيربيس", + "Device_with_ip:_": "جهاز عنوان بروتوكول الإنترنت: {}", + "Update_WiFi_configuration": "تحديث تكوين الواي-فاي", + "WiFi_name_is_required": "اسم الواي-فاي مطلوب", + "WiFi_Name": "اسم الواي-فاي", + "WiFi_password_is_required": "كلمه المرور للواي-فاي مطلوبة", + "WiFi_Password": "كلمه المرور للواي-فاي", + "Insert_WiFi_Credentials": "أدخل بيانات اعتماد الواي-فاي", + "Conditioners": "مكيفات", + "Medical": "طبي", + "Phones": "هواتف", + "Speakers": "مكبرات الصوت", + "Send": "ارسل", + "All_Devices": "كل الاجهزة", + "Summary": "ملخص", + "Switches": "لوح تحكم", + "Boilers": "المرجل", + "Lights": "مصابيح", + "RGBw_Lights": "RGBw اضوائ", + "_Switches": "{} لوح تحكم", + "_SmartTvs": "{} تلفاز ذكي", + "_RGBW_Lights": "{} RGBW اضواء", + "_Lights": "{} مصابيج", + "_Boilers": "{} المرجل", + "_Blinds": "{} ستائر", + "Areas": "غرف", + "_device": "{} جاهز", + "_devices": "{} اجهزة", + "_SmartPlugs": "{} مقابس ذكية", + "On": "تشغيل", + "Off": "توقيف", + "Color": "لون", + "White": "ابيض", + "Area": "منطقة", + "Areas": "مناطق", + "Automations": "اليات", + "Scenes_In_Folder": "مشاهد في المجلد", + "Select": "تحديد", + "Exist": "خروج", + "OK": "موافق", + "Nothing": "لاشي", + "No_need_here": "غير مطلوب هنا", + "Do_not_need": "غير مطلوب", + "Finish": "جاهز", + "Select_Purposes_Of_The_Area": "حدد الغرض من المنطقة", + "Pulling_Up_all_blinds": "رافع جميع الستائر", + "Stopping_all_blinds": "توقيف جميع الستائر", + "Pulling_down_all_blinds": "اغلاق جميع الستائر", + "Turning_On_boiler": "ابدا تشغيل المرجل", + "Turning_Off_boiler": "اوقف تشغيل المرجل", + "Waiting_for_user_to_get_connected_to_WiFi": "في انتظار المستخدم ان يتصل بشكة واي-فاي", + "Can't_add_unsupported_device": "لا يمكن اضافة اجهزة غير مدعومة" +} \ No newline at end of file diff --git a/assets/translations/ar-PS.json b/assets/translations/ar-PS.json index 20249c3e3..5e01e542a 100644 --- a/assets/translations/ar-PS.json +++ b/assets/translations/ar-PS.json @@ -1,113 +1,112 @@ { - "Create_new_account": "انشاء حساب جديد", - "Actions_History": "سجل الإجراءات", - "Empty_history": "تاريخ فارغ", - "History_Settings_Page": "صفحة سجل إعدادات", - "Lamps_Page": "صفحة المصابيح", - "Name:_": "اسم: {}", - "Room:_": "غرفة: {}", - "Lamps_Settings_Page": "صفحة الاعدادات للمصابيح", - "Welcome_to_your_Smart_Home": "اهلا وسهلا بك بيتك الذكي", - "Scene_Settings_Page": "صفحة إعدادات المشهد", - "Move_to_blinds_full_settings_page": "انتقل إلى صفحة الإعدادات الستائر الكاملة", - "Blinds_Page": "صفحة الستائر", - "Down": "تحت", - "Stop": "توقف", - "Up": "فوق", - "Smart_Devices_Settings_Page": "صفحة الاعداد للاجهزة الذكية", - "Air_Conditioners": "مكيف هواء", - "Blinds": "ستائر", - "Medical_Device": "جهاز طبي", - "Medical_Devices": "اجهزة طبية", - "Smart_Phone": "هاتف ذكي", - "Smart_Phones": "هواتف ذكية", - "Smart_Speakers": "سماعات ذكية", - "Smart_Devices_page": "صفحة الاجهزة الذكية", - "History": "تاريخ", - "Scene": "مشهد", - "Scenes": "مشاهد", - "Lamps": "مصابيح", - "Devices": "اجهزة", - "Email_is_required": "البريد الالكتروني مطلوب", - "Email_cannot_contain_spaces": "البريد الالكتروني لا يمكن ان يحتوي على مسافة", - "Email_is_invalid": "البريد الالكتروني غير صالح", - "Email": "بريد الالكتروني", - "Password_is_required": "كلمة المرور مطلوبة", - "Password_cannot_contain_spaces": "لا يمكن أن تحتوي كلمة المرور على مسافات", - "Password_must_be_bigger_than__characters": "يجب أن تكون كلمة المرور أكبر من {} الحروف", - "Password": "كلمة المرور", - "Log_In": "تسجيل الدخول", - "Forgot_password": "نسيت كلمة المرور", - "Forgot_password?": "نسيت كلمة المرور؟", - "title": "عنوان", - "number": "رقم", - "IP_is_required": "عنوان بروتوكول الإنترنت مطلوب", - "IP_syntax_is_incorrect": "بناء عنوان بروتوكول الإنترنت غير صحيح", - "Add_Smart_Device": "اضف جهاز ذكي", - "Cancel": "الغاء", - "Add": "اضف", - "Light": "نور", - "Device_ip:_": "جهاز عنوان بروتوكول الإنترنت: {}", - "New_devices": "جهاز جديد", - "Add_devices": "اضف جهاز", - "Device_type:_": "نوع الجهاز: {}", - "Room_name_is_required": "اسم الغرفة مطلوب", - "Room_name:": "اسم الغرفة:", - "Device_name_is_required": "اسم الجهاز مطلوب", - "Device_name:": "اسم الجهاز:", - "Update": "تحديث", - "IP": "عنوان بروتوكول الإنترنت", - "This_is_firebase": "هذا فيربيس", - "Device_with_ip:_": "جهاز عنوان بروتوكول الإنترنت: {}", - "Update_WiFi_configuration": "تحديث تكوين الواي-فاي", - "WiFi_name_is_required": "اسم الواي-فاي مطلوب", - "WiFi_Name": "اسم الواي-فاي", - "WiFi_password_is_required": "كلمه المرور للواي-فاي مطلوبة", - "WiFi_Password": "كلمه المرور للواي-فاي", - "Insert_WiFi_Credentials": "أدخل بيانات اعتماد الواي-فاي", - "Conditioners": "مكيفات", - "Medical": "طبي", - "Phones": "هواتف", - "Speakers": "مكبرات الصوت", - "Send": "ارسل", - "All_Devices": "كل الاجهزة", - "Summary": "ملخص", - "Switches": "لوح تحكم", - "Boilers": "المرجل", - "Lights": "مصابيح", - "RGBw_Lights": "RGBw اضوائ", - "_Switches": "{} لوح تحكم", - "_SmartTvs": "{} تلفاز ذكي", - "_RGBW_Lights": "{} RGBW اضواء", - "_Lights": "{} مصابيج", - "_Boilers": "{} المرجل", - "_Blinds": "{} ستائر", - "Rooms": "غرف", - "_device": "{} جاهز", - "_devices": "{} اجهزة", - "_SmartPlugs": "{} مقابس ذكية", - "On": "تشغيل", - "Off": "توقيف", - "Color": "لون", - "White": "ابيض", - "Area": "منطقة", - "Areas": "مناطق", - "Automations": "اليات", - "Scenes_In_Folder": "مشاهد في المجلد", - "Select": "تحديد", - "Exist": "خروج", - "OK": "موافق", - "Nothing": "لاشي", - "No_need_here": "غير مطلوب هنا", - "Do_not_need": "غير مطلوب", - "Finish": "جاهز", - "Select_Purposes_Of_The_Area": "حدد الغرض من المنطقة", - "Pulling_Up_all_blinds": "رافع جميع الستائر", - "Stopping_all_blinds": "توقيف جميع الستائر", - "Pulling_down_all_blinds": "اغلاق جميع الستائر", - "Turning_On_boiler": "ابدا تشغيل المرجل", - "Turning_Off_boiler": "اوقف تشغيل المرجل", - "Waiting_for_user_to_get_connected_to_WiFi": "في انتظار المستخدم ان يتصل بشكة واي-فاي", - "Can't_add_unsupported_device": "لا يمكن اضافة اجهزة غير مدعومة" - } - \ No newline at end of file + "Create_new_account": "انشاء حساب جديد", + "Actions_History": "سجل الإجراءات", + "Empty_history": "تاريخ فارغ", + "History_Settings_Page": "صفحة سجل إعدادات", + "Lamps_Page": "صفحة المصابيح", + "Name:_": "اسم: {}", + "Area:_": "غرفة: {}", + "Lamps_Settings_Page": "صفحة الاعدادات للمصابيح", + "Welcome_to_your_Smart_Home": "اهلا وسهلا بك بيتك الذكي", + "Scene_Settings_Page": "صفحة إعدادات المشهد", + "Move_to_blinds_full_settings_page": "انتقل إلى صفحة الإعدادات الستائر الكاملة", + "Blinds_Page": "صفحة الستائر", + "Down": "تحت", + "Stop": "توقف", + "Up": "فوق", + "Smart_Devices_Settings_Page": "صفحة الاعداد للاجهزة الذكية", + "Air_Conditioners": "مكيف هواء", + "Blinds": "ستائر", + "Medical_Device": "جهاز طبي", + "Medical_Devices": "اجهزة طبية", + "Smart_Phone": "هاتف ذكي", + "Smart_Phones": "هواتف ذكية", + "Smart_Speakers": "سماعات ذكية", + "Smart_Devices_page": "صفحة الاجهزة الذكية", + "History": "تاريخ", + "Scene": "مشهد", + "Scenes": "مشاهد", + "Lamps": "مصابيح", + "Devices": "اجهزة", + "Email_is_required": "البريد الالكتروني مطلوب", + "Email_cannot_contain_spaces": "البريد الالكتروني لا يمكن ان يحتوي على مسافة", + "Email_is_invalid": "البريد الالكتروني غير صالح", + "Email": "بريد الالكتروني", + "Password_is_required": "كلمة المرور مطلوبة", + "Password_cannot_contain_spaces": "لا يمكن أن تحتوي كلمة المرور على مسافات", + "Password_must_be_bigger_than__characters": "يجب أن تكون كلمة المرور أكبر من {} الحروف", + "Password": "كلمة المرور", + "Log_In": "تسجيل الدخول", + "Forgot_password": "نسيت كلمة المرور", + "Forgot_password?": "نسيت كلمة المرور؟", + "title": "عنوان", + "number": "رقم", + "IP_is_required": "عنوان بروتوكول الإنترنت مطلوب", + "IP_syntax_is_incorrect": "بناء عنوان بروتوكول الإنترنت غير صحيح", + "Add_Smart_Device": "اضف جهاز ذكي", + "Cancel": "الغاء", + "Add": "اضف", + "Light": "نور", + "Device_ip:_": "جهاز عنوان بروتوكول الإنترنت: {}", + "New_devices": "جهاز جديد", + "Add_devices": "اضف جهاز", + "Device_type:_": "نوع الجهاز: {}", + "Area_name_is_required": "اسم الغرفة مطلوب", + "Area_name:": "اسم الغرفة:", + "Device_name_is_required": "اسم الجهاز مطلوب", + "Device_name:": "اسم الجهاز:", + "Update": "تحديث", + "IP": "عنوان بروتوكول الإنترنت", + "This_is_firebase": "هذا فيربيس", + "Device_with_ip:_": "جهاز عنوان بروتوكول الإنترنت: {}", + "Update_WiFi_configuration": "تحديث تكوين الواي-فاي", + "WiFi_name_is_required": "اسم الواي-فاي مطلوب", + "WiFi_Name": "اسم الواي-فاي", + "WiFi_password_is_required": "كلمه المرور للواي-فاي مطلوبة", + "WiFi_Password": "كلمه المرور للواي-فاي", + "Insert_WiFi_Credentials": "أدخل بيانات اعتماد الواي-فاي", + "Conditioners": "مكيفات", + "Medical": "طبي", + "Phones": "هواتف", + "Speakers": "مكبرات الصوت", + "Send": "ارسل", + "All_Devices": "كل الاجهزة", + "Summary": "ملخص", + "Switches": "لوح تحكم", + "Boilers": "المرجل", + "Lights": "مصابيح", + "RGBw_Lights": "RGBw اضوائ", + "_Switches": "{} لوح تحكم", + "_SmartTvs": "{} تلفاز ذكي", + "_RGBW_Lights": "{} RGBW اضواء", + "_Lights": "{} مصابيج", + "_Boilers": "{} المرجل", + "_Blinds": "{} ستائر", + "Areas": "غرف", + "_device": "{} جاهز", + "_devices": "{} اجهزة", + "_SmartPlugs": "{} مقابس ذكية", + "On": "تشغيل", + "Off": "توقيف", + "Color": "لون", + "White": "ابيض", + "Area": "منطقة", + "Areas": "مناطق", + "Automations": "اليات", + "Scenes_In_Folder": "مشاهد في المجلد", + "Select": "تحديد", + "Exist": "خروج", + "OK": "موافق", + "Nothing": "لاشي", + "No_need_here": "غير مطلوب هنا", + "Do_not_need": "غير مطلوب", + "Finish": "جاهز", + "Select_Purposes_Of_The_Area": "حدد الغرض من المنطقة", + "Pulling_Up_all_blinds": "رافع جميع الستائر", + "Stopping_all_blinds": "توقيف جميع الستائر", + "Pulling_down_all_blinds": "اغلاق جميع الستائر", + "Turning_On_boiler": "ابدا تشغيل المرجل", + "Turning_Off_boiler": "اوقف تشغيل المرجل", + "Waiting_for_user_to_get_connected_to_WiFi": "في انتظار المستخدم ان يتصل بشكة واي-فاي", + "Can't_add_unsupported_device": "لا يمكن اضافة اجهزة غير مدعومة" +} \ No newline at end of file diff --git a/assets/translations/ar-SA.json b/assets/translations/ar-SA.json index 3e16f6ed8..70b695edb 100644 --- a/assets/translations/ar-SA.json +++ b/assets/translations/ar-SA.json @@ -5,7 +5,7 @@ "History_Settings_Page": "صفحة إعدادات هاستور", "Lamps_Page": "صفحة اللیمب", "Name:_": "{}:اسم", - "Room:_": "{}:غرفة", + "Area:_": "{}:غرفة", "Lamps_Settings_Page": "صفحة إعدادات اللیمب", "Welcome_to_your_Smart_Home": "مرحبًا بك في منزلك الذكي", "Scene_Settings_Page": "صفحة إعدادات المشهد", @@ -51,8 +51,8 @@ "New_devices": "أجهزة جديدة", "Add_devices": "أضف الأجهزة", "Device_type:_": "{}:نوع الجهاز", - "Room_name_is_required": "مطلوب اسم الغرفة", - "Room_name:": ":اسم الغرفة", + "Area_name_is_required": "مطلوب اسم الغرفة", + "Area_name:": ":اسم الغرفة", "Device_name_is_required": "اسم الجهاز مطلوب", "Device_name:": ":اسم الجهاز", "Update": "تحديث", @@ -82,7 +82,7 @@ "_Lights": "أضواء{}", "_Boilers": "غلايات{}", "_Blinds": "بلائندز{}", - "Rooms": "غرف", + "Areas": "غرف", "_device": "جهاز{}", "_devices": "الأجهزة{}", "_SmartPlugs": "المقابس الذكية{}", diff --git a/assets/translations/be-RU.json b/assets/translations/be-RU.json index c71b0b569..6bd82362f 100644 --- a/assets/translations/be-RU.json +++ b/assets/translations/be-RU.json @@ -5,7 +5,7 @@ "History_Settings_Page": "Страница настроек истории", "Lamps_Page": "Страница с лампами", "Name:_": "Название: {}", - "Room:_": "Комната: {}", + "Area:_": "Комната: {}", "Lamps_Settings_Page": "Страница настроек ламп", "Welcome_to_your_Smart_Home": "Добро пожаловать в ваш Умный Дом", "Scene_Settings_Page": "Страница настроек сцены", @@ -18,7 +18,7 @@ "Air_Conditioners": "Кондиционеры", "Blinds": "Шторы", "Medical_Device": "Медицинское устройство", - "Medical_Devices": "Медицинские устройства", + "Medical_Devices": "Медицинские устройства", "Smart_Phone": "Смартфон", "Smart_Phones": "Смартфоны", "Smart_Speakers": "Умные колонки", @@ -50,8 +50,8 @@ "New_devices": "Новые устройства", "Add_devices": "Добавить устройства", "Device_type:_": "Тип устройства: {}", - "Room_name_is_required": "Требуется название комнаты", - "Room_name:": "Название комнаты:", + "Area_name_is_required": "Требуется название комнаты", + "Area_name:": "Название комнаты:", "Device_name_is_required": "Требуется название устройства", "Device_name:": "Название устройства:", "Update": "Обновить", @@ -81,7 +81,7 @@ "_Lights": "{} лампы", "_Boilers": "{} бойлеры", "_Blinds": "{} шторы", - "Rooms": "Комнаты", + "Areas": "Комнаты", "_device": "{} устройство", "_devices": "{} устройства", "_SmartPlugs": "{} SmartPlugs", @@ -101,4 +101,4 @@ "Do_not_need": "Не требуется", "Finish": "Завершить", "Select_Purposes_Of_The_Area": "Выберите назначение территории" -} +} \ No newline at end of file diff --git a/assets/translations/be-in.json b/assets/translations/be-in.json index d327b04b1..f938bdaa0 100644 --- a/assets/translations/be-in.json +++ b/assets/translations/be-in.json @@ -5,7 +5,7 @@ "History_Settings_Page": "ইতিহাস সেটিং পৃষ্ঠা", "Lamps_Page": "Lamps Page", "Name:_": "নাম: {}", - "Room:_": "রুম: {}", + "Area:_": "রুম: {}", "Lamps_Settings_Page": "বাতি সেটিং পৃষ্ঠা", "Welcome_to_your_Smart_Home": "আপনার স্মার্ট হোমে স্বাগতম", "Scene_Settings_Page": "দৃশ্য সেটিংস পৃষ্ঠা", @@ -51,8 +51,8 @@ "New_devices": "নতুন ডিভাইস", "Add_devices": "ডিভাইস যোগ করুন", "Device_type:_": "ডিভাইসের ধরন : {}", - "Room_name_is_required": "রুমের নাম প্রয়োজন", - "Room_name:": "রুমের নাম :", + "Area_name_is_required": "রুমের নাম প্রয়োজন", + "Area_name:": "রুমের নাম :", "Device_name_is_required": "ডিভাইসের নাম প্রয়োজন", "Device_name:": "ডিভাইসের নাম:", "Update": "হালনাগাদ", @@ -82,7 +82,7 @@ "_Lights": "{} আলো", "_Boilers": "{} বয়লার", "_Blinds": "{} ব্লাইন্ডস", - "Rooms": "রুম", + "Areas": "রুম", "_device": "{} ডিভাইস ", "_devices": "{} ডিভাইস", "_SmartPlugs": "{} স্মার্টপ্লাগ", @@ -109,4 +109,4 @@ "Turning_Off_boiler": "বয়লার বন্ধ করা হচ্ছে", "Waiting_for_user_to_get_connected_to_WiFi": "ব্যবহারকারীর ওয়াইফাই এর সাথে সংযুক্ত হওয়ার জন্য অপেক্ষা করা হচ্ছে৷", "Can't_add_unsupported_device": "অসমর্থিত ডিভাইস যোগ করা যাবে না" -} +} \ No newline at end of file diff --git a/assets/translations/bn-BD.json b/assets/translations/bn-BD.json index 6ce7cb2a1..0ceda2780 100644 --- a/assets/translations/bn-BD.json +++ b/assets/translations/bn-BD.json @@ -5,7 +5,7 @@ "History_Settings_Page": "ইতিহাস সেটিংস পেজ", "Lamps_Page": "ল্যাম্পস পেজ", "Name:_": "নাম: {}", - "Room:_": "ঘর: {}", + "Area:_": "ঘর: {}", "Lamps_Settings_Page": "ল্যাম্পস সেটিংস পৃষ্ঠা", "Welcome_to_your_Smart_Home": "আপনার স্মার্ট বাড়িতে স্বাগতম", "Scene_Settings_Page": "দৃশ্য সেটিংস পেজ", @@ -51,8 +51,8 @@ "New_devices": "নতুন যন্ত্রাবলী", "Add_devices": "যন্ত্রাবলী যোগ করুন", "Device_type:_": "যন্ত্রের প্রকৃতি: {}", - "Room_name_is_required": "ঘরের নাম অবশ্যক", - "Room_name:": "ঘরের নাম:", + "Area_name_is_required": "ঘরের নাম অবশ্যক", + "Area_name:": "ঘরের নাম:", "Device_name_is_required": "যন্ত্রের নাম অবশ্যক", "Device_name:": "যন্ত্রের নাম:", "Update": "আপডেট", @@ -82,7 +82,7 @@ "_Lights": "{} গুলি লাইটস", "_Boilers": "{} গুলি বয়লার", "_Blinds": "{} গুলি ব্লাইন্ডস", - "Rooms": "ঘরগুলি", + "Areas": "ঘরগুলি", "_device": "{} গুলি যন্ত্র", "_devices": "{} গুলি যন্ত্র", "_SmartPlugs": "{} গুলি স্মার্ট প্লাগ", @@ -109,4 +109,4 @@ "Turning_Off_boiler": "বয়লার অফ করুন", "Waiting_for_user_to_get_connected_to_WiFi": "ওয়াইফাই এর সাথে সংযোগের জন্য অপেক্ষা", "Can't_add_unsupported_device": "আনসাপোর্টেড যন্ত্র যোগ করা যাবে না" -} +} \ No newline at end of file diff --git a/assets/translations/bn-IN.json b/assets/translations/bn-IN.json index 9e6faa41c..59a922c45 100644 --- a/assets/translations/bn-IN.json +++ b/assets/translations/bn-IN.json @@ -5,7 +5,7 @@ "History_Settings_Page": "ইতিহাস বিন্যাস পৃষ্ঠা", "Lamps_Page": "বাতির পৃষ্ঠা", "Name:_": "নাম: {}", - "Room:_": "ঘর: {}", + "Area:_": "ঘর: {}", "Lamps_Settings_Page": "বাতির বিন্যাস পৃষ্ঠা", "Welcome_to_your_Smart_Home": "আধুনিক বাড়িতে আপনাকে স্বাগত", "Scene_Settings_Page": "দৃশ্য বিন্যাস পৃষ্ঠা", @@ -51,8 +51,8 @@ "New_devices": "নতুন যন্ত্রাবলী", "Add_devices": "যন্ত্রাবলী যোগ করুন", "Device_type:_": "যন্ত্রের প্রকৃতি: {}", - "Room_name_is_required": "ঘরের নাম প্রয়োজন", - "Room_name:": "ঘরের নাম:", + "Area_name_is_required": "ঘরের নাম প্রয়োজন", + "Area_name:": "ঘরের নাম:", "Device_name_is_required": "যন্ত্রের নাম প্রয়োজন", "Device_name:": "যন্ত্রের নাম:", "Update": "হালনাগাদ", @@ -82,7 +82,7 @@ "_Lights": "{} গুলি বাতি", "_Boilers": "{} গুলি সিদ্ধকার", "_Blinds": "{} গুলি ব্লাইন্ডস", - "Rooms": "ঘরগুলি", + "Areas": "ঘরগুলি", "_device": "{} গুলি যন্ত্র", "_devices": "{} গুলি যন্ত্র", "_SmartPlugs": "{} গুলি স্মার্ট প্লাগ", @@ -109,4 +109,4 @@ "Turning_Off_boiler": "বয়লার অফ করুন", "Waiting_for_user_to_get_connected_to_WiFi": "ওয়াইফাই এর সাথে সংযোগের জন্য অপেক্ষা", "Can't_add_unsupported_device": "অসমর্থিত যন্ত্র যোগ করা যাবে না" -} +} \ No newline at end of file diff --git a/assets/translations/ca-ES.json b/assets/translations/ca-ES.json index 9235ae1a3..6d2500181 100644 --- a/assets/translations/ca-ES.json +++ b/assets/translations/ca-ES.json @@ -1,112 +1,112 @@ { -"Create_new_account": "Crea un nou compte", -"Actions_History": "Historial d'Accions", -"Empty_history": "Historial buit", -"History_Settings_Page": "Pàgina de Configuracions del'Historial", -"Lamps_Page": "Pàgina d'Làmpadas", -"Nom:_": "Nom: {}", -"Room:_": "Habitació: {}", -"Lamps_Settings_Page": "Pàgina de Configuració d'Illuminació", -"Welcome_to_your_Smart_Home": "Benvingut a la seva Casa Intelligent", -"Scene_Settings_Page": "Pàgina de Configuració d'Escenes", -"Move_to_blinds_full_settings_page": "Moveu a la pàgina de configuració de persianes", -"Blinds_Page": "Pàgina de Persianes", -"Down": "Baixar", -"Stop": "Parar", -"Up": "Pujar", -"Smart_Devices_Settings_Page": "Pàgina de Configuració de Dispositius Intelligents", -"Air_Conditioners": "Aires Condicionats", -"Blinds": "Persianes", -"Medical_Device": "Dispositiu Mèdic", -"Medical_Devices": "Dispositius Mèdics", -"Smart_Phone": "Telèfon Inteligent", -"Smart_Phones": "Telèfons Intelligents", -"Smart_Speakers": "Parlants Intelligents", -"Smart_Devices_page": "Pàgina de Dispositius Intelligents", -"History": "Historial", -"Scene": "Escena", -"Scenes": "Escenas", -"Lamps": "Làmpadas", -"Devices": "Dispositius", -"Email_is_required": "El Correu Electrònic és requerit", -"Email_cannot_contain_spaces": "El Correu Electrònic no pot contenir espais", -"Email_is_invalid": "El Correu Electrònic no és vàlid", -"Email": "Correu Electrònic", -"Password_is_required": "Contrasenya requerida", -"Password_cannot_contain_spaces": "La Contrasenya no pot contenir espais", -"Password_must_be_bigger_than__characters": "La Contrasenya ha de ser més llarga que {} caràcters", -"Password": "Contrasenya", -"Log_In": "Iniciar Sessió", -"Forgot_password": "Oblida't la teva contrasenya", -"Forgot_password?": "Has oblidat la contrasenya?", -"title": "Títol", -"number": "Número", -"IP_is_required": "IP és requerida", -"IP_syntax_is_incorrect": "La sintaxi de IP és incorrecta", -"Add_Smart_Device": "Afegir un Dispositiu Intelligent", -"Cancel": "Cancellar", -"Add": "Afegir", -"Light": "Llum", -"Device_ip:_": "IP del Dispositiu: {}", -"New_devices": "Nous dispositius", -"Add_devices": "Afegir dispositius", -"Device_type:_": "Tipus de Dispositiu: {}", -"Room_name_is_required": "El nom de l'habitació és requerit", -"Room_name:_": "Nom de l'habitació: {}", -"Device_name_is_required": "El nom del dispositiu és requerit", -"Device_name:_": "Nom del dispositiu: {}", -"Update": "Actualització", -"IP": "IP", -"This_is_firebase": "Això és firebase", -"Device_with_ip:_": "Dispositiu amb ip: {}", -"Update_WiFi_configuration": "Actualitzar la configuració del WiFi", -"WiFi_name_is_required": "El nom del WiFi és necessari", -"WiFi_Name": "Nom del WiFi", -"WiFi_password_is_required": "La contrasenya del WiFi és requerida", -"WiFi_Password": "Contrasenya del WiFi", -"Insert_WiFi_Credentials": "Presentar les Credencials de WiFi", -"Conditioners": "Acondicionadors", -"Medical": "Medic", -"Phones": "Telèfons", -"Speakers": "Parlantes", -"Send": "Enviar", -"All_Devices": "Tots els Dispositius", -"Summary": "Resumen", -"Switches": "Interruptors", -"Boilers": "Hervidoras", -"Lights": "Llums", -"RGBw_Lights": "Llums de RGBw", -"_Switches": "{} Interruptors", -"_SmartTvs": "{} Televisors Intelligents", -"_RGBW_Lights": "{} Llums de RGBw", -"_Lights": "{} Llums", -"_Boilers": "{} Hervidoras", -"_Blinds": "{} Persianes", -"Rooms": "Habitacions", -"_device": "{} dispositiu", -"_devices": "{} dispositius", -"_SmartPlugs": "{} Enchufes Inteligentes", -"On": "Ences", -"Off": "Apagat", -"Color": "Color", -"White": "Blanc", -"Area": "Àrea", -"Areas": "Àrees", -"Automations": "Automatitzacions", -"Scenes_In_Folder": "Escenes a la Carpeta", -"Select": "Seleccionar", -"Exist": "Existeix", -"OK": "D'acord", -"Nothing": "Res", -"No_need_here": "No és necessari aquí", -"Do_not_need": "No es necessita", -"Finish": "Acabar", -"Select_Purposes_Of_The_Area": "Seleccioneu la Proposta d'aquesta Àrea", -"Pulling_Up_all_blinds": "Aixecant totes les persianes", -"Stopping_all_blinds": "Aturar totes les persianes", -"Pulling_down_all_blinds": "Abaixant totes les persianes", -"Turning_On_boiler": "Encenent la caldera", -"Turning_Off_boiler": "Apagant la caldera", -"Waiting_for_user_to_get_connected_to_WiFi": "Esperant que l'usuari es connecti a WiFi", -"Can't_add_unsupported_device": "No es pot afegir un dispositiu no compatible" -} + "Create_new_account": "Crea un nou compte", + "Actions_History": "Historial d'Accions", + "Empty_history": "Historial buit", + "History_Settings_Page": "Pàgina de Configuracions del'Historial", + "Lamps_Page": "Pàgina d'Làmpadas", + "Nom:_": "Nom: {}", + "Area:_": "Habitació: {}", + "Lamps_Settings_Page": "Pàgina de Configuració d'Illuminació", + "Welcome_to_your_Smart_Home": "Benvingut a la seva Casa Intelligent", + "Scene_Settings_Page": "Pàgina de Configuració d'Escenes", + "Move_to_blinds_full_settings_page": "Moveu a la pàgina de configuració de persianes", + "Blinds_Page": "Pàgina de Persianes", + "Down": "Baixar", + "Stop": "Parar", + "Up": "Pujar", + "Smart_Devices_Settings_Page": "Pàgina de Configuració de Dispositius Intelligents", + "Air_Conditioners": "Aires Condicionats", + "Blinds": "Persianes", + "Medical_Device": "Dispositiu Mèdic", + "Medical_Devices": "Dispositius Mèdics", + "Smart_Phone": "Telèfon Inteligent", + "Smart_Phones": "Telèfons Intelligents", + "Smart_Speakers": "Parlants Intelligents", + "Smart_Devices_page": "Pàgina de Dispositius Intelligents", + "History": "Historial", + "Scene": "Escena", + "Scenes": "Escenas", + "Lamps": "Làmpadas", + "Devices": "Dispositius", + "Email_is_required": "El Correu Electrònic és requerit", + "Email_cannot_contain_spaces": "El Correu Electrònic no pot contenir espais", + "Email_is_invalid": "El Correu Electrònic no és vàlid", + "Email": "Correu Electrònic", + "Password_is_required": "Contrasenya requerida", + "Password_cannot_contain_spaces": "La Contrasenya no pot contenir espais", + "Password_must_be_bigger_than__characters": "La Contrasenya ha de ser més llarga que {} caràcters", + "Password": "Contrasenya", + "Log_In": "Iniciar Sessió", + "Forgot_password": "Oblida't la teva contrasenya", + "Forgot_password?": "Has oblidat la contrasenya?", + "title": "Títol", + "number": "Número", + "IP_is_required": "IP és requerida", + "IP_syntax_is_incorrect": "La sintaxi de IP és incorrecta", + "Add_Smart_Device": "Afegir un Dispositiu Intelligent", + "Cancel": "Cancellar", + "Add": "Afegir", + "Light": "Llum", + "Device_ip:_": "IP del Dispositiu: {}", + "New_devices": "Nous dispositius", + "Add_devices": "Afegir dispositius", + "Device_type:_": "Tipus de Dispositiu: {}", + "Area_name_is_required": "El nom de l'habitació és requerit", + "Area_name:_": "Nom de l'habitació: {}", + "Device_name_is_required": "El nom del dispositiu és requerit", + "Device_name:_": "Nom del dispositiu: {}", + "Update": "Actualització", + "IP": "IP", + "This_is_firebase": "Això és firebase", + "Device_with_ip:_": "Dispositiu amb ip: {}", + "Update_WiFi_configuration": "Actualitzar la configuració del WiFi", + "WiFi_name_is_required": "El nom del WiFi és necessari", + "WiFi_Name": "Nom del WiFi", + "WiFi_password_is_required": "La contrasenya del WiFi és requerida", + "WiFi_Password": "Contrasenya del WiFi", + "Insert_WiFi_Credentials": "Presentar les Credencials de WiFi", + "Conditioners": "Acondicionadors", + "Medical": "Medic", + "Phones": "Telèfons", + "Speakers": "Parlantes", + "Send": "Enviar", + "All_Devices": "Tots els Dispositius", + "Summary": "Resumen", + "Switches": "Interruptors", + "Boilers": "Hervidoras", + "Lights": "Llums", + "RGBw_Lights": "Llums de RGBw", + "_Switches": "{} Interruptors", + "_SmartTvs": "{} Televisors Intelligents", + "_RGBW_Lights": "{} Llums de RGBw", + "_Lights": "{} Llums", + "_Boilers": "{} Hervidoras", + "_Blinds": "{} Persianes", + "Areas": "Habitacions", + "_device": "{} dispositiu", + "_devices": "{} dispositius", + "_SmartPlugs": "{} Enchufes Inteligentes", + "On": "Ences", + "Off": "Apagat", + "Color": "Color", + "White": "Blanc", + "Area": "Àrea", + "Areas": "Àrees", + "Automations": "Automatitzacions", + "Scenes_In_Folder": "Escenes a la Carpeta", + "Select": "Seleccionar", + "Exist": "Existeix", + "OK": "D'acord", + "Nothing": "Res", + "No_need_here": "No és necessari aquí", + "Do_not_need": "No es necessita", + "Finish": "Acabar", + "Select_Purposes_Of_The_Area": "Seleccioneu la Proposta d'aquesta Àrea", + "Pulling_Up_all_blinds": "Aixecant totes les persianes", + "Stopping_all_blinds": "Aturar totes les persianes", + "Pulling_down_all_blinds": "Abaixant totes les persianes", + "Turning_On_boiler": "Encenent la caldera", + "Turning_Off_boiler": "Apagant la caldera", + "Waiting_for_user_to_get_connected_to_WiFi": "Esperant que l'usuari es connecti a WiFi", + "Can't_add_unsupported_device": "No es pot afegir un dispositiu no compatible" +} \ No newline at end of file diff --git a/assets/translations/cs-CZ.json b/assets/translations/cs-CZ.json index 2346aec0e..674f0a435 100644 --- a/assets/translations/cs-CZ.json +++ b/assets/translations/cs-CZ.json @@ -5,7 +5,7 @@ "History_Settings_Page": "Stránka nastavení historie", "Lamps_Page": "Stránka s lampami", "Name:_": "Název: {}", - "Room:_": "Místnost: {}", + "Area:_": "Místnost: {}", "Lamps_Settings_Page": "Stránka nastavení lamp", "Welcome_to_your_Smart_Home": "Vítejte ve svém chytrém domově", "Scene_Settings_Page": "Stránka nastavení scény", @@ -47,8 +47,8 @@ "New_devices": "Nová zařízení", "Add_devices": "Přidat zařízení", "Device_type:_": "Typ zařízení: {}", - "Room_name_is_required": "Název místnosti je vyžadován", - "Room_name:": "Název místnosti:", + "Area_name_is_required": "Název místnosti je vyžadován", + "Area_name:": "Název místnosti:", "Device_name_is_required": "Název zařízení je vyžadován", "Device_name:": "Název zařízení:", "Update": "Aktualizovat", diff --git a/assets/translations/da-DK.json b/assets/translations/da-DK.json index 415c1606f..12c638751 100644 --- a/assets/translations/da-DK.json +++ b/assets/translations/da-DK.json @@ -5,7 +5,7 @@ "History_Settings_Page": "Indstillingsside for historik", "Lamps_Page": "Side lamper", "Name:_": "Navn: {}", - "Room:_": "Værelse: {}", + "Area:_": "Værelse: {}", "Lamps_Settings_Page": "Indstillingsside for lamper", "Welcome_to_your_Smart_Home": "Velkommen til dit smarte hjem", "Scene_Settings_Page": "Siden med sceneindstillinger", @@ -51,8 +51,8 @@ "New_devices": "Nye enheder", "Add_devices": "Tilføj enheder", "Device_type:_": "Enhedstype: {}", - "Room_name_is_required": "Værelsesnavn er påkrævet", - "Room_name:": "Værelsesnavn:", + "Area_name_is_required": "Værelsesnavn er påkrævet", + "Area_name:": "Værelsesnavn:", "Device_name_is_required": "Enhedens navn er påkrævet", "Device_name:": "Enhedsnavn:", "Update": "Opdatering", @@ -82,7 +82,7 @@ "_Lights": "{} Lys", "_Boilers": "{} Kedler", "_Blinds": "{} Persienner", - "Rooms": "Værelser", + "Areas": "Værelser", "_device": "{} enhed", "_devices": "{} enheder", "_SmartPlugs": "{} SmartPlugs", @@ -109,4 +109,4 @@ "Turning_Off_boiler": "Sluk for kedlen", "Waiting_for_user_to_get_connected_to_WiFi": "Venter på, at brugeren får forbindelse til WiFi", "Can't_add_unsupported_device": "Kan ikke tilføje ikke-understøttet enhed" -} +} \ No newline at end of file diff --git a/assets/translations/de-AT.json b/assets/translations/de-AT.json index f538549c7..5ffd0d871 100644 --- a/assets/translations/de-AT.json +++ b/assets/translations/de-AT.json @@ -5,7 +5,7 @@ "History_Settings_Page": "Verlaufseinstellungen", "Lamps_Page": "Lampen-Seite", "Name:_": "Name: {}", - "Room:_": "Raum: {}", + "Area:_": "Raum: {}", "Lamps_Settings_Page": "Lampen-Einstellungsseite", "Welcome_to_your_Smart_Home": "Willkommen in deinem Smart Home", "Scene_Settings_Page": "Szenen-Einstellungsseite", @@ -51,8 +51,8 @@ "New_devices": "Neue Geräte", "Add_devices": "Geräte hinzufügen", "Device_type:_": "Gerätetyp: {}", - "Room_name_is_required": "Raumname muss angegeben werden", - "Room_name:": "Raumname:", + "Area_name_is_required": "Raumname muss angegeben werden", + "Area_name:": "Raumname:", "Device_name_is_required": "Gerätename muss angegeben werden", "Device_name:": "Gerätename:", "Update": "Aktualisierung", @@ -82,7 +82,7 @@ "_Lights": "{} Lichter", "_Boilers": "{} Boiler", "_Blinds": "{} Rollos", - "Rooms": "Räume", + "Areas": "Räume", "_device": "{} Gerät", "_devices": "{} Geräte", "_SmartPlugs": "{} Smarte Steckdosen", @@ -109,4 +109,4 @@ "Turning_Off_boiler": "Boiler ausschalten", "Waiting_for_user_to_get_connected_to_WiFi": "Warten auf Verbindung des Users mit WIFI", "Can't_add_unsupported_device": "Nicht unterstütztes Gerät kann nicht hinzugefügt werden" -} +} \ No newline at end of file diff --git a/assets/translations/de-DE.json b/assets/translations/de-DE.json index 4c0bc0a11..a1d12ca5f 100644 --- a/assets/translations/de-DE.json +++ b/assets/translations/de-DE.json @@ -5,7 +5,7 @@ "History_Settings_Page": "Verlaufs Einstellungsseite", "Lamps_Page": "Lampen Seite", "Name:_": "Name: {}", - "Room:_": "Raum: {}", + "Area:_": "Raum: {}", "Lamps_Settings_Page": "Lampen Einstellungsseite", "Welcome_to_your_Smart_Home": "Willkommen zu deinem Smart Home", "Scene_Settings_Page": "Szenerien Einstellungsseite", @@ -50,12 +50,12 @@ "New_devices": "Neues Gerät", "Add_devices": "Geräte hinzufügen", "Device_type:_": "Gerätetyp: {}", - "Room_name_is_required": "Raumname is erforderlich", - "Room_name:": "Raumname:", + "Area_name_is_required": "Raumname is erforderlich", + "Area_name:": "Raumname:", "Device_name_is_required": "Gerätename ist erforderlich", "Device_name:": "Gerätename:", "Update": "Aktualisieren", "IP": "IP-Adresse", "This_is_firebase": "Das ist Firebase", "Device_with_ip:_": "Gerät mit IP-Adresse: {}" -} +} \ No newline at end of file diff --git a/assets/translations/dv-MV.json b/assets/translations/dv-MV.json index cb3d45a7c..b1c23736f 100644 --- a/assets/translations/dv-MV.json +++ b/assets/translations/dv-MV.json @@ -5,7 +5,7 @@ "History_Settings_Page": "ތާރީޚު ސެޓިންގސް ޕޭޖް", "Lamps_Page": "ލެމްޕްސް ޕޭޖް", "Name:_": "ނަން: {}", - "Room:_": "ކޮޓަރި: {}", + "Area:_": "ކޮޓަރި: {}", "Lamps_Settings_Page": "ލެމްޕްސް ސެޓިންގސް ޕޭޖް", "Welcome_to_your_Smart_Home": "ތިޔަބޭފުޅުންގެ ސްމާޓް ހޯމަށް މަރުހަބާ", "Scene_Settings_Page": "މަންޒަރު ސެޓިންގސް ޕޭޖް", @@ -51,8 +51,8 @@ "New_devices": "އައު ޑިވައިސްތަކެވެ", "Add_devices": "ޑިވައިސްތައް އިތުރުކުރުން", "Device_type:_": "ޑިވައިސް ވައްތަރު: {}", - "Room_name_is_required": "ކޮޓަރީގެ ނަން ބޭނުންވެއެވެ", - "Room_name:": "ކޮޓަރީގެ ނަން:", + "Area_name_is_required": "ކޮޓަރީގެ ނަން ބޭނުންވެއެވެ", + "Area_name:": "ކޮޓަރީގެ ނަން:", "Device_name_is_required": "ޑިވައިސް ނަން ބޭނުންވެއެވެ", "Device_name:": "ޑިވައިސްގެ ނަން:", "Update": "އަޕްޑޭޓް", @@ -82,7 +82,7 @@ "_Lights": "{} ލައިޓްތައް", "_Boilers": "{} ބޮއިލަރސް", "_Blinds": "{} ބްލައިންޑްސް", - "Rooms": "ކޮޓަރިތަކެވެ", + "Areas": "ކޮޓަރިތަކެވެ", "_device": "{} ޑިވައިސް", "_devices": "{} ޑިވައިސްތަކެވެ", "_SmartPlugs": "{} ސްމާޓްޕްލަގްސް", @@ -109,4 +109,4 @@ "Turning_Off_boiler": "ބޮއިލަރ ނިއްވާލުން", "Waiting_for_user_to_get_connected_to_WiFi": "ޔޫޒަރ ވައިފައި އާއި ގުޅޭނެ އިރަކަށް އިންތިޒާރު ކުރަމުންނެވެ", "Can't_add_unsupported_device": "ސަޕޯޓް ނުކުރާ ޑިވައިސް އިތުރު ނުކުރެވޭނެ" -} +} \ No newline at end of file diff --git a/assets/translations/en-AU.json b/assets/translations/en-AU.json index a319c5e5f..ad7399d97 100644 --- a/assets/translations/en-AU.json +++ b/assets/translations/en-AU.json @@ -5,7 +5,7 @@ "History_Settings_Page": "History Settings Page", "Lamps_Page": "Lamps Page", "Name:_": "Name: {}", - "Room:_": "Room: {}", + "Area:_": "Area: {}", "Lamps_Settings_Page": "Lamps Settings Page", "Welcome_to_your_Smart_Home": "Welcome to your Smart Home", "Scene_Settings_Page": "Scene Settings Page", @@ -51,8 +51,8 @@ "New_devices": "New devices", "Add_devices": "Add devices", "Device_type:_": "Device type: {}", - "Room_name_is_required": "Room name is required", - "Room_name:": "Room name:", + "Area_name_is_required": "Area name is required", + "Area_name:": "Area name:", "Device_name_is_required": "Device name is required", "Device_name:": "Device name:", "Update": "Update", @@ -82,7 +82,7 @@ "_Lights": "{} Lights", "_Boilers": "{} Boilers", "_Blinds": "{} Blinds", - "Rooms": "Rooms", + "Areas": "Areas", "_device": "{} device", "_devices": "{} devices", "_SmartPlugs": "{} SmartPlugs", @@ -109,4 +109,4 @@ "Turning_Off_boiler": "Turning Off boiler", "Waiting_for_user_to_get_connected_to_WiFi": "Waiting for user to get connected to WiFi", "Can't_add_unsupported_device": "Can't add unsupported device" -} +} \ No newline at end of file diff --git a/assets/translations/en-BB.json b/assets/translations/en-BB.json index a319c5e5f..ad7399d97 100644 --- a/assets/translations/en-BB.json +++ b/assets/translations/en-BB.json @@ -5,7 +5,7 @@ "History_Settings_Page": "History Settings Page", "Lamps_Page": "Lamps Page", "Name:_": "Name: {}", - "Room:_": "Room: {}", + "Area:_": "Area: {}", "Lamps_Settings_Page": "Lamps Settings Page", "Welcome_to_your_Smart_Home": "Welcome to your Smart Home", "Scene_Settings_Page": "Scene Settings Page", @@ -51,8 +51,8 @@ "New_devices": "New devices", "Add_devices": "Add devices", "Device_type:_": "Device type: {}", - "Room_name_is_required": "Room name is required", - "Room_name:": "Room name:", + "Area_name_is_required": "Area name is required", + "Area_name:": "Area name:", "Device_name_is_required": "Device name is required", "Device_name:": "Device name:", "Update": "Update", @@ -82,7 +82,7 @@ "_Lights": "{} Lights", "_Boilers": "{} Boilers", "_Blinds": "{} Blinds", - "Rooms": "Rooms", + "Areas": "Areas", "_device": "{} device", "_devices": "{} devices", "_SmartPlugs": "{} SmartPlugs", @@ -109,4 +109,4 @@ "Turning_Off_boiler": "Turning Off boiler", "Waiting_for_user_to_get_connected_to_WiFi": "Waiting for user to get connected to WiFi", "Can't_add_unsupported_device": "Can't add unsupported device" -} +} \ No newline at end of file diff --git a/assets/translations/en-BD.json b/assets/translations/en-BD.json index a319c5e5f..ad7399d97 100644 --- a/assets/translations/en-BD.json +++ b/assets/translations/en-BD.json @@ -5,7 +5,7 @@ "History_Settings_Page": "History Settings Page", "Lamps_Page": "Lamps Page", "Name:_": "Name: {}", - "Room:_": "Room: {}", + "Area:_": "Area: {}", "Lamps_Settings_Page": "Lamps Settings Page", "Welcome_to_your_Smart_Home": "Welcome to your Smart Home", "Scene_Settings_Page": "Scene Settings Page", @@ -51,8 +51,8 @@ "New_devices": "New devices", "Add_devices": "Add devices", "Device_type:_": "Device type: {}", - "Room_name_is_required": "Room name is required", - "Room_name:": "Room name:", + "Area_name_is_required": "Area name is required", + "Area_name:": "Area name:", "Device_name_is_required": "Device name is required", "Device_name:": "Device name:", "Update": "Update", @@ -82,7 +82,7 @@ "_Lights": "{} Lights", "_Boilers": "{} Boilers", "_Blinds": "{} Blinds", - "Rooms": "Rooms", + "Areas": "Areas", "_device": "{} device", "_devices": "{} devices", "_SmartPlugs": "{} SmartPlugs", @@ -109,4 +109,4 @@ "Turning_Off_boiler": "Turning Off boiler", "Waiting_for_user_to_get_connected_to_WiFi": "Waiting for user to get connected to WiFi", "Can't_add_unsupported_device": "Can't add unsupported device" -} +} \ No newline at end of file diff --git a/assets/translations/en-CA.json b/assets/translations/en-CA.json index a319c5e5f..ad7399d97 100644 --- a/assets/translations/en-CA.json +++ b/assets/translations/en-CA.json @@ -5,7 +5,7 @@ "History_Settings_Page": "History Settings Page", "Lamps_Page": "Lamps Page", "Name:_": "Name: {}", - "Room:_": "Room: {}", + "Area:_": "Area: {}", "Lamps_Settings_Page": "Lamps Settings Page", "Welcome_to_your_Smart_Home": "Welcome to your Smart Home", "Scene_Settings_Page": "Scene Settings Page", @@ -51,8 +51,8 @@ "New_devices": "New devices", "Add_devices": "Add devices", "Device_type:_": "Device type: {}", - "Room_name_is_required": "Room name is required", - "Room_name:": "Room name:", + "Area_name_is_required": "Area name is required", + "Area_name:": "Area name:", "Device_name_is_required": "Device name is required", "Device_name:": "Device name:", "Update": "Update", @@ -82,7 +82,7 @@ "_Lights": "{} Lights", "_Boilers": "{} Boilers", "_Blinds": "{} Blinds", - "Rooms": "Rooms", + "Areas": "Areas", "_device": "{} device", "_devices": "{} devices", "_SmartPlugs": "{} SmartPlugs", @@ -109,4 +109,4 @@ "Turning_Off_boiler": "Turning Off boiler", "Waiting_for_user_to_get_connected_to_WiFi": "Waiting for user to get connected to WiFi", "Can't_add_unsupported_device": "Can't add unsupported device" -} +} \ No newline at end of file diff --git a/assets/translations/en-FJ.json b/assets/translations/en-FJ.json index 52be260e1..45aa260f7 100644 --- a/assets/translations/en-FJ.json +++ b/assets/translations/en-FJ.json @@ -5,7 +5,7 @@ "History_Settings_Page": "History Settings Page", "Lamps_Page": "Lamps Page", "Name:_": "Name: {}", - "Room:_": "Room: {}", + "Area:_": "Area: {}", "Lamps_Settings_Page": "Lamps Settings Page", "Welcome_to_your_Smart_Home": "Welcome to your Smart Home", "Scene_Settings_Page": "Scene Settings Page", @@ -51,8 +51,8 @@ "New_devices": "New devices", "Add_devices": "Add devices", "Device_type:_": "Device type: {}", - "Room_name_is_required": "Room name is required", - "Room_name:": "Room name:", + "Area_name_is_required": "Area name is required", + "Area_name:": "Area name:", "Device_name_is_required": "Device name is required", "Device_name:": "Device name:", "Update": "Update", @@ -70,4 +70,4 @@ "Phones": "Phones", "Speakers": "Speakers", "Send": "Send" -} +} \ No newline at end of file diff --git a/assets/translations/en-GB.json b/assets/translations/en-GB.json index b355e976c..d7ebf5a9e 100644 --- a/assets/translations/en-GB.json +++ b/assets/translations/en-GB.json @@ -1,4 +1,3 @@ - { "Create_new_account": "Create new account", "Actions_History": "Actions History", @@ -6,7 +5,7 @@ "History_Settings_Page": "History Settings Page", "Lamps_Page": "Lamps Page", "Name:_": "Name: {}", - "Room:_": "Room: {}", + "Area:_": "Area: {}", "Lamps_Settings_Page": "Lamps Settings Page", "Welcome_to_your_Smart_Home": "Welcome to your Smart Home", "Scene_Settings_Page": "Scene Settings Page", @@ -49,8 +48,8 @@ "New_devices": "New devices", "Add_devices": "Add devices", "Device_type:_": "Device type: {}", - "Room_name_is_required": "Room name is required", - "Room_name:": "Room name:", + "Area_name_is_required": "Area name is required", + "Area_name:": "Area name:", "Device_name_is_required": "Device name is required", "Device_name:": "Device name:", "Update": "Update", @@ -58,4 +57,4 @@ "This_is_firebase": "This is firebase", "Device_with_ip:_": "Device with ip: {}", "Send": "Send" -} +} \ No newline at end of file diff --git a/assets/translations/en-IM.json b/assets/translations/en-IM.json index a319c5e5f..ad7399d97 100644 --- a/assets/translations/en-IM.json +++ b/assets/translations/en-IM.json @@ -5,7 +5,7 @@ "History_Settings_Page": "History Settings Page", "Lamps_Page": "Lamps Page", "Name:_": "Name: {}", - "Room:_": "Room: {}", + "Area:_": "Area: {}", "Lamps_Settings_Page": "Lamps Settings Page", "Welcome_to_your_Smart_Home": "Welcome to your Smart Home", "Scene_Settings_Page": "Scene Settings Page", @@ -51,8 +51,8 @@ "New_devices": "New devices", "Add_devices": "Add devices", "Device_type:_": "Device type: {}", - "Room_name_is_required": "Room name is required", - "Room_name:": "Room name:", + "Area_name_is_required": "Area name is required", + "Area_name:": "Area name:", "Device_name_is_required": "Device name is required", "Device_name:": "Device name:", "Update": "Update", @@ -82,7 +82,7 @@ "_Lights": "{} Lights", "_Boilers": "{} Boilers", "_Blinds": "{} Blinds", - "Rooms": "Rooms", + "Areas": "Areas", "_device": "{} device", "_devices": "{} devices", "_SmartPlugs": "{} SmartPlugs", @@ -109,4 +109,4 @@ "Turning_Off_boiler": "Turning Off boiler", "Waiting_for_user_to_get_connected_to_WiFi": "Waiting for user to get connected to WiFi", "Can't_add_unsupported_device": "Can't add unsupported device" -} +} \ No newline at end of file diff --git a/assets/translations/en-IN.json b/assets/translations/en-IN.json index a319c5e5f..ad7399d97 100644 --- a/assets/translations/en-IN.json +++ b/assets/translations/en-IN.json @@ -5,7 +5,7 @@ "History_Settings_Page": "History Settings Page", "Lamps_Page": "Lamps Page", "Name:_": "Name: {}", - "Room:_": "Room: {}", + "Area:_": "Area: {}", "Lamps_Settings_Page": "Lamps Settings Page", "Welcome_to_your_Smart_Home": "Welcome to your Smart Home", "Scene_Settings_Page": "Scene Settings Page", @@ -51,8 +51,8 @@ "New_devices": "New devices", "Add_devices": "Add devices", "Device_type:_": "Device type: {}", - "Room_name_is_required": "Room name is required", - "Room_name:": "Room name:", + "Area_name_is_required": "Area name is required", + "Area_name:": "Area name:", "Device_name_is_required": "Device name is required", "Device_name:": "Device name:", "Update": "Update", @@ -82,7 +82,7 @@ "_Lights": "{} Lights", "_Boilers": "{} Boilers", "_Blinds": "{} Blinds", - "Rooms": "Rooms", + "Areas": "Areas", "_device": "{} device", "_devices": "{} devices", "_SmartPlugs": "{} SmartPlugs", @@ -109,4 +109,4 @@ "Turning_Off_boiler": "Turning Off boiler", "Waiting_for_user_to_get_connected_to_WiFi": "Waiting for user to get connected to WiFi", "Can't_add_unsupported_device": "Can't add unsupported device" -} +} \ No newline at end of file diff --git a/assets/translations/en-JP.json b/assets/translations/en-JP.json index dfc6d2b6e..ad7399d97 100644 --- a/assets/translations/en-JP.json +++ b/assets/translations/en-JP.json @@ -1,112 +1,112 @@ { - "Create_new_account": "Create new account", - "Actions_History": "Actions History", - "Empty_history": "Empty history", - "History_Settings_Page": "History Settings Page", - "Lamps_Page": "Lamps Page", - "Name:_": "Name: {}", - "Room:_": "Room: {}", - "Lamps_Settings_Page": "Lamps Settings Page", - "Welcome_to_your_Smart_Home": "Welcome to your Smart Home", - "Scene_Settings_Page": "Scene Settings Page", - "Move_to_blinds_full_settings_page": "Move to blinds full settings page", - "Blinds_Page": "Blinds Page", - "Down": "Down", - "Stop": "Stop", - "Up": "Up", - "Smart_Devices_Settings_Page": "Smart Devices Settings Page", - "Air_Conditioners": "Air Conditioners", - "Blinds": "Blinds", - "Medical_Device": "Medical Device", - "Medical_Devices": "Medical Devices", - "Smart_Phone": "Smart Phone", - "Smart_Phones": "Smart Phones", - "Smart_Speakers": "Smart Speakers", - "Smart_Devices_page": "Smart Devices page", - "History": "History", - "Scene": "Scene", - "Scenes": "Scenes", - "Lamps": "Lamps", - "Devices": "Devices", - "Email_is_required": "Email is required", - "Email_cannot_contain_spaces": "Email cannot contain spaces", - "Email_is_invalid": "Email is invalid", - "Email": "Email", - "Password_is_required": "Password is required", - "Password_cannot_contain_spaces": "Password cannot contain spaces", - "Password_must_be_bigger_than__characters": "Password must be bigger than {} characters", - "Password": "Password", - "Log_In": "Log In", - "Forgot_password": "Forgot Password", - "Forgot_password?": "Forgot password?", - "title": "title", - "number": "number", - "IP_is_required": "IP is required", - "IP_syntax_is_incorrect": "IP syntax is incorrect", - "Add_Smart_Device": "Add Smart Device", - "Cancel": "Cancel", - "Add": "Add", - "Light": "Light", - "Device_ip:_": "Device ip: {}", - "New_devices": "New devices", - "Add_devices": "Add devices", - "Device_type:_": "Device type: {}", - "Room_name_is_required": "Room name is required", - "Room_name:": "Room name:", - "Device_name_is_required": "Device name is required", - "Device_name:": "Device name:", - "Update": "Update", - "IP": "IP", - "This_is_firebase": "This is firebase", - "Device_with_ip:_": "Device with ip: {}", - "Update_WiFi_configuration": "Update WiFi configuration", - "WiFi_name_is_required": "WiFi name is required", - "WiFi_Name": "WiFi Name", - "WiFi_password_is_required": "WiFi password is required", - "WiFi_Password": "WiFi Password", - "Insert_WiFi_Credentials": "Insert WiFi Credentials", - "Conditioners": "Conditioners", - "Medical": "Medical", - "Phones": "Phones", - "Speakers": "Speakers", - "Send": "Send", - "All_Devices": "All Devices", - "Summary": "Summary", - "Switches": "Switches", - "Boilers": "Boilers", - "Lights": "Lights", - "RGBw_Lights": "RGBw Lights", - "_Switches": "{} Switches", - "_SmartTvs": "{} SmartTvs", - "_RGBW_Lights": "{} RGBW Lights", - "_Lights": "{} Lights", - "_Boilers": "{} Boilers", - "_Blinds": "{} Blinds", - "Rooms": "Rooms", - "_device": "{} device", - "_devices": "{} devices", - "_SmartPlugs": "{} SmartPlugs", - "On": "On", - "Off": "Off", - "Color": "Color", - "White": "White", - "Area": "Area", - "Areas": "Areas", - "Automations": "Automations", - "Scenes_In_Folder": "Scenes In Folder", - "Select": "Select", - "Exist": "Exist", - "OK": "OK", - "Nothing": "Nothing", - "No_need_here": "No need here", - "Do_not_need": "Do not need", - "Finish": "Finish", - "Select_Purposes_Of_The_Area": "Select Purposes Of The Area", - "Pulling_Up_all_blinds": "Pulling Up all blinds", - "Stopping_all_blinds": "Stopping all blinds", - "Pulling_down_all_blinds": "Pulling down all blinds", - "Turning_On_boiler": "Turning On boiler", - "Turning_Off_boiler": "Turning Off boiler", - "Waiting_for_user_to_get_connected_to_WiFi": "Waiting for user to get connected to WiFi", - "Can't_add_unsupported_device": "Can't add unsupported device" - } \ No newline at end of file + "Create_new_account": "Create new account", + "Actions_History": "Actions History", + "Empty_history": "Empty history", + "History_Settings_Page": "History Settings Page", + "Lamps_Page": "Lamps Page", + "Name:_": "Name: {}", + "Area:_": "Area: {}", + "Lamps_Settings_Page": "Lamps Settings Page", + "Welcome_to_your_Smart_Home": "Welcome to your Smart Home", + "Scene_Settings_Page": "Scene Settings Page", + "Move_to_blinds_full_settings_page": "Move to blinds full settings page", + "Blinds_Page": "Blinds Page", + "Down": "Down", + "Stop": "Stop", + "Up": "Up", + "Smart_Devices_Settings_Page": "Smart Devices Settings Page", + "Air_Conditioners": "Air Conditioners", + "Blinds": "Blinds", + "Medical_Device": "Medical Device", + "Medical_Devices": "Medical Devices", + "Smart_Phone": "Smart Phone", + "Smart_Phones": "Smart Phones", + "Smart_Speakers": "Smart Speakers", + "Smart_Devices_page": "Smart Devices page", + "History": "History", + "Scene": "Scene", + "Scenes": "Scenes", + "Lamps": "Lamps", + "Devices": "Devices", + "Email_is_required": "Email is required", + "Email_cannot_contain_spaces": "Email cannot contain spaces", + "Email_is_invalid": "Email is invalid", + "Email": "Email", + "Password_is_required": "Password is required", + "Password_cannot_contain_spaces": "Password cannot contain spaces", + "Password_must_be_bigger_than__characters": "Password must be bigger than {} characters", + "Password": "Password", + "Log_In": "Log In", + "Forgot_password": "Forgot Password", + "Forgot_password?": "Forgot password?", + "title": "title", + "number": "number", + "IP_is_required": "IP is required", + "IP_syntax_is_incorrect": "IP syntax is incorrect", + "Add_Smart_Device": "Add Smart Device", + "Cancel": "Cancel", + "Add": "Add", + "Light": "Light", + "Device_ip:_": "Device ip: {}", + "New_devices": "New devices", + "Add_devices": "Add devices", + "Device_type:_": "Device type: {}", + "Area_name_is_required": "Area name is required", + "Area_name:": "Area name:", + "Device_name_is_required": "Device name is required", + "Device_name:": "Device name:", + "Update": "Update", + "IP": "IP", + "This_is_firebase": "This is firebase", + "Device_with_ip:_": "Device with ip: {}", + "Update_WiFi_configuration": "Update WiFi configuration", + "WiFi_name_is_required": "WiFi name is required", + "WiFi_Name": "WiFi Name", + "WiFi_password_is_required": "WiFi password is required", + "WiFi_Password": "WiFi Password", + "Insert_WiFi_Credentials": "Insert WiFi Credentials", + "Conditioners": "Conditioners", + "Medical": "Medical", + "Phones": "Phones", + "Speakers": "Speakers", + "Send": "Send", + "All_Devices": "All Devices", + "Summary": "Summary", + "Switches": "Switches", + "Boilers": "Boilers", + "Lights": "Lights", + "RGBw_Lights": "RGBw Lights", + "_Switches": "{} Switches", + "_SmartTvs": "{} SmartTvs", + "_RGBW_Lights": "{} RGBW Lights", + "_Lights": "{} Lights", + "_Boilers": "{} Boilers", + "_Blinds": "{} Blinds", + "Areas": "Areas", + "_device": "{} device", + "_devices": "{} devices", + "_SmartPlugs": "{} SmartPlugs", + "On": "On", + "Off": "Off", + "Color": "Color", + "White": "White", + "Area": "Area", + "Areas": "Areas", + "Automations": "Automations", + "Scenes_In_Folder": "Scenes In Folder", + "Select": "Select", + "Exist": "Exist", + "OK": "OK", + "Nothing": "Nothing", + "No_need_here": "No need here", + "Do_not_need": "Do not need", + "Finish": "Finish", + "Select_Purposes_Of_The_Area": "Select Purposes Of The Area", + "Pulling_Up_all_blinds": "Pulling Up all blinds", + "Stopping_all_blinds": "Stopping all blinds", + "Pulling_down_all_blinds": "Pulling down all blinds", + "Turning_On_boiler": "Turning On boiler", + "Turning_Off_boiler": "Turning Off boiler", + "Waiting_for_user_to_get_connected_to_WiFi": "Waiting for user to get connected to WiFi", + "Can't_add_unsupported_device": "Can't add unsupported device" +} \ No newline at end of file diff --git a/assets/translations/en-LK.json b/assets/translations/en-LK.json index 52be260e1..45aa260f7 100644 --- a/assets/translations/en-LK.json +++ b/assets/translations/en-LK.json @@ -5,7 +5,7 @@ "History_Settings_Page": "History Settings Page", "Lamps_Page": "Lamps Page", "Name:_": "Name: {}", - "Room:_": "Room: {}", + "Area:_": "Area: {}", "Lamps_Settings_Page": "Lamps Settings Page", "Welcome_to_your_Smart_Home": "Welcome to your Smart Home", "Scene_Settings_Page": "Scene Settings Page", @@ -51,8 +51,8 @@ "New_devices": "New devices", "Add_devices": "Add devices", "Device_type:_": "Device type: {}", - "Room_name_is_required": "Room name is required", - "Room_name:": "Room name:", + "Area_name_is_required": "Area name is required", + "Area_name:": "Area name:", "Device_name_is_required": "Device name is required", "Device_name:": "Device name:", "Update": "Update", @@ -70,4 +70,4 @@ "Phones": "Phones", "Speakers": "Speakers", "Send": "Send" -} +} \ No newline at end of file diff --git a/assets/translations/en-NZ.json b/assets/translations/en-NZ.json index a319c5e5f..ad7399d97 100644 --- a/assets/translations/en-NZ.json +++ b/assets/translations/en-NZ.json @@ -5,7 +5,7 @@ "History_Settings_Page": "History Settings Page", "Lamps_Page": "Lamps Page", "Name:_": "Name: {}", - "Room:_": "Room: {}", + "Area:_": "Area: {}", "Lamps_Settings_Page": "Lamps Settings Page", "Welcome_to_your_Smart_Home": "Welcome to your Smart Home", "Scene_Settings_Page": "Scene Settings Page", @@ -51,8 +51,8 @@ "New_devices": "New devices", "Add_devices": "Add devices", "Device_type:_": "Device type: {}", - "Room_name_is_required": "Room name is required", - "Room_name:": "Room name:", + "Area_name_is_required": "Area name is required", + "Area_name:": "Area name:", "Device_name_is_required": "Device name is required", "Device_name:": "Device name:", "Update": "Update", @@ -82,7 +82,7 @@ "_Lights": "{} Lights", "_Boilers": "{} Boilers", "_Blinds": "{} Blinds", - "Rooms": "Rooms", + "Areas": "Areas", "_device": "{} device", "_devices": "{} devices", "_SmartPlugs": "{} SmartPlugs", @@ -109,4 +109,4 @@ "Turning_Off_boiler": "Turning Off boiler", "Waiting_for_user_to_get_connected_to_WiFi": "Waiting for user to get connected to WiFi", "Can't_add_unsupported_device": "Can't add unsupported device" -} +} \ No newline at end of file diff --git a/assets/translations/en-PK.json b/assets/translations/en-PK.json index a319c5e5f..ad7399d97 100644 --- a/assets/translations/en-PK.json +++ b/assets/translations/en-PK.json @@ -5,7 +5,7 @@ "History_Settings_Page": "History Settings Page", "Lamps_Page": "Lamps Page", "Name:_": "Name: {}", - "Room:_": "Room: {}", + "Area:_": "Area: {}", "Lamps_Settings_Page": "Lamps Settings Page", "Welcome_to_your_Smart_Home": "Welcome to your Smart Home", "Scene_Settings_Page": "Scene Settings Page", @@ -51,8 +51,8 @@ "New_devices": "New devices", "Add_devices": "Add devices", "Device_type:_": "Device type: {}", - "Room_name_is_required": "Room name is required", - "Room_name:": "Room name:", + "Area_name_is_required": "Area name is required", + "Area_name:": "Area name:", "Device_name_is_required": "Device name is required", "Device_name:": "Device name:", "Update": "Update", @@ -82,7 +82,7 @@ "_Lights": "{} Lights", "_Boilers": "{} Boilers", "_Blinds": "{} Blinds", - "Rooms": "Rooms", + "Areas": "Areas", "_device": "{} device", "_devices": "{} devices", "_SmartPlugs": "{} SmartPlugs", @@ -109,4 +109,4 @@ "Turning_Off_boiler": "Turning Off boiler", "Waiting_for_user_to_get_connected_to_WiFi": "Waiting for user to get connected to WiFi", "Can't_add_unsupported_device": "Can't add unsupported device" -} +} \ No newline at end of file diff --git a/assets/translations/en-PR.json b/assets/translations/en-PR.json index 858f5b5c5..456252790 100644 --- a/assets/translations/en-PR.json +++ b/assets/translations/en-PR.json @@ -5,7 +5,7 @@ "History_Settings_Page": "History Settings Page", "Lamps_Page": "Lamps Page", "Name:_": "Name: {}", - "Room:_": "Room: {}", + "Area:_": "Area: {}", "Lamps_Settings_Page": "Lamps Settings Page", "Welcome_to_your_Smart_Home": "Welcome to your Smart Home", "Scene_Settings_Page": "Scene Settings Page", @@ -51,8 +51,8 @@ "New_devices": "New devices", "Add_devices": "Add devices", "Device_type:_": "Device type: {}", - "Room_name_is_required": "Room name is required", - "Room_name:": "Room name:", + "Area_name_is_required": "Area name is required", + "Area_name:": "Area name:", "Device_name_is_required": "Device name is required", "Device_name:": "Device name:", "Update": "Update", @@ -82,7 +82,7 @@ "_Lights": "{} Lights", "_Boilers": "{} Boilers", "_Blinds": "{} Blinds", - "Rooms": "Rooms", + "Areas": "Areas", "_device": "{} device", "_devices": "{} devices", "_SmartPlugs": "{} SmartPlugs", @@ -109,4 +109,4 @@ "Turning_Off_boiler": "Turning Off boiler", "Waiting_for_user_to_get_connected_to_WiFi": "Waiting for user to get connected to WiFi", "Can't_add_unsupported_device": "Can't add unsupported device" -} +} \ No newline at end of file diff --git a/assets/translations/en-SG.json b/assets/translations/en-SG.json index a319c5e5f..ad7399d97 100644 --- a/assets/translations/en-SG.json +++ b/assets/translations/en-SG.json @@ -5,7 +5,7 @@ "History_Settings_Page": "History Settings Page", "Lamps_Page": "Lamps Page", "Name:_": "Name: {}", - "Room:_": "Room: {}", + "Area:_": "Area: {}", "Lamps_Settings_Page": "Lamps Settings Page", "Welcome_to_your_Smart_Home": "Welcome to your Smart Home", "Scene_Settings_Page": "Scene Settings Page", @@ -51,8 +51,8 @@ "New_devices": "New devices", "Add_devices": "Add devices", "Device_type:_": "Device type: {}", - "Room_name_is_required": "Room name is required", - "Room_name:": "Room name:", + "Area_name_is_required": "Area name is required", + "Area_name:": "Area name:", "Device_name_is_required": "Device name is required", "Device_name:": "Device name:", "Update": "Update", @@ -82,7 +82,7 @@ "_Lights": "{} Lights", "_Boilers": "{} Boilers", "_Blinds": "{} Blinds", - "Rooms": "Rooms", + "Areas": "Areas", "_device": "{} device", "_devices": "{} devices", "_SmartPlugs": "{} SmartPlugs", @@ -109,4 +109,4 @@ "Turning_Off_boiler": "Turning Off boiler", "Waiting_for_user_to_get_connected_to_WiFi": "Waiting for user to get connected to WiFi", "Can't_add_unsupported_device": "Can't add unsupported device" -} +} \ No newline at end of file diff --git a/assets/translations/en-TT.json b/assets/translations/en-TT.json index a319c5e5f..ad7399d97 100644 --- a/assets/translations/en-TT.json +++ b/assets/translations/en-TT.json @@ -5,7 +5,7 @@ "History_Settings_Page": "History Settings Page", "Lamps_Page": "Lamps Page", "Name:_": "Name: {}", - "Room:_": "Room: {}", + "Area:_": "Area: {}", "Lamps_Settings_Page": "Lamps Settings Page", "Welcome_to_your_Smart_Home": "Welcome to your Smart Home", "Scene_Settings_Page": "Scene Settings Page", @@ -51,8 +51,8 @@ "New_devices": "New devices", "Add_devices": "Add devices", "Device_type:_": "Device type: {}", - "Room_name_is_required": "Room name is required", - "Room_name:": "Room name:", + "Area_name_is_required": "Area name is required", + "Area_name:": "Area name:", "Device_name_is_required": "Device name is required", "Device_name:": "Device name:", "Update": "Update", @@ -82,7 +82,7 @@ "_Lights": "{} Lights", "_Boilers": "{} Boilers", "_Blinds": "{} Blinds", - "Rooms": "Rooms", + "Areas": "Areas", "_device": "{} device", "_devices": "{} devices", "_SmartPlugs": "{} SmartPlugs", @@ -109,4 +109,4 @@ "Turning_Off_boiler": "Turning Off boiler", "Waiting_for_user_to_get_connected_to_WiFi": "Waiting for user to get connected to WiFi", "Can't_add_unsupported_device": "Can't add unsupported device" -} +} \ No newline at end of file diff --git a/assets/translations/en-US.json b/assets/translations/en-US.json index a319c5e5f..ad7399d97 100644 --- a/assets/translations/en-US.json +++ b/assets/translations/en-US.json @@ -5,7 +5,7 @@ "History_Settings_Page": "History Settings Page", "Lamps_Page": "Lamps Page", "Name:_": "Name: {}", - "Room:_": "Room: {}", + "Area:_": "Area: {}", "Lamps_Settings_Page": "Lamps Settings Page", "Welcome_to_your_Smart_Home": "Welcome to your Smart Home", "Scene_Settings_Page": "Scene Settings Page", @@ -51,8 +51,8 @@ "New_devices": "New devices", "Add_devices": "Add devices", "Device_type:_": "Device type: {}", - "Room_name_is_required": "Room name is required", - "Room_name:": "Room name:", + "Area_name_is_required": "Area name is required", + "Area_name:": "Area name:", "Device_name_is_required": "Device name is required", "Device_name:": "Device name:", "Update": "Update", @@ -82,7 +82,7 @@ "_Lights": "{} Lights", "_Boilers": "{} Boilers", "_Blinds": "{} Blinds", - "Rooms": "Rooms", + "Areas": "Areas", "_device": "{} device", "_devices": "{} devices", "_SmartPlugs": "{} SmartPlugs", @@ -109,4 +109,4 @@ "Turning_Off_boiler": "Turning Off boiler", "Waiting_for_user_to_get_connected_to_WiFi": "Waiting for user to get connected to WiFi", "Can't_add_unsupported_device": "Can't add unsupported device" -} +} \ No newline at end of file diff --git a/assets/translations/en-ZW.json b/assets/translations/en-ZW.json index a319c5e5f..ad7399d97 100644 --- a/assets/translations/en-ZW.json +++ b/assets/translations/en-ZW.json @@ -5,7 +5,7 @@ "History_Settings_Page": "History Settings Page", "Lamps_Page": "Lamps Page", "Name:_": "Name: {}", - "Room:_": "Room: {}", + "Area:_": "Area: {}", "Lamps_Settings_Page": "Lamps Settings Page", "Welcome_to_your_Smart_Home": "Welcome to your Smart Home", "Scene_Settings_Page": "Scene Settings Page", @@ -51,8 +51,8 @@ "New_devices": "New devices", "Add_devices": "Add devices", "Device_type:_": "Device type: {}", - "Room_name_is_required": "Room name is required", - "Room_name:": "Room name:", + "Area_name_is_required": "Area name is required", + "Area_name:": "Area name:", "Device_name_is_required": "Device name is required", "Device_name:": "Device name:", "Update": "Update", @@ -82,7 +82,7 @@ "_Lights": "{} Lights", "_Boilers": "{} Boilers", "_Blinds": "{} Blinds", - "Rooms": "Rooms", + "Areas": "Areas", "_device": "{} device", "_devices": "{} devices", "_SmartPlugs": "{} SmartPlugs", @@ -109,4 +109,4 @@ "Turning_Off_boiler": "Turning Off boiler", "Waiting_for_user_to_get_connected_to_WiFi": "Waiting for user to get connected to WiFi", "Can't_add_unsupported_device": "Can't add unsupported device" -} +} \ No newline at end of file diff --git a/assets/translations/en-ph.json b/assets/translations/en-ph.json index a319c5e5f..ad7399d97 100644 --- a/assets/translations/en-ph.json +++ b/assets/translations/en-ph.json @@ -5,7 +5,7 @@ "History_Settings_Page": "History Settings Page", "Lamps_Page": "Lamps Page", "Name:_": "Name: {}", - "Room:_": "Room: {}", + "Area:_": "Area: {}", "Lamps_Settings_Page": "Lamps Settings Page", "Welcome_to_your_Smart_Home": "Welcome to your Smart Home", "Scene_Settings_Page": "Scene Settings Page", @@ -51,8 +51,8 @@ "New_devices": "New devices", "Add_devices": "Add devices", "Device_type:_": "Device type: {}", - "Room_name_is_required": "Room name is required", - "Room_name:": "Room name:", + "Area_name_is_required": "Area name is required", + "Area_name:": "Area name:", "Device_name_is_required": "Device name is required", "Device_name:": "Device name:", "Update": "Update", @@ -82,7 +82,7 @@ "_Lights": "{} Lights", "_Boilers": "{} Boilers", "_Blinds": "{} Blinds", - "Rooms": "Rooms", + "Areas": "Areas", "_device": "{} device", "_devices": "{} devices", "_SmartPlugs": "{} SmartPlugs", @@ -109,4 +109,4 @@ "Turning_Off_boiler": "Turning Off boiler", "Waiting_for_user_to_get_connected_to_WiFi": "Waiting for user to get connected to WiFi", "Can't_add_unsupported_device": "Can't add unsupported device" -} +} \ No newline at end of file diff --git a/assets/translations/en-za.json b/assets/translations/en-za.json index a319c5e5f..ad7399d97 100644 --- a/assets/translations/en-za.json +++ b/assets/translations/en-za.json @@ -5,7 +5,7 @@ "History_Settings_Page": "History Settings Page", "Lamps_Page": "Lamps Page", "Name:_": "Name: {}", - "Room:_": "Room: {}", + "Area:_": "Area: {}", "Lamps_Settings_Page": "Lamps Settings Page", "Welcome_to_your_Smart_Home": "Welcome to your Smart Home", "Scene_Settings_Page": "Scene Settings Page", @@ -51,8 +51,8 @@ "New_devices": "New devices", "Add_devices": "Add devices", "Device_type:_": "Device type: {}", - "Room_name_is_required": "Room name is required", - "Room_name:": "Room name:", + "Area_name_is_required": "Area name is required", + "Area_name:": "Area name:", "Device_name_is_required": "Device name is required", "Device_name:": "Device name:", "Update": "Update", @@ -82,7 +82,7 @@ "_Lights": "{} Lights", "_Boilers": "{} Boilers", "_Blinds": "{} Blinds", - "Rooms": "Rooms", + "Areas": "Areas", "_device": "{} device", "_devices": "{} devices", "_SmartPlugs": "{} SmartPlugs", @@ -109,4 +109,4 @@ "Turning_Off_boiler": "Turning Off boiler", "Waiting_for_user_to_get_connected_to_WiFi": "Waiting for user to get connected to WiFi", "Can't_add_unsupported_device": "Can't add unsupported device" -} +} \ No newline at end of file diff --git a/assets/translations/es-AR.json b/assets/translations/es-AR.json index 63ddbc171..c99757d37 100644 --- a/assets/translations/es-AR.json +++ b/assets/translations/es-AR.json @@ -5,7 +5,7 @@ "History_Settings_Page": "Página de Configuración de Historial", "Lamps_Page": "Página de Lámparas", "Name:_": "Nombre: {}", - "Room:_": "Habitación: {}", + "Area:_": "Habitación: {}", "Lamps_Settings_Page": "Página de Configuración de Lámparas", "Welcome_to_your_Smart_Home": "Bienvenido a tu Casa Inteligente", "Scene_Settings_Page": "Página de Configuración de Escenas", @@ -51,8 +51,8 @@ "New_devices": "Nuevos dispositivos", "Add_devices": "Agregar dispositivos", "Device_type:_": "Tipo de dispositivo: {}", - "Room_name_is_required": "Se requiere nombre de habitación", - "Room_name:": "Nombre de habitación:", + "Area_name_is_required": "Se requiere nombre de habitación", + "Area_name:": "Nombre de habitación:", "Device_name_is_required": "Se requiere nombre de dispositivo", "Device_name:": "Nombre de dispositivo:", "Update": "Actualizar", @@ -82,7 +82,7 @@ "_Lights": "{} Luces", "_Boilers": "{} Calderas", "_Blinds": "{} Persianas", - "Rooms": "Habitaciones", + "Areas": "Habitaciones", "_device": "{} dispositivo", "_devices": "{} dispositivos", "_SmartPlugs": "{} EnchufesInteligentes", @@ -102,4 +102,4 @@ "Do_not_need": "No se necesita", "Finish": "Terminar", "Select_Purposes_Of_The_Area": "Seleccionar Propśitos para el Área" -} +} \ No newline at end of file diff --git a/assets/translations/es-BO.json b/assets/translations/es-BO.json index 6559083a8..8a4e71c58 100644 --- a/assets/translations/es-BO.json +++ b/assets/translations/es-BO.json @@ -5,7 +5,7 @@ "History_Settings_Page": "Página de Configuración de Historial", "Lamps_Page": "Página de Iluminación", "Name:_": "Nombre: {}", - "Room:_": "Habitación: {}", + "Area:_": "Habitación: {}", "Lamps_Settings_Page": "Página de Configuración de Iluminación", "Welcome_to_your_Smart_Home": "Bienvenido a su Hogar Inteligente", "Scene_Settings_Page": "Página de Configuración de Escena", @@ -50,8 +50,8 @@ "New_devices": "Nuevo dispositivo", "Add_devices": "Agregar dispositivo", "Device_type:_": "Tipo de dispositivo: {}", - "Room_name_is_required": "Nombre de habitación requerido", - "Room_name:": "Nombre de habitación: ", + "Area_name_is_required": "Nombre de habitación requerido", + "Area_name:": "Nombre de habitación: ", "Device_name_is_required": "El nombre del dispositivo es requerido", "Device_name:": "Nombre de dispositivo: ", "Update": "Actualizar", @@ -81,7 +81,7 @@ "_Lights": "Luces:{}", "_Boilers": "Calderas: {}", "_Blinds": "Persianas: {}", - "Rooms": "Habitaciones", + "Areas": "Habitaciones", "_device": "Dispositivo: {}", "_devices": "Dispositivos: {}", "_SmartPlugs": "Enchufes inteligentes: {}", @@ -108,4 +108,4 @@ "Turning_Off_boiler": "Apagando Caldera", "Waiting_for_user_to_get_connected_to_WiFi": "Esperando a que el usuario se conecte a WiFi", "Can't_add_unsupported_device": "No se puede agregar un dispositivo no compatible" -} +} \ No newline at end of file diff --git a/assets/translations/es-CO.json b/assets/translations/es-CO.json index e8bd0f5a8..f540d820f 100644 --- a/assets/translations/es-CO.json +++ b/assets/translations/es-CO.json @@ -5,7 +5,7 @@ "History_Settings_Page": "Pagina de configuraciones del Historial", "Lamps_Page": "Pagina de iluminacion", "Name:_": "Nombre: {}", - "Room:_": "Habitacion: {}", + "Area:_": "Habitacion: {}", "Lamps_Settings_Page": "Página de configuración de iluminacion", "Welcome_to_your_Smart_Home": "Bienvenido a su casa inteligente", "Scene_Settings_Page": "Página de configuración de escenas", @@ -47,8 +47,8 @@ "New_devices": "Nuevo dispositivo", "Add_devices": "Agregar dispositivo", "Device_type:_": "Tipo de dispositivo: {}", - "Room_name_is_required": "El nombre de la habitacion es requerida", - "Room_name:": "Nombre de la habitacion: ", + "Area_name_is_required": "El nombre de la habitacion es requerida", + "Area_name:": "Nombre de la habitacion: ", "Device_name_is_required": "El nombre del dispositivo es necesario", "Device_name:": "Nomnbre del dispositivo: ", "Update": "Actualizar", diff --git a/assets/translations/es-CR.json b/assets/translations/es-CR.json index 373a23eb7..67462cc09 100644 --- a/assets/translations/es-CR.json +++ b/assets/translations/es-CR.json @@ -5,7 +5,7 @@ "History_Settings_Page": "Página de configuraciones del Historial", "Lamps_Page": "Página de iluminación", "Name:_": "Nombre: {}", - "Room:_": "Habitación: {}", + "Area:_": "Habitación: {}", "Lamps_Settings_Page": "Página de configuración de iluminación", "Welcome_to_your_Smart_Home": "Bienvenido a su casa inteligente", "Scene_Settings_Page": "Página de configuración de escenas", @@ -47,8 +47,8 @@ "New_devices": "Nuevo dispositivo", "Add_devices": "Agregar dispositivo", "Device_type:_": "Tipo de dispositivo: {}", - "Room_name_is_required": "El nombre de la habitación es requerida", - "Room_name:": "Nombre de la habitación: ", + "Area_name_is_required": "El nombre de la habitación es requerida", + "Area_name:": "Nombre de la habitación: ", "Device_name_is_required": "El nombre del dispositivo es necesario", "Device_name:": "Nombre del dispositivo: ", "Update": "Actualizar", @@ -78,7 +78,7 @@ "_Lights": "{} Luces", "_Boilers": "{} Calderas", "_Blinds": "{} Persianas", - "Rooms": "Habitaciones", + "Areas": "Habitaciones", "_device": "{} dispositivo", "_devices": "{} dispositivos", "_SmartPlugs": "{} SmartPlugs", diff --git a/assets/translations/es-MX.json b/assets/translations/es-MX.json index 89d9c24c8..6770978ca 100644 --- a/assets/translations/es-MX.json +++ b/assets/translations/es-MX.json @@ -5,7 +5,7 @@ "History_Settings_Page": "Pagina de Configuración del Historial", "Lamps_Page": "Pagina de Iluminación", "Name:_": "Nombre: {}", - "Room:_": "Habitación: {}", + "Area:_": "Habitación: {}", "Lamps_Settings_Page": "Página de Configuración de Iluminación", "Welcome_to_your_Smart_Home": "Bienvenido a tu Hogar Inteligente", "Scene_Settings_Page": "Página de Configuración de Escena", @@ -51,8 +51,8 @@ "New_devices": "Nuevos dispositivos", "Add_devices": "Agregar dispositivos", "Device_type:_": "Tipo de dispositivo: {}", - "Room_name_is_required": "Nombre de la habitación requerido", - "Room_name:": "Nombre de la habitación: ", + "Area_name_is_required": "Nombre de la habitación requerido", + "Area_name:": "Nombre de la habitación: ", "Device_name_is_required": "El nombre del dispositivo es requerido", "Device_name:": "Nombre del dispositivo: ", "Update": "Actualizar", @@ -82,7 +82,7 @@ "_Lights": "{} Luces", "_Boilers": "{} Calderas", "_Blinds": "{} Persianas", - "Rooms": "Habitaciones", + "Areas": "Habitaciones", "_device": "{} dispositivo", "_devices": "{} dispositivos", "_SmartPlugs": "{} Enchufes Inteligentes", diff --git a/assets/translations/es-US.json b/assets/translations/es-US.json index 825dcb24d..fa9d9e1b9 100644 --- a/assets/translations/es-US.json +++ b/assets/translations/es-US.json @@ -5,7 +5,7 @@ "History_Settings_Page": "Pagina de configuraciones del Historial", "Lamps_Page": "Pagina de iluminacion", "Name:_": "Nombre: {}", - "Room:_": "Habitacion: {}", + "Area:_": "Habitacion: {}", "Lamps_Settings_Page": "Página de configuración de iluminacion", "Welcome_to_your_Smart_Home": "Bienvenido a su casa inteligente", "Scene_Settings_Page": "Página de configuración de escenas", @@ -51,8 +51,8 @@ "New_devices": "Nuevos dispositivos", "Add_devices": "Añadir dispositivos", "Device_type:_": "Tipo de dispositivo: {}", - "Room_name_is_required": "El nombre de la habitación es requerido", - "Room_name:": "Nombre de la habitación:", + "Area_name_is_required": "El nombre de la habitación es requerido", + "Area_name:": "Nombre de la habitación:", "Device_name_is_required": "El nombre del dispositivo es requerido", "Device_name:": "Nombre del dispositivo:", "Update": "Actualizar", @@ -82,7 +82,7 @@ "_Lights": "{} Luces", "_Boilers": "{} Hervidoras", "_Blinds": "{} Persianas", - "Rooms": "habitaciones", + "Areas": "habitaciones", "_device": "{} dispositivo", "_devices": "{} dispositivos", "_SmartPlugs": "{} Enchufes Inteligentes", @@ -102,4 +102,4 @@ "Do_not_need": "No se necesita", "Finish": "Terminar", "Select_Purposes_Of_The_Area": "Seleccionar el proposito de esta área" -} +} \ No newline at end of file diff --git a/assets/translations/fi-FI.json b/assets/translations/fi-FI.json index f0d9a2be8..09a54fbff 100644 --- a/assets/translations/fi-FI.json +++ b/assets/translations/fi-FI.json @@ -5,7 +5,7 @@ "History_Settings_Page": "Historiatietojen asetussivu", "Lamps_Page": "Lamput-sivu", "Name:_": "Nimi: {}", - "Room:_": "Huone: {}", + "Area:_": "Huone: {}", "Lamps_Settings_Page": "Lamppujen asetussivu", "Welcome_to_your_Smart_Home": "Tervetuloa älykotiisi", "Scene_Settings_Page": "Tunnelmien asetussivu", @@ -51,8 +51,8 @@ "New_devices": "Uudet laitteet", "Add_devices": "Lisää laitteita", "Device_type:_": "Laitteen laji: {}", - "Room_name_is_required": "Huoneen nimi on pakollinen", - "Room_name:": "Huoneen nimi:", + "Area_name_is_required": "Huoneen nimi on pakollinen", + "Area_name:": "Huoneen nimi:", "Device_name_is_required": "Laitteen nimi on pakollinen", "Device_name:": "Laitteen nimi:", "Update": "Päivitä", @@ -82,7 +82,7 @@ "_Lights": "{} - valaisimet", "_Boilers": "{} - lämminvesivaraajat", "_Blinds": "{} - kaihtimet", - "Rooms": "Huoneet", + "Areas": "Huoneet", "_device": "{} laite", "_devices": "{} laitetta", "_SmartPlugs": "{} - älypistorasiat", @@ -109,4 +109,4 @@ "Turning_Off_boiler": "Lämminvesivaraaja sammutetaan", "Waiting_for_user_to_get_connected_to_WiFi": "Odotetaan WLAN-yhteyttä", "Can't_add_unsupported_device": "Ei voi lisätä laitetta, jota ei tueta" -} +} \ No newline at end of file diff --git a/assets/translations/fr-BE.json b/assets/translations/fr-BE.json index 67798ea91..612447de1 100644 --- a/assets/translations/fr-BE.json +++ b/assets/translations/fr-BE.json @@ -5,7 +5,7 @@ "History_Settings_Page": "Paramètres de l'historique", "Lamps_Page": "Page des lampes", "Name:_": "Nom: {}", - "Room:_": "Pièce: {}", + "Area:_": "Pièce: {}", "Lamps_Settings_Page": "Paramètres des lampes", "Welcome_to_your_Smart_Home": "Bienvenu dans votre maison connectée", "Scene_Settings_Page": "Paramètres des scènes", @@ -47,12 +47,12 @@ "New_devices": "Nouvel appareil", "Add_devices": "Ajouter un appareil", "Device_type:_": "Type d'appareil: {}", - "Room_name_is_required": "Le nom de la pièce est obligatoire", - "Room_name:": "Nom de la pièce:", + "Area_name_is_required": "Le nom de la pièce est obligatoire", + "Area_name:": "Nom de la pièce:", "Device_name_is_required": "Le nom de l'appareil est obligatoire", "Device_name:": "Nom de l'appareil:", "Update": "Mise à jour", "IP": "IP", "This_is_firebase": "Ceci est firebase", "Device_with_ip:_": "Appareil et IP: {}" -} +} \ No newline at end of file diff --git a/assets/translations/fr-CA.json b/assets/translations/fr-CA.json index 67798ea91..612447de1 100644 --- a/assets/translations/fr-CA.json +++ b/assets/translations/fr-CA.json @@ -5,7 +5,7 @@ "History_Settings_Page": "Paramètres de l'historique", "Lamps_Page": "Page des lampes", "Name:_": "Nom: {}", - "Room:_": "Pièce: {}", + "Area:_": "Pièce: {}", "Lamps_Settings_Page": "Paramètres des lampes", "Welcome_to_your_Smart_Home": "Bienvenu dans votre maison connectée", "Scene_Settings_Page": "Paramètres des scènes", @@ -47,12 +47,12 @@ "New_devices": "Nouvel appareil", "Add_devices": "Ajouter un appareil", "Device_type:_": "Type d'appareil: {}", - "Room_name_is_required": "Le nom de la pièce est obligatoire", - "Room_name:": "Nom de la pièce:", + "Area_name_is_required": "Le nom de la pièce est obligatoire", + "Area_name:": "Nom de la pièce:", "Device_name_is_required": "Le nom de l'appareil est obligatoire", "Device_name:": "Nom de l'appareil:", "Update": "Mise à jour", "IP": "IP", "This_is_firebase": "Ceci est firebase", "Device_with_ip:_": "Appareil et IP: {}" -} +} \ No newline at end of file diff --git a/assets/translations/fr-CD.json b/assets/translations/fr-CD.json index c149de129..9807f0ad4 100644 --- a/assets/translations/fr-CD.json +++ b/assets/translations/fr-CD.json @@ -5,7 +5,7 @@ "History_Settings_Page": "Paramètres de l'historique", "Lamps_Page": "Page des lampes", "Name:_": "Nom: {}", - "Room:_": "Pièce: {}", + "Area:_": "Pièce: {}", "Lamps_Settings_Page": "Paramètres des lampes", "Welcome_to_your_Smart_Home": "Bienvenu dans votre maison connectée", "Scene_Settings_Page": "Paramètres des scènes", @@ -18,7 +18,7 @@ "Air_Conditioners": "Climatiseurs", "Blinds": "Stores", "Medical_Device": "Appareil médical", - "Medical_Devices" : "Appareils médicaux", + "Medical_Devices": "Appareils médicaux", "Smart_Phone": "Téléphone intelligent", "Smart_Phones": "Téléphones intelligents", "Smart_Speakers": "Haut-parleurs intelligents", @@ -51,62 +51,62 @@ "New_devices": "Nouvel appareil", "Add_devices": "Ajouter un appareil", "Device_type:_": "Type d'appareil: {}", - "Room_name_is_required": "Le nom de la pièce est obligatoire", - "Room_name:": "Nom de la pièce:", + "Area_name_is_required": "Le nom de la pièce est obligatoire", + "Area_name:": "Nom de la pièce:", "Device_name_is_required": "Le nom de l'appareil est obligatoire", "Device_name:": "Nom de l'appareil:", "Update": "Mise à jour", "IP": "IP", "This_is_firebase": "Ceci est firebase", "Device_with_ip:_": "Appareil avec IP: {}", - "Update_WiFi_configuration" : "Mettre à jour la configuration WiFi", - "WiFi_name_is_required" : "Le nom du WiFi est obligatoire", - "WiFi_Name" : "Nom du WiFi", - "WiFi_password_is_required" : "Le mot de passe WiFi est obligatoire", - "WiFi_Password" : "Mot de pass WiFi", - "Insert_WiFi_Credentials" : "Inserer les identifiants WiFi", - "Conditioners" : "Conditionneurs", - "Medical" : "Médical", - "Phones" : "Téléphones", + "Update_WiFi_configuration": "Mettre à jour la configuration WiFi", + "WiFi_name_is_required": "Le nom du WiFi est obligatoire", + "WiFi_Name": "Nom du WiFi", + "WiFi_password_is_required": "Le mot de passe WiFi est obligatoire", + "WiFi_Password": "Mot de pass WiFi", + "Insert_WiFi_Credentials": "Inserer les identifiants WiFi", + "Conditioners": "Conditionneurs", + "Medical": "Médical", + "Phones": "Téléphones", "Speakers": "Haut-parleurs", - "Send" : "Envoyer", - "All_Devices" : "All Devices", + "Send": "Envoyer", + "All_Devices": "All Devices", "Summary": "Résumé", - "Switches" : "Interrupteurs", - "Boilers":"Chaudières", - "Lights" : "Lumières", - "RGBw_Lights" : "Lumières RGBw", - "_Switches" : "{} Interrupteurs", - "_SmartTvs" : "{} SmartTvs", - "_RGBW_Lights" : "{} Lumières RGBW", - "_Lights" : "{} Lumières", - "_Boilers" : "{} Chaudières", - "_Blinds" : "{} Stores", - "Rooms" : "Chambres", - "_device" : "{} appareil", - "_devices" : "{} appareils", - "_SmartPlugs" : "{} SmartPlugs", - "On" : "Allumé ", - "Off" : "Eteint", - "Color" : "Couleur", - "White" : "Blanc", - "Area" : "Surface", - "Areas" : "Surfaces", - "Automations" : "Automations", - "Scènes_In_Folder" : "Scènes dans le dossier", - "Select" : "Selectionner", - "Exist" : "Existe", - "OK" : "OK", - "Rien" : "Rien", - "No_need_here" : "Aucun besoin ici", - "Do_not_need" : "Ne pas avoir besoin", - "Finish" : "Finir", - "Select_Purposes_Of_The_Area" : "Sélectionner les objectifs de la zone", - "Pulling_Up_all_blinds" : "Remonter tous les stores", - "Stopping_all_blinds" : "Arreter tous les stores", - "Pulling_down_all_blinds" : "Descendre tous les stores", - "Turning_On_boiler" : "Allumer la chaudière", - "Turning_Off_boiler" : "Eteindre la chaudière", - "Waiting_for_user_to_get_connected_to_WiFi" : "Attendre que l'utilisateur se connecte au WiFi", - "Can't_add_unsupported_device" : "Ne peut ajouter un appareil non supporté" -} + "Switches": "Interrupteurs", + "Boilers": "Chaudières", + "Lights": "Lumières", + "RGBw_Lights": "Lumières RGBw", + "_Switches": "{} Interrupteurs", + "_SmartTvs": "{} SmartTvs", + "_RGBW_Lights": "{} Lumières RGBW", + "_Lights": "{} Lumières", + "_Boilers": "{} Chaudières", + "_Blinds": "{} Stores", + "Areas": "Chambres", + "_device": "{} appareil", + "_devices": "{} appareils", + "_SmartPlugs": "{} SmartPlugs", + "On": "Allumé ", + "Off": "Eteint", + "Color": "Couleur", + "White": "Blanc", + "Area": "Surface", + "Areas": "Surfaces", + "Automations": "Automations", + "Scènes_In_Folder": "Scènes dans le dossier", + "Select": "Selectionner", + "Exist": "Existe", + "OK": "OK", + "Rien": "Rien", + "No_need_here": "Aucun besoin ici", + "Do_not_need": "Ne pas avoir besoin", + "Finish": "Finir", + "Select_Purposes_Of_The_Area": "Sélectionner les objectifs de la zone", + "Pulling_Up_all_blinds": "Remonter tous les stores", + "Stopping_all_blinds": "Arreter tous les stores", + "Pulling_down_all_blinds": "Descendre tous les stores", + "Turning_On_boiler": "Allumer la chaudière", + "Turning_Off_boiler": "Eteindre la chaudière", + "Waiting_for_user_to_get_connected_to_WiFi": "Attendre que l'utilisateur se connecte au WiFi", + "Can't_add_unsupported_device": "Ne peut ajouter un appareil non supporté" +} \ No newline at end of file diff --git a/assets/translations/fr-FR.json b/assets/translations/fr-FR.json index fb091c2fe..5f612b8e2 100644 --- a/assets/translations/fr-FR.json +++ b/assets/translations/fr-FR.json @@ -5,7 +5,7 @@ "History_Settings_Page": "Paramètres de l'historique", "Lamps_Page": "Page des lampes", "Name:_": "Nom: {}", - "Room:_": "Pièce: {}", + "Area:_": "Pièce: {}", "Lamps_Settings_Page": "Paramètres des lampes", "Welcome_to_your_Smart_Home": "Bienvenue dans votre maison connectée", "Scene_Settings_Page": "Paramètres des scènes", @@ -47,8 +47,8 @@ "New_devices": "Nouvel appareil", "Add_devices": "Ajouter un appareil", "Device_type:_": "Type d'appareil: {}", - "Room_name_is_required": "Le nom de la pièce est obligatoire", - "Room_name:": "Nom de la pièce:", + "Area_name_is_required": "Le nom de la pièce est obligatoire", + "Area_name:": "Nom de la pièce:", "Device_name_is_required": "Le nom de l'appareil est obligatoire", "Device_name:": "Nom de l'appareil:", "Update": "Mise à jour", @@ -78,7 +78,7 @@ "_Lights": "{} Lumières", "_Boilers": "{} Chaudières", "_Blinds": "{} Stores", - "Rooms": "Pièces", + "Areas": "Pièces", "_device": "{} appareil", "_devices": "{} appareils", "_SmartPlugs": "{} Prises intelligentes", @@ -105,4 +105,4 @@ "Turning_Off_boiler": "Éteindre la chaudière", "Waiting_for_user_to_get_connected_to_WiFi": "En attente de la connexion de l'utilisateur au WIFI", "Can't_add_unsupported_device": "Impossible d'ajouter un appareil non pris en charge" -} +} \ No newline at end of file diff --git a/assets/translations/ge-GE.json b/assets/translations/ge-GE.json index 78ab6ce8b..a11a4e966 100644 --- a/assets/translations/ge-GE.json +++ b/assets/translations/ge-GE.json @@ -5,7 +5,7 @@ "History_Settings_Page": "Seite Verlaufseinstellungen", "Lamps_Page": "Lampen Seite", "Name:_": "der Name: {}", - "Room:_": "Zimmer: {}", + "Area:_": "Zimmer: {}", "Lamps_Settings_Page": "Seite Lampeneinstellungen", "Welcome_to_your_Smart_Home": "Willkommen in Ihrem Smart Home", "Scene_Settings_Page": "Seite Szeneneinstellungen", @@ -50,13 +50,12 @@ "New_devices": "Neue Geräte", "Add_devices": "Geräte hinzufügen", "Device_type:_": "Gerätetyp: {}", - "Room_name_is_required": "Raumname ist erforderlich", - "Room_name:": "Raumname:", + "Area_name_is_required": "Raumname ist erforderlich", + "Area_name:": "Raumname:", "Device_name_is_required": "Gerätename ist erforderlich", "Device_name:": "Gerätename:", "Update": "Aktualisieren", "IP": "IP", "This_is_firebase": "Das ist Feuerbasis", "Device_with_ip:_": "Gerät mit IP: {}" - } - +} \ No newline at end of file diff --git a/assets/translations/gj-IN.json b/assets/translations/gj-IN.json index f523cafa4..1b3ad6795 100644 --- a/assets/translations/gj-IN.json +++ b/assets/translations/gj-IN.json @@ -1,113 +1,112 @@ { - "Create_new_account": "નવુ ખાતુ ખોલો", - "Actions_History": "ક્રિયા ઇતિહાસ", - "Empty_history": "ઇતિહાસ ખાલી", - "History_Settings_Page": "ઇતિહાસ સેટિંગ પેજ", - "Lamps_Page": "લેમ્પ્સ પેજ", - "Name:_": "નામ: {}", - "Room:_": "રૂમ: {}", - "Lamps_Settings_Page": "લેમ્પ્સ સેટિંગ પેજ", - "Welcome_to_your_Smart_Home": "તમારા સ્માર્ટ હોમ માં તમારુ સ્વાગત છે", - "Scene_Settings_Page": "દ્રશ્ય સેટિંગ પેજ", - "Move_to_blinds_full_settings_page": "આખુ સેટિંગ પેજ અધશ્ય કરો", - "Blinds_Page": "અંધ પૃષ્ઠ", - "Down": "નીચે", - "Stop": "થોભો", - "Up": "ઉપર", - "Smart_Devices_Settings_Page": "સ્માર્ટ ડિવાઈસ સેટિંગ પેજ", - "Air_Conditioners": "એર કંડિશનર", - "Blinds": "બ્લાઇંડ્સ", - "Medical_Device": "ચિકિત્સિય ઉપકરણ", - "Medical_Devices": "ચિકિત્સિય ઉપકરણો", - "Smart_Phone": "સ્માર્ટફોન", - "Smart_Phones": "સ્માર્ટફોન્સ", - "Smart_Speakers": "સ્માર્ટ સ્પીકરો", - "Smart_Devices_page": "સ્માર્ટ ડિવાઈસિસ પૃષ્ઠ", - "History": "ઈતિહાસ", - "Scene": "સ્થળ", - "Scenes": "સ્થળો", - "Lamps": "બત્તીઓ", - "Devices": "ઉપકરણો", - "Email_is_required": "ઈ-મેઇલ જરૂરી", - "Email_cannot_contain_spaces": "ઈ-મેઇલ માં સ્પેસ ન આવી શકે", - "Email_is_invalid": "ઈ-મેઇલ અમાન્ય", - "Email": "ઈ-મેઇલ", - "Password_is_required": "પાસવર્ડ આવશ્યક છે", - "Password_cannot_contain_spaces": "પાસવર્ડ માં સ્પેસ ન આવી શકે", - "Password_must_be_bigger_than__characters": "પાસવર્ડ {} અક્ષરો કરતા મોટો છે", - "Password": "પાસવર્ડ", - "Log_In": "લોગ ઈન", - "Forgot_password": "પાસવર્ડ ભૂલી ગયા", - "Forgot_password?": "પાસવર્ડ ભૂલી ગયા?", - "title": "શિર્ષક", - "number": "અંક", - "IP_is_required": "આઇ.પી. આવશ્યક છે", - "IP_syntax_is_incorrect": "આઈ.પી. સિનટેક્સ ખોટો છે", - "Add_Smart_Device": "સ્માર્ટ ડિવાઈસ ઉમેરો", - "Cancel": "રદ્દ કરો", - "Add": "ઉમેરો", - "Light": "લાઈટ", - "Device_ip:_": "ડિવાઇસ આઈપી: {}", - "New_devices": "નવુ ડિવાઇસ", - "Add_devices": "ડિવાઇસ ઉમેરો", - "Device_type:_": "ડિવાઇસ પ્રકાર: {}", - "Room_name_is_required": "રૂમ નામ આવશ્યક", - "Room_name:": "રૂમ નામ:", - "Device_name_is_required": "ડિવાઇસ નામ આવશ્યક છે", - "Device_name:": "ડિવાઇસ નામ:", - "Update": "અપડેટ", - "IP": "આઈ.પી.", - "This_is_firebase": "આ ફાયરબેઝ છે", - "Device_with_ip:_": "ડિવાઇસ જેનુ આઈ.પી.: {}", - "Update_WiFi_configuration": "અપડેટ WiFi કોંફિગરેશન ", - "WiFi_name_is_required": "WiFi નુ નામ આવશ્યક", - "WiFi_Name": "WiFi નુ નામ", - "WiFi_password_is_required": "WiFi નો પાસવર્ડ આવશ્યક", - "WiFi_Password": "WiFi નો પાસવર્ડ", - "Insert_WiFi_Credentials": "WiFi ના Credentials નાખો", - "Conditioners": "કંડિશનર્સ", - "Medical": "મેડિકલ", - "Phones": "ફોન્સ", - "Speakers": "સ્પિકર્સ", - "Send": "મોકલો", - "All_Devices": "બધાઉપકરણો", - "Summary": "સારાંશ", - "Switches": "સ્વીચો", - "Boilers": "બોઈલર", - "Lights": "લાઈટ્સ", - "RGBw_Lights": "આર.જી.બી.ડબલ્યુ લાઈટ્સ", - "_Switches": "{} સ્વીચો", - "_SmartTvs": "{} સ્માર્ટ ટીવી", - "_RGBW_Lights": "{} આર.જી.બી.ડબલ્યુ લાઈટ્સ", - "_Lights": "{} લાઈટ્સ", - "_Boilers": "{} બોઈલર", - "_Blinds": "{} બ્લાઇંડ્સ", - "Rooms": "ઓરડાઓ", - "_device": "{} ઉપકરણ", - "_devices": "{} ઉપકરણો", - "_SmartPlugs": "{} સ્માર્ટ પ્લગ્સ", - "On": "શરૂ", - "Off": "બંધ", - "Color": "રંગો", - "White": "સફેદ", - "Area": "વિસ્તાર", - "Areas": "વિસ્તાર", - "Automations": "ઓટોમેશન", - "Scenes_In_Folder": "ફોલ્ડરમાં દ્રશ્ય", - "Select": "પસંદ કરો", - "Exist": "અસ્તિત્વ ધરાવે છે", - "OK": "બરાબર", - "Nothing": "કંઈ નહીં", - "No_need_here": "અહીં જરૂર નથી", - "Do_not_need": "જરૂર નથી", - "Finish": "સમાપ્ત કરો", - "Select_Purposes_Of_The_Area": "વિસ્તારનો હેતુ પસંદ કરો", - "Pulling_Up_all_blinds": "બધા બ્લાઇંડ્સ ખેંચીને", - "Stopping_all_blinds": "બધા બ્લાઇંડ્સ બંધ", - "Pulling_down_all_blinds": "બધા બ્લાઇંડ્સ નીચે ખેંચીને", - "Turning_On_boiler": "બોઈલર ચાલુ કરી રહ્યા છીએ", - "Turning_Off_boiler": "બોઈલર બંધ કરી રહ્યા છીએ", - "Waiting_for_user_to_get_connected_to_WiFi": "વપરાશકર્તા વાઇફાઇ સાથે કનેક્ટ થવાની રાહ જોઈ રહ્યાં છે", - "Can't_add_unsupported_device": "અસમર્થિત ઉપકરણો ઉમેરી શકતા નથી" - } - + "Create_new_account": "નવુ ખાતુ ખોલો", + "Actions_History": "ક્રિયા ઇતિહાસ", + "Empty_history": "ઇતિહાસ ખાલી", + "History_Settings_Page": "ઇતિહાસ સેટિંગ પેજ", + "Lamps_Page": "લેમ્પ્સ પેજ", + "Name:_": "નામ: {}", + "Area:_": "રૂમ: {}", + "Lamps_Settings_Page": "લેમ્પ્સ સેટિંગ પેજ", + "Welcome_to_your_Smart_Home": "તમારા સ્માર્ટ હોમ માં તમારુ સ્વાગત છે", + "Scene_Settings_Page": "દ્રશ્ય સેટિંગ પેજ", + "Move_to_blinds_full_settings_page": "આખુ સેટિંગ પેજ અધશ્ય કરો", + "Blinds_Page": "અંધ પૃષ્ઠ", + "Down": "નીચે", + "Stop": "થોભો", + "Up": "ઉપર", + "Smart_Devices_Settings_Page": "સ્માર્ટ ડિવાઈસ સેટિંગ પેજ", + "Air_Conditioners": "એર કંડિશનર", + "Blinds": "બ્લાઇંડ્સ", + "Medical_Device": "ચિકિત્સિય ઉપકરણ", + "Medical_Devices": "ચિકિત્સિય ઉપકરણો", + "Smart_Phone": "સ્માર્ટફોન", + "Smart_Phones": "સ્માર્ટફોન્સ", + "Smart_Speakers": "સ્માર્ટ સ્પીકરો", + "Smart_Devices_page": "સ્માર્ટ ડિવાઈસિસ પૃષ્ઠ", + "History": "ઈતિહાસ", + "Scene": "સ્થળ", + "Scenes": "સ્થળો", + "Lamps": "બત્તીઓ", + "Devices": "ઉપકરણો", + "Email_is_required": "ઈ-મેઇલ જરૂરી", + "Email_cannot_contain_spaces": "ઈ-મેઇલ માં સ્પેસ ન આવી શકે", + "Email_is_invalid": "ઈ-મેઇલ અમાન્ય", + "Email": "ઈ-મેઇલ", + "Password_is_required": "પાસવર્ડ આવશ્યક છે", + "Password_cannot_contain_spaces": "પાસવર્ડ માં સ્પેસ ન આવી શકે", + "Password_must_be_bigger_than__characters": "પાસવર્ડ {} અક્ષરો કરતા મોટો છે", + "Password": "પાસવર્ડ", + "Log_In": "લોગ ઈન", + "Forgot_password": "પાસવર્ડ ભૂલી ગયા", + "Forgot_password?": "પાસવર્ડ ભૂલી ગયા?", + "title": "શિર્ષક", + "number": "અંક", + "IP_is_required": "આઇ.પી. આવશ્યક છે", + "IP_syntax_is_incorrect": "આઈ.પી. સિનટેક્સ ખોટો છે", + "Add_Smart_Device": "સ્માર્ટ ડિવાઈસ ઉમેરો", + "Cancel": "રદ્દ કરો", + "Add": "ઉમેરો", + "Light": "લાઈટ", + "Device_ip:_": "ડિવાઇસ આઈપી: {}", + "New_devices": "નવુ ડિવાઇસ", + "Add_devices": "ડિવાઇસ ઉમેરો", + "Device_type:_": "ડિવાઇસ પ્રકાર: {}", + "Area_name_is_required": "રૂમ નામ આવશ્યક", + "Area_name:": "રૂમ નામ:", + "Device_name_is_required": "ડિવાઇસ નામ આવશ્યક છે", + "Device_name:": "ડિવાઇસ નામ:", + "Update": "અપડેટ", + "IP": "આઈ.પી.", + "This_is_firebase": "આ ફાયરબેઝ છે", + "Device_with_ip:_": "ડિવાઇસ જેનુ આઈ.પી.: {}", + "Update_WiFi_configuration": "અપડેટ WiFi કોંફિગરેશન ", + "WiFi_name_is_required": "WiFi નુ નામ આવશ્યક", + "WiFi_Name": "WiFi નુ નામ", + "WiFi_password_is_required": "WiFi નો પાસવર્ડ આવશ્યક", + "WiFi_Password": "WiFi નો પાસવર્ડ", + "Insert_WiFi_Credentials": "WiFi ના Credentials નાખો", + "Conditioners": "કંડિશનર્સ", + "Medical": "મેડિકલ", + "Phones": "ફોન્સ", + "Speakers": "સ્પિકર્સ", + "Send": "મોકલો", + "All_Devices": "બધાઉપકરણો", + "Summary": "સારાંશ", + "Switches": "સ્વીચો", + "Boilers": "બોઈલર", + "Lights": "લાઈટ્સ", + "RGBw_Lights": "આર.જી.બી.ડબલ્યુ લાઈટ્સ", + "_Switches": "{} સ્વીચો", + "_SmartTvs": "{} સ્માર્ટ ટીવી", + "_RGBW_Lights": "{} આર.જી.બી.ડબલ્યુ લાઈટ્સ", + "_Lights": "{} લાઈટ્સ", + "_Boilers": "{} બોઈલર", + "_Blinds": "{} બ્લાઇંડ્સ", + "Areas": "ઓરડાઓ", + "_device": "{} ઉપકરણ", + "_devices": "{} ઉપકરણો", + "_SmartPlugs": "{} સ્માર્ટ પ્લગ્સ", + "On": "શરૂ", + "Off": "બંધ", + "Color": "રંગો", + "White": "સફેદ", + "Area": "વિસ્તાર", + "Areas": "વિસ્તાર", + "Automations": "ઓટોમેશન", + "Scenes_In_Folder": "ફોલ્ડરમાં દ્રશ્ય", + "Select": "પસંદ કરો", + "Exist": "અસ્તિત્વ ધરાવે છે", + "OK": "બરાબર", + "Nothing": "કંઈ નહીં", + "No_need_here": "અહીં જરૂર નથી", + "Do_not_need": "જરૂર નથી", + "Finish": "સમાપ્ત કરો", + "Select_Purposes_Of_The_Area": "વિસ્તારનો હેતુ પસંદ કરો", + "Pulling_Up_all_blinds": "બધા બ્લાઇંડ્સ ખેંચીને", + "Stopping_all_blinds": "બધા બ્લાઇંડ્સ બંધ", + "Pulling_down_all_blinds": "બધા બ્લાઇંડ્સ નીચે ખેંચીને", + "Turning_On_boiler": "બોઈલર ચાલુ કરી રહ્યા છીએ", + "Turning_Off_boiler": "બોઈલર બંધ કરી રહ્યા છીએ", + "Waiting_for_user_to_get_connected_to_WiFi": "વપરાશકર્તા વાઇફાઇ સાથે કનેક્ટ થવાની રાહ જોઈ રહ્યાં છે", + "Can't_add_unsupported_device": "અસમર્થિત ઉપકરણો ઉમેરી શકતા નથી" +} \ No newline at end of file diff --git a/assets/translations/gu-IN.json b/assets/translations/gu-IN.json index 00408b0d0..52eeb4294 100644 --- a/assets/translations/gu-IN.json +++ b/assets/translations/gu-IN.json @@ -5,7 +5,7 @@ "History_Settings_Page": "ઇતિહાસ_સેટિંગ્સ_પૃષ્ઠ", "Lamps_Page": "લેમ્પ્સ_પેજ", "Name:_": "નામ: {}", - "Room:_": "રૂમ: {}", + "Area:_": "રૂમ: {}", "Lamps_Settings_Page": "લેમ્પ્સ_સેટિંગ્સ_પેજ", "Welcome_to_your_Smart_Home": "તમારા_સ્માર્ટ_હોમમાં_સ્વાગત છે", "Scene_Settings_Page": "સીન_સેટિંગ્સ_પેજ", @@ -51,8 +51,8 @@ "New_devices": "નવા ઉપકરણો", "Add_devices": "ઉપકરણો ઉમેરો", "Device_type:_": "ઉપકરણ પ્રકાર: {}", - "Room_name_is_required": "રૂમનું નામ જરૂરી છે", - "Room_name:": "રૂમ નામ", + "Area_name_is_required": "રૂમનું નામ જરૂરી છે", + "Area_name:": "રૂમ નામ", "Device_name_is_required": "ઉપકરણ નામ જરૂરી છે", "Device_name:": "ઉપકરણનું નામ", "Update": "અપડેટ કરો", @@ -82,7 +82,7 @@ "_Lights": "{} લાઈટ્સ", "_Boilers": "{} બોઇલર્સ", "_Blinds": "{} બ્લાઇંડ્સ", - "Rooms": "ઓરડાઓ", + "Areas": "ઓરડાઓ", "_device": "{} ઉપકરણ", "_devices": "{} ઉપકરણો", "_SmartPlugs": "{} સ્માર્ટપ્લગ્સ", @@ -109,4 +109,4 @@ "Turning_Off_boiler": "બોઈલર બંધ કરી રહ્યા છીએ", "Waiting_for_user_to_get_connected_to_WiFi": "વપરાશકર્તા WiFi સાથે કનેક્ટ થાય તેની રાહ જોઈ રહ્યાં છીએ", "Can't_add_unsupported_device": "અસમર્થિત ઉપકરણ ઉમેરી શકાતું નથી" -} +} \ No newline at end of file diff --git a/assets/translations/he-IL.json b/assets/translations/he-IL.json index 0b8f9d560..10ce0e6fb 100644 --- a/assets/translations/he-IL.json +++ b/assets/translations/he-IL.json @@ -5,7 +5,7 @@ "History_Settings_Page": "עמוד הגדרות היסטוריה", "Lamps_Page": "עמוד מנורות", "Name:_": "{} :שם", - "Room:_": "{} :חדר", + "Area:_": "{} :חדר", "Lamps_Settings_Page": "הגדרות עמוד מנורות", "Welcome_to_your_Smart_Home": "ברוכים הבאים לבית החכם שלכם", "Scene_Settings_Page": "הגדרת תרכישים", @@ -51,8 +51,8 @@ "New_devices": "כתובת חדשה", "Add_devices": "הוספת מכשירים", "Device_type:_": "{} :סוג מכשיר", - "Room_name_is_required": "נדרש שם חדר", - "Room_name:": ":שם חדר", + "Area_name_is_required": "נדרש שם חדר", + "Area_name:": ":שם חדר", "Device_name_is_required": "נדרש שם מכשיר", "Device_name:": ":שם מכשיר", "Update": "עדכן", @@ -82,7 +82,7 @@ "_Lights": "{} אורות", "_Boilers": "{} בוילרים", "_Blinds": "{} תריסים", - "Rooms": "חדרים", + "Areas": "חדרים", "_device": "{} מכשיר", "_devices": "{} מכשירים", "_SmartPlugs": "{} שקעים חכמים", @@ -109,4 +109,4 @@ "Turning_Off_boiler": "כיבוי בוילר", "Waiting_for_user_to_get_connected_to_WiFi": "ממתין להתחברות המשתמש לWIFI", "Can't_add_unsupported_device": "לא ניתן להוסיף מכשיר לא נתמך" -} +} \ No newline at end of file diff --git a/assets/translations/hi-IN.json b/assets/translations/hi-IN.json index e44798061..262b6cc4f 100644 --- a/assets/translations/hi-IN.json +++ b/assets/translations/hi-IN.json @@ -5,7 +5,7 @@ "History_Settings_Page": "इतिहास सेटिंग्स पृष्ठ", "Lamps_Page": "लैंप पृष्ठ", "Name:_": "नाम: {}", - "Room:_": "कमरा: {}", + "Area:_": "कमरा: {}", "Lamps_Settings_Page": "लैंप सेटिंग्स पृष्ठ", "Welcome_to_your_Smart_Home": "अपने स्मार्ट होम में आपका स्वागत है", "Scene_Settings_Page": "दृश्य सेटिंग्स पृष्ठ", @@ -51,8 +51,8 @@ "New_devices": "नए उपकरण", "Add_devices": "उपकरण जोड़ें", "Device_type:_": "उपकरण का प्रकार: {}", - "Room_name_is_required": "कमरे का नाम आवश्यक है", - "Room_name:": "कमरे का नाम:", + "Area_name_is_required": "कमरे का नाम आवश्यक है", + "Area_name:": "कमरे का नाम:", "Device_name_is_required": "उपकरण का नाम आवश्यक है", "Device_name:": "उपकरण का नाम:", "Update": "अपडेट करें", @@ -82,7 +82,7 @@ "_Lights": "{} रोशनी", "_Boilers": "{} बॉयलर", "_Blinds": "{} परदा", - "Rooms": "कमरे", + "Areas": "कमरे", "_device": "{} उपकरण", "_devices": "{} उपकरण", "_SmartPlugs": "{} स्मार्टप्लग", @@ -109,4 +109,4 @@ "Turning_Off_boiler": "बायलर ऑफ करें", "Waiting_for_user_to_get_connected_to_WiFi": "उपयोगकर्ता के वाईफाई से कनेक्ट होने की प्रतीक्षा हो रही है", "Can't_add_unsupported_device": "गलत उपकरण नहीं जुड़ सकता" -} +} \ No newline at end of file diff --git a/assets/translations/hi-PK.json b/assets/translations/hi-PK.json index 16eae34bd..c5b698fe9 100644 --- a/assets/translations/hi-PK.json +++ b/assets/translations/hi-PK.json @@ -5,7 +5,7 @@ "History_Settings_Page": "इतिहास सेटिंग पेज", "Lamps_Page": "लैंप पृष्ठ", "Name:_": "नाम: {}", - "Room:_": "कमरा: {}", + "Area:_": "कमरा: {}", "Lamps_Settings_Page": "लैंप सेटिंग पृष्ठ", "Welcome_to_your_Smart_Home": "अपने स्मार्ट होम में आपका स्वागत है", "Scene_Settings_Page": "दृश्य समायोजन पृष्ठ", @@ -47,8 +47,8 @@ "New_devices": "नए उपकरण", "Add_devices": "उपकरण जोड़ें", "Device_type:_": "उपकरण का प्रकार: {}", - "Room_name_is_required": "कमरे का नाम आवश्यक है", - "Room_name:": "कमरे का नाम:", + "Area_name_is_required": "कमरे का नाम आवश्यक है", + "Area_name:": "कमरे का नाम:", "Device_name_is_required": "यन्त्र का नाम आवश्यक है", "Device_name:": "यन्त्र का नाम:", "Update": "अपडेट करें", @@ -78,7 +78,7 @@ "_Lights": "{} रोशनी", "_Boilers": "{} बॉयलर", "_Blinds": "{} परदा", - "Rooms": "कमरे", + "Areas": "कमरे", "_device": "{} उपकरण", "_devices": "{} उपकरण", "_SmartPlugs": "{} स्मार्टप्लग", @@ -105,4 +105,4 @@ "Turning_Off_boiler": "बायलर ऑफ करें", "Waiting_for_user_to_get_connected_to_WiFi": "उपयोगकर्ता के वाईफाई से कनेक्ट होने की प्रतीक्षा हो रही है", "Can't_add_unsupported_device": "गलत उपकरण नहीं जुड़ सकता" -} +} \ No newline at end of file diff --git a/assets/translations/hr-HR.json b/assets/translations/hr-HR.json index 0e5b4174e..1ac53848b 100644 --- a/assets/translations/hr-HR.json +++ b/assets/translations/hr-HR.json @@ -5,7 +5,7 @@ "History_Settings_Page": "Stranica postavki povijesti", "Lamps_Page": "Stranica za rasvjetu", "Name:_": "Naziv: {}", - "Room:_": "Prostorija: {}", + "Area:_": "Prostorija: {}", "Lamps_Settings_Page": "Stranica postavki rasvjete", "Welcome_to_your_Smart_Home": "Dobrodošli u svoj pametni dom", "Scene_Settings_Page": "Stranica postavki prizora", @@ -47,12 +47,12 @@ "New_devices": "Novi uređaji", "Add_devices": "Dodaj uređaje", "Device_type:_": "Tip uređaja: {}", - "Room_name_is_required": "Naziv prostorije je obavezan", - "Room_name:": "Naziv prostorije:", + "Area_name_is_required": "Naziv prostorije je obavezan", + "Area_name:": "Naziv prostorije:", "Device_name_is_required": "Naziv uređaja je obavezan", "Device_name:": "Naziv uređaja:", "Update": "Ažuriranje", "IP": "IP adresa", "This_is_firebase": "Ovo je firebase", "Device_with_ip:_": "Uređaj s IP adresom: {}" -} +} \ No newline at end of file diff --git a/assets/translations/id-ID.json b/assets/translations/id-ID.json index 5556ad506..9764b4011 100644 --- a/assets/translations/id-ID.json +++ b/assets/translations/id-ID.json @@ -5,7 +5,7 @@ "History_Settings_Page": "Halaman Pengaturan Riwayat", "Lamps_Page": "Halaman lampu", "Name:_": "Nama: {}", - "Room:_": "Ruang: {}", + "Area:_": "Ruang: {}", "Lamps_Settings_Page": "Halaman Pengaturan Lampu", "Welcome_to_your_Smart_Home": "Selamat datang di Smart Home Anda", "Scene_Settings_Page": "Halaman Pengaturan Scene", @@ -51,8 +51,8 @@ "New_devices": "Perangkat baru", "Add_devices": "Tambah perangkat", "Device_type:_": "Tipe Perangkat: {}", - "Room_name_is_required": "Nama ruang diperlukan", - "Room_name:": "Nama Ruang:", + "Area_name_is_required": "Nama ruang diperlukan", + "Area_name:": "Nama Ruang:", "Device_name_is_required": "Nama perangkat dibutuhkan", "Device_name:": "Nama perangkat:", "Update": "Perbarui", @@ -82,7 +82,7 @@ "_Lights": "{} Lampu", "_Boilers": "{} Boiler", "_Blinds": "{} Tirai", - "Rooms": "Ruangan", + "Areas": "Ruangan", "_device": "{} perangkat", "_devices": "{} perangkat", "_SmartPlugs": "{} SmartPlug", @@ -109,4 +109,4 @@ "Turning_Off_boiler": "Mematikan ketel uap", "Waiting_for_user_to_get_connected_to_WiFi": "Menunggu pengguna terhubung ke WiFi", "Can't_add_unsupported_device": "Tidak dapat menambahkan perangkat yang tidak didukung" -} +} \ No newline at end of file diff --git a/assets/translations/it-IT.json b/assets/translations/it-IT.json index 3dd7ff083..04c86db75 100644 --- a/assets/translations/it-IT.json +++ b/assets/translations/it-IT.json @@ -5,7 +5,7 @@ "History_Settings_Page": "Pagina Impostazioni Cronologia", "Lamps_Page": "Pagina Lampade", "Name:_": "Nome: {}", - "Room:_": "Stanza: {}", + "Area:_": "Stanza: {}", "Lamps_Settings_Page": "Pagina Impostazioni Lampade", "Welcome_to_your_Smart_Home": "Benvenuto nella tua Smart Home", "Scene_Settings_Page": "Pagina Impostazioni Scena", @@ -20,7 +20,7 @@ "Medical_Device": "Dispositivo Medico", "Medical_Devices": "Dispositivi Medici", "Smart_Phone": "Smartphone", - "Smart Phones": "Smartphone", + "Smart Phones": "Smartphone", "Smart_Speakers": "Smart Speaker", "Smart_Devices_page": "Pagina Dispositivi Smart", "History": "Cronologia", @@ -51,8 +51,8 @@ "New_devices": "Nuovi dispositivi", "Add_devices": "Aggiungi dispositivi", "Device_type:_": "Tipo dispositivo: {}", - "Room_name_is_required": "None stanza richiesto", - "Room_name:": "Nome stanza:", + "Area_name_is_required": "None stanza richiesto", + "Area_name:": "Nome stanza:", "Device_name_is_required": "None dispositivo richiesto", "Device_name:": "Nome dispositivo:", "Update": "Aggiorna", @@ -82,7 +82,7 @@ "_Lights": "{} Luci", "_Boilers": "{} Caldaie", "_Blinds": "{} Tapparelle", - "Rooms": "Stanze", + "Areas": "Stanze", "_device": "{} dispositivo", "_devices": "{} dispositivi", "_SmartPlugs": "{} Presa Smart", @@ -109,4 +109,4 @@ "Turning_Off_boiler": "Spegni la caldaia", "Waiting_for_user_to_get_connected_to_WiFi": "In attesa che l'utente si connetta alla WiFi", "Can't_add_unsupported_device": "Impossibile aggiungere dispositivo non supportato" -} +} \ No newline at end of file diff --git a/assets/translations/ja-JP.json b/assets/translations/ja-JP.json index f05b5ba08..7ca04d17d 100644 --- a/assets/translations/ja-JP.json +++ b/assets/translations/ja-JP.json @@ -5,7 +5,7 @@ "History_Settings_Page": "履歴設定ページ", "Lamps_Page": "ランプページ", "Name:_": "名前: {}", - "Room:_": "部屋: {}", + "Area:_": "部屋: {}", "Lamps_Settings_Page": "ランプ設定ページ", "Welcome_to_your_Smart_Home": "スマートホームへようこそ", "Scene_Settings_Page": "シーン設定ページ", @@ -51,8 +51,8 @@ "New_devices": "新しいデバイス", "Add_devices": "デバイスを追加", "Device_type:_": "デバイスタイプ: {}", - "Room_name_is_required": "部屋名必須", - "Room_name:": "部屋の名前 :", + "Area_name_is_required": "部屋名必須", + "Area_name:": "部屋の名前 :", "Device_name_is_required": "デバイス名は必須です", "Device_name:": "装置名:", "Update": "アップデート", @@ -82,7 +82,7 @@ "_Lights": "{} ライト", "_Boilers": "{} ボイラー", "_Blinds": "{} ブラインド", - "Rooms": "部屋", + "Areas": "部屋", "_device": "{} デバイス", "_devices": "{} デバイス", "_SmartPlugs": "{} スマートプラグ", @@ -102,4 +102,4 @@ "Do_not_need": "必要はありません", "Finish": "終了", "Select_Purposes_Of_The_Area": "エリアの目的を選択" -} +} \ No newline at end of file diff --git a/assets/translations/ka-GE.json b/assets/translations/ka-GE.json index b869cf5a0..909d345b9 100644 --- a/assets/translations/ka-GE.json +++ b/assets/translations/ka-GE.json @@ -5,7 +5,7 @@ "History_Settings_Page": "ისტორიის პარამეტრების გვერდი", "Lamps_Page": "ლამპების გვერდი", "Name:_": "სახელი: {}", - "Room:_": "ოთახი: {}", + "Area:_": "ოთახი: {}", "Lamps_Settings_Page": "ლამპების პარამეტრების გვერდი", "Welcome_to_your_Smart_Home": "კეთილი იყოს შენი მობრძანება ჭკვიან სახლში", "Scene_Settings_Page": "სცენის პარამეტრების გვერდი", @@ -47,12 +47,12 @@ "New_devices": "ახალი მოწყობილობები", "Add_devices": "დაამატე მოწყობილობები", "Device_type:_": "მოწყობილობის ტიპი: {}", - "Room_name_is_required": "ოთახის სახელი აუცილებელია", - "Room_name:": "ოთახის სახელი:", + "Area_name_is_required": "ოთახის სახელი აუცილებელია", + "Area_name:": "ოთახის სახელი:", "Device_name_is_required": "მოწყობილობის სახელი აუცილებელია", "Device_name:": "მოწყობილობის სახელი:", "Update": "განახლება", "IP": "IP", "This_is_firebase": "ეს არის Firebase", "Device_with_ip:_": "მოწყობილობა IP მისამართით: {}" -} +} \ No newline at end of file diff --git a/assets/translations/ka-IN.json b/assets/translations/ka-IN.json index 172c562de..3f48c364f 100644 --- a/assets/translations/ka-IN.json +++ b/assets/translations/ka-IN.json @@ -5,7 +5,7 @@ "History_Settings_Page": "ಇತಿಹಾಸ ಸೆಟ್ಟಿಂಗ್ಗಳ ಪುಟ", "Lamps_Page": "ದೀಪಗಳ ಪುಟ", "Name:_": "ಹೆಸರು: {}", - "Room:_": "ಕೊಠಡಿ: {}", + "Area:_": "ಕೊಠಡಿ: {}", "Lamps_Settings_Page": "ಲ್ಯಾಂಪ್ಸ್ ಸೆಟ್ಟಿಂಗ್ಗಳ ಪುಟ", "Welcome_to_your_Smart_Home": "ನಿಮ್ಮ ಸ್ಮಾರ್ಟ್ ಹೋಮ್ಗೆ ಸುಸ್ವಾಗತ", "Scene_Settings_Page": "ದೃಶ್ಯ ಸೆಟ್ಟಿಂಗ್ಗಳ ಪುಟ", @@ -51,8 +51,8 @@ "New_devices": "ಹೊಸ ಸಾಧನಗಳು", "Add_devices": "ಸಾಧನಗಳನ್ನು ಸೇರಿಸಿ", "Device_type:_": "ಸಾಧನ ಪ್ರಕಾರ: {}", - "Room_name_is_required": "ಕೋಣೆಯ ಹೆಸರು ಅಗತ್ಯವಿದೆ", - "Room_name:": "ಕೋಣೆಯ ಹೆಸರು:", + "Area_name_is_required": "ಕೋಣೆಯ ಹೆಸರು ಅಗತ್ಯವಿದೆ", + "Area_name:": "ಕೋಣೆಯ ಹೆಸರು:", "Device_name_is_required": "ಸಾಧನದ ಹೆಸರು ಅಗತ್ಯವಿದೆ", "Device_name:": "ಸಾಧನದ ಹೆಸರು:", "Update": "ಅಪ್ಡೇಟ್", @@ -82,7 +82,7 @@ "_Lights": "{} ಲೈಟ್ಸ್", "_Boilers": "{} ಬಾಯ್ಲರ್ಗಳು", "_Blinds": "{} ಬ್ಲೈಂಡ್ಸ್", - "Rooms": "ಕೋಣೆಗಳು", + "Areas": "ಕೋಣೆಗಳು", "_device": "{} ಸಾಧನ", "_devices": "{} ಸಾಧನಗಳು", "_SmartPlugs": "{} ಸ್ಮಾರ್ಟ್ಪ್ಲಗ್ಗಳು", @@ -109,4 +109,4 @@ "Turning_Off_boiler": "ಬಾಯ್ಲರ್ ಅನ್ನು ಆಫ್ ಮಾಡಲಾಗುತ್ತಿದೆ", "Waiting_for_user_to_get_connected_to_WiFi": "ಬಳಕೆದಾರರು ವೈಫೈಗೆ ಸಂಪರ್ಕ ಹೊಂದಲು ನಿರೀಕ್ಷಿಸಲಾಗುತ್ತಿದೆ", "Can't_add_unsupported_device": "ಬೆಂಬಲವಿಲ್ಲದ ಸಾಧನವನ್ನು ಸೇರಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ" -} +} \ No newline at end of file diff --git a/assets/translations/ko-KR.json b/assets/translations/ko-KR.json index 14425b23a..11fccae9b 100644 --- a/assets/translations/ko-KR.json +++ b/assets/translations/ko-KR.json @@ -5,7 +5,7 @@ "History_Settings_Page": "내역 설정 페이지", "Lamps_Page": "조명 페이지", "Name:_": "이름: {}", - "Room:_": "방: {}", + "Area:_": "방: {}", "Lamps_Settings_Page": "조명 설정 페이지", "Welcome_to_your_Smart_Home": "당신의 스마트 홈에 오신걸 환영합니다", "Scene_Settings_Page": "현장 설정 페이지", @@ -51,8 +51,8 @@ "New_devices": "새 기기", "Add_devices": "기기 추가", "Device_type:_": "기기 종류: {}", - "Room_name_is_required": "방 이름이 필요합니다", - "Room_name:": "방 이름:", + "Area_name_is_required": "방 이름이 필요합니다", + "Area_name:": "방 이름:", "Device_name_is_required": "기기 이름이 필요합니다", "Device_name:": "기기 이름:", "Update": "갱신", @@ -82,7 +82,7 @@ "_Lights": "{} 빛", "_Boilers": "{} 보일러", "_Blinds": "{} 블라인드", - "Rooms": "방들", + "Areas": "방들", "_device": "{} 기기", "_devices": "{} 기기들", "_SmartPlugs": "{} 스마트 플러그", @@ -109,4 +109,4 @@ "Turning_Off_boiler": "보일러 작동을 멈춥니다", "Waiting_for_user_to_get_connected_to_WiFi": "사용자가 와이파이에 접속하길 기다리는 중", "Can't_add_unsupported_device": "지원되지 않는 기기는 추가 할 수 없습니다" -} +} \ No newline at end of file diff --git a/assets/translations/ml-IN.json b/assets/translations/ml-IN.json index 1eb21b693..c079aa2fd 100644 --- a/assets/translations/ml-IN.json +++ b/assets/translations/ml-IN.json @@ -5,7 +5,7 @@ "History_Settings_Page": "ചരിത്ര സജ്ജീകരണങ്ങൾ പേജ്", "Lamps_Page": "വിളക്കുകളുടെ പേജ്", "Name:_": "പേര് : {}", - "Room:_": "മുറി: {}", + "Area:_": "മുറി: {}", "Lamps_Settings_Page": "വിളക്കുകളുടെ സജ്ജീകരണങ്ങൾ പേജ്", "Welcome_to_your_Smart_Home": "നിങ്ങളുടെ സ്മാർട്ട് ഹോമിലേക്ക് സ്വാഗതം", "Scene_Settings_Page": "രംഗ സജ്ജീകരണങ്ങൾ പേജ്", @@ -51,8 +51,8 @@ "New_devices": "പുതിയ ഉപകരണങ്ങൾ", "Add_devices": "ഉപകരണങ്ങള് ചേര് ക്കുക", "Device_type:_": "ഉപകരണ തരം: {}", - "Room_name_is_required": "മുറിയുടെ പേര് ആവശ്യമാണ്", - "Room_name:": "മുറിയുടെ പേര്:", + "Area_name_is_required": "മുറിയുടെ പേര് ആവശ്യമാണ്", + "Area_name:": "മുറിയുടെ പേര്:", "Device_name_is_required": "ഉപകരണത്തിന്റെ പേര് ആവശ്യമാണ്", "Device_name:": "ഉപകരണത്തിന്റെ പേര്:", "Update": "അപ്ഡേറ്റ് ചെയ്യുക", @@ -82,7 +82,7 @@ "_Lights": "{} ലൈറ്റുകൾ", "_Boilers": "{} ബോയിലറുകൾ", "_Blinds": "{} ബ്ലൈൻഡുകൾ ", - "Rooms": "മുറികൾ", + "Areas": "മുറികൾ", "_device": "{} ഉപകരണം", "_devices": "{} ഉപകരണങ്ങൾ", "_SmartPlugs": "{} സ്മാർട്ട് പ്ലഗുകൾ", @@ -102,4 +102,4 @@ "Do_not_need": "ആവശ്യമില്ല.", "Finish": "പൂർത്തിയാക്കുക", "Select_Purposes_Of_The_Area": "പ്രദേശത്തിന്റെ ഉദ്ദേശ്യങ്ങൾ തിരഞ്ഞെടുക്കുക" -} +} \ No newline at end of file diff --git a/assets/translations/mr-IN.json b/assets/translations/mr-IN.json index 9336ce2e3..78cf49806 100644 --- a/assets/translations/mr-IN.json +++ b/assets/translations/mr-IN.json @@ -5,7 +5,7 @@ "History_Settings_Page": "इतिहास सेटिंग्ज पृष्ठ,", "Lamps_Page": "दिवे पान,", "Name_": "नाव {},", - "Room_": "खोली {},", + "Area_": "खोली {},", "Lamps_Settings_Page": "दिवे सेटिंग्ज पृष्ठ,", "Welcome_to_your_Smart_Home": "तुमच्या स्मार्ट होममध्ये स्वागत आहे,", "Scene_Settings_Page": "दृश्य सेटिंग्ज पृष्ठ,", @@ -51,8 +51,8 @@ "New_devices": "नवीन उपकरणे,", "Add_devices": "उपकरणे जोडा,", "Device_type_": "डिव्हाइस प्रकार {},", - "Room_name_is_required": "खोलीचे नाव आवश्यक आहे,", - "Room_name": "खोलीचे नाव,", + "Area_name_is_required": "खोलीचे नाव आवश्यक आहे,", + "Area_name": "खोलीचे नाव,", "Device_name_is_required": "डिव्हाइसचे नाव आवश्यक आहे,", "Device_name": "उपकरणाचे नाव ,", "Update": "अपडेट करा,", @@ -82,7 +82,7 @@ "_Lights": "{} दिवे,", "_Boilers": "{} बॉयलर,", "_Blinds": "{} पट्ट्या,", - "Rooms": "खोल्या,", + "Areas": "खोल्या,", "_device": "{} साधन,", "_devices": "{} उपकरणे,", "_SmartPlugs": "{} स्मार्टप्लग,", diff --git a/assets/translations/ms-MY.json b/assets/translations/ms-MY.json index 8a40be2d7..2cf4e035b 100644 --- a/assets/translations/ms-MY.json +++ b/assets/translations/ms-MY.json @@ -5,7 +5,7 @@ "History_Settings_Page": "Halaman Tetapan Sejarah", "Lamps_Page": "Halaman Lampu", "Name:_": "Nama: {}", - "Room:_": "Bilik: {}", + "Area:_": "Bilik: {}", "Lamps_Settings_Page": "Halaman Tetapan Lampu", "Welcome_to_your_Smart_Home": "Selamat datang ke Rumah Pintar anda", "Scene_Settings_Page": "Halaman Tetapan Pemandangan", @@ -42,4 +42,4 @@ "title": "tajuk", "number": "nombor", "IP_is_required": "IP diperlukan" -} +} \ No newline at end of file diff --git a/assets/translations/nb-NO.json b/assets/translations/nb-NO.json index 9420688b3..ba53381d0 100644 --- a/assets/translations/nb-NO.json +++ b/assets/translations/nb-NO.json @@ -5,7 +5,7 @@ "History_Settings_Page": "Innstillinger for historikk", "Lamps_Page": "Lampe side", "Name:_": "Navn: {}", - "Room:_": "Rom: {}", + "Area:_": "Rom: {}", "Lamps_Settings_Page": "Innstillinger for lamper", "Welcome_to_your_Smart_Home": "Velkommen til ditt Smart Hjem", "Scene_Settings_Page": "Innstillinger for scener", @@ -50,8 +50,8 @@ "New_devices": "Nye enheter", "Add_devices": "Legg til enheter", "Device_type:_": "Enhetstype: {}", - "Room_name_is_required": "Romnavn er påkrevd", - "Room_name:": "Romnavn:", + "Area_name_is_required": "Romnavn er påkrevd", + "Area_name:": "Romnavn:", "Device_name_is_required": "Enhetsnavn er påkrevd", "Device_name:": "Enhetsnavn:", "Update": "Oppdater", @@ -81,7 +81,7 @@ "_Lights": "{} Lys", "_Boilers": "{} Varmtvannstanker", "_Blinds": "{} Persienner", - "Rooms": "Rom", + "Areas": "Rom", "_device": "{} enhet", "_devices": "{} enheter", "_SmartPlugs": "{} SmartPlugger", @@ -101,4 +101,4 @@ "Do_not_need": "Trenger ikke", "Finish": "Fullfør", "Select_Purposes_Of_The_Area": "Velg bruk for område" -} +} \ No newline at end of file diff --git a/assets/translations/ne-NE.json b/assets/translations/ne-NE.json index 3f591b97f..574350a0c 100644 --- a/assets/translations/ne-NE.json +++ b/assets/translations/ne-NE.json @@ -5,7 +5,7 @@ "History_Settings_Page": "इतिहास सेटिङ पृष्ठ", "Lamps_Page": "बत्ती पृष्ठ", "Name:_": "नाम: {}", - "Room:_": "कोठा: {}", + "Area:_": "कोठा: {}", "Lamps_Settings_Page": "बत्ती सेटिङ पृष्ठ", "Welcome_to_your_Smart_Home": "तपाईंको स्मार्ट घरमा स्वागत छ", "Scene_Settings_Page": "दृश्य सेटिङ पृष्ठ", @@ -51,8 +51,8 @@ "New_devices": "नयाँ उपकरणहरू", "Add_devices": "यन्त्रहरू थप्नुहोस्", "Device_type:_": "उपकरण प्रकार: {}", - "Room_name_is_required": "कोठाको नाम आवश्यक छ", - "Room_name:": "कोठाको नाम:", + "Area_name_is_required": "कोठाको नाम आवश्यक छ", + "Area_name:": "कोठाको नाम:", "Device_name_is_required": "उपकरणको नाम आवश्यक छ", "Device_name:": "उपकरण नाम:", "Update": "अद्यावधिक", @@ -82,7 +82,7 @@ "_Lights": "{} बत्तीहरू", "_Boilers": "{} बॉयलर", "_Blinds": "{} पर्दा", - "Rooms": "कोठा", + "Areas": "कोठा", "_device": "{} उपकरण", "_devices": "{} उपकरणहरू", "_SmartPlugs": "{} स्मार्टप्लगहरू", @@ -109,4 +109,4 @@ "Turning_Off_boiler": "बोयलर बन्द गर्दै", "Waiting_for_user_to_get_connected_to_WiFi": "उपयोगकर्तालाई WiFi मा जडान हुनको लागि पर्खँदै", "Can't_add_unsupported_device": "असमर्थित उपकरण थप्न सकिँदैन" -} +} \ No newline at end of file diff --git a/assets/translations/nl-BE.json b/assets/translations/nl-BE.json index bf2f7797c..424a539c5 100644 --- a/assets/translations/nl-BE.json +++ b/assets/translations/nl-BE.json @@ -5,7 +5,7 @@ "History_Settings_Page": "Geschiedenis Instellingen Pagina", "Lamps_Page": "Lampen Pagina", "Name:_": "Naam: {}", - "Room:_": "Kamer: {}", + "Area:_": "Kamer: {}", "Lamps_Settings_Page": "Lampen Instellingen Pagina", "Welcome_to_your_Smart_Home": "Welkom in jouw Smart Home", "Scene_Settings_Page": "Scène Instellingen Pagina", @@ -51,8 +51,8 @@ "New_devices": "Nieuwe apparaten", "Add_devices": "Voeg apparaten toe", "Device_type:_": "Apparaat type: {}", - "Room_name_is_required": "Kamer naam is vereist", - "Room_name:": "Kamer naam:", + "Area_name_is_required": "Kamer naam is vereist", + "Area_name:": "Kamer naam:", "Device_name_is_required": "Apparaat naam is vereist", "Device_name:": "Apparaat naam:", "Update": "Update", @@ -82,7 +82,7 @@ "_Lights": "{} Lichten", "_Boilers": "{} Boilers", "_Blinds": "{} Gordijnen", - "Rooms": "Kamers", + "Areas": "Kamers", "_device": "{} apparaat", "_devices": "{} apparaten", "_SmartPlugs": "{} SmartPlugs", @@ -109,4 +109,4 @@ "Turning_Off_boiler": "Boiler Uitzetten", "Waiting_for_user_to_get_connected_to_WiFi": "Wachten op gebruiker om verbinding te maken met WiFi", "Can't_add_unsupported_device": "Kan geen niet-ondersteund apparaat toevoegen" -} +} \ No newline at end of file diff --git a/assets/translations/nl-NL.json b/assets/translations/nl-NL.json index bf2f7797c..424a539c5 100644 --- a/assets/translations/nl-NL.json +++ b/assets/translations/nl-NL.json @@ -5,7 +5,7 @@ "History_Settings_Page": "Geschiedenis Instellingen Pagina", "Lamps_Page": "Lampen Pagina", "Name:_": "Naam: {}", - "Room:_": "Kamer: {}", + "Area:_": "Kamer: {}", "Lamps_Settings_Page": "Lampen Instellingen Pagina", "Welcome_to_your_Smart_Home": "Welkom in jouw Smart Home", "Scene_Settings_Page": "Scène Instellingen Pagina", @@ -51,8 +51,8 @@ "New_devices": "Nieuwe apparaten", "Add_devices": "Voeg apparaten toe", "Device_type:_": "Apparaat type: {}", - "Room_name_is_required": "Kamer naam is vereist", - "Room_name:": "Kamer naam:", + "Area_name_is_required": "Kamer naam is vereist", + "Area_name:": "Kamer naam:", "Device_name_is_required": "Apparaat naam is vereist", "Device_name:": "Apparaat naam:", "Update": "Update", @@ -82,7 +82,7 @@ "_Lights": "{} Lichten", "_Boilers": "{} Boilers", "_Blinds": "{} Gordijnen", - "Rooms": "Kamers", + "Areas": "Kamers", "_device": "{} apparaat", "_devices": "{} apparaten", "_SmartPlugs": "{} SmartPlugs", @@ -109,4 +109,4 @@ "Turning_Off_boiler": "Boiler Uitzetten", "Waiting_for_user_to_get_connected_to_WiFi": "Wachten op gebruiker om verbinding te maken met WiFi", "Can't_add_unsupported_device": "Kan geen niet-ondersteund apparaat toevoegen" -} +} \ No newline at end of file diff --git a/assets/translations/pa-IN.json b/assets/translations/pa-IN.json index c4c27f22b..e97d457d3 100644 --- a/assets/translations/pa-IN.json +++ b/assets/translations/pa-IN.json @@ -5,7 +5,7 @@ "History_Settings_Page": "ਇਤਿਹਾਸ ਸੈਟਿੰਗ ਪੰਨਾ", "Lamps_Page": "ਦੀਵਾ ਪੰਨਾ", "Name:_": "ਨਾਮ: {}", - "Room:_": "ਕਮਰਾ: {}", + "Area:_": "ਕਮਰਾ: {}", "Lamps_Settings_Page": "ਦੀਵਾ ਸੈਟਿੰਗਾਂ ਪੰਨਾ", "Welcome_to_your_Smart_Home": "ਤੁਹਾਡੇ ਸਮਾਰਟ ਹੋਮ ਵਿੱਚ ਸੁਆਗਤ ਹੈ", "Scene_Settings_Page": "ਦ੍ਰਿਸ਼ ਸੈਟਿੰਗਾਂ ਪੰਨਾ", @@ -51,8 +51,8 @@ "New_devices": "ਨਵੀਆਂ ਡਿਵਾਈਸਾਂ", "Add_devices": "ਡਿਵਾਈਸਾਂ ਸ਼ਾਮਲ ਕਰੋ", "Device_type:_": "ਡਿਵਾਈਸ ਦੀ ਕਿਸਮ: {}", - "Room_name_is_required": "ਕਮਰੇ ਦਾ ਨਾਮ ਲੋੜੀਂਦਾ ਹੈ", - "Room_name:": "ਕਮਰੇ ਦਾ ਨਾਮ:", + "Area_name_is_required": "ਕਮਰੇ ਦਾ ਨਾਮ ਲੋੜੀਂਦਾ ਹੈ", + "Area_name:": "ਕਮਰੇ ਦਾ ਨਾਮ:", "Device_name_is_required": "ਡਿਵਾਈਸ ਦਾ ਨਾਮ ਲੋੜੀਂਦਾ ਹੈ", "Device_name:": "ਡਿਵਾਈਸ ਦਾ ਨਾਮ:", "Update": "ਅੱਪਡੇਟ ਕਰੋ", @@ -82,7 +82,7 @@ "_Lights": "{} ਲਾਈਟਾਂ", "_Boilers": "{} ਬਾਇਲਰ", "_Blinds": "{} ਪਰਦੇ", - "Rooms": "ਕਮਰੇ", + "Areas": "ਕਮਰੇ", "_device": "{} ਜੰਤਰ", "_devices": "{} ਡਿਵਾਈਸਾਂ", "_SmartPlugs": "{} ਸਮਾਰਟ ਪਲੱਗ", diff --git a/assets/translations/pa-PK.json b/assets/translations/pa-PK.json index 7e5d63940..d9e859c6c 100644 --- a/assets/translations/pa-PK.json +++ b/assets/translations/pa-PK.json @@ -5,7 +5,7 @@ "History_Settings_Page": "تاریخ دی ترتیبات دا صفحہ", "Lamps_Page": "لیمپ پیج", "Name:_": "نام: {}", - "Room:_": "کمرہ: {}", + "Area:_": "کمرہ: {}", "Lamps_Settings_Page": "لیمپ دی ترتیبات دا صفحہ", "Welcome_to_your_Smart_Home": "تواڈے سمارٹ ہوم وچ خوش آمدید", "Scene_Settings_Page": "منظر دی ترتیبات دا صفحہ", @@ -51,8 +51,8 @@ "New_devices": "نویں آلات", "Add_devices": "آلات شامل کرو", "Device_type:_": "{}:ڈیوائس دی قسم", - "Room_name_is_required": "کمرے دا ناں درکار اے", - "Room_name:": "کمرے دا ناں:", + "Area_name_is_required": "کمرے دا ناں درکار اے", + "Area_name:": "کمرے دا ناں:", "Device_name_is_required": "ڈیوائس دا ناں درکار اے", "Device_name:": "ڈیوائس دا ناں:", "Update": "اپ ڈیٹ کرو", @@ -82,7 +82,7 @@ "_Lights": "لائٹس{}", "_Boilers": "بوائلرز{}", "_Blinds": "بلائنڈز{}", - "Rooms": "کمرے", + "Areas": "کمرے", "_device": "آلہ{}", "_devices": "آلات{}", "_SmartPlugs": "اسمارٹ پلگز{}", @@ -109,4 +109,4 @@ "Turning_Off_boiler": "بوائلر نوں آف کرنا", "Waiting_for_user_to_get_connected_to_WiFi": "صارف دے وائی فائی نال منسلک ہون دا انتظار اے", "Can't_add_unsupported_device": "غیر تعاون یافتہ آلہ شامل نہیں کیتا جا سکدا" -} +} \ No newline at end of file diff --git a/assets/translations/pl-PL.json b/assets/translations/pl-PL.json index 23e96c90c..38087c7c7 100644 --- a/assets/translations/pl-PL.json +++ b/assets/translations/pl-PL.json @@ -5,7 +5,7 @@ "History_Settings_Page": "Strona ustawień historii", "Lamps_Page": "Strona lamp", "Name:_": "Imię: {}", - "Room:_": "Pokój: {}", + "Area:_": "Pokój: {}", "Lamps_Settings_Page": "Strona ustawień lamp", "Welcome_to_your_Smart_Home": "Witaj w swoim Inteligentym Domu", "Scene_Settings_Page": "Strona ustawień scen", @@ -51,8 +51,8 @@ "New_devices": "Nowe urządzenia", "Add_devices": "Dodaj urządzenia", "Device_type:_": "Typ urządzenia: {}", - "Room_name_is_required": "Wymagana nazwa pokoju", - "Room_name:": "Nazwa pokoju:", + "Area_name_is_required": "Wymagana nazwa pokoju", + "Area_name:": "Nazwa pokoju:", "Device_name_is_required": "Wymagana nazwa urządzenia", "Device_name:": "Nazwa urządzenia:", "Update": "Aktualizacja", @@ -82,7 +82,7 @@ "_Lights": "{} Światła", "_Boilers": "{} Boilery", "_Blinds": "{} Żaluzje", - "Rooms": "Pokoje", + "Areas": "Pokoje", "_device": "{} urządzenie", "_devices": "{} urządzenia", "_SmartPlugs": "{} Inteligentne wtyczki", @@ -102,4 +102,4 @@ "Do_not_need": "Nie trzeba", "Finish": "Koniec", "Select_Purposes_Of_The_Area": "Wybierz cele obszaru" -} +} \ No newline at end of file diff --git a/assets/translations/ps-AF.json b/assets/translations/ps-AF.json index 44996eabe..ca349990e 100644 --- a/assets/translations/ps-AF.json +++ b/assets/translations/ps-AF.json @@ -5,7 +5,7 @@ "History_Settings_Page": "د تاریخ ترتیباتو پاڼه", "Lamps_Page": "د څراغونو پاڼه", "Name:_": "نوم: {}", - "Room:_": "کوټه: {}", + "Area:_": "کوټه: {}", "Lamps_Settings_Page": "د لامپ ترتیباتو پاڼه", "Welcome_to_your_Smart_Home": "ستاسو سمارټ کور ته ښه راغلاست", "Scene_Settings_Page": "د صحنې ترتیبات پاڼه", @@ -51,8 +51,8 @@ "New_devices": "نوي وسایل", "Add_devices": "وسایل اضافه کړئ", "Device_type:_": "د وسیلې ډول: {}", - "Room_name_is_required": "د کوټې نوم اړین دی", - "Room_name:": "د کوټې نوم:", + "Area_name_is_required": "د کوټې نوم اړین دی", + "Area_name:": "د کوټې نوم:", "Device_name_is_required": "د وسیله نوم اړین دی", "Device_name:": "د آلې نوم:", "Update": "تازه کول", @@ -82,7 +82,7 @@ "_Lights": "{} څراغونه", "_Boilers": "{} بویلر", "_Blinds": "{} ړانده", - "Rooms": "کوټې", + "Areas": "کوټې", "_device": "{} وسیله", "_devices": "{} وسایل", "_SmartPlugs": "{} سمارټ پلګونه", @@ -109,4 +109,4 @@ "Turning_Off_boiler": "د بویلر بندول", "Waiting_for_user_to_get_connected_to_WiFi": "د وائی فای سره وصل کیدو لپاره کارونکي ته انتظار کول", "Can't_add_unsupported_device": "غیرمعمولي وسیله نشي اضافه کولی" -} +} \ No newline at end of file diff --git a/assets/translations/pt-BR.json b/assets/translations/pt-BR.json index 53ff41415..f19bc2423 100644 --- a/assets/translations/pt-BR.json +++ b/assets/translations/pt-BR.json @@ -5,7 +5,7 @@ "History_Settings_Page": "Página de Configurações do Histórico", "Lamps_Page": "Página das Lâmpadas", "Name:_": "Nome: {}", - "Room:_": "Cômodo: {}", + "Area:_": "Cômodo: {}", "Lamps_Settings_Page": "Página de Configuração das Lâmpadas", "Welcome_to_your_Smart_Home": "Bem vindo à sua Casa Inteligente", "Scene_Settings_Page": "Página de Configurações de Cenário", @@ -51,8 +51,8 @@ "New_devices": "Novos dispositivos", "Add_devices": "Adicionar dispositivos", "Device_type:_": "Tipo de dispositivo: {}", - "Room_name_is_required": "O nome do cômodo é obrigatório", - "Room_name:": "Nome do cômodo:", + "Area_name_is_required": "O nome do cômodo é obrigatório", + "Area_name:": "Nome do cômodo:", "Device_name_is_required": "O nome do dispositivo é obrigatório", "Device_name:": "Nome do dispositivo:", "Update": "Atualizar", @@ -82,7 +82,7 @@ "_Lights": "{} Luzes", "_Boilers": "{} Caldeiras", "_Blinds": "{} Cortinas", - "Rooms": "Cômodos", + "Areas": "Cômodos", "_device": "{} dispositivo", "_devices": "{} dispositivos", "_SmartPlugs": "{} Tomadas Inteligentes", diff --git a/assets/translations/pt-PT.json b/assets/translations/pt-PT.json index 16d8f4e9f..2828f1659 100644 --- a/assets/translations/pt-PT.json +++ b/assets/translations/pt-PT.json @@ -5,7 +5,7 @@ "History_Settings_Page": "página de configurações de ação", "Lamps_Page": "página de lâmpadas", "Name:_": "Name: {}", - "Room:_": "Room: {}", + "Area:_": "Area: {}", "Lamps_Settings_Page": "página de configuração de lâmpada automatizada", "Welcome_to_your_Smart_Home": "bem-vindo à sua casa automatizada", "Scene_Settings_Page": "Scene Settings Page", @@ -51,8 +51,8 @@ "New_devices": "novos dispositivos", "Add_devices": "adicionar um dispositivo", "Device_type:_": "tipo de dispositivo: {}", - "Room_name_is_required": "o nome da sala é obrigatório", - "Room_name:": "nome do quarto:", + "Area_name_is_required": "o nome da sala é obrigatório", + "Area_name:": "nome do quarto:", "Device_name_is_required": "o nome do dispositivo é obrigatório", "Device_name:": "nome do dispositivo:", "Update": "atualizar", @@ -82,7 +82,7 @@ "_Lights": "{} as luzes", "_Boilers": "{} as caldeiras", "_Blinds": "{} as cortinas de cortina", - "Rooms": "os quartos", + "Areas": "os quartos", "_device": "{} o dispositivo", "_devices": "{} os dispositivos", "_SmartPlugs": "{} a tomada elétrica automatizada", @@ -109,4 +109,4 @@ "Turning_Off_boiler": "desligando a caldeira", "Waiting_for_user_to_get_connected_to_WiFi": "esperando a pessoa se conectar ao wifi", "Can't_add_unsupported_device": "não é possível adicionar dispositivo eletrônico não suportado" -} +} \ No newline at end of file diff --git a/assets/translations/ro-RO.json b/assets/translations/ro-RO.json index 4bcc4c438..551307e2c 100644 --- a/assets/translations/ro-RO.json +++ b/assets/translations/ro-RO.json @@ -1,60 +1,60 @@ { - "Create_new_account": "Crează un cont nou", - "Actions_History": "Istoricul acțiunilor", - "Empty_history": "Golește istoricul", - "History_Settings_Page": "Pagina de setări a istoricului", - "Lamps_Page": "Pagina lămpilor", - "Name:_": "Nume: {}", - "Room:_": "Cameră: {}", - "Lamps_Settings_Page": "Pagina de setări a lămpilor", - "Welcome_to_your_Smart_Home": "Bine ai venit în casa ta inteligentă", - "Scene_Settings_Page": "Pagina de setări a scenei", - "Move_to_blinds_full_settings_page": "Mergi la pagina de setări a persianelor", - "Blinds_Page": "Pagina draperiilor", - "Down": "Jos", - "Stop": "Stop", - "Up": "Sus", - "Smart_Devices_Settings_Page": "Pagina de setări a dispozitivelor inteligente", - "Air_Conditioners": "Aere condiționate", - "Blinds": "Draperii", - "Medical_Device": "Dispozitiv medical", - "Smart_Phone": "Smart Phone", - "Smart_Speakers": "Diffuzoare inteligente", - "Smart_Devices_page": "Pagina dispozitivelor inteligente", - "History": "Istoric", - "Scene": "Scenă", - "Lamps": "Lămpi", - "Devices": "Dispozitive", - "Email_is_required": "Email-ul este necesar", - "Email_cannot_contain_spaces": "Email-ul nu poate conține spații", - "Email_is_invalid": "Email-ul este invalid", - "Email": "Email", - "Password_is_required": "Parola este necesară", - "Password_cannot_contain_spaces": "Parola nu poate conține spații", - "Password_must_be_bigger_than__characters": "Parola trebuie să fie mai mare de {} caractere", - "Password": "Parola", - "Log_In": "Autentificare", - "Forgot_password": "Ai uitat parola?", - "Forgot_password?": "Ai uitat parola?", - "title": "titlu", - "number": "număr", - "IP_is_required": "Adresa IP este necesară", - "IP_syntax_is_incorrect": "Sintaxa adresei IP este incorectă", - "Add_Smart_Device": "Adaugă dispozitiv inteligent", - "Cancel": "Anulare", - "Add": "Adaugă", - "Light": "Lumină", - "Device_ip:_": "Adresa ip a dispozitivelor {}", - "New_devices": "Dispozitive noi", - "Add_devices": "Adaugă dispozitive", - "Device_type:_": "Tipul dispozitivului: {}", - "Room_name_is_required": "Numele camerei este necesar", - "Room_name:": "Numele camerei:", - "Device_name_is_required": "Numele dispozitivului este necesar", - "Device_name:": "Numele dispozitivului:", - "Update": "Actualizare", - "IP": "IP", - "This_is_firebase": "Acesta este firebase", - "Device_with_ip:_": "Dispozitiv cu adresa IP: {}", - "Send": "Trimite" - } \ No newline at end of file + "Create_new_account": "Crează un cont nou", + "Actions_History": "Istoricul acțiunilor", + "Empty_history": "Golește istoricul", + "History_Settings_Page": "Pagina de setări a istoricului", + "Lamps_Page": "Pagina lămpilor", + "Name:_": "Nume: {}", + "Area:_": "Cameră: {}", + "Lamps_Settings_Page": "Pagina de setări a lămpilor", + "Welcome_to_your_Smart_Home": "Bine ai venit în casa ta inteligentă", + "Scene_Settings_Page": "Pagina de setări a scenei", + "Move_to_blinds_full_settings_page": "Mergi la pagina de setări a persianelor", + "Blinds_Page": "Pagina draperiilor", + "Down": "Jos", + "Stop": "Stop", + "Up": "Sus", + "Smart_Devices_Settings_Page": "Pagina de setări a dispozitivelor inteligente", + "Air_Conditioners": "Aere condiționate", + "Blinds": "Draperii", + "Medical_Device": "Dispozitiv medical", + "Smart_Phone": "Smart Phone", + "Smart_Speakers": "Diffuzoare inteligente", + "Smart_Devices_page": "Pagina dispozitivelor inteligente", + "History": "Istoric", + "Scene": "Scenă", + "Lamps": "Lămpi", + "Devices": "Dispozitive", + "Email_is_required": "Email-ul este necesar", + "Email_cannot_contain_spaces": "Email-ul nu poate conține spații", + "Email_is_invalid": "Email-ul este invalid", + "Email": "Email", + "Password_is_required": "Parola este necesară", + "Password_cannot_contain_spaces": "Parola nu poate conține spații", + "Password_must_be_bigger_than__characters": "Parola trebuie să fie mai mare de {} caractere", + "Password": "Parola", + "Log_In": "Autentificare", + "Forgot_password": "Ai uitat parola?", + "Forgot_password?": "Ai uitat parola?", + "title": "titlu", + "number": "număr", + "IP_is_required": "Adresa IP este necesară", + "IP_syntax_is_incorrect": "Sintaxa adresei IP este incorectă", + "Add_Smart_Device": "Adaugă dispozitiv inteligent", + "Cancel": "Anulare", + "Add": "Adaugă", + "Light": "Lumină", + "Device_ip:_": "Adresa ip a dispozitivelor {}", + "New_devices": "Dispozitive noi", + "Add_devices": "Adaugă dispozitive", + "Device_type:_": "Tipul dispozitivului: {}", + "Area_name_is_required": "Numele camerei este necesar", + "Area_name:": "Numele camerei:", + "Device_name_is_required": "Numele dispozitivului este necesar", + "Device_name:": "Numele dispozitivului:", + "Update": "Actualizare", + "IP": "IP", + "This_is_firebase": "Acesta este firebase", + "Device_with_ip:_": "Dispozitiv cu adresa IP: {}", + "Send": "Trimite" +} \ No newline at end of file diff --git a/assets/translations/ru-KZ.json b/assets/translations/ru-KZ.json index 116e9f812..2ca1e44c3 100644 --- a/assets/translations/ru-KZ.json +++ b/assets/translations/ru-KZ.json @@ -1,112 +1,112 @@ { - "Create_new_account": "Жаңа тіркелгі жасау", - "Actions_History": "Әрекеттер тарихы", - "Empty_history": "Бос тарих", - "History_Settings_Page": "Тарих параметрлері беті", - "Lamps_Page": "Шамдар беті", - "Name:_": "Аты: {}", - "Room:_": "Бөлме: {}", - "Lamps_Settings_Page": "Шамдар параметрлері беті", - "Welcome_to_your_Smart_Home": "Ақылды үйге қош келдіңіз", - "Scene_Settings_Page": "Көрініс параметрлері беті", - "Move_to_blinds_full_settings_page": "Жалюзидің толық параметрлері бетіне өтіңіз", - "Blinds_Page": "Жалюзи беті", - "Down": "Төмен", - "Stop": "Тоқта", - "Up": "Жоғары", - "Smart_Devices_Settings_Page": "Смарт құрылғылар параметрлері беті", - "Air_Conditioners": "Кондиционерлер", - "Blinds": "Жалюзи", - "Medical_Device": "Медициналық құрылғы", - "Medical_Devices": "Медициналық құрылғылар", - "Smart_Phone": "Смарт телефон", - "Smart_Phones": "Смарт телефондар", - "Smart_Speakers": "Ақылды динамиктер", - "Smart_Devices_page": "Смарт құрылғылар беті", - "History": "Тарих", - "Scene": "Көрініс", - "Scenes": "Көріністер", - "Lamps": "Көріністер", - "Devices": "Құрылғылар", - "Email_is_required": "Электрондық пошта қажет", - "Email_cannot_contain_spaces": "Электрондық поштада бос орындар болмауы керек", - "Email_is_invalid": "Электрондық пошта жарамсыз", - "Email": "Электрондық пошта", - "Password_is_required": "Құпия сөз қажет", - "Password_cannot_contain_spaces": "Құпия сөзде бос орындар болмауы керек", - "Password_must_be_bigger_than__characters": "Құпия сөз {} таңбадан үлкен болуы керек", - "Password": "Құпия сөз", - "Log_In": "Кіру", - "Forgot_password": "Құпия сөзді ұмыттыңыз ба", - "Forgot_password?": "Құпия сөзді ұмыттыңыз ба?", - "title": "тақырып", - "number": "саны", - "IP_is_required": "IP қажет", - "IP_syntax_is_incorrect": "IP синтаксисі дұрыс емес", - "Add_Smart_Device": "Смарт құрылғыны қосыңыз", - "Cancel": "Болдырмау", - "Add": "қосу", - "Light": "Жарық", - "Device_ip:_": "Құрылғы IP: {}", - "New_devices": "Жаңа құрылғылар", - "Add_devices": "Құрылғыларды қосыңыз", - "Device_type:_": "Құрылғы түрі: {}", - "Room_name_is_required": "Бөлме атауы қажет", - "Room_name:": "Бөлме атауы:", - "Device_name_is_required": "Құрылғы атауы қажет", - "Device_name:": "Құрылғы атауы:", - "Update": "Жаңарту", - "IP": "IP", - "This_is_firebase": "Бұл оттық база", - "Device_with_ip:_": "IP бар құрылғы: {}", - "Update_WiFi_configuration": "WiFi конфигурациясын жаңартыңыз", - "WiFi_name_is_required": "WiFi атауы қажет", - "WiFi_Name": "WiFi атауы", - "WiFi_password_is_required": "WiFi құпия сөзі қажет", - "WiFi_Password": "WiFi құпия сөзі", - "Insert_WiFi_Credentials": "WiFi тіркелгі деректерін енгізіңіз", - "Conditioners": "Кондиционерлер", - "Medical": "Медициналық", - "Phones": "Телефондар", - "Speakers": "Спикерлер", - "Send": "Жіберу", - "All_Devices": "Барлық құрылғылар", - "Summary": "Түйіндеме", - "Switches": "Коммутаторлар", - "Boilers": "Қазандықтар", - "Lights": "Шамдар", - "RGBw_Lights": "RGBw шамдары", - "_Switches": "{} Коммутаторлар", - "_SmartTvs": "{} Smart теледидарлар", - "_RGBW_Lights": "{} RGBw шамдары", - "_Lights": "{} Шамдар", - "_Boilers": "{} Қазандықтар", - "_Blinds": "{} Жалюзи", - "Rooms": "Бөлмелер", - "_device": "{} құрылғы", - "_devices": "{} құрылғылар", - "_SmartPlugs": "{} Смартштепсельдер", - "On": "Қосулы", - "Off": "Өшірулі", - "Color": "Түс", - "White": "Ақ", - "Area": "Аудан", - "Areas": "Аудандар", - "Automations": "Автоматтандыру", - "Scenes_In_Folder": "Қалтадағы көріністер", - "Select": "таңдаңыз", - "Exist": "Бар", - "OK": "ЖАРАЙДЫ МА", - "Nothing": "Ештеңе", - "No_need_here": "Мұнда қажеті жоқ", - "Do_not_need": "Do not need", - "Finish": "Finish", - "Select_Purposes_Of_The_Area": "Аймақтың мақсаттарын таңдаңыз", - "Pulling_Up_all_blinds": "Барлық перделерді тарту", - "Stopping_all_blinds": "Барлық перделерді тоқтату", - "Pulling_down_all_blinds": "Pulling down all blinds", - "Turning_On_boiler": "Қазандықты қосу", - "Turning_Off_boiler": "Қазандықты өшіру", - "Waiting_for_user_to_get_connected_to_WiFi": "Пайдаланушының WiFi желісіне қосылуын күтуде", - "Can't_add_unsupported_device": "Қолдау көрсетілмейтін құрылғыны қосу мүмкін емес" - } \ No newline at end of file + "Create_new_account": "Жаңа тіркелгі жасау", + "Actions_History": "Әрекеттер тарихы", + "Empty_history": "Бос тарих", + "History_Settings_Page": "Тарих параметрлері беті", + "Lamps_Page": "Шамдар беті", + "Name:_": "Аты: {}", + "Area:_": "Бөлме: {}", + "Lamps_Settings_Page": "Шамдар параметрлері беті", + "Welcome_to_your_Smart_Home": "Ақылды үйге қош келдіңіз", + "Scene_Settings_Page": "Көрініс параметрлері беті", + "Move_to_blinds_full_settings_page": "Жалюзидің толық параметрлері бетіне өтіңіз", + "Blinds_Page": "Жалюзи беті", + "Down": "Төмен", + "Stop": "Тоқта", + "Up": "Жоғары", + "Smart_Devices_Settings_Page": "Смарт құрылғылар параметрлері беті", + "Air_Conditioners": "Кондиционерлер", + "Blinds": "Жалюзи", + "Medical_Device": "Медициналық құрылғы", + "Medical_Devices": "Медициналық құрылғылар", + "Smart_Phone": "Смарт телефон", + "Smart_Phones": "Смарт телефондар", + "Smart_Speakers": "Ақылды динамиктер", + "Smart_Devices_page": "Смарт құрылғылар беті", + "History": "Тарих", + "Scene": "Көрініс", + "Scenes": "Көріністер", + "Lamps": "Көріністер", + "Devices": "Құрылғылар", + "Email_is_required": "Электрондық пошта қажет", + "Email_cannot_contain_spaces": "Электрондық поштада бос орындар болмауы керек", + "Email_is_invalid": "Электрондық пошта жарамсыз", + "Email": "Электрондық пошта", + "Password_is_required": "Құпия сөз қажет", + "Password_cannot_contain_spaces": "Құпия сөзде бос орындар болмауы керек", + "Password_must_be_bigger_than__characters": "Құпия сөз {} таңбадан үлкен болуы керек", + "Password": "Құпия сөз", + "Log_In": "Кіру", + "Forgot_password": "Құпия сөзді ұмыттыңыз ба", + "Forgot_password?": "Құпия сөзді ұмыттыңыз ба?", + "title": "тақырып", + "number": "саны", + "IP_is_required": "IP қажет", + "IP_syntax_is_incorrect": "IP синтаксисі дұрыс емес", + "Add_Smart_Device": "Смарт құрылғыны қосыңыз", + "Cancel": "Болдырмау", + "Add": "қосу", + "Light": "Жарық", + "Device_ip:_": "Құрылғы IP: {}", + "New_devices": "Жаңа құрылғылар", + "Add_devices": "Құрылғыларды қосыңыз", + "Device_type:_": "Құрылғы түрі: {}", + "Area_name_is_required": "Бөлме атауы қажет", + "Area_name:": "Бөлме атауы:", + "Device_name_is_required": "Құрылғы атауы қажет", + "Device_name:": "Құрылғы атауы:", + "Update": "Жаңарту", + "IP": "IP", + "This_is_firebase": "Бұл оттық база", + "Device_with_ip:_": "IP бар құрылғы: {}", + "Update_WiFi_configuration": "WiFi конфигурациясын жаңартыңыз", + "WiFi_name_is_required": "WiFi атауы қажет", + "WiFi_Name": "WiFi атауы", + "WiFi_password_is_required": "WiFi құпия сөзі қажет", + "WiFi_Password": "WiFi құпия сөзі", + "Insert_WiFi_Credentials": "WiFi тіркелгі деректерін енгізіңіз", + "Conditioners": "Кондиционерлер", + "Medical": "Медициналық", + "Phones": "Телефондар", + "Speakers": "Спикерлер", + "Send": "Жіберу", + "All_Devices": "Барлық құрылғылар", + "Summary": "Түйіндеме", + "Switches": "Коммутаторлар", + "Boilers": "Қазандықтар", + "Lights": "Шамдар", + "RGBw_Lights": "RGBw шамдары", + "_Switches": "{} Коммутаторлар", + "_SmartTvs": "{} Smart теледидарлар", + "_RGBW_Lights": "{} RGBw шамдары", + "_Lights": "{} Шамдар", + "_Boilers": "{} Қазандықтар", + "_Blinds": "{} Жалюзи", + "Areas": "Бөлмелер", + "_device": "{} құрылғы", + "_devices": "{} құрылғылар", + "_SmartPlugs": "{} Смартштепсельдер", + "On": "Қосулы", + "Off": "Өшірулі", + "Color": "Түс", + "White": "Ақ", + "Area": "Аудан", + "Areas": "Аудандар", + "Automations": "Автоматтандыру", + "Scenes_In_Folder": "Қалтадағы көріністер", + "Select": "таңдаңыз", + "Exist": "Бар", + "OK": "ЖАРАЙДЫ МА", + "Nothing": "Ештеңе", + "No_need_here": "Мұнда қажеті жоқ", + "Do_not_need": "Do not need", + "Finish": "Finish", + "Select_Purposes_Of_The_Area": "Аймақтың мақсаттарын таңдаңыз", + "Pulling_Up_all_blinds": "Барлық перделерді тарту", + "Stopping_all_blinds": "Барлық перделерді тоқтату", + "Pulling_down_all_blinds": "Pulling down all blinds", + "Turning_On_boiler": "Қазандықты қосу", + "Turning_Off_boiler": "Қазандықты өшіру", + "Waiting_for_user_to_get_connected_to_WiFi": "Пайдаланушының WiFi желісіне қосылуын күтуде", + "Can't_add_unsupported_device": "Қолдау көрсетілмейтін құрылғыны қосу мүмкін емес" +} \ No newline at end of file diff --git a/assets/translations/ru-RU.json b/assets/translations/ru-RU.json index 0fb087ce3..b1f8e9a3b 100644 --- a/assets/translations/ru-RU.json +++ b/assets/translations/ru-RU.json @@ -5,7 +5,7 @@ "History_Settings_Page": "Страница настроек истории", "Lamps_Page": "Страница с лампами", "Name:_": "Название: {}", - "Room:_": "Комната: {}", + "Area:_": "Комната: {}", "Lamps_Settings_Page": "Страница настроек ламп", "Welcome_to_your_Smart_Home": "Добро пожаловать в ваш Умный Дом", "Scene_Settings_Page": "Страница настроек сцены", @@ -18,7 +18,7 @@ "Air_Conditioners": "Кондиционеры", "Blinds": "Шторы", "Medical_Device": "Медицинское устройство", - "Medical_Devices": "Медицинские устройства", + "Medical_Devices": "Медицинские устройства", "Smart_Phone": "Смартфон", "Smart_Phones": "Смартфоны", "Smart_Speakers": "Умные колонки", @@ -50,8 +50,8 @@ "New_devices": "Новые устройства", "Add_devices": "Добавить устройства", "Device_type:_": "Тип устройства: {}", - "Room_name_is_required": "Требуется название комнаты", - "Room_name:": "Название комнаты:", + "Area_name_is_required": "Требуется название комнаты", + "Area_name:": "Название комнаты:", "Device_name_is_required": "Требуется название устройства", "Device_name:": "Название устройства:", "Update": "Обновить", @@ -81,7 +81,7 @@ "_Lights": "{} лампы", "_Boilers": "{} бойлеры", "_Blinds": "{} шторы", - "Rooms": "Комнаты", + "Areas": "Комнаты", "_device": "{} устройство", "_devices": "{} устройства", "_SmartPlugs": "{} SmartPlugs", @@ -101,4 +101,4 @@ "Do_not_need": "Не требуется", "Finish": "Завершить", "Select_Purposes_Of_The_Area": "Выберите назначение территории" -} +} \ No newline at end of file diff --git a/assets/translations/sv-SE.json b/assets/translations/sv-SE.json index 0507cb7eb..ce998481e 100644 --- a/assets/translations/sv-SE.json +++ b/assets/translations/sv-SE.json @@ -5,7 +5,7 @@ "History_Settings_Page": "Historikinställningar", "Lamps_Page": "Lampor", "Name:_": "Hem: {}", - "Room:_": "Rum: {}", + "Area:_": "Rum: {}", "Lamps_Settings_Page": "Lampinställningar", "Welcome_to_your_Smart_Home": "Välkommen till ditt smarta hem", "Scene_Settings_Page": "Sceninställningar", @@ -51,8 +51,8 @@ "New_devices": "Nya enheter", "Add_devices": "Lägg till enheter", "Device_type:_": "Enhetstyp: {}", - "Room_name_is_required": "Rumsnamn är obligatoriskt", - "Room_name:": "Rumsnamn:", + "Area_name_is_required": "Rumsnamn är obligatoriskt", + "Area_name:": "Rumsnamn:", "Device_name_is_required": "Enhetsnamn är obligatoriskt", "Device_name:": "Enhetsnamn:", "Update": "Uppdatera", @@ -82,7 +82,7 @@ "_Lights": "{} Lampor", "_Boilers": "{} Varmvattenberedare", "_Blinds": "{} Persienner", - "Rooms": "Rum", + "Areas": "Rum", "_device": "{} enhet", "_devices": "{} enheter", "_SmartPlugs": "{} SmartPlugs", @@ -109,4 +109,4 @@ "Turning_Off_boiler": "Stäng av varmvattenberedare", "Waiting_for_user_to_get_connected_to_WiFi": "Vänta på att användaren är ansluten till WiFI", "Can't_add_unsupported_device": "Kan inte lägga till enhet som inte stöds" -} +} \ No newline at end of file diff --git a/assets/translations/ta-IN.json b/assets/translations/ta-IN.json index b1ab8326b..9ff884e41 100644 --- a/assets/translations/ta-IN.json +++ b/assets/translations/ta-IN.json @@ -5,7 +5,7 @@ "History_Settings_Page": "வரலாறு அமைக்கும் பக்கம்", "Lamps_Page": "விளக்குகள் பக்கம்", "Name:_": "பெயர்: {}", - "Room:_": "அறை: {}", + "Area:_": "அறை: {}", "Lamps_Settings_Page": "விளக்குகள் அமைக்கும் பக்கம்", "Welcome_to_your_Smart_Home": "உங்கள் ஸ்மார்ட் வீட்டிற்கு வரவேற்கிறோம்", "Scene_Settings_Page": "காட்சி அமைப்பு பக்கம்", @@ -51,8 +51,8 @@ "New_devices": "புதிய சாதனங்கள்", "Add_devices": "சாதனங்களைச் சேர்க்கவும்", "Device_type:_": "கருவியின் வகை: {}", - "Room_name_is_required": "அறையின் பெயர் தேவை", - "Room_name:": "அறையின் பெயர்:", + "Area_name_is_required": "அறையின் பெயர் தேவை", + "Area_name:": "அறையின் பெயர்:", "Device_name_is_required": "சாதனத்தின் பெயர் தேவை", "Device_name:": "சாதனத்தின் பெயர்:", "Update": "புதுப்பிக்கவும்", @@ -82,7 +82,7 @@ "_Lights": "{} விளக்குகள்", "_Boilers": "{} கொதிகலன்கள்", "_Blinds": "{} பார்வையற்றோர்", - "Rooms": "அறைகள்", + "Areas": "அறைகள்", "_device": "{} சாதனம்", "_devices": "{} சாதனங்கள்", "_SmartPlugs": "{} ஸ்மார்ட் பிளகுகள்", @@ -109,4 +109,4 @@ "Turning_Off_boiler": "கொதிக்கலனை அணைப்பது", "Waiting_for_user_to_get_connected_to_WiFi": "பயனாளி வைஃபை இணைய காத்திருக்கிறது", "Can't_add_unsupported_device": "ஆதரிக்கப்படாத சாதனத்தைச் சேர்க்க முடியாது" -} +} \ No newline at end of file diff --git a/assets/translations/te-IN.json b/assets/translations/te-IN.json index 358c3d365..6f553073c 100644 --- a/assets/translations/te-IN.json +++ b/assets/translations/te-IN.json @@ -5,7 +5,7 @@ "History_Settings_Page": "చరిత్ర సెట్టింగుల పేజీ", "Lamps_Page": "దీపాల పేజీ", "Name:_": "పేరు: {}", - "Room:_": "గది: {}", + "Area:_": "గది: {}", "Lamps_Settings_Page": "దీపాల సెట్టింగుల పేజీ", "Welcome_to_your_Smart_Home": "మీ స్మార్ట్ ఇంటికి స్వాగతం", "Scene_Settings_Page": "దృశ్యం సెట్టింగుల పేజీ", @@ -47,12 +47,12 @@ "New_devices": "క్రొత్త పరికరాలు", "Add_devices": "పరికరాలను జోడించండి", "Device_type:_": "పరికరం రకం: {}", - "Room_name_is_required": "గది పేరు అవసరం", - "Room_name:": "గది పేరు:", + "Area_name_is_required": "గది పేరు అవసరం", + "Area_name:": "గది పేరు:", "Device_name_is_required": "పరికర పేరు అవసరం", "Device_name:": "పరికర పేరు:", "Update": "నవీకరణ", "IP": "ఐపి", "This_is_firebase": "ఇది ఫైర్బేస్", "Device_with_ip:_": "పరికరం తో ఐపి: {}" -} +} \ No newline at end of file diff --git a/assets/translations/th-TH.json b/assets/translations/th-TH.json index a1db19a7e..c80dc2e06 100644 --- a/assets/translations/th-TH.json +++ b/assets/translations/th-TH.json @@ -5,7 +5,7 @@ "History_Settings_Page": "หน้าการตั้งค่าประวัติ", "Lamps_Page": "หน้าโคมไฟ", "Name:_": "ชื่อ: {}", - "Room:_": "ห้อง: {}", + "Area:_": "ห้อง: {}", "Lamps_Settings_Page": "หน้าการตั้งค่าโคมไฟ", "Welcome_to_your_Smart_Home": "ยินดีต้อนรับเข้าสู่ Smart Home ของคุณ", "Scene_Settings_Page": "หน้าการตั้งค่าซีน", @@ -47,8 +47,8 @@ "New_devices": "สร้างอุปกรณ์ใหม่", "Add_devices": "เพิ่มอุปกรณ์ใหม่", "Device_type:_": "ชนิดของอุปกรณ์: {}", - "Room_name_is_required": "กรุณากรอกชื่อห้อง", - "Room_name:": "ชื่อห้อง:", + "Area_name_is_required": "กรุณากรอกชื่อห้อง", + "Area_name:": "ชื่อห้อง:", "Device_name_is_required": "กรุณากรอกชื่ออุปกรณ์", "Device_name:": "ชื่ออุปกรณ์:", "Update": "อัพเดต", diff --git a/assets/translations/tl-PH.json b/assets/translations/tl-PH.json index f6c5772ff..526c6e3c0 100644 --- a/assets/translations/tl-PH.json +++ b/assets/translations/tl-PH.json @@ -5,7 +5,7 @@ "History_Settings_Page": "Mga Kasaysayan", "Lamps_Page": "Pahina ng Mga Lamp", "Name:_": "Pangalan: {}", - "Room:_": "Kwarto: {}", + "Area:_": "Kwarto: {}", "Lamps_Settings_Page": "Pahina ng Mga Lamps Setting", "Welcome_to_your_Smart_Home": "Welcome sa iyong Smart Home", "Scene_Settings_Page": "Pahina ng Mga Scene Setting", @@ -51,8 +51,8 @@ "New_devices": "Bagong Mga device", "Add_devices": "Magdagdag ng Mga device", "Device_type:_": "Uri ng device: {}", - "Room_name_is_required": "Kinakailangan ang pangalan ng kwarto", - "Room_name:": "Pangalan ng kwarto:", + "Area_name_is_required": "Kinakailangan ang pangalan ng kwarto", + "Area_name:": "Pangalan ng kwarto:", "Device_name_is_required": "Kinakailangan ang pangalan ng device", "Device_name:": "Pangalan ng device:", "Update": "Update", @@ -82,7 +82,7 @@ "_Lights": "{} na Mga Ilaw", "_Boilers": "{} na Mga Boiler", "_Blinds": "{} na Mga Blind", - "Rooms": "Mga Kwarto", + "Areas": "Mga Kwarto", "_device": "{} device", "_devices": "{} na Mga device", "_SmartPlugs": "{} na Mga SmartPlug", @@ -109,4 +109,4 @@ "Turning_Off_boiler": "Pinapatay ang boiler", "Waiting_for_user_to_get_connected_to_WiFi": "Hinihintay na makakonekta ang user sa WiFi", "Can't_add_unsupported_device": "Hindi makapagdagdag ng hindi sinusuportahang device" -} +} \ No newline at end of file diff --git a/assets/translations/tr-TR.json b/assets/translations/tr-TR.json index 61d9dc846..9b643360c 100644 --- a/assets/translations/tr-TR.json +++ b/assets/translations/tr-TR.json @@ -5,7 +5,7 @@ "History_Settings_Page": "Geçmiş Ayarları Sayfası", "Lamps_Page": "Lambalar Sayfası", "Name:_": "İsim: {}", - "Room:_": "Oda: {}", + "Area:_": "Oda: {}", "Lamps_Settings_Page": "Lamba Ayarları Sayfası", "Welcome_to_your_Smart_Home": "Ana Sayfayı Hoşgeldiniz", "Scene_Settings_Page": "Sahne Ayarları Sayfası", @@ -51,8 +51,8 @@ "New_devices": "Yeni cihazlar", "Add_devices": "Cihaz ekle", "Device_type:_": "Cihaz tipi: {}", - "Room_name_is_required": "Oda adı gerekli", - "Room_name:": "Oda ismi:", + "Area_name_is_required": "Oda adı gerekli", + "Area_name:": "Oda ismi:", "Device_name_is_required": "Cihaz adı gerekli", "Device_name:": "Cihaz adı:", "Update": "Güncelle", @@ -82,7 +82,7 @@ "_Lights": "{} Işıklar", "_Boilers": "{} Kazanlar", "_Blinds": "{} Panjur", - "Rooms": "Odalar", + "Areas": "Odalar", "_device": "{} cihaz", "_devices": "{} cihazlar", "_SmartPlugs": "{} Akıllı Fişler", @@ -109,4 +109,4 @@ "Turning_Off_boiler": "Kazanın Kapatılması", "Waiting_for_user_to_get_connected_to_WiFi": "Kullanıcının WiFi'ye bağlanması bekleniyor", "Can't_add_unsupported_device": "Desteklenmeyen cihaz eklenemiyor" -} +} \ No newline at end of file diff --git a/assets/translations/uk-UA.json b/assets/translations/uk-UA.json index 2c6819959..c263560fd 100644 --- a/assets/translations/uk-UA.json +++ b/assets/translations/uk-UA.json @@ -5,7 +5,7 @@ "History_Settings_Page": "Сторінка налаштувань історії", "Lamps_Page": "Сторінка з лампами", "Name:_": "Назва: {}", - "Room:_": "Кімната: {}", + "Area:_": "Кімната: {}", "Lamps_Settings_Page": "Сторінка налаштувань ламп", "Welcome_to_your_Smart_Home": "Ласкаво просимо у ваш Розумний Будинок", "Scene_Settings_Page": "Сторінка налаштувань сцени", @@ -51,8 +51,8 @@ "New_devices": "Нові пристрої", "Add_devices": "Додати пристрій", "Device_type:_": "Тип пристрою: {}", - "Room_name_is_required": "Необхідна назва кімнати", - "Room_name:": "Назва кімнати:", + "Area_name_is_required": "Необхідна назва кімнати", + "Area_name:": "Назва кімнати:", "Device_name_is_required": "Необхідна назва пристрою", "Device_name:": "Назва пристрою:", "Update": "Оновлення", @@ -82,7 +82,7 @@ "_Lights": "{} Лампи", "_Boilers": "{} Котли", "_Blinds": "{} Жалюзі", - "Rooms": "кімнати", + "Areas": "кімнати", "_device": "{} пристрій", "_devices": "{} пристрої", "_SmartPlugs": "{} Розумні розетки", diff --git a/assets/translations/ur-IN.json b/assets/translations/ur-IN.json index 9622727d1..c3df3fcf4 100644 --- a/assets/translations/ur-IN.json +++ b/assets/translations/ur-IN.json @@ -1,112 +1,112 @@ { - "Create_new_account": "نیا اکاؤنٹ بنائیں", - "Actions_History": "اعمال کی تاریخ", - "Empty_history": "خالی تاریخ", - "History_Settings_Page": "تاریخ کی ترتیبات کا صفحہ", - "Lamps_Page": "لیمپ پیج", - "Name:_": "نام: {}", - "Room:_": "کمرہ: {}", - "Lamps_Settings_Page": "لیمپ کی ترتیبات کا صفحہ", - "Welcome_to_your_Smart_Home": "آپ کے سمارٹ ہوم میں خوش آمدید", - "Scene_Settings_Page": "منظر کی ترتیبات کا صفحہ", - "Move_to_blinds_full_settings_page": "بلائنڈز کے مکمل سیٹنگز کے صفحے پر جائیں۔", - "Blinds_Page": "بلائنڈز کا پیج", - "Down": "نیچے", - "Stop": "رک جاؤ", - "Up": "اوپر", - "Smart_Devices_Settings_Page": "اسمارٹ ڈیوائسز کی ترتیبات کا صفحہ", - "Air_Conditioners": "ایئر کنڈیشنرز", - "Blinds": "بلائنڈز", - "Medical_Device": "طبی آلہ", - "Medical_Devices": "طبی آلات", - "Smart_Phone": "سمارٹ فون", - "Smart_Phones": "سمارٹ فونز", - "Smart_Speakers": "اسمارٹ اسپیکر", - "Smart_Devices_page": "اسمارٹ ڈیوائسز کا صفحہ", - "History": "تاریخ", - "Scene": "منظر", - "Scenes": "مناظر", - "Lamps": "لیمپ", - "Devices": "آلات", - "Email_is_required": "ای میل درکار ہے۔", - "Email_cannot_contain_spaces": "ای میل خالی جگہوں پر مشتمل نہیں ہو سکتی", - "Email_is_invalid": "ای میل غلط ہے", - "Email": "ای میل", - "Password_is_required": "پاس ورڈ درکار ہے۔", - "Password_cannot_contain_spaces": "پاس ورڈ میں وقفہ نہیں ہوسکتا", - "Password_must_be_bigger_than__characters": "پاس ورڈ {} حروف سے بڑا ہونا چاہیے۔ ", - "Password": "پاس ورڈ", - "Log_In": "لاگ ان کریں", - "Forgot_password": "پاسورڈ بھول گئے", - "Forgot_password?": "پاسورڈ بھول گئے؟", - "title": "عنوان", - "number": "نمبر", - "IP_is_required": " درکار ہے۔ IP", - "IP_syntax_is_incorrect": "کی نحو غلط ہے۔ IP", - "Add_Smart_Device": "اسمارٹ ڈیوائس شامل کریں۔", - "Cancel": "منسوخ کریں۔", - "Add": "شامل کریں۔", - "Light": "روشنی", - "Device_ip:_": "{}:ڈیوائس کی آئی پی", - "New_devices": "نئے آلات", - "Add_devices": "آلات شامل کریں۔", - "Device_type:_": "{}:ڈیوائس کی قسم", - "Room_name_is_required": "کمرے کا نام درکار ہے۔", - "Room_name:": "کمرے کا نام:", - "Device_name_is_required": "ڈیوائس کا نام درکار ہے۔", - "Device_name:": "ڈیوائس کا نام:", - "Update": "اپ ڈیٹ", - "IP": "آئی پی", - "This_is_firebase": "یہ فائر بیس ہے۔", - "Device_with_ip:_": "{}:آئی پی کے ساتھ ڈیوائس", - "Update_WiFi_configuration": "وائی فائی کنفیگریشن کو اپ ڈیٹ کریں۔", - "WiFi_name_is_required": "وائی فائی کا نام درکار ہے۔", - "WiFi_Name": "وائی فائی کا نام", - "WiFi_password_is_required": "وائی فائی کا پاس ورڈ درکار ہے۔", - "WiFi_Password": "وائی فائی کا پاس ورڈ", - "Insert_WiFi_Credentials": "وائی فائی اسناد درج کریں۔", - "Conditioners": "کنڈیشنرز", - "Medical": "طبی", - "Phones": "فونز", - "Speakers": "مقررین", - "Send": "بھیجیں", - "All_Devices": "تمام آلات", - "Summary": "خلاصہ", - "Switches": "سوئچز", - "Boilers": "بوائلرز", - "Lights": "لائٹس", - "RGBw_Lights": "آر جی بی ڈبلیو لائٹس", - "_Switches": "سوئچز{}", - "_SmartTvs": "اسمارٹ ٹی وی{}", - "_RGBW_Lights": "آر جی بی ڈبلیو لائٹس{}", - "_Lights": "لائٹس{}", - "_Boilers": "بوائلرز{}", - "_Blinds": "بلائنڈز{}", - "Rooms": "کمرے", - "_device": "آلہ{}", - "_devices": "آلات{}", - "_SmartPlugs": "اسمارٹ پلگز{}", - "On": "آن", - "Off": "آف", - "Color": "رنگ", - "White": "سفید", - "Area": "رقبہ", - "Areas": "علاقے", - "Automations": "آٹومیشنز", - "Scenes_In_Folder": "فولڈر میں مناظر", - "Select": "منتخب کریں۔", - "Exist": "موجود ہے۔", - "OK": "ٹھیک ہے", - "Nothing": "کچھ بھی نہیں۔", - "No_need_here": "یہاں ضرورت نہیں۔", - "Do_not_need": "ضرورت نہیں", - "Finish": "مکمل کریں", - "Select_Purposes_Of_The_Area": "علاقے کے مقاصد کو منتخب کریں۔", - "Pulling_Up_all_blinds": "تمام بلائنڈز کو کھینچنا", - "Stopping_all_blinds": "تمام بلائنڈز کو روکنا", - "Pulling_down_all_blinds": "تمام بلائنڈز کو نیچے کھینچنا", - "Turning_On_boiler": "بوائلر کو آن کرنا", - "Turning_Off_boiler": "بوائلر کو آف کرنا", - "Waiting_for_user_to_get_connected_to_WiFi": "صارف کے وائی فائی سے منسلک ہونے کا انتظار ہے۔", - "Can't_add_unsupported_device": "غیر تعاون یافتہ آلہ شامل نہیں کیا جا سکتا" - } + "Create_new_account": "نیا اکاؤنٹ بنائیں", + "Actions_History": "اعمال کی تاریخ", + "Empty_history": "خالی تاریخ", + "History_Settings_Page": "تاریخ کی ترتیبات کا صفحہ", + "Lamps_Page": "لیمپ پیج", + "Name:_": "نام: {}", + "Area:_": "کمرہ: {}", + "Lamps_Settings_Page": "لیمپ کی ترتیبات کا صفحہ", + "Welcome_to_your_Smart_Home": "آپ کے سمارٹ ہوم میں خوش آمدید", + "Scene_Settings_Page": "منظر کی ترتیبات کا صفحہ", + "Move_to_blinds_full_settings_page": "بلائنڈز کے مکمل سیٹنگز کے صفحے پر جائیں۔", + "Blinds_Page": "بلائنڈز کا پیج", + "Down": "نیچے", + "Stop": "رک جاؤ", + "Up": "اوپر", + "Smart_Devices_Settings_Page": "اسمارٹ ڈیوائسز کی ترتیبات کا صفحہ", + "Air_Conditioners": "ایئر کنڈیشنرز", + "Blinds": "بلائنڈز", + "Medical_Device": "طبی آلہ", + "Medical_Devices": "طبی آلات", + "Smart_Phone": "سمارٹ فون", + "Smart_Phones": "سمارٹ فونز", + "Smart_Speakers": "اسمارٹ اسپیکر", + "Smart_Devices_page": "اسمارٹ ڈیوائسز کا صفحہ", + "History": "تاریخ", + "Scene": "منظر", + "Scenes": "مناظر", + "Lamps": "لیمپ", + "Devices": "آلات", + "Email_is_required": "ای میل درکار ہے۔", + "Email_cannot_contain_spaces": "ای میل خالی جگہوں پر مشتمل نہیں ہو سکتی", + "Email_is_invalid": "ای میل غلط ہے", + "Email": "ای میل", + "Password_is_required": "پاس ورڈ درکار ہے۔", + "Password_cannot_contain_spaces": "پاس ورڈ میں وقفہ نہیں ہوسکتا", + "Password_must_be_bigger_than__characters": "پاس ورڈ {} حروف سے بڑا ہونا چاہیے۔ ", + "Password": "پاس ورڈ", + "Log_In": "لاگ ان کریں", + "Forgot_password": "پاسورڈ بھول گئے", + "Forgot_password?": "پاسورڈ بھول گئے؟", + "title": "عنوان", + "number": "نمبر", + "IP_is_required": " درکار ہے۔ IP", + "IP_syntax_is_incorrect": "کی نحو غلط ہے۔ IP", + "Add_Smart_Device": "اسمارٹ ڈیوائس شامل کریں۔", + "Cancel": "منسوخ کریں۔", + "Add": "شامل کریں۔", + "Light": "روشنی", + "Device_ip:_": "{}:ڈیوائس کی آئی پی", + "New_devices": "نئے آلات", + "Add_devices": "آلات شامل کریں۔", + "Device_type:_": "{}:ڈیوائس کی قسم", + "Area_name_is_required": "کمرے کا نام درکار ہے۔", + "Area_name:": "کمرے کا نام:", + "Device_name_is_required": "ڈیوائس کا نام درکار ہے۔", + "Device_name:": "ڈیوائس کا نام:", + "Update": "اپ ڈیٹ", + "IP": "آئی پی", + "This_is_firebase": "یہ فائر بیس ہے۔", + "Device_with_ip:_": "{}:آئی پی کے ساتھ ڈیوائس", + "Update_WiFi_configuration": "وائی فائی کنفیگریشن کو اپ ڈیٹ کریں۔", + "WiFi_name_is_required": "وائی فائی کا نام درکار ہے۔", + "WiFi_Name": "وائی فائی کا نام", + "WiFi_password_is_required": "وائی فائی کا پاس ورڈ درکار ہے۔", + "WiFi_Password": "وائی فائی کا پاس ورڈ", + "Insert_WiFi_Credentials": "وائی فائی اسناد درج کریں۔", + "Conditioners": "کنڈیشنرز", + "Medical": "طبی", + "Phones": "فونز", + "Speakers": "مقررین", + "Send": "بھیجیں", + "All_Devices": "تمام آلات", + "Summary": "خلاصہ", + "Switches": "سوئچز", + "Boilers": "بوائلرز", + "Lights": "لائٹس", + "RGBw_Lights": "آر جی بی ڈبلیو لائٹس", + "_Switches": "سوئچز{}", + "_SmartTvs": "اسمارٹ ٹی وی{}", + "_RGBW_Lights": "آر جی بی ڈبلیو لائٹس{}", + "_Lights": "لائٹس{}", + "_Boilers": "بوائلرز{}", + "_Blinds": "بلائنڈز{}", + "Areas": "کمرے", + "_device": "آلہ{}", + "_devices": "آلات{}", + "_SmartPlugs": "اسمارٹ پلگز{}", + "On": "آن", + "Off": "آف", + "Color": "رنگ", + "White": "سفید", + "Area": "رقبہ", + "Areas": "علاقے", + "Automations": "آٹومیشنز", + "Scenes_In_Folder": "فولڈر میں مناظر", + "Select": "منتخب کریں۔", + "Exist": "موجود ہے۔", + "OK": "ٹھیک ہے", + "Nothing": "کچھ بھی نہیں۔", + "No_need_here": "یہاں ضرورت نہیں۔", + "Do_not_need": "ضرورت نہیں", + "Finish": "مکمل کریں", + "Select_Purposes_Of_The_Area": "علاقے کے مقاصد کو منتخب کریں۔", + "Pulling_Up_all_blinds": "تمام بلائنڈز کو کھینچنا", + "Stopping_all_blinds": "تمام بلائنڈز کو روکنا", + "Pulling_down_all_blinds": "تمام بلائنڈز کو نیچے کھینچنا", + "Turning_On_boiler": "بوائلر کو آن کرنا", + "Turning_Off_boiler": "بوائلر کو آف کرنا", + "Waiting_for_user_to_get_connected_to_WiFi": "صارف کے وائی فائی سے منسلک ہونے کا انتظار ہے۔", + "Can't_add_unsupported_device": "غیر تعاون یافتہ آلہ شامل نہیں کیا جا سکتا" +} \ No newline at end of file diff --git a/assets/translations/ur-PK.json b/assets/translations/ur-PK.json index 053bcdb1f..c3df3fcf4 100644 --- a/assets/translations/ur-PK.json +++ b/assets/translations/ur-PK.json @@ -1,113 +1,112 @@ { - "Create_new_account": "نیا اکاؤنٹ بنائیں", - "Actions_History": "اعمال کی تاریخ", - "Empty_history": "خالی تاریخ", - "History_Settings_Page": "تاریخ کی ترتیبات کا صفحہ", - "Lamps_Page": "لیمپ پیج", - "Name:_": "نام: {}", - "Room:_": "کمرہ: {}", - "Lamps_Settings_Page": "لیمپ کی ترتیبات کا صفحہ", - "Welcome_to_your_Smart_Home": "آپ کے سمارٹ ہوم میں خوش آمدید", - "Scene_Settings_Page": "منظر کی ترتیبات کا صفحہ", - "Move_to_blinds_full_settings_page": "بلائنڈز کے مکمل سیٹنگز کے صفحے پر جائیں۔", - "Blinds_Page": "بلائنڈز کا پیج", - "Down": "نیچے", - "Stop": "رک جاؤ", - "Up": "اوپر", - "Smart_Devices_Settings_Page": "اسمارٹ ڈیوائسز کی ترتیبات کا صفحہ", - "Air_Conditioners": "ایئر کنڈیشنرز", - "Blinds": "بلائنڈز", - "Medical_Device": "طبی آلہ", - "Medical_Devices": "طبی آلات", - "Smart_Phone": "سمارٹ فون", - "Smart_Phones": "سمارٹ فونز", - "Smart_Speakers": "اسمارٹ اسپیکر", - "Smart_Devices_page": "اسمارٹ ڈیوائسز کا صفحہ", - "History": "تاریخ", - "Scene": "منظر", - "Scenes": "مناظر", - "Lamps": "لیمپ", - "Devices": "آلات", - "Email_is_required": "ای میل درکار ہے۔", - "Email_cannot_contain_spaces": "ای میل خالی جگہوں پر مشتمل نہیں ہو سکتی", - "Email_is_invalid": "ای میل غلط ہے", - "Email": "ای میل", - "Password_is_required": "پاس ورڈ درکار ہے۔", - "Password_cannot_contain_spaces": "پاس ورڈ میں وقفہ نہیں ہوسکتا", - "Password_must_be_bigger_than__characters": "پاس ورڈ {} حروف سے بڑا ہونا چاہیے۔ ", - "Password": "پاس ورڈ", - "Log_In": "لاگ ان کریں", - "Forgot_password": "پاسورڈ بھول گئے", - "Forgot_password?": "پاسورڈ بھول گئے؟", - "title": "عنوان", - "number": "نمبر", - "IP_is_required": " درکار ہے۔ IP", - "IP_syntax_is_incorrect": "کی نحو غلط ہے۔ IP", - "Add_Smart_Device": "اسمارٹ ڈیوائس شامل کریں۔", - "Cancel": "منسوخ کریں۔", - "Add": "شامل کریں۔", - "Light": "روشنی", - "Device_ip:_": "{}:ڈیوائس کی آئی پی", - "New_devices": "نئے آلات", - "Add_devices": "آلات شامل کریں۔", - "Device_type:_": "{}:ڈیوائس کی قسم", - "Room_name_is_required": "کمرے کا نام درکار ہے۔", - "Room_name:": "کمرے کا نام:", - "Device_name_is_required": "ڈیوائس کا نام درکار ہے۔", - "Device_name:": "ڈیوائس کا نام:", - "Update": "اپ ڈیٹ", - "IP": "آئی پی", - "This_is_firebase": "یہ فائر بیس ہے۔", - "Device_with_ip:_": "{}:آئی پی کے ساتھ ڈیوائس", - "Update_WiFi_configuration": "وائی فائی کنفیگریشن کو اپ ڈیٹ کریں۔", - "WiFi_name_is_required": "وائی فائی کا نام درکار ہے۔", - "WiFi_Name": "وائی فائی کا نام", - "WiFi_password_is_required": "وائی فائی کا پاس ورڈ درکار ہے۔", - "WiFi_Password": "وائی فائی کا پاس ورڈ", - "Insert_WiFi_Credentials": "وائی فائی اسناد درج کریں۔", - "Conditioners": "کنڈیشنرز", - "Medical": "طبی", - "Phones": "فونز", - "Speakers": "مقررین", - "Send": "بھیجیں", - "All_Devices": "تمام آلات", - "Summary": "خلاصہ", - "Switches": "سوئچز", - "Boilers": "بوائلرز", - "Lights": "لائٹس", - "RGBw_Lights": "آر جی بی ڈبلیو لائٹس", - "_Switches": "سوئچز{}", - "_SmartTvs": "اسمارٹ ٹی وی{}", - "_RGBW_Lights": "آر جی بی ڈبلیو لائٹس{}", - "_Lights": "لائٹس{}", - "_Boilers": "بوائلرز{}", - "_Blinds": "بلائنڈز{}", - "Rooms": "کمرے", - "_device": "آلہ{}", - "_devices": "آلات{}", - "_SmartPlugs": "اسمارٹ پلگز{}", - "On": "آن", - "Off": "آف", - "Color": "رنگ", - "White": "سفید", - "Area": "رقبہ", - "Areas": "علاقے", - "Automations": "آٹومیشنز", - "Scenes_In_Folder": "فولڈر میں مناظر", - "Select": "منتخب کریں۔", - "Exist": "موجود ہے۔", - "OK": "ٹھیک ہے", - "Nothing": "کچھ بھی نہیں۔", - "No_need_here": "یہاں ضرورت نہیں۔", - "Do_not_need": "ضرورت نہیں", - "Finish": "مکمل کریں", - "Select_Purposes_Of_The_Area": "علاقے کے مقاصد کو منتخب کریں۔", - "Pulling_Up_all_blinds": "تمام بلائنڈز کو کھینچنا", - "Stopping_all_blinds": "تمام بلائنڈز کو روکنا", - "Pulling_down_all_blinds": "تمام بلائنڈز کو نیچے کھینچنا", - "Turning_On_boiler": "بوائلر کو آن کرنا", - "Turning_Off_boiler": "بوائلر کو آف کرنا", - "Waiting_for_user_to_get_connected_to_WiFi": "صارف کے وائی فائی سے منسلک ہونے کا انتظار ہے۔", - "Can't_add_unsupported_device": "غیر تعاون یافتہ آلہ شامل نہیں کیا جا سکتا" - } - + "Create_new_account": "نیا اکاؤنٹ بنائیں", + "Actions_History": "اعمال کی تاریخ", + "Empty_history": "خالی تاریخ", + "History_Settings_Page": "تاریخ کی ترتیبات کا صفحہ", + "Lamps_Page": "لیمپ پیج", + "Name:_": "نام: {}", + "Area:_": "کمرہ: {}", + "Lamps_Settings_Page": "لیمپ کی ترتیبات کا صفحہ", + "Welcome_to_your_Smart_Home": "آپ کے سمارٹ ہوم میں خوش آمدید", + "Scene_Settings_Page": "منظر کی ترتیبات کا صفحہ", + "Move_to_blinds_full_settings_page": "بلائنڈز کے مکمل سیٹنگز کے صفحے پر جائیں۔", + "Blinds_Page": "بلائنڈز کا پیج", + "Down": "نیچے", + "Stop": "رک جاؤ", + "Up": "اوپر", + "Smart_Devices_Settings_Page": "اسمارٹ ڈیوائسز کی ترتیبات کا صفحہ", + "Air_Conditioners": "ایئر کنڈیشنرز", + "Blinds": "بلائنڈز", + "Medical_Device": "طبی آلہ", + "Medical_Devices": "طبی آلات", + "Smart_Phone": "سمارٹ فون", + "Smart_Phones": "سمارٹ فونز", + "Smart_Speakers": "اسمارٹ اسپیکر", + "Smart_Devices_page": "اسمارٹ ڈیوائسز کا صفحہ", + "History": "تاریخ", + "Scene": "منظر", + "Scenes": "مناظر", + "Lamps": "لیمپ", + "Devices": "آلات", + "Email_is_required": "ای میل درکار ہے۔", + "Email_cannot_contain_spaces": "ای میل خالی جگہوں پر مشتمل نہیں ہو سکتی", + "Email_is_invalid": "ای میل غلط ہے", + "Email": "ای میل", + "Password_is_required": "پاس ورڈ درکار ہے۔", + "Password_cannot_contain_spaces": "پاس ورڈ میں وقفہ نہیں ہوسکتا", + "Password_must_be_bigger_than__characters": "پاس ورڈ {} حروف سے بڑا ہونا چاہیے۔ ", + "Password": "پاس ورڈ", + "Log_In": "لاگ ان کریں", + "Forgot_password": "پاسورڈ بھول گئے", + "Forgot_password?": "پاسورڈ بھول گئے؟", + "title": "عنوان", + "number": "نمبر", + "IP_is_required": " درکار ہے۔ IP", + "IP_syntax_is_incorrect": "کی نحو غلط ہے۔ IP", + "Add_Smart_Device": "اسمارٹ ڈیوائس شامل کریں۔", + "Cancel": "منسوخ کریں۔", + "Add": "شامل کریں۔", + "Light": "روشنی", + "Device_ip:_": "{}:ڈیوائس کی آئی پی", + "New_devices": "نئے آلات", + "Add_devices": "آلات شامل کریں۔", + "Device_type:_": "{}:ڈیوائس کی قسم", + "Area_name_is_required": "کمرے کا نام درکار ہے۔", + "Area_name:": "کمرے کا نام:", + "Device_name_is_required": "ڈیوائس کا نام درکار ہے۔", + "Device_name:": "ڈیوائس کا نام:", + "Update": "اپ ڈیٹ", + "IP": "آئی پی", + "This_is_firebase": "یہ فائر بیس ہے۔", + "Device_with_ip:_": "{}:آئی پی کے ساتھ ڈیوائس", + "Update_WiFi_configuration": "وائی فائی کنفیگریشن کو اپ ڈیٹ کریں۔", + "WiFi_name_is_required": "وائی فائی کا نام درکار ہے۔", + "WiFi_Name": "وائی فائی کا نام", + "WiFi_password_is_required": "وائی فائی کا پاس ورڈ درکار ہے۔", + "WiFi_Password": "وائی فائی کا پاس ورڈ", + "Insert_WiFi_Credentials": "وائی فائی اسناد درج کریں۔", + "Conditioners": "کنڈیشنرز", + "Medical": "طبی", + "Phones": "فونز", + "Speakers": "مقررین", + "Send": "بھیجیں", + "All_Devices": "تمام آلات", + "Summary": "خلاصہ", + "Switches": "سوئچز", + "Boilers": "بوائلرز", + "Lights": "لائٹس", + "RGBw_Lights": "آر جی بی ڈبلیو لائٹس", + "_Switches": "سوئچز{}", + "_SmartTvs": "اسمارٹ ٹی وی{}", + "_RGBW_Lights": "آر جی بی ڈبلیو لائٹس{}", + "_Lights": "لائٹس{}", + "_Boilers": "بوائلرز{}", + "_Blinds": "بلائنڈز{}", + "Areas": "کمرے", + "_device": "آلہ{}", + "_devices": "آلات{}", + "_SmartPlugs": "اسمارٹ پلگز{}", + "On": "آن", + "Off": "آف", + "Color": "رنگ", + "White": "سفید", + "Area": "رقبہ", + "Areas": "علاقے", + "Automations": "آٹومیشنز", + "Scenes_In_Folder": "فولڈر میں مناظر", + "Select": "منتخب کریں۔", + "Exist": "موجود ہے۔", + "OK": "ٹھیک ہے", + "Nothing": "کچھ بھی نہیں۔", + "No_need_here": "یہاں ضرورت نہیں۔", + "Do_not_need": "ضرورت نہیں", + "Finish": "مکمل کریں", + "Select_Purposes_Of_The_Area": "علاقے کے مقاصد کو منتخب کریں۔", + "Pulling_Up_all_blinds": "تمام بلائنڈز کو کھینچنا", + "Stopping_all_blinds": "تمام بلائنڈز کو روکنا", + "Pulling_down_all_blinds": "تمام بلائنڈز کو نیچے کھینچنا", + "Turning_On_boiler": "بوائلر کو آن کرنا", + "Turning_Off_boiler": "بوائلر کو آف کرنا", + "Waiting_for_user_to_get_connected_to_WiFi": "صارف کے وائی فائی سے منسلک ہونے کا انتظار ہے۔", + "Can't_add_unsupported_device": "غیر تعاون یافتہ آلہ شامل نہیں کیا جا سکتا" +} \ No newline at end of file diff --git a/assets/translations/vi-VN.json b/assets/translations/vi-VN.json index 64790a644..0516eb591 100644 --- a/assets/translations/vi-VN.json +++ b/assets/translations/vi-VN.json @@ -5,7 +5,7 @@ "History_Settings_Page": "Trang cài đặt lịch sử", "Lamps_Page": "Trang đèn ngủ", "Name:_": "Tên: {}", - "Room:_": "Phòng: {}", + "Area:_": "Phòng: {}", "Lamps_Settings_Page": "Trang cài đặt đèn ngủ", "Welcome_to_your_Smart_Home": "Chào mừng tới ngôi nhà thông minh của bạn", "Scene_Settings_Page": "Trang cài đặt phong cảnh", @@ -51,8 +51,8 @@ "New_devices": "Các thiết bị mới", "Add_devices": "Thêm thiết bị", "Device_type:_": "Loại thiết bị: {}", - "Room_name_is_required": "Tên phòng là bắt buộc", - "Room_name:": "Tên phòng:", + "Area_name_is_required": "Tên phòng là bắt buộc", + "Area_name:": "Tên phòng:", "Device_name_is_required": "Tên thiết bị là bắt buộc", "Device_name:": "Tên thiết bị:", "Update": "Cập nhật", @@ -82,7 +82,7 @@ "_Lights": "{} Đèn", "_Boilers": "{} Ấm đun nước", "_Blinds": "{} Rèm", - "Rooms": "Phòng", + "Areas": "Phòng", "_device": "{} thiết bị", "_devices": "{} thiết bị", "_SmartPlugs": "{} Ổ cắm thông minh", @@ -109,4 +109,4 @@ "Turning_Off_boiler": "Tắt ấm đun nước", "Waiting_for_user_to_get_connected_to_WiFi": "Đợi người dùng kết nối với WiFi", "Can't_add_unsupported_device": "Không thể thêm thiết bị không được hỗ trợ" -} +} \ No newline at end of file diff --git a/assets/translations/zh-CN.json b/assets/translations/zh-CN.json index a36ac08ae..51dabb7bc 100644 --- a/assets/translations/zh-CN.json +++ b/assets/translations/zh-CN.json @@ -1,112 +1,111 @@ { - "Create_new_account": "建立新帐户", - "Actions_History": "操作历史", - "Empty_history": "空历史", - "History_Settings_Page": "历史设置页面", - "Lamps_Page": "灯具页面", - "Name:_": "姓名: {}", - "Room:_": "房间: {}", - "Lamps_Settings_Page": "灯设置页面", - "Welcome_to_your_Smart_Home": "欢迎来到您的智能家居", - "Scene_Settings_Page": "场景设置页面", - "Move_to_blinds_full_settings_page": "移至百叶窗完整设置页面”,“百叶窗页面”:“百叶窗页面", - "Down": "下", - "Stop": "停止", - "Up": "向上", - "Smart_Devices_Settings_Page": "智能设备设置页面", - "Air_Conditioners": "空调", - "Blinds": "百叶窗", - "Medical_Device": "医疗装置", - "Medical_Devices": "医疗设备", - "Smart_Phone": "手机", - "Smart_Phones": "智能手机", - "Smart_Speakers": "智能音箱", - "Smart_Devices_page": "智能设备页面", - "History": "历史", - "Scene": "场景", - "Scenes": "场景", - "Lamps": "灯具", - "Devices": "设备", - "Email_is_required": "电子邮件是必需的", - "Email_cannot_contain_spaces": "电子邮件不能包含空格", - "Email_is_invalid": "电子邮件无效", - "Email": "电子邮件", - "Password_is_required": "密码是必需的", - "Password_cannot_contain_spaces": "密码不能包含空格", - "Password_must_be_bigger_than__characters": "密码必须大于 {} 个字符", - "Password": "密码", - "Log_In": "登录", - "Forgot_password": "忘记密码", - "Forgot_password?": "忘记密码?", - "title": "标题", - "number": "数字", - "IP_is_required": "需要 IP", - "IP_syntax_is_incorrect": "IP 语法不正确", - "Add_Smart_Device": "添加智能设备", - "Cancel": "取消", - "Add": "添加", - "Light": "光", - "Device_ip:_": "设备 IP: {}", - "New_devices": "新设备", - "Add_devices": "添加设备", - "Device_type:_": "设备类型: {}", - "Room_name_is_required": "房间名称为必填项", - "Room_name:": "房间名称:", - "Device_name_is_required": "设备名称为必填项", - "Device_name:": "设备名称:", - "Update": "更新", - "IP": "IP", - "This_is_firebase": "这是火力基地", - "Device_with_ip:_": "带IP的设备: {}", - "Update_WiFi_configuration": "更新 WiFi 配置", - "WiFi_name_is_required": "WiFi 名称为必填项", - "WiFi_Name": "WiFi名称", - "WiFi_password_is_required": "需要 WiFi 密码", - "WiFi_Password": "需要 WiFi 密码", - "Insert_WiFi_Credentials": "插入 WiFi 凭据", - "Conditioners": "护发素", - "Medical": "医疗的", - "Phones": "电话", - "Speakers": "扬声器", - "Send": "发送", - "All_Devices": "所有设备", - "Summary": "概括", - "Switches": "开关", - "Boilers": "锅炉", - "Lights": "灯", - "RGBw_Lights": "RGBw 灯", - "_Switches": "{} 开关", - "_SmartTvs": "{} 智能电视", - "_RGBW_Lights": "{} RGBW 灯", - "_Lights": "{} 灯", - "_Boilers": "{} 锅炉", - "_Blinds": "{} 百叶窗", - "Rooms": "房间", - "_device": "{} 设备", - "_devices": "{} 设备", - "_SmartPlugs": "{} 智能插头", - "On": "上", - "Off": "离开", - "Color": "颜色", - "White": "白色的", - "Area": "区域", - "Areas": "领域", - "Automations": "自动化", - "Scenes_In_Folder": "文件夹中的场景", - "Select": "选择", - "Exist": "存在", - "OK": "好的", - "Nothing": "没有什么", - "No_need_here": "这里不需要", - "Do_not_need": "不需要", - "Finish": "结束", - "Select_Purposes_Of_The_Area": "选择该地区的用途", - "Pulling_Up_all_blinds": "拉起所有百叶窗", - "Stopping_all_blinds": "停止所有的百叶窗", - "Pulling_down_all_blinds": "拉下所有百叶窗", - "Turning_On_boiler": "打开锅炉", - "Turning_Off_boiler": "关闭锅炉", - "Waiting_for_user_to_get_connected_to_WiFi": "等待用户连接到 WiFi", - "Can't_add_unsupported_device": "无法添加不受支持的设备" - } - \ No newline at end of file + "Create_new_account": "建立新帐户", + "Actions_History": "操作历史", + "Empty_history": "空历史", + "History_Settings_Page": "历史设置页面", + "Lamps_Page": "灯具页面", + "Name:_": "姓名: {}", + "Area:_": "房间: {}", + "Lamps_Settings_Page": "灯设置页面", + "Welcome_to_your_Smart_Home": "欢迎来到您的智能家居", + "Scene_Settings_Page": "场景设置页面", + "Move_to_blinds_full_settings_page": "移至百叶窗完整设置页面”,“百叶窗页面”:“百叶窗页面", + "Down": "下", + "Stop": "停止", + "Up": "向上", + "Smart_Devices_Settings_Page": "智能设备设置页面", + "Air_Conditioners": "空调", + "Blinds": "百叶窗", + "Medical_Device": "医疗装置", + "Medical_Devices": "医疗设备", + "Smart_Phone": "手机", + "Smart_Phones": "智能手机", + "Smart_Speakers": "智能音箱", + "Smart_Devices_page": "智能设备页面", + "History": "历史", + "Scene": "场景", + "Scenes": "场景", + "Lamps": "灯具", + "Devices": "设备", + "Email_is_required": "电子邮件是必需的", + "Email_cannot_contain_spaces": "电子邮件不能包含空格", + "Email_is_invalid": "电子邮件无效", + "Email": "电子邮件", + "Password_is_required": "密码是必需的", + "Password_cannot_contain_spaces": "密码不能包含空格", + "Password_must_be_bigger_than__characters": "密码必须大于 {} 个字符", + "Password": "密码", + "Log_In": "登录", + "Forgot_password": "忘记密码", + "Forgot_password?": "忘记密码?", + "title": "标题", + "number": "数字", + "IP_is_required": "需要 IP", + "IP_syntax_is_incorrect": "IP 语法不正确", + "Add_Smart_Device": "添加智能设备", + "Cancel": "取消", + "Add": "添加", + "Light": "光", + "Device_ip:_": "设备 IP: {}", + "New_devices": "新设备", + "Add_devices": "添加设备", + "Device_type:_": "设备类型: {}", + "Area_name_is_required": "房间名称为必填项", + "Area_name:": "房间名称:", + "Device_name_is_required": "设备名称为必填项", + "Device_name:": "设备名称:", + "Update": "更新", + "IP": "IP", + "This_is_firebase": "这是火力基地", + "Device_with_ip:_": "带IP的设备: {}", + "Update_WiFi_configuration": "更新 WiFi 配置", + "WiFi_name_is_required": "WiFi 名称为必填项", + "WiFi_Name": "WiFi名称", + "WiFi_password_is_required": "需要 WiFi 密码", + "WiFi_Password": "需要 WiFi 密码", + "Insert_WiFi_Credentials": "插入 WiFi 凭据", + "Conditioners": "护发素", + "Medical": "医疗的", + "Phones": "电话", + "Speakers": "扬声器", + "Send": "发送", + "All_Devices": "所有设备", + "Summary": "概括", + "Switches": "开关", + "Boilers": "锅炉", + "Lights": "灯", + "RGBw_Lights": "RGBw 灯", + "_Switches": "{} 开关", + "_SmartTvs": "{} 智能电视", + "_RGBW_Lights": "{} RGBW 灯", + "_Lights": "{} 灯", + "_Boilers": "{} 锅炉", + "_Blinds": "{} 百叶窗", + "Areas": "房间", + "_device": "{} 设备", + "_devices": "{} 设备", + "_SmartPlugs": "{} 智能插头", + "On": "上", + "Off": "离开", + "Color": "颜色", + "White": "白色的", + "Area": "区域", + "Areas": "领域", + "Automations": "自动化", + "Scenes_In_Folder": "文件夹中的场景", + "Select": "选择", + "Exist": "存在", + "OK": "好的", + "Nothing": "没有什么", + "No_need_here": "这里不需要", + "Do_not_need": "不需要", + "Finish": "结束", + "Select_Purposes_Of_The_Area": "选择该地区的用途", + "Pulling_Up_all_blinds": "拉起所有百叶窗", + "Stopping_all_blinds": "停止所有的百叶窗", + "Pulling_down_all_blinds": "拉下所有百叶窗", + "Turning_On_boiler": "打开锅炉", + "Turning_Off_boiler": "关闭锅炉", + "Waiting_for_user_to_get_connected_to_WiFi": "等待用户连接到 WiFi", + "Can't_add_unsupported_device": "无法添加不受支持的设备" +} \ No newline at end of file diff --git a/assets/translations/zh-HK.json b/assets/translations/zh-HK.json index 847417879..75ad85fd9 100644 --- a/assets/translations/zh-HK.json +++ b/assets/translations/zh-HK.json @@ -1,106 +1,105 @@ { - "Create_new_account": "開個新帳號", - "Actions_History": "行動紀錄", - "Empty_history": "清空紀錄", - "History_Settings_Page": "紀錄設定", - "Lamps_Page": "Lamps Page", - "Name:_": "名: {}", - "Room:_": "房: {}", - "Lamps_Settings_Page": "檯燈設定", - "Welcome_to_your_Smart_Home": "歡迎黎到你嘅智能屋企", - "Scene_Settings_Page": "佈景設定", - "Move_to_blinds_full_settings_page": "Move to blinds full settings page", - "Blinds_Page": "Blinds Page", - "Down": "下", - "Stop": "停", - "Up": "上", - "Smart_Devices_Settings_Page": "智能裝置設定", - "Air_Conditioners": "冷氣機", - "Blinds": "Blinds", - "Medical_Device": "醫療裝置", - "Medical_Devices": "醫療裝置", - "Smart_Phone": "智能手機", - "Smart_Phones": "智能手機", - "Smart_Speakers": "智能喇叭", - "Smart_Devices_page": "智能裝置頁面", - "History": "紀錄", - "Scene": "佈景", - "Scenes": "佈景", - "Lamps": "檯燈", - "Devices": "裝置", - "Email_is_required": "唔該入翻個Email", - "Email_cannot_contain_spaces": "個Email唔可以有空格", - "Email_is_invalid": "個Email唔啱", - "Email": "Email", - "Password_is_required": "唔該入翻個密碼", - "Password_cannot_contain_spaces": "個密碼唔可以有空格", - "Password_must_be_bigger_than__characters": "密碼要多過 {} 個字", - "Password": "密碼", - "Log_In": "登入", - "Forgot_password": "唔記得咗密碼", - "Forgot_password?": "唔記得咗密碼?", - "title": "title", - "number": "number", - "IP_is_required": "唔該入翻個IP", - "IP_syntax_is_incorrect": "個IP格式唔啱", - "Add_Smart_Device": "加入智能裝置", - "Cancel": "取消", - "Add": "加", - "Light": "燈", - "Device_ip:_": "裝置 ip: {}", - "New_devices": "新裝置", - "Add_devices": "加入裝置", - "Device_type:_": "裝置類型: {}", - "Room_name_is_required": "唔該入翻個房名", - "Room_name:": "房名:", - "Device_name_is_required": "唔該入翻個裝置名", - "Device_name:": "裝置名:", - "Update": "更新", - "IP": "IP", - "This_is_firebase": "呢個係firebase", - "Device_with_ip:_": "有IP嘅裝置: {}", - "Update_WiFi_configuration": "更新WiFi設定", - "WiFi_name_is_required": "唔該入翻個WiFi名", - "WiFi_Name": "WiFi名", - "WiFi_password_is_required": "唔該入翻個WiFi密碼", - "WiFi_Password": "WiFi密碼", - "Insert_WiFi_Credentials": "輸入WiFi資料", - "Conditioners": "冷氣機", - "Medical": "意料", - "Phones": "電話", - "Speakers": "喇叭", - "Send": "傳送", - "All_Devices": "全部裝置", - "Summary": "Summary", - "Switches": "開關", - "Boilers": "熱水爐", - "Lights": "燈", - "RGBw_Lights": "RGBw 燈", - "_Switches": "{} 開關", - "_SmartTvs": "{} 智能電視", - "_RGBW_Lights": "{} RGBW 燈", - "_Lights": "{} 燈", - "_Boilers": "{} 熱水爐", - "_Blinds": "{} 窗簾", - "Rooms": "Rooms", - "_device": "{} 裝置", - "_devices": "{} 裝置", - "_SmartPlugs": "{} 智能插蘇", - "On": "開", - "Off": "關", - "Color": "顏色", - "White": "白色", - "Area": "範圍", - "Areas": "範圍", - "Automations": "自動化", - "Scenes_In_Folder": "Scenes In Folder", - "Select": "選擇", - "Exist": "Exist", - "OK": "OK", - "Nothing": "冇嘢", - "No_need_here": "呢度唔洗", - "Do_not_need": "唔洗", - "Finish": "完", - "Select_Purposes_Of_The_Area": "選擇範圍嘅用途" - } - \ No newline at end of file + "Create_new_account": "開個新帳號", + "Actions_History": "行動紀錄", + "Empty_history": "清空紀錄", + "History_Settings_Page": "紀錄設定", + "Lamps_Page": "Lamps Page", + "Name:_": "名: {}", + "Area:_": "房: {}", + "Lamps_Settings_Page": "檯燈設定", + "Welcome_to_your_Smart_Home": "歡迎黎到你嘅智能屋企", + "Scene_Settings_Page": "佈景設定", + "Move_to_blinds_full_settings_page": "Move to blinds full settings page", + "Blinds_Page": "Blinds Page", + "Down": "下", + "Stop": "停", + "Up": "上", + "Smart_Devices_Settings_Page": "智能裝置設定", + "Air_Conditioners": "冷氣機", + "Blinds": "Blinds", + "Medical_Device": "醫療裝置", + "Medical_Devices": "醫療裝置", + "Smart_Phone": "智能手機", + "Smart_Phones": "智能手機", + "Smart_Speakers": "智能喇叭", + "Smart_Devices_page": "智能裝置頁面", + "History": "紀錄", + "Scene": "佈景", + "Scenes": "佈景", + "Lamps": "檯燈", + "Devices": "裝置", + "Email_is_required": "唔該入翻個Email", + "Email_cannot_contain_spaces": "個Email唔可以有空格", + "Email_is_invalid": "個Email唔啱", + "Email": "Email", + "Password_is_required": "唔該入翻個密碼", + "Password_cannot_contain_spaces": "個密碼唔可以有空格", + "Password_must_be_bigger_than__characters": "密碼要多過 {} 個字", + "Password": "密碼", + "Log_In": "登入", + "Forgot_password": "唔記得咗密碼", + "Forgot_password?": "唔記得咗密碼?", + "title": "title", + "number": "number", + "IP_is_required": "唔該入翻個IP", + "IP_syntax_is_incorrect": "個IP格式唔啱", + "Add_Smart_Device": "加入智能裝置", + "Cancel": "取消", + "Add": "加", + "Light": "燈", + "Device_ip:_": "裝置 ip: {}", + "New_devices": "新裝置", + "Add_devices": "加入裝置", + "Device_type:_": "裝置類型: {}", + "Area_name_is_required": "唔該入翻個房名", + "Area_name:": "房名:", + "Device_name_is_required": "唔該入翻個裝置名", + "Device_name:": "裝置名:", + "Update": "更新", + "IP": "IP", + "This_is_firebase": "呢個係firebase", + "Device_with_ip:_": "有IP嘅裝置: {}", + "Update_WiFi_configuration": "更新WiFi設定", + "WiFi_name_is_required": "唔該入翻個WiFi名", + "WiFi_Name": "WiFi名", + "WiFi_password_is_required": "唔該入翻個WiFi密碼", + "WiFi_Password": "WiFi密碼", + "Insert_WiFi_Credentials": "輸入WiFi資料", + "Conditioners": "冷氣機", + "Medical": "意料", + "Phones": "電話", + "Speakers": "喇叭", + "Send": "傳送", + "All_Devices": "全部裝置", + "Summary": "Summary", + "Switches": "開關", + "Boilers": "熱水爐", + "Lights": "燈", + "RGBw_Lights": "RGBw 燈", + "_Switches": "{} 開關", + "_SmartTvs": "{} 智能電視", + "_RGBW_Lights": "{} RGBW 燈", + "_Lights": "{} 燈", + "_Boilers": "{} 熱水爐", + "_Blinds": "{} 窗簾", + "Areas": "Areas", + "_device": "{} 裝置", + "_devices": "{} 裝置", + "_SmartPlugs": "{} 智能插蘇", + "On": "開", + "Off": "關", + "Color": "顏色", + "White": "白色", + "Area": "範圍", + "Areas": "範圍", + "Automations": "自動化", + "Scenes_In_Folder": "Scenes In Folder", + "Select": "選擇", + "Exist": "Exist", + "OK": "OK", + "Nothing": "冇嘢", + "No_need_here": "呢度唔洗", + "Do_not_need": "唔洗", + "Finish": "完", + "Select_Purposes_Of_The_Area": "選擇範圍嘅用途" +} \ No newline at end of file diff --git a/assets/translations/zh-TW.json b/assets/translations/zh-TW.json index 826e4530b..c1f9325a1 100644 --- a/assets/translations/zh-TW.json +++ b/assets/translations/zh-TW.json @@ -4,9 +4,9 @@ "Empty_history": "清除記錄", "History_Settings_Page": "記憶設置頁面", "Lamps_Page": "燈具頁面", - "Name:_": "名稱: {}", - "Room:_": "房間: {}", - "Lamps_Settings_Page": "燈具設置頁面", + "Name:_": "名稱: {}", + "Area:_": "房間: {}", + "Lamps_Settings_Page": "燈具設置頁面", "Welcome_to_your_Smart_Home": "歡迎來到你的智能家庭", "Scene_Settings_Page": "場景設置頁面", "Move_to_blinds_full_settings_page": "移到百葉窗完整設置頁面", @@ -16,12 +16,12 @@ "Up": "向上", "Smart_Devices_Settings_Page": "智能設備設置頁面", "Conditioner": "調節器", - "Blinds": "百葉窗", + "Blinds": "百葉窗", "Medical_Device": "醫療設備", "Smart_Phone": "智能手機", "Smart_speakers": "智能音響", "Smart_Devices_page": "智能設備頁面", - "History": "記錄", + "History": "記錄", "Scene": "場景", "Lamps": "燈具", "Devices": "設備", @@ -47,12 +47,12 @@ "New_devices": "新設備", "Add_devices": "新增設備", "Device_type:_": "設備類型: {}", - "Room_name_is_required": "需要填入房間名稱", - "Room_name:": "房間名稱:", + "Area_name_is_required": "需要填入房間名稱", + "Area_name:": "房間名稱:", "Device_name_is_required": "需要填入設備名稱", "Device_name:": "設備名稱:", "Update": "更新", "IP": "IP", "This_is_firebase": "這是firebase", "Device_with_ip:_": "具有ip的設備: {}" -} +} \ No newline at end of file diff --git a/lib/domain/cbj_comp/cbj_comp_entity.dart b/lib/domain/cbj_comp/cbj_comp_entity.dart index 35419a5f2..f404caf09 100644 --- a/lib/domain/cbj_comp/cbj_comp_entity.dart +++ b/lib/domain/cbj_comp/cbj_comp_entity.dart @@ -1,4 +1,4 @@ -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_light_entity/generic_light_entity.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:cybearjinni/domain/cbj_comp/cbj_comp_failures.dart'; import 'package:cybearjinni/domain/cbj_comp/cbj_comp_value_objects.dart'; import 'package:dartz/dartz.dart'; @@ -8,38 +8,38 @@ import 'package:kt_dart/kt.dart'; part 'cbj_comp_entity.freezed.dart'; @freezed -abstract class CBJCompEntity implements _$CBJCompEntity { - const factory CBJCompEntity({ - required CBJCompUniqueId id, - required CBJCompRoomId roomId, - required CBJCompLastKnownIp lastKnownIp, - CBJCompDevices? cBJCompDevices, - CBJCompDefaultName? name, - CBJCompMacAddr? macAddr, - CBJCompOs? compOs, - CBJCompModel? compModel, - CBJCompType? compType, +abstract class CbjCompEntity implements _$CbjCompEntity { + const factory CbjCompEntity({ + required CbjCompUniqueId id, + required CbjCompAreaId areaId, + required CbjCompLastKnownIp lastKnownIp, + CbjCompDevices? cBJCompDevices, + CbjCompDefaultName? name, + CbjCompMacAddr? macAddr, + CbjCompOs? compOs, + CbjCompModel? compModel, + CbjCompType? compType, /// The comp uuid that it came with out of the factory - CBJCompUuid? compUuid, - }) = _CBJCompEntity; + CbjCompUuid? compUuid, + }) = _CbjCompEntity; - const CBJCompEntity._(); + const CbjCompEntity._(); - factory CBJCompEntity.empty() => CBJCompEntity( - id: CBJCompUniqueId(), - roomId: CBJCompRoomId(), - lastKnownIp: CBJCompLastKnownIp(''), - cBJCompDevices: CBJCompDevices(<GenericLightDE>[].toImmutableList()), - name: CBJCompDefaultName(''), - macAddr: CBJCompMacAddr(''), - compOs: CBJCompOs(''), - compModel: CBJCompModel(''), - compType: CBJCompType(''), - compUuid: CBJCompUuid(''), + factory CbjCompEntity.empty() => CbjCompEntity( + id: CbjCompUniqueId(), + areaId: CbjCompAreaId(), + lastKnownIp: CbjCompLastKnownIp(''), + cBJCompDevices: CbjCompDevices(<GenericLightDE>[].toImmutableList()), + name: CbjCompDefaultName(''), + macAddr: CbjCompMacAddr(''), + compOs: CbjCompOs(''), + compModel: CbjCompModel(''), + compType: CbjCompType(''), + compUuid: CbjCompUuid(''), ); - Option<CBJCompFailure<dynamic>> get failureOption { - return roomId.value.fold((f) => some(f), (_) => none()); + Option<CbjCompFailure<dynamic>> get failureOption { + return areaId.value.fold((f) => some(f), (_) => none()); } } diff --git a/lib/domain/cbj_comp/cbj_comp_errors.dart b/lib/domain/cbj_comp/cbj_comp_errors.dart index 8a9b84e1e..10f1bf490 100644 --- a/lib/domain/cbj_comp/cbj_comp_errors.dart +++ b/lib/domain/cbj_comp/cbj_comp_errors.dart @@ -1,9 +1,9 @@ import 'package:cybearjinni/domain/cbj_comp/cbj_comp_failures.dart'; -class CBJCompUnexpectedValueError extends Error { - CBJCompUnexpectedValueError(this.cBJCompFailure); +class CbjCompUnexpectedValueError extends Error { + CbjCompUnexpectedValueError(this.cBJCompFailure); - final CBJCompFailure cBJCompFailure; + final CbjCompFailure cBJCompFailure; @override String toString() { diff --git a/lib/domain/cbj_comp/cbj_comp_failures.dart b/lib/domain/cbj_comp/cbj_comp_failures.dart index e579ad6e0..1c6f08915 100644 --- a/lib/domain/cbj_comp/cbj_comp_failures.dart +++ b/lib/domain/cbj_comp/cbj_comp_failures.dart @@ -3,24 +3,24 @@ import 'package:freezed_annotation/freezed_annotation.dart'; part 'cbj_comp_failures.freezed.dart'; @freezed -class CBJCompFailure<T> { - const factory CBJCompFailure.empty({ +class CbjCompFailure<T> { + const factory CbjCompFailure.empty({ required T failedValue, }) = _Empty; - const factory CBJCompFailure.actionExcecuter({ + const factory CbjCompFailure.actionExcecuter({ required T failedValue, }) = _ActionExcecuter; - const factory CBJCompFailure.exceedingLength({ + const factory CbjCompFailure.exceedingLength({ required T failedValue, required int max, }) = _ExceedingLength; - const factory CBJCompFailure.unexpected() = _Unexpected; + const factory CbjCompFailure.unexpected() = _Unexpected; - const factory CBJCompFailure.insufficientPermission() = + const factory CbjCompFailure.insufficientPermission() = _InsufficientPermission; - const factory CBJCompFailure.unableToUpdate() = _UnableToUpdate; + const factory CbjCompFailure.unableToUpdate() = _UnableToUpdate; } diff --git a/lib/domain/cbj_comp/cbj_comp_validators.dart b/lib/domain/cbj_comp/cbj_comp_validators.dart index 472d48502..dd19d3493 100644 --- a/lib/domain/cbj_comp/cbj_comp_validators.dart +++ b/lib/domain/cbj_comp/cbj_comp_validators.dart @@ -1,26 +1,26 @@ -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_light_entity/generic_light_entity.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:cybearjinni/domain/cbj_comp/cbj_comp_failures.dart'; import 'package:dartz/dartz.dart'; import 'package:kt_dart/kt.dart'; -Either<CBJCompFailure<String>, String> validateCBJCompNotEmpty(String input) { +Either<CbjCompFailure<String>, String> validateCBJCompNotEmpty(String input) { if (input.isNotEmpty) { return right(input); } else { return left( - CBJCompFailure.empty( + CbjCompFailure.empty( failedValue: input, ), ); } } -Either<CBJCompFailure<KtList<GenericLightDE>>, KtList<GenericLightDE>> +Either<CbjCompFailure<KtList<GenericLightDE>>, KtList<GenericLightDE>> validateCBJCompDevicesNotNull(KtList<GenericLightDE> input) { return right(input); } -Either<CBJCompFailure<String>, String> validateCBJCompMaxNameLength( +Either<CbjCompFailure<String>, String> validateCBJCompMaxNameLength( String input, int maxLength, ) { @@ -28,7 +28,7 @@ Either<CBJCompFailure<String>, String> validateCBJCompMaxNameLength( return right(input); } else { return left( - CBJCompFailure.exceedingLength( + CbjCompFailure.exceedingLength( failedValue: input, max: maxLength, ), @@ -36,21 +36,21 @@ Either<CBJCompFailure<String>, String> validateCBJCompMaxNameLength( } } -Either<CBJCompFailure<String>, String> validateCBJCompStateExist(String input) { +Either<CbjCompFailure<String>, String> validateCBJCompStateExist(String input) { return right(input); } -Either<CBJCompFailure<String>, String> validateCBJCompActionExist( +Either<CbjCompFailure<String>, String> validateCBJCompActionExist( String input, ) { return right(input); } -Either<CBJCompFailure<String>, String> validateCBJCompTypeExist(String input) { +Either<CbjCompFailure<String>, String> validateCBJCompTypeExist(String input) { return right(input); } -Either<CBJCompFailure<String>, String> validateCBJCompStateInTypeExist( +Either<CbjCompFailure<String>, String> validateCBJCompStateInTypeExist( String input, ) { return right(input); diff --git a/lib/domain/cbj_comp/cbj_comp_value_objects.dart b/lib/domain/cbj_comp/cbj_comp_value_objects.dart index a19e224fb..51d5680db 100644 --- a/lib/domain/cbj_comp/cbj_comp_value_objects.dart +++ b/lib/domain/cbj_comp/cbj_comp_value_objects.dart @@ -1,4 +1,4 @@ -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_light_entity/generic_light_entity.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:cybearjinni/domain/cbj_comp/cbj_comp_errors.dart'; import 'package:cybearjinni/domain/cbj_comp/cbj_comp_failures.dart'; import 'package:cybearjinni/domain/cbj_comp/cbj_comp_validators.dart'; @@ -8,24 +8,24 @@ import 'package:kt_dart/collection.dart'; import 'package:uuid/uuid.dart'; @immutable -abstract class CBJCompValueObjectAbstract<T> { - const CBJCompValueObjectAbstract(); +abstract class CbjCompValueObjectAbstract<T> { + const CbjCompValueObjectAbstract(); - Either<CBJCompFailure<T?>, T>? get value; + Either<CbjCompFailure<T?>, T>? get value; - /// Throws [CBJCompUnexpectedValueError] containing the [CBJCompFailure] + /// Throws [CbjCompUnexpectedValueError] containing the [CbjCompFailure] T getOrCrash() { // id = identity - same as writing (right) => right - return value!.fold((f) => throw CBJCompUnexpectedValueError(f), id); + return value!.fold((f) => throw CbjCompUnexpectedValueError(f), id); } - /// Throws [CBJCompUnexpectedValueError] containing the [CBJCompFailure] + /// Throws [CbjCompUnexpectedValueError] containing the [CbjCompFailure] T? getOrNull() { // id = identity - same as writing (right) => right return value!.fold((f) => null, id); } - Either<CBJCompFailure<dynamic>, Unit> get failureOrUnit { + Either<CbjCompFailure<dynamic>, Unit> get failureOrUnit { return value!.fold((l) => left(l), (r) => right(unit)); } @@ -38,151 +38,151 @@ abstract class CBJCompValueObjectAbstract<T> { @nonVirtual bool operator ==(Object o) { if (identical(this, o)) return true; - return o is CBJCompValueObjectAbstract<T> && o.value == value; + return o is CbjCompValueObjectAbstract<T> && o.value == value; } @override int get hashCode => value.hashCode; } -class CBJCompUniqueId extends CBJCompValueObjectAbstract<String> { - factory CBJCompUniqueId() { - return CBJCompUniqueId._(right(const Uuid().v1())); +class CbjCompUniqueId extends CbjCompValueObjectAbstract<String> { + factory CbjCompUniqueId() { + return CbjCompUniqueId._(right(const Uuid().v1())); } - const CBJCompUniqueId._(this.value); + const CbjCompUniqueId._(this.value); - factory CBJCompUniqueId.fromUniqueString(String uniqueId) { - return CBJCompUniqueId._(right(uniqueId)); + factory CbjCompUniqueId.fromUniqueString(String uniqueId) { + return CbjCompUniqueId._(right(uniqueId)); } @override - final Either<CBJCompFailure<String>, String> value; + final Either<CbjCompFailure<String>, String> value; } -class CBJCompRoomId extends CBJCompValueObjectAbstract<String> { - factory CBJCompRoomId() { - return CBJCompRoomId._(right(const Uuid().v1())); +class CbjCompAreaId extends CbjCompValueObjectAbstract<String> { + factory CbjCompAreaId() { + return CbjCompAreaId._(right(const Uuid().v1())); } - factory CBJCompRoomId.fromUniqueString(String uniqueId) { - return CBJCompRoomId._(right(uniqueId)); + factory CbjCompAreaId.fromUniqueString(String uniqueId) { + return CbjCompAreaId._(right(uniqueId)); } - const CBJCompRoomId._(this.value); + const CbjCompAreaId._(this.value); @override - final Either<CBJCompFailure<String>, String> value; + final Either<CbjCompFailure<String>, String> value; } -class CBJCompMacAddr extends CBJCompValueObjectAbstract<String> { - factory CBJCompMacAddr(String input) { - return CBJCompMacAddr._( +class CbjCompMacAddr extends CbjCompValueObjectAbstract<String> { + factory CbjCompMacAddr(String input) { + return CbjCompMacAddr._( validateCBJCompNotEmpty(input) .flatMap((a) => validateCBJCompMaxNameLength(input, maxLength)), ); } - const CBJCompMacAddr._(this.value); + const CbjCompMacAddr._(this.value); @override - final Either<CBJCompFailure<String>, String> value; + final Either<CbjCompFailure<String>, String> value; static const maxLength = 1000; } -class CBJCompDefaultName extends CBJCompValueObjectAbstract<String> { - factory CBJCompDefaultName(String input) { - return CBJCompDefaultName._( +class CbjCompDefaultName extends CbjCompValueObjectAbstract<String> { + factory CbjCompDefaultName(String input) { + return CbjCompDefaultName._( validateCBJCompNotEmpty(input) .flatMap((a) => validateCBJCompMaxNameLength(input, maxLength)), ); } - const CBJCompDefaultName._(this.value); + const CbjCompDefaultName._(this.value); @override - final Either<CBJCompFailure<String>, String> value; + final Either<CbjCompFailure<String>, String> value; static const maxLength = 1000; } -class CBJCompDevices - extends CBJCompValueObjectAbstract<KtList<GenericLightDE>> { - factory CBJCompDevices(KtList<GenericLightDE> input) { - return CBJCompDevices._(validateCBJCompDevicesNotNull(input)); +class CbjCompDevices + extends CbjCompValueObjectAbstract<KtList<GenericLightDE>> { + factory CbjCompDevices(KtList<GenericLightDE> input) { + return CbjCompDevices._(validateCBJCompDevicesNotNull(input)); } - const CBJCompDevices._(this.value); + const CbjCompDevices._(this.value); @override - final Either<CBJCompFailure<KtList<GenericLightDE>>, KtList<GenericLightDE>> + final Either<CbjCompFailure<KtList<GenericLightDE>>, KtList<GenericLightDE>> value; } -class CBJCompOs extends CBJCompValueObjectAbstract<String> { - factory CBJCompOs(String input) { - return CBJCompOs._( +class CbjCompOs extends CbjCompValueObjectAbstract<String> { + factory CbjCompOs(String input) { + return CbjCompOs._( validateCBJCompNotEmpty(input), ); } - const CBJCompOs._(this.value); + const CbjCompOs._(this.value); @override - final Either<CBJCompFailure<String>, String> value; + final Either<CbjCompFailure<String>, String> value; } -class CBJCompModel extends CBJCompValueObjectAbstract<String> { - factory CBJCompModel(String input) { - return CBJCompModel._( +class CbjCompModel extends CbjCompValueObjectAbstract<String> { + factory CbjCompModel(String input) { + return CbjCompModel._( validateCBJCompNotEmpty(input), ); } - const CBJCompModel._(this.value); + const CbjCompModel._(this.value); @override - final Either<CBJCompFailure<String>, String> value; + final Either<CbjCompFailure<String>, String> value; } -class CBJCompType extends CBJCompValueObjectAbstract<String> { - factory CBJCompType(String input) { - return CBJCompType._( +class CbjCompType extends CbjCompValueObjectAbstract<String> { + factory CbjCompType(String input) { + return CbjCompType._( validateCBJCompNotEmpty(input) .flatMap((a) => validateCBJCompTypeExist(input)), ); } - const CBJCompType._(this.value); + const CbjCompType._(this.value); @override - final Either<CBJCompFailure<String>, String> value; + final Either<CbjCompFailure<String>, String> value; } -class CBJCompUuid extends CBJCompValueObjectAbstract<String> { - factory CBJCompUuid(String input) { - return CBJCompUuid._( +class CbjCompUuid extends CbjCompValueObjectAbstract<String> { + factory CbjCompUuid(String input) { + return CbjCompUuid._( validateCBJCompNotEmpty(input), ); } - const CBJCompUuid._(this.value); + const CbjCompUuid._(this.value); @override - final Either<CBJCompFailure<String>, String> value; + final Either<CbjCompFailure<String>, String> value; } -class CBJCompLastKnownIp extends CBJCompValueObjectAbstract<String> { - factory CBJCompLastKnownIp(String input) { - return CBJCompLastKnownIp._( +class CbjCompLastKnownIp extends CbjCompValueObjectAbstract<String> { + factory CbjCompLastKnownIp(String input) { + return CbjCompLastKnownIp._( validateCBJCompNotEmpty(input) .flatMap((a) => validateCBJCompTypeExist(input)), ); } - const CBJCompLastKnownIp._(this.value); + const CbjCompLastKnownIp._(this.value); @override - final Either<CBJCompFailure<String>, String> value; + final Either<CbjCompFailure<String>, String> value; } diff --git a/lib/domain/cbj_comp/i_cbj_comp_repository.dart b/lib/domain/cbj_comp/i_cbj_comp_repository.dart index 3a058ecef..c4ef939d4 100644 --- a/lib/domain/cbj_comp/i_cbj_comp_repository.dart +++ b/lib/domain/cbj_comp/i_cbj_comp_repository.dart @@ -1,6 +1,6 @@ import 'dart:async'; -import 'package:cbj_integrations_controller/infrastructure/gen/cbj_app_server/protoc_as_dart/cbj_app_connections.pbgrpc.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:cybearjinni/domain/cbj_comp/cbj_comp_entity.dart'; import 'package:cybearjinni/domain/cbj_comp/cbj_comp_failures.dart'; import 'package:cybearjinni/infrastructure/cbj_app_server_d.dart'; @@ -8,26 +8,26 @@ import 'package:dartz/dartz.dart'; part 'package:cybearjinni/infrastructure/cbj_comp_repository.dart'; -abstract interface class ICBJCompRepository { - static ICBJCompRepository? _instance; +abstract interface class ICbjCompRepository { + static ICbjCompRepository? _instance; - static ICBJCompRepository get instance { - return _instance ??= _CBJCompRepository(); + static ICbjCompRepository get instance { + return _instance ??= _CbjCompRepository(); } - Future<Either<CBJCompFailure, Unit>> shutdownServer(); + Future<Either<CbjCompFailure, Unit>> shutdownServer(); - Stream<Either<CBJCompFailure, String>> getConnectedComputersIP(); + Stream<Either<CbjCompFailure, String>> getConnectedComputersIP(); - Future<Either<CBJCompFailure, CBJCompEntity>> getInformationFromDeviceByIp( + Future<Either<CbjCompFailure, CbjCompEntity>> getInformationFromDeviceByIp( String compIp, ); - Future<Either<CBJCompFailure, Unit>> firstSetup(CBJCompEntity cBJCompEntity); + Future<Either<CbjCompFailure, Unit>> firstSetup(CbjCompEntity cBJCompEntity); - Future<Either<CBJCompFailure, Unit>> devicesList(CBJCompEntity cBJCompEntity); + Future<Either<CbjCompFailure, Unit>> devicesList(CbjCompEntity cBJCompEntity); - Future<Either<CBJCompFailure, Unit>> create(CBJCompEntity cBJCompEntity); + Future<Either<CbjCompFailure, Unit>> create(CbjCompEntity cBJCompEntity); - Future<Either<CBJCompFailure, Unit>> updateCompInfo(CBJCompEntity compEntity); + Future<Either<CbjCompFailure, Unit>> updateCompInfo(CbjCompEntity compEntity); } diff --git a/lib/domain/connections_service.dart b/lib/domain/connections_service.dart index 577dd79b3..c00f47679 100644 --- a/lib/domain/connections_service.dart +++ b/lib/domain/connections_service.dart @@ -1,12 +1,8 @@ import 'dart:async'; import 'dart:collection'; -import 'package:cbj_integrations_controller/infrastructure/demo_connection_service_integrations_controller.dart'; -import 'package:cbj_integrations_controller/infrastructure/devices_service.dart'; -import 'package:cbj_integrations_controller/infrastructure/gen/cbj_hub_server/protoc_as_dart/cbj_hub_server.pbgrpc.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/abstract_entity/device_entity_base.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/entity_type_utils.dart'; -import 'package:cbj_integrations_controller/infrastructure/search_devices.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; +import 'package:cybearjinni/infrastructure/network_utilities_flutter.dart'; part 'package:cybearjinni/infrastructure/connection_service/app_connection_service.dart'; part 'package:cybearjinni/infrastructure/connection_service/demo_connection_service.dart'; @@ -56,16 +52,25 @@ abstract interface class ConnectionsService { Future searchDevices(); - void setEntityState({ - required HashMap<VendorsAndServices, HashSet<String>> uniqueIdByVendor, - required EntityProperties property, - required EntityActions actionType, - HashMap<ActionValues, dynamic>? value, - }); + void setEntityState(ActionObject action); + + Future setEtitiesToArea(String areaId, HashSet<String> entities); Future<HashMap<String, DeviceEntityBase>> get getAllEntities; + Future<HashMap<String, AreaEntity>> get getAllAreas; + Stream<MapEntry<String, DeviceEntityBase>> watchEntities(); + Stream<MapEntry<String, AreaEntity>> watchAreas(); + Future dispose(); + + Future setNewArea(AreaEntity area); + + Future<HashMap<String, SceneCbjEntity>> getScenes(); + + Future activateScene(String id); + + Future addScene(SceneCbjEntity scene); } diff --git a/lib/domain/device/devices_validators.dart b/lib/domain/device/devices_validators.dart index 1efb4965d..070184919 100644 --- a/lib/domain/device/devices_validators.dart +++ b/lib/domain/device/devices_validators.dart @@ -1,4 +1,4 @@ -import 'package:cbj_integrations_controller/infrastructure/generic_entities/entity_type_utils.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:cybearjinni/domain/device/devices_failures.dart'; import 'package:dartz/dartz.dart'; @@ -38,7 +38,7 @@ Either<DevicesFailure<String>, String> validatePowerConsumptionNotEmpty( } } -Either<DevicesFailure<String>, String> validateRoomNameNotEmpty(String input) { +Either<DevicesFailure<String>, String> validateAreaNameNotEmpty(String input) { return right(input); } diff --git a/lib/domain/device/i_device_repository.dart b/lib/domain/device/i_device_repository.dart index db1dfaf22..537a93577 100644 --- a/lib/domain/device/i_device_repository.dart +++ b/lib/domain/device/i_device_repository.dart @@ -2,30 +2,7 @@ import 'dart:async'; import 'dart:collection'; import 'dart:io'; -import 'package:cbj_integrations_controller/domain/room/room_entity.dart'; -import 'package:cbj_integrations_controller/infrastructure/devices/device_helper/device_helper.dart'; -import 'package:cbj_integrations_controller/infrastructure/gen/cbj_hub_server/protoc_as_dart/cbj_hub_server.pbgrpc.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/abstract_entity/device_entity_base.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/abstract_entity/device_entity_dto_base.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_blinds_entity/generic_blinds_entity.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_blinds_entity/generic_blinds_value_objects.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_boiler_entity/generic_boiler_entity.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_boiler_entity/generic_boiler_value_objects.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_dimmable_light_entity/generic_dimmable_light_entity.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_dimmable_light_entity/generic_dimmable_light_value_objects.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_light_entity/generic_light_entity.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_light_entity/generic_light_value_objects.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_rgbw_light_entity/generic_rgbw_light_entity.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_rgbw_light_entity/generic_rgbw_light_value_objects.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_smart_computer_entity/generic_smart_computer_entity.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_smart_computer_entity/generic_smart_computer_value_objects.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_smart_plug_entity/generic_smart_plug_entity.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_smart_plug_entity/generic_smart_plug_value_objects.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_smart_tv_entity/generic_smart_tv_entity.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_smart_tv_entity/generic_smart_tv_value_objects.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_switch_entity/generic_switch_entity.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_switch_entity/generic_switch_value_objects.dart'; -import 'package:cbj_integrations_controller/infrastructure/hub_client/hub_client.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:cybearjinni/domain/device/devices_failures.dart'; import 'package:cybearjinni/infrastructure/core/logger.dart'; import 'package:cybearjinni/infrastructure/hub_client/hub_requests_routing.dart'; @@ -42,6 +19,7 @@ import 'package:rxdart/rxdart.dart'; part 'package:cybearjinni/infrastructure/device_repository.dart'; +@Deprecated('Old architecture. Replaced by EntitiesService') abstract interface class IDeviceRepository { static IDeviceRepository? _instance; @@ -84,12 +62,6 @@ abstract interface class IDeviceRepository { DeviceEntityBase deviceEntity, ); - /// Update document in the database in the following fields - Future<Either<DevicesFailure, Unit>> updateDatabase({ - required Map<String, dynamic> documentPath, - required Map<String, dynamic> fieldsToUpdate, - }); - Future<Either<DevicesFailure, Unit>> updateWithDeviceEntity({ required DeviceEntityBase deviceEntity, }); @@ -137,11 +109,6 @@ abstract interface class IDeviceRepository { required List<String>? devicesId, }); - Future<Either<DevicesFailure, Unit>> openUrlOnDevices({ - required List<String>? devicesId, - required String url, - }); - Future<Either<DevicesFailure, Unit>> closeStateDevices({ required List<String>? devicesId, }); @@ -154,10 +121,6 @@ abstract interface class IDeviceRepository { required List<String>? devicesId, }); - Future<Either<DevicesFailure, Unit>> skipVideoDevices({ - required List<String>? devicesId, - }); - Future<Either<DevicesFailure, Unit>> changeVolumeDevices({ required List<String>? devicesId, }); @@ -170,15 +133,11 @@ abstract interface class IDeviceRepository { required List<String>? devicesId, }); - Future<Either<DevicesFailure, Unit>> delete( - DeviceEntityBase deviceEntity, - ); - BehaviorSubject<KtList<dynamic>> allResponseFromTheHubStreamController = BehaviorSubject<KtList<dynamic>>(); - BehaviorSubject<KtList<RoomEntity>> roomsResponseFromTheHubStreamController = - BehaviorSubject<KtList<RoomEntity>>(); + BehaviorSubject<KtList<AreaEntity>> areasResponseFromTheHubStreamController = + BehaviorSubject<KtList<AreaEntity>>(); BehaviorSubject<KtList<DeviceEntityBase>> devicesResponseFromTheHubStreamController = diff --git a/lib/domain/i_hub_connection_repository.dart b/lib/domain/i_hub_connection_repository.dart index 437ad1db5..40cd72a88 100644 --- a/lib/domain/i_hub_connection_repository.dart +++ b/lib/domain/i_hub_connection_repository.dart @@ -1,15 +1,7 @@ import 'dart:async'; import 'dart:io'; -import 'package:cbj_integrations_controller/domain/hub/hub_entity.dart'; -import 'package:cbj_integrations_controller/domain/hub/hub_failures.dart'; -import 'package:cbj_integrations_controller/domain/hub/hub_value_objects.dart'; -import 'package:cbj_integrations_controller/domain/local_db/local_db_failures.dart'; -import 'package:cbj_integrations_controller/infrastructure/core/utils.dart'; -import 'package:cbj_integrations_controller/infrastructure/gen/cbj_hub_server/protoc_as_dart/cbj_hub_server.pbgrpc.dart'; -import 'package:cbj_integrations_controller/infrastructure/hub_client/hub_client.dart'; -import 'package:cbj_integrations_controller/infrastructure/hub_client/hub_client_demo.dart'; -import 'package:cbj_integrations_controller/infrastructure/hub_client/hub_dtos.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:connectivity_plus/connectivity_plus.dart'; import 'package:cybearjinni/domain/i_local_db_repository.dart'; import 'package:cybearjinni/infrastructure/core/injection.dart'; @@ -24,6 +16,9 @@ import 'package:wifi_iot/wifi_iot.dart'; part 'package:cybearjinni/infrastructure/hub_client/hub_connection_repository.dart'; +@Deprecated( + 'Old architecture. Replaced with ConnectionsService. Delete after Re adding Hub comunication', +) abstract class IHubConnectionRepository { static IHubConnectionRepository? _instance; diff --git a/lib/domain/i_local_db_repository.dart b/lib/domain/i_local_db_repository.dart index 6e60e5662..92e4c29df 100644 --- a/lib/domain/i_local_db_repository.dart +++ b/lib/domain/i_local_db_repository.dart @@ -1,4 +1,4 @@ -import 'package:cbj_integrations_controller/domain/local_db/local_db_failures.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:cybearjinni/infrastructure/core/logger.dart'; import 'package:cybearjinni/infrastructure/isar_local_db/isar_objects/home_entity_isar_model.dart'; import 'package:cybearjinni/infrastructure/isar_local_db/isar_objects/hub_entity_isar_model.dart'; diff --git a/lib/domain/security_bear/i_security_bear_connection_repository.dart b/lib/domain/security_bear/i_security_bear_connection_repository.dart index 7979e269f..6ca72b63f 100644 --- a/lib/domain/security_bear/i_security_bear_connection_repository.dart +++ b/lib/domain/security_bear/i_security_bear_connection_repository.dart @@ -1,6 +1,6 @@ import 'dart:io'; -import 'package:cbj_integrations_controller/infrastructure/gen/security_bear_server_d/protoc_as_dart/security_bear_connections.pbgrpc.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:connectivity_plus/connectivity_plus.dart'; import 'package:cybearjinni/domain/cbj_comp/cbj_comp_entity.dart'; import 'package:cybearjinni/domain/manage_network/i_manage_network_repository.dart'; @@ -37,7 +37,7 @@ abstract interface class ISecurityBearConnectionRepository { Future<Either<SecurityBearFailures, Unit>> searchForSecurityBear(); Future<Either<SecurityBearFailures, Unit>> setSecurityBearWiFiInformation( - CBJCompEntity compEntity, + CbjCompEntity compEntity, ); Future<Either<SecurityBearFailures, Unit>> diff --git a/lib/domain/software_info/i_software_info_repository.dart b/lib/domain/software_info/i_software_info_repository.dart index b912ea439..75792e1a0 100644 --- a/lib/domain/software_info/i_software_info_repository.dart +++ b/lib/domain/software_info/i_software_info_repository.dart @@ -1,12 +1,6 @@ import 'dart:io'; -import 'package:cbj_integrations_controller/domain/hub/hub_failures.dart'; -import 'package:cbj_integrations_controller/infrastructure/gen/cbj_app_server/proto_gen_date.dart'; -import 'package:cbj_integrations_controller/infrastructure/gen/cbj_app_server/protoc_as_dart/cbj_app_connections.pbgrpc.dart'; -import 'package:cbj_integrations_controller/infrastructure/gen/cbj_hub_server/proto_gen_date.dart'; -import 'package:cbj_integrations_controller/infrastructure/gen/cbj_hub_server/protoc_as_dart/cbj_hub_server.pbgrpc.dart'; -import 'package:cbj_integrations_controller/infrastructure/gen/security_bear_server_d/proto_gen_date.dart'; -import 'package:cbj_integrations_controller/infrastructure/gen/security_bear_server_d/protoc_as_dart/security_bear_connections.pbgrpc.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:cybearjinni/domain/i_hub_connection_repository.dart'; import 'package:cybearjinni/domain/security_bear/i_security_bear_connection_repository.dart'; import 'package:cybearjinni/domain/security_bear/security_bear_failures.dart'; diff --git a/lib/domain/software_info/software_info_entity.dart b/lib/domain/software_info/software_info_entity.dart index 17f61a3de..53bf021c7 100644 --- a/lib/domain/software_info/software_info_entity.dart +++ b/lib/domain/software_info/software_info_entity.dart @@ -1,6 +1,4 @@ -import 'package:cbj_integrations_controller/infrastructure/gen/cbj_app_server/protoc_as_dart/cbj_app_connections.pbgrpc.dart'; -import 'package:cbj_integrations_controller/infrastructure/gen/cbj_hub_server/protoc_as_dart/cbj_hub_server.pbgrpc.dart'; -import 'package:cbj_integrations_controller/infrastructure/gen/security_bear_server_d/protoc_as_dart/security_bear_connections.pbgrpc.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:cybearjinni/domain/software_info/software_info_failures.dart'; import 'package:cybearjinni/domain/software_info/software_info_value_objects.dart'; import 'package:cybearjinni/infrastructure/software_info/software_info_dtos.dart'; diff --git a/lib/infrastructure/app_commands.dart b/lib/infrastructure/app_commands.dart index 4574596d7..b92ee6ccf 100644 --- a/lib/infrastructure/app_commands.dart +++ b/lib/infrastructure/app_commands.dart @@ -1,6 +1,6 @@ import 'dart:io'; -import 'package:cbj_integrations_controller/infrastructure/system_commands/phone_commands_d/common_batch_commands_d.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:device_info_plus/device_info_plus.dart'; import 'package:path_provider/path_provider.dart'; diff --git a/lib/infrastructure/cbj_app_server_d.dart b/lib/infrastructure/cbj_app_server_d.dart index 3e46a5e0e..32c440b10 100644 --- a/lib/infrastructure/cbj_app_server_d.dart +++ b/lib/infrastructure/cbj_app_server_d.dart @@ -1,6 +1,6 @@ import 'dart:async'; -import 'package:cbj_integrations_controller/infrastructure/gen/cbj_app_server/protoc_as_dart/cbj_app_connections.pbgrpc.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:cybearjinni/infrastructure/core/logger.dart'; import 'package:grpc/grpc.dart'; diff --git a/lib/infrastructure/cbj_comp_repository.dart b/lib/infrastructure/cbj_comp_repository.dart index 03a804cd2..d5ca4b93c 100644 --- a/lib/infrastructure/cbj_comp_repository.dart +++ b/lib/infrastructure/cbj_comp_repository.dart @@ -1,48 +1,48 @@ part of 'package:cybearjinni/domain/cbj_comp/i_cbj_comp_repository.dart'; -class _CBJCompRepository implements ICBJCompRepository { +class _CbjCompRepository implements ICbjCompRepository { @override - Future<Either<CBJCompFailure, Unit>> shutdownServer() async { + Future<Either<CbjCompFailure, Unit>> shutdownServer() async { await CreateTheCBJAppServer().shutdownServer(); return right(unit); } @override - Future<Either<CBJCompFailure, Unit>> firstSetup( - CBJCompEntity cBJCompEntity, + Future<Either<CbjCompFailure, Unit>> firstSetup( + CbjCompEntity cBJCompEntity, ) async { try { - return left(const CBJCompFailure.unexpected()); + return left(const CbjCompFailure.unexpected()); } catch (e) { - return left(const CBJCompFailure.unexpected()); + return left(const CbjCompFailure.unexpected()); } } @override - Future<Either<CBJCompFailure, Unit>> create(CBJCompEntity deviceEntity) { + Future<Either<CbjCompFailure, Unit>> create(CbjCompEntity deviceEntity) { // TODO: implement create throw UnimplementedError(); } @override - Future<Either<CBJCompFailure, Unit>> devicesList(CBJCompEntity deviceEntity) { + Future<Either<CbjCompFailure, Unit>> devicesList(CbjCompEntity deviceEntity) { // TODO: implement devicesList throw UnimplementedError(); } @override - Future<Either<CBJCompFailure, Unit>> updateCompInfo( - CBJCompEntity compEntity, + Future<Either<CbjCompFailure, Unit>> updateCompInfo( + CbjCompEntity compEntity, ) async { try { - return left(const CBJCompFailure.unexpected()); + return left(const CbjCompFailure.unexpected()); } catch (e) { - return left(const CBJCompFailure.unexpected()); + return left(const CbjCompFailure.unexpected()); } } @override - Stream<Either<CBJCompFailure, String>> getConnectedComputersIP() async* { + Stream<Either<CbjCompFailure, String>> getConnectedComputersIP() async* { try { final CreateTheCBJAppServer createTheCBJAppServer = CreateTheCBJAppServer(); @@ -56,18 +56,18 @@ class _CBJCompRepository implements ICBJCompRepository { return right(compInfoSB.compIP); }); } catch (e) { - yield left(const CBJCompFailure.unexpected()); + yield left(const CbjCompFailure.unexpected()); } - yield left(const CBJCompFailure.unexpected()); + yield left(const CbjCompFailure.unexpected()); } @override - Future<Either<CBJCompFailure, CBJCompEntity>> getInformationFromDeviceByIp( + Future<Either<CbjCompFailure, CbjCompEntity>> getInformationFromDeviceByIp( String compIp, ) async { try {} catch (e) { - return left(const CBJCompFailure.unexpected()); + return left(const CbjCompFailure.unexpected()); } - return left(const CBJCompFailure.unexpected()); + return left(const CbjCompFailure.unexpected()); } } diff --git a/lib/infrastructure/connection_service/app_connection_service.dart b/lib/infrastructure/connection_service/app_connection_service.dart index 6717e9f06..a1b7a82f3 100644 --- a/lib/infrastructure/connection_service/app_connection_service.dart +++ b/lib/infrastructure/connection_service/app_connection_service.dart @@ -10,29 +10,47 @@ class _AppConnectionService implements ConnectionsService { @override Future<HashMap<String, DeviceEntityBase>> get getAllEntities async => - DevicesService().getEntities(); + IcSynchronizer().getEntities(); @override - Future searchDevices() async => searchDevicesInstance.startSearchIsolate(); + Future<HashMap<String, AreaEntity>> get getAllAreas async => + IcSynchronizer().getAreas(); + + @override + Future searchDevices() => + searchDevicesInstance.startSearchIsolate(NetworkUtilitiesFlutter()); @override Stream<MapEntry<String, DeviceEntityBase>> watchEntities() => - DevicesService().watchEntities(); + IcSynchronizer().entitiesChangesStream.stream; + + @override + Stream<MapEntry<String, AreaEntity>> watchAreas() => + IcSynchronizer().areasChangesStream.stream; @override - void setEntityState({ - required HashMap<VendorsAndServices, HashSet<String>> uniqueIdByVendor, - required EntityProperties property, - required EntityActions actionType, - HashMap<ActionValues, dynamic>? value, - }) => - DevicesService().setEntityState( - uniqueIdByVendor: uniqueIdByVendor, - action: actionType, - property: property, - value: value, - ); + void setEntityState(ActionObject action) => + IcSynchronizer().setEntitiesState(action); @override Future dispose() async => searchDevicesInstance.dispose(); + + @override + Future setNewArea(AreaEntity area) async { + IcSynchronizer().setNewArea(area); + } + + @override + Future setEtitiesToArea(String areaId, HashSet<String> entities) => + IcSynchronizer().setEtitiesToArea(areaId, entities); + + @override + Future<HashMap<String, SceneCbjEntity>> getScenes() async => + IcSynchronizer().getScenes(); + + @override + Future activateScene(String id) => IcSynchronizer().activateScene(id); + + @override + Future addScene(SceneCbjEntity scene) => IcSynchronizer().addScene(scene); } diff --git a/lib/infrastructure/connection_service/demo_connection_service.dart b/lib/infrastructure/connection_service/demo_connection_service.dart index 739c348bc..555dfcb09 100644 --- a/lib/infrastructure/connection_service/demo_connection_service.dart +++ b/lib/infrastructure/connection_service/demo_connection_service.dart @@ -1,32 +1,55 @@ part of 'package:cybearjinni/domain/connections_service.dart'; class _DemoConnectionService implements ConnectionsService { - StreamController<MapEntry<String, DeviceEntityBase>>? stream; + StreamController<MapEntry<String, DeviceEntityBase>>? entitiesStream; + StreamController<MapEntry<String, AreaEntity>>? areasStream; + @override Future dispose() async { - stream?.close(); + entitiesStream?.close(); } @override Future<HashMap<String, DeviceEntityBase>> get getAllEntities async => DemoConnectionController.getAllEntities(); + @override + Future<HashMap<String, AreaEntity>> get getAllAreas async => HashMap(); + @override Future searchDevices() async {} @override - void setEntityState({ - required HashMap<VendorsAndServices, HashSet<String>> uniqueIdByVendor, - required EntityProperties property, - required EntityActions actionType, - HashMap<ActionValues, dynamic>? value, - }) {} + void setEntityState(ActionObject action) {} @override Stream<MapEntry<String, DeviceEntityBase>> watchEntities() { - stream?.close(); + entitiesStream?.close(); - stream = StreamController.broadcast(); - return stream!.stream; + entitiesStream = StreamController.broadcast(); + return entitiesStream!.stream; } + + @override + Stream<MapEntry<String, AreaEntity>> watchAreas() { + areasStream?.close(); + + areasStream = StreamController.broadcast(); + return areasStream!.stream; + } + + @override + Future setNewArea(AreaEntity area) async {} + + @override + Future setEtitiesToArea(String areaId, HashSet entities) async {} + + @override + Future addScene(SceneCbjEntity scene) async {} + + @override + Future<HashMap<String, SceneCbjEntity>> getScenes() async => HashMap(); + + @override + Future activateScene(String id) async {} } diff --git a/lib/infrastructure/connection_service/none_connection_service.dart b/lib/infrastructure/connection_service/none_connection_service.dart index e287de7c8..dabda1bdb 100644 --- a/lib/infrastructure/connection_service/none_connection_service.dart +++ b/lib/infrastructure/connection_service/none_connection_service.dart @@ -1,33 +1,55 @@ part of 'package:cybearjinni/domain/connections_service.dart'; class _NoneConnectionService implements ConnectionsService { - StreamController<MapEntry<String, DeviceEntityBase>>? stream; + StreamController<MapEntry<String, DeviceEntityBase>>? entitiesStream; + StreamController<MapEntry<String, AreaEntity>>? areasStream; @override Future dispose() async { - stream?.close(); + entitiesStream?.close(); } @override Future<HashMap<String, DeviceEntityBase>> get getAllEntities async => HashMap(); + @override + Future<HashMap<String, AreaEntity>> get getAllAreas async => HashMap(); + @override Future searchDevices() async {} @override - void setEntityState({ - required HashMap<VendorsAndServices, HashSet<String>> uniqueIdByVendor, - required EntityProperties property, - required EntityActions actionType, - HashMap<ActionValues, dynamic>? value, - }) {} + void setEntityState(ActionObject action) {} @override Stream<MapEntry<String, DeviceEntityBase>> watchEntities() { - stream?.close(); + entitiesStream?.close(); + + entitiesStream = StreamController.broadcast(); + return entitiesStream!.stream; + } - stream = StreamController.broadcast(); - return stream!.stream; + @override + Stream<MapEntry<String, AreaEntity>> watchAreas() { + areasStream?.close(); + + areasStream = StreamController.broadcast(); + return areasStream!.stream; } + + @override + Future setNewArea(AreaEntity area) async {} + + @override + Future setEtitiesToArea(String areaId, HashSet entities) async {} + + @override + Future<HashMap<String, SceneCbjEntity>> getScenes() async => HashMap(); + + @override + Future addScene(SceneCbjEntity scene) async {} + + @override + Future activateScene(String id) async {} } diff --git a/lib/infrastructure/core/injection.dart b/lib/infrastructure/core/injection.dart index f676fbd4d..512fd02b2 100644 --- a/lib/infrastructure/core/injection.dart +++ b/lib/infrastructure/core/injection.dart @@ -1,4 +1,4 @@ -import 'package:cbj_integrations_controller/infrastructure/core/injection.config.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:cybearjinni/infrastructure/core/logger.dart'; import 'package:get_it/get_it.dart'; import 'package:injectable/injectable.dart'; diff --git a/lib/infrastructure/device_repository.dart b/lib/infrastructure/device_repository.dart index a11f53e7b..f2da21549 100644 --- a/lib/infrastructure/device_repository.dart +++ b/lib/infrastructure/device_repository.dart @@ -8,8 +8,8 @@ class _DeviceRepository implements IDeviceRepository { // @override // void addOrUpdateFromApp(dynamic entity) { - // if (entity is RoomEntity) { - // _addOrUpdateRoom(entity); + // if (entity is AreaEntity) { + // _addOrUpdateArea(entity); // } else if (entity is DeviceEntityBase) { // _addOrUpdateDevice(entity); // } else { @@ -251,44 +251,11 @@ class _DeviceRepository implements IDeviceRepository { } } - @override - Future<Either<DevicesFailure, Unit>> updateDatabase({ - required Map<String, dynamic> documentPath, - required Map<String, dynamic> fieldsToUpdate, - String? forceUpdateLocation, - }) async { - try { - // await documentPath.update(fieldsToUpdate); - return right(unit); - } on PlatformException catch (e) { - if (e.message!.contains('NOT_FOUND')) { - return left(const DevicesFailure.unableToUpdate()); - } else { - // log.error(e.toString()); - return left(const DevicesFailure.unexpected()); - } - } - } - @override Future<Either<DevicesFailure, Unit>> updateWithDeviceEntity({ required DeviceEntityBase deviceEntity, }) async { - const String updateLocation = 'L'; - - try { - if (updateLocation == 'L') { - return updateComputer(deviceEntity); - } - return updateRemoteDB(deviceEntity); - } on PlatformException catch (e) { - if (e.message!.contains('NOT_FOUND')) { - return left(const DevicesFailure.unableToUpdate()); - } else { - // log.error(e.toString()); - return left(const DevicesFailure.unexpected()); - } - } + return left(const DevicesFailure.unexpected()); } @override @@ -852,44 +819,6 @@ class _DeviceRepository implements IDeviceRepository { throw UnimplementedError(); } - @override - Future<Either<DevicesFailure, Unit>> openUrlOnDevices({ - required List<String>? devicesId, - required String url, - }) async { - final List<DeviceEntityBase?> deviceEntityListToUpdate = - await getDeviceEntityListFromId(devicesId!); - - try { - for (final DeviceEntityBase? deviceEntity in deviceEntityListToUpdate) { - if (deviceEntity == null) { - continue; - } - if (deviceEntity is GenericSmartTvDE) { - deviceEntity.openUrl = GenericSmartTvOpenUrl(url); - } else { - logger.w( - 'Open url action not supported for' - ' ${deviceEntity.entityTypes.getOrCrash()} type', - ); - continue; - } - - updateWithDeviceEntity(deviceEntity: deviceEntity); - } - } on PlatformException catch (e) { - if (e.message!.contains('PERMISSION_DENIED')) { - return left(const DevicesFailure.insufficientPermission()); - } else if (e.message!.contains('NOT_FOUND')) { - return left(const DevicesFailure.unableToUpdate()); - } else { - // log.error(e.toString()); - return left(const DevicesFailure.unexpected()); - } - } - return right(unit); - } - @override Future<Either<DevicesFailure, Unit>> closeStateDevices({ List<String>? devicesId, @@ -1085,27 +1014,6 @@ class _DeviceRepository implements IDeviceRepository { return right(unit); } - @override - Future<Either<DevicesFailure, Unit>> skipVideoDevices({ - required List<String>? devicesId, - }) async { - // TODO: implement skipVideoDevices - throw UnimplementedError(); - } - - @override - Future<Either<DevicesFailure, Unit>> delete( - DeviceEntityBase deviceEntity, - ) async { - return left(const DevicesFailure.unexpected()); - } - - Future<Either<DevicesFailure, Unit>> updateRemoteDB( - DeviceEntityBase deviceEntity, - ) async { - return left(const DevicesFailure.unexpected()); - } - Future<Either<DevicesFailure, Unit>> updateComputer( DeviceEntityBase deviceEntity, ) async { @@ -1247,6 +1155,6 @@ class _DeviceRepository implements IDeviceRepository { BehaviorSubject<KtList<DeviceEntityBase>>(); @override - BehaviorSubject<KtList<RoomEntity>> roomsResponseFromTheHubStreamController = - BehaviorSubject<KtList<RoomEntity>>(); + BehaviorSubject<KtList<AreaEntity>> areasResponseFromTheHubStreamController = + BehaviorSubject<KtList<AreaEntity>>(); } diff --git a/lib/infrastructure/hub_client/hub_connection_repository.dart b/lib/infrastructure/hub_client/hub_connection_repository.dart index a2ceae49b..2c2b24a4b 100644 --- a/lib/infrastructure/hub_client/hub_connection_repository.dart +++ b/lib/infrastructure/hub_client/hub_connection_repository.dart @@ -1,5 +1,8 @@ part of 'package:cybearjinni/domain/i_hub_connection_repository.dart'; +@Deprecated( + 'Old architecture. Replaced with ConnectionsService. Delete after Re adding Hub comunication', +) class _HubConnectionRepository implements IHubConnectionRepository { _HubConnectionRepository() { if (currentEnvApp == EnvApp.prod) { diff --git a/lib/infrastructure/hub_client/hub_requests_routing.dart b/lib/infrastructure/hub_client/hub_requests_routing.dart index 3e2cbc16d..32cd31130 100644 --- a/lib/infrastructure/hub_client/hub_requests_routing.dart +++ b/lib/infrastructure/hub_client/hub_requests_routing.dart @@ -1,28 +1,7 @@ import 'dart:async'; import 'dart:convert'; -import 'package:cbj_integrations_controller/domain/room/i_room_repository.dart'; -import 'package:cbj_integrations_controller/domain/room/room_entity.dart'; -import 'package:cbj_integrations_controller/domain/scene/i_scene_cbj_repository.dart'; -import 'package:cbj_integrations_controller/infrastructure/gen/cbj_hub_server/protoc_as_dart/cbj_hub_server.pbgrpc.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/abstract_entity/device_entity_base.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/entity_type_utils.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_blinds_entity/generic_blinds_device_dtos.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_boiler_entity/generic_boiler_device_dtos.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_dimmable_light_entity/generic_dimmable_light_device_dtos.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_empty_entity/generic_empty_device_dtos.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_light_entity/generic_light_device_dtos.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_ping_entity/generic_ping_device_dtos.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_printer_entity/generic_printer_device_dtos.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_rgbw_light_entity/generic_rgbw_light_device_dtos.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_security_camera_entity/generic_security_camera_device_dtos.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_smart_computer_entity/generic_smart_computer_device_dtos.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_smart_plug_entity/generic_smart_plug_device_dtos.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_smart_tv_entity/generic_smart_tv_device_dtos.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_switch_entity/generic_switch_device_dtos.dart'; -import 'package:cbj_integrations_controller/infrastructure/hub_client/hub_client.dart'; -import 'package:cbj_integrations_controller/infrastructure/room/room_entity_dtos.dart'; -import 'package:cbj_integrations_controller/infrastructure/scenes/scene_cbj_dtos.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:connectivity_plus/connectivity_plus.dart'; import 'package:cybearjinni/domain/device/i_device_repository.dart'; import 'package:cybearjinni/domain/i_hub_connection_repository.dart'; @@ -30,6 +9,9 @@ import 'package:cybearjinni/infrastructure/core/injection.dart'; import 'package:cybearjinni/infrastructure/core/logger.dart'; import 'package:grpc/grpc.dart'; +@Deprecated( + 'Old architecture. Replaced with ConnectionsService. Delete after Re adding Hub comunication', +) class HubRequestRouting { static StreamSubscription<dynamic>? requestsFromHubSubscription; @@ -63,8 +45,8 @@ class HubRequestRouting { } if (requestsAndStatusFromHub.sendingType == SendingType.entityType) { navigateDeviceRequest(requestsAndStatusFromHub.allRemoteCommands); - } else if (requestsAndStatusFromHub.sendingType == SendingType.roomType) { - navigateRoomRequest(requestsAndStatusFromHub.allRemoteCommands); + } else if (requestsAndStatusFromHub.sendingType == SendingType.areaType) { + navigateAreaRequest(requestsAndStatusFromHub.allRemoteCommands); } else if (requestsAndStatusFromHub.sendingType == SendingType.sceneType) { navigateSceneRequest(requestsAndStatusFromHub.allRemoteCommands); @@ -106,34 +88,34 @@ class HubRequestRouting { await IHubConnectionRepository.instance.connectWithHub(); } - static Future<void> navigateRoomRequest( + static Future<void> navigateAreaRequest( String allRemoteCommands, ) async { - final Map<String, dynamic> requestAsJson = - jsonDecode(allRemoteCommands) as Map<String, dynamic>; - - final RoomEntityDtos roomEntityDtos = RoomEntityDtos( - uniqueId: requestAsJson['uniqueId'] as String, - cbjEntityName: requestAsJson['cbjEntityName'] as String, - background: requestAsJson['background'] as String, - roomTypes: Set<String>.from(requestAsJson['roomTypes'] as Set<dynamic>), - roomDevicesId: - Set<String>.from(requestAsJson['roomDevicesId'] as Set<dynamic>), - roomScenesId: - Set<String>.from(requestAsJson['roomScenesId'] as Set<dynamic>), - roomRoutinesId: - Set<String>.from(requestAsJson['roomRoutinesId'] as Set<dynamic>), - roomBindingsId: - Set<String>.from(requestAsJson['roomBindingsId'] as Set<dynamic>), - roomMostUsedBy: - Set<String>.from(requestAsJson['roomMostUsedBy'] as Set<dynamic>), - roomPermissions: - Set<String>.from(requestAsJson['roomPermissions'] as Set<dynamic>), - ); - - final RoomEntity roomEntity = roomEntityDtos.toDomain(); - - IRoomRepository.instance.addOrUpdateRoom(roomEntity); + // final Map<String, dynamic> requestAsJson = + // jsonDecode(allRemoteCommands) as Map<String, dynamic>; + + // final AreaEntityDtos areaEntityDtos = AreaEntityDtos( + // uniqueId: requestAsJson['uniqueId'] as String, + // cbjEntityName: requestAsJson['cbjEntityName'] as String, + // background: requestAsJson['background'] as String, + // areaTypes: Set<String>.from(requestAsJson['areaTypes'] as Set<dynamic>), + // areaDevicesId: + // Set<String>.from(requestAsJson['areaDevicesId'] as Set<dynamic>), + // areaScenesId: + // Set<String>.from(requestAsJson['areaScenesId'] as Set<dynamic>), + // areaRoutinesId: + // Set<String>.from(requestAsJson['areaRoutinesId'] as Set<dynamic>), + // areaBindingsId: + // Set<String>.from(requestAsJson['areaBindingsId'] as Set<dynamic>), + // areaMostUsedBy: + // Set<String>.from(requestAsJson['areaMostUsedBy'] as Set<dynamic>), + // areaPermissions: + // Set<String>.from(requestAsJson['areaPermissions'] as Set<dynamic>), + // ); + + // final AreaEntity areaEntity = areaEntityDtos.toDomain(); + + // IAreaRepository.instance.addOrUpdateArea(areaEntity); } static Future<void> navigateDeviceRequest( diff --git a/lib/infrastructure/mqtt.dart b/lib/infrastructure/mqtt.dart index bd6ce936b..281bc2bbe 100644 --- a/lib/infrastructure/mqtt.dart +++ b/lib/infrastructure/mqtt.dart @@ -1,15 +1,6 @@ import 'dart:convert'; -import 'package:cbj_integrations_controller/domain/i_mqtt_server_repository.dart'; -import 'package:cbj_integrations_controller/domain/i_saved_devices_repo.dart'; -import 'package:cbj_integrations_controller/domain/i_saved_rooms_repo.dart'; -import 'package:cbj_integrations_controller/infrastructure/devices/device_helper/device_helper.dart'; -import 'package:cbj_integrations_controller/infrastructure/gen/cbj_hub_server/protoc_as_dart/cbj_hub_server.pbgrpc.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/abstract_entity/device_entity_base.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/abstract_entity/device_entity_dto_base.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/abstract_entity/value_objects_core.dart'; -import 'package:cbj_integrations_controller/infrastructure/hub_client/hub_client.dart'; -import 'package:cbj_integrations_controller/infrastructure/room/room_entity_dtos.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:cybearjinni/infrastructure/core/logger.dart'; import 'package:mqtt_client/mqtt_client.dart'; import 'package:mqtt_client/mqtt_server_client.dart'; @@ -82,7 +73,7 @@ class MqttServerRepository extends IMqttServerRepository { EntityState.state(EntityStateGRPC.waitingInComp); /// Sends directly to device connector conjecture - ISavedDevicesRepo.instance.addOrUpdateFromMqtt(deviceEntityBase); + // ISavedDevicesRepo.instance.addOrUpdateFromMqtt(deviceEntityBase); return; } else if (entityFromTheApp is DeviceEntityBase) { @@ -91,14 +82,14 @@ class MqttServerRepository extends IMqttServerRepository { /// Sends directly to device connector conjecture // ConnectorDevicesStreamFromMqtt.fromMqttStream.add(entityFromTheApp); - } else if (entityFromTheApp is RoomEntityDtos) { + } else if (entityFromTheApp is AreaEntityDtos) { logger.i('Loop?'); - ISavedRoomsRepo.instance.addOrUpdateRoom(entityFromTheApp.toDomain()); + // ISavedAreasRepo.instance.addOrUpdateArea(entityFromTheApp.toDomain()); /// Sends directly to device connector conjecture HubRequestsToApp.streamRequestsToApp.add( RequestsAndStatusFromHub( - sendingType: SendingType.roomType, + sendingType: SendingType.areaType, allRemoteCommands: jsonEncode(entityFromTheApp.toJson()), ), ); diff --git a/lib/infrastructure/network_utilities_flutter.dart b/lib/infrastructure/network_utilities_flutter.dart new file mode 100644 index 000000000..22304b148 --- /dev/null +++ b/lib/infrastructure/network_utilities_flutter.dart @@ -0,0 +1,39 @@ +import 'dart:async'; + +import 'package:cbj_integrations_controller/integrations_controller.dart'; +import 'package:network_tools_flutter/network_tools_flutter.dart' + as network_flutter; + +class NetworkUtilitiesFlutter extends NetworkUtilities { + @override + Stream<network_flutter.ActiveHost> getAllPingableDevicesAsyncImplementaion( + String subnet, { + int? firstHostId, + int? lastHostId, + }) => + network_flutter.HostScannerFlutter.getAllPingableDevices( + subnet, + firstHostId: 127, + ); + + @override + Future<network_flutter.ActiveHost?> connectToPortImplementation({ + required String address, + required int port, + required Duration timeout, + }) => + network_flutter.PortScannerFlutter.connectToPort( + address: address, + port: port, + timeout: timeout, + activeHostsController: StreamController<network_flutter.ActiveHost>(), + ); + + // TODO: Add support for mdns using for ios + // mdnsSearch(){ + + // tcpSrvRecordsList; + // final discovery = BonsoirDiscovery(type: _domain); + // await discovery.ready; + // } +} diff --git a/lib/infrastructure/security_bear_client/security_bear_connection_repository.dart b/lib/infrastructure/security_bear_client/security_bear_connection_repository.dart index 60b613bc3..ad290f5dc 100644 --- a/lib/infrastructure/security_bear_client/security_bear_connection_repository.dart +++ b/lib/infrastructure/security_bear_client/security_bear_connection_repository.dart @@ -244,7 +244,7 @@ class _SecurityBearConnectionRepository @override Future<Either<SecurityBearFailures, Unit>> setSecurityBearWiFiInformation( - CBJCompEntity compEntity, + CbjCompEntity compEntity, ) async { try { final ManageNetworkEntity firstWifiEntityOrFailure = diff --git a/lib/infrastructure/security_bear_client/security_bear_server_client.dart b/lib/infrastructure/security_bear_client/security_bear_server_client.dart index 6c2a8cd16..48627657b 100644 --- a/lib/infrastructure/security_bear_client/security_bear_server_client.dart +++ b/lib/infrastructure/security_bear_client/security_bear_server_client.dart @@ -1,6 +1,6 @@ import 'dart:async'; -import 'package:cbj_integrations_controller/infrastructure/gen/security_bear_server_d/protoc_as_dart/security_bear_connections.pbgrpc.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:cybearjinni/infrastructure/core/logger.dart'; import 'package:grpc/grpc.dart'; diff --git a/lib/main.dart b/lib/main.dart index 3315c4d0d..c28244d98 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,4 +1,4 @@ -import 'package:cbj_integrations_controller/infrastructure/core/injection.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:cybearjinni/infrastructure/core/injection.dart'; import 'package:cybearjinni/presentation/core/app_widget.dart'; import 'package:cybearjinni/presentation/core/routes/app_router.dart'; diff --git a/lib/presentation/atoms/atoms.dart b/lib/presentation/atoms/atoms.dart index 16fffc912..862f071d9 100644 --- a/lib/presentation/atoms/atoms.dart +++ b/lib/presentation/atoms/atoms.dart @@ -5,6 +5,7 @@ export 'circular_progress_indicator_atom.dart'; export 'icon_atom.dart'; export 'image_atom.dart'; export 'margined_expanded_atom.dart'; +export 'scene_atom.dart'; export 'separator_atom.dart'; export 'switch_atom.dart'; export 'text_atom.dart'; diff --git a/lib/presentation/atoms/card_atom.dart b/lib/presentation/atoms/card_atom.dart index 56a16d40a..5671a49fa 100644 --- a/lib/presentation/atoms/card_atom.dart +++ b/lib/presentation/atoms/card_atom.dart @@ -8,6 +8,7 @@ class CardAtom extends StatelessWidget { @override Widget build(BuildContext context) { return Card( + margin: EdgeInsets.zero, child: child, ); } diff --git a/lib/presentation/pages/scenes/widgets/scene_widget.dart b/lib/presentation/atoms/scene_atom.dart similarity index 71% rename from lib/presentation/pages/scenes/widgets/scene_widget.dart rename to lib/presentation/atoms/scene_atom.dart index 312048ff0..8f6d8a49e 100644 --- a/lib/presentation/pages/scenes/widgets/scene_widget.dart +++ b/lib/presentation/atoms/scene_atom.dart @@ -1,25 +1,24 @@ -import 'package:cbj_integrations_controller/domain/scene/i_scene_cbj_repository.dart'; -import 'package:cbj_integrations_controller/domain/scene/scene_cbj_entity.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; +import 'package:cybearjinni/domain/connections_service.dart'; import 'package:cybearjinni/presentation/atoms/atoms.dart'; import 'package:cybearjinni/presentation/core/snack_bar_service.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -class SceneWidget extends StatefulWidget { - const SceneWidget(this.currentScene); +class SceneAtom extends StatefulWidget { + const SceneAtom(this.currentScene); final SceneCbjEntity currentScene; @override - State<SceneWidget> createState() => _SceneWidgetState(); + State<SceneAtom> createState() => _SceneAtomState(); } -class _SceneWidgetState extends State<SceneWidget> { +class _SceneAtomState extends State<SceneAtom> { late SceneCbjEntity sceneCbj; - Future<void> _activateScene() async { - ISceneCbjRepository.instance.activateScenes({sceneCbj}); - } + Future<void> _activateScene() async => ConnectionsService.instance + .activateScene(widget.currentScene.uniqueId.getOrCrash()); @override Widget build(BuildContext context) { @@ -27,9 +26,10 @@ class _SceneWidgetState extends State<SceneWidget> { margin: const EdgeInsets.fromLTRB(5, 0, 5, 10), child: ElevatedButton( style: ElevatedButton.styleFrom( - backgroundColor: Color( - int.parse(widget.currentScene.backgroundColor.getOrCrash()), - ), + backgroundColor: Colors.blue, + // Color( + // int.parse(widget.currentScene.backgroundColor.getOrCrash()), + // ), padding: const EdgeInsets.fromLTRB(5, 5, 5, 5), shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(30), diff --git a/lib/presentation/atoms/switch_atom.dart b/lib/presentation/atoms/switch_atom.dart index 6b1c72ee6..95b9d296d 100644 --- a/lib/presentation/atoms/switch_atom.dart +++ b/lib/presentation/atoms/switch_atom.dart @@ -1,4 +1,4 @@ -import 'package:cbj_integrations_controller/infrastructure/gen/cbj_hub_server/protoc_as_dart/cbj_hub_server.pbgrpc.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:flutter/material.dart'; import 'package:flutter_switch/flutter_switch.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; diff --git a/lib/presentation/core/entities_utils.dart b/lib/presentation/core/entities_utils.dart index 72cfa17f4..9ecb5a5bc 100644 --- a/lib/presentation/core/entities_utils.dart +++ b/lib/presentation/core/entities_utils.dart @@ -1,4 +1,4 @@ -import 'package:cbj_integrations_controller/infrastructure/gen/cbj_hub_server/protoc_as_dart/cbj_hub_server.pbgrpc.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:material_design_icons_flutter/material_design_icons_flutter.dart'; @@ -6,14 +6,6 @@ import 'package:material_design_icons_flutter/material_design_icons_flutter.dart class EntitiesUtils { static IconData iconOfDeviceType(EntityTypes deviceType) { switch (deviceType) { - case EntityTypes.AirConditioner: - // TODO: Handle this case. - break; - case EntityTypes.babyMonitor: - // TODO: Handle this case. - break; - case EntityTypes.bed: - return Icons.bed; case EntityTypes.blinds: return FontAwesomeIcons.alignJustify; case EntityTypes.boiler: @@ -23,31 +15,14 @@ class EntitiesUtils { break; case EntityTypes.button: return Icons.smart_button; - case EntityTypes.buttonWithLight: - // TODO: Handle this case. - break; - case EntityTypes.coffeeMachine: - // TODO: Handle this case. - break; case EntityTypes.computerApp: return Icons.computer; - case EntityTypes.dishwasher: - // TODO: Handle this case. - break; case EntityTypes.emptyEntity: // TODO: Handle this case. break; case EntityTypes.hub: // TODO: Handle this case. break; - case EntityTypes.humiditySensor: - // TODO: Handle this case. - break; - case EntityTypes.kettle: - // TODO: Handle this case. - break; - case EntityTypes.lightSensor: - return Icons.sensors; case EntityTypes.light: case EntityTypes.dimmableLight: case EntityTypes.rgbLights: @@ -55,16 +30,6 @@ class EntitiesUtils { case EntityTypes.rgbwLights: case EntityTypes.cctLight: return FontAwesomeIcons.lightbulb; - case EntityTypes.microphone: - return Icons.mic; - case EntityTypes.motionSensor: - // TODO: Handle this case. - break; - case EntityTypes.oven: - // TODO: Handle this case. - break; - case EntityTypes.oxygenSensor: - return Icons.sensors; case EntityTypes.phoneApp: return Icons.phone; case EntityTypes.pingEntity: @@ -77,9 +42,6 @@ class EntitiesUtils { case EntityTypes.scanner: case EntityTypes.printerWithScanner: return Icons.print; - case EntityTypes.refrigerator: - // TODO: Handle this case. - break; case EntityTypes.routerEntity: return Icons.router; case EntityTypes.securityCamera: @@ -88,37 +50,15 @@ class EntitiesUtils { return Icons.computer; case EntityTypes.smartPlug: return MdiIcons.powerSocketAu; - case EntityTypes.smartSpeakers: - return Icons.speaker; case EntityTypes.smartTV: return Icons.tv; case EntityTypes.smartTypeNotSupported: // TODO: Handle this case. break; - case EntityTypes.smartWatch: - return Icons.watch; - case EntityTypes.smartWaterBottle: - // TODO: Handle this case. - break; - case EntityTypes.smokeDetector: - case EntityTypes.smokeSensor: - case EntityTypes.soundSensor: - return Icons.sensors; case EntityTypes.switch_: return MdiIcons.lightSwitch; - case EntityTypes.teapot: - // TODO: Handle this case. - break; - case EntityTypes.temperatureSensor: - return MdiIcons.temperatureCelsius; - case EntityTypes.toaster: - return MdiIcons.toaster; - case EntityTypes.vacuumCleaner: - return MdiIcons.vacuum; case EntityTypes.voiceAssistant: return MdiIcons.voicemail; - case EntityTypes.washingMachine: - return MdiIcons.washingMachine; } return Icons.question_mark; } diff --git a/lib/presentation/core/routes/app_router.dart b/lib/presentation/core/routes/app_router.dart index 64931b528..cda391abf 100644 --- a/lib/presentation/core/routes/app_router.dart +++ b/lib/presentation/core/routes/app_router.dart @@ -11,8 +11,8 @@ class AppRouter extends $AppRouter { AutoRoute(page: ConnectToHubMoreRoute.page), AutoRoute(page: ChooseDeviceVendorToAddRoute.page), AutoRoute(page: HomeRoute.page), - AutoRoute(page: ChangeRoomForDevicesRoute.page), - AutoRoute(page: AddNewRoomRoute.page), + AutoRoute(page: ChangeAreaForDevicesRoute.page), + AutoRoute(page: AddNewAreaRoute.page), AutoRoute(page: PlusButtonRoute.page), AutoRoute(page: RemotePipesRoute.page), AutoRoute(page: SoftwareInfoRoute.page), @@ -33,7 +33,7 @@ class AppRouter extends $AppRouter { AutoRoute(page: ConfigureNewCbjCompRoute.page), AutoRoute(page: ComputerConnectionCheckRoute.page), AutoRoute(page: EntitiesInNetworkRoute.page), - AutoRoute(page: EntitiesInRoomRoute.page), + AutoRoute(page: EntitiesInAreaRoute.page), // Pages from packages AutoRoute(page: SmartCameraContainerRoute.page), diff --git a/lib/presentation/molecules/device_by_type_molecule.dart b/lib/presentation/molecules/device_by_type_molecule.dart index 7cc07e4f8..a9560ecb8 100644 --- a/lib/presentation/molecules/device_by_type_molecule.dart +++ b/lib/presentation/molecules/device_by_type_molecule.dart @@ -1,16 +1,4 @@ -import 'package:cbj_integrations_controller/infrastructure/gen/cbj_hub_server/protoc_as_dart/cbj_hub_server.pbenum.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/abstract_entity/device_entity_base.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/entity_type_utils.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_blinds_entity/generic_blinds_entity.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_boiler_entity/generic_boiler_entity.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_dimmable_light_entity/generic_dimmable_light_entity.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_light_entity/generic_light_entity.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_printer_entity/generic_printer_entity.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_rgbw_light_entity/generic_rgbw_light_entity.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_smart_computer_entity/generic_smart_computer_entity.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_smart_plug_entity/generic_smart_plug_entity.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_smart_tv_entity/generic_smart_tv_entity.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_switch_entity/generic_switch_entity.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:cybearjinni/presentation/atoms/atoms.dart'; import 'package:cybearjinni/presentation/molecules/molecules.dart'; import 'package:flutter/material.dart'; @@ -46,6 +34,8 @@ class DeviceByTypeMolecule extends StatelessWidget { return RgbwLightMolecule(entity as GenericRgbwLightDE); case EntityTypes.dimmableLight: return DimmableLightMolecule(entity as GenericDimmableLightDE); + case EntityTypes.securityCamera: + return SecurityCameraMolecule(entity as GenericSecurityCameraDE); default: return TextAtom('Entity type is unsupported ${type?.name ?? 'null'}'); diff --git a/lib/presentation/molecules/devices/blind_molecule.dart b/lib/presentation/molecules/devices/blind_molecule.dart index 7ac630610..3e2aa0f98 100644 --- a/lib/presentation/molecules/devices/blind_molecule.dart +++ b/lib/presentation/molecules/devices/blind_molecule.dart @@ -1,9 +1,7 @@ import 'dart:collection'; import 'package:another_flushbar/flushbar_helper.dart'; -import 'package:cbj_integrations_controller/infrastructure/gen/cbj_hub_server/protoc_as_dart/cbj_hub_server.pbgrpc.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/entity_type_utils.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_blinds_entity/generic_blinds_entity.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:cybearjinni/domain/connections_service.dart'; import 'package:cybearjinni/presentation/atoms/atoms.dart'; import 'package:cybearjinni/presentation/molecules/molecules.dart'; @@ -11,7 +9,7 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; -/// Show light toggles in a container with the background color from smart room +/// Show light toggles in a container with the background color from smart area /// object class BlindMolecule extends StatefulWidget { const BlindMolecule(this.entity); @@ -30,7 +28,6 @@ class _BlindMoleculeState extends State<BlindMolecule> { ).show(context); setEntityState(EntityActions.moveUp); - // IDeviceRepository.instance.moveUpStateDevices(devicesId: blindsIdToTurnUp); } void setEntityState(EntityActions action) { @@ -53,9 +50,11 @@ class _BlindMoleculeState extends State<BlindMolecule> { ); ConnectionsService.instance.setEntityState( - uniqueIdByVendor: uniqueIdByVendor, - property: EntityProperties.blindsSwitchState, - actionType: action, + ActionObject( + uniqueIdByVendor: uniqueIdByVendor, + property: EntityProperties.blindsSwitchState, + actionType: action, + ), ); } @@ -66,8 +65,6 @@ class _BlindMoleculeState extends State<BlindMolecule> { ).show(context); setEntityState(EntityActions.stop); - - // IDeviceRepository.instance.stopStateDevices(devicesId: blindsIdToStop); } Future<void> _moveDownAllBlinds(List<String> blindsIdToTurnDown) async { @@ -77,9 +74,6 @@ class _BlindMoleculeState extends State<BlindMolecule> { ).show(context); setEntityState(EntityActions.moveDown); - - // IDeviceRepository.instance - // .moveDownStateDevices(devicesId: blindsIdToTurnDown); } @override diff --git a/lib/presentation/molecules/devices/blinds_card_molecule.dart b/lib/presentation/molecules/devices/blinds_card_molecule.dart index 21c26ab5a..933d98d36 100644 --- a/lib/presentation/molecules/devices/blinds_card_molecule.dart +++ b/lib/presentation/molecules/devices/blinds_card_molecule.dart @@ -1,5 +1,4 @@ -import 'package:cbj_integrations_controller/infrastructure/gen/cbj_hub_server/protoc_as_dart/cbj_hub_server.pbgrpc.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_light_entity/generic_light_entity.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:cybearjinni/presentation/atoms/atoms.dart'; import 'package:flutter/material.dart'; diff --git a/lib/presentation/molecules/devices/boiler_molecule.dart b/lib/presentation/molecules/devices/boiler_molecule.dart index f59c75aa4..cdd8583cd 100644 --- a/lib/presentation/molecules/devices/boiler_molecule.dart +++ b/lib/presentation/molecules/devices/boiler_molecule.dart @@ -1,9 +1,7 @@ import 'dart:collection'; import 'package:another_flushbar/flushbar_helper.dart'; -import 'package:cbj_integrations_controller/infrastructure/gen/cbj_hub_server/protoc_as_dart/cbj_hub_server.pbgrpc.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/entity_type_utils.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_boiler_entity/generic_boiler_entity.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:cybearjinni/domain/connections_service.dart'; import 'package:cybearjinni/presentation/atoms/atoms.dart'; import 'package:cybearjinni/presentation/molecules/molecules.dart'; @@ -49,9 +47,11 @@ class _BoilerMoleculeState extends State<BoilerMolecule> { ); ConnectionsService.instance.setEntityState( - uniqueIdByVendor: uniqueIdByVendor, - property: EntityProperties.boilerSwitchState, - actionType: action, + ActionObject( + uniqueIdByVendor: uniqueIdByVendor, + property: EntityProperties.boilerSwitchState, + actionType: action, + ), ); } diff --git a/lib/presentation/molecules/devices/dimmable_light_molecule.dart b/lib/presentation/molecules/devices/dimmable_light_molecule.dart index e023fd35e..e410d97fc 100644 --- a/lib/presentation/molecules/devices/dimmable_light_molecule.dart +++ b/lib/presentation/molecules/devices/dimmable_light_molecule.dart @@ -1,16 +1,13 @@ import 'dart:collection'; -import 'package:cbj_integrations_controller/infrastructure/gen/cbj_hub_server/protoc_as_dart/cbj_hub_server.pbgrpc.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/abstract_entity/device_entity_base.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/entity_type_utils.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_dimmable_light_entity/generic_dimmable_light_entity.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:cybearjinni/domain/connections_service.dart'; import 'package:cybearjinni/presentation/atoms/atoms.dart'; import 'package:cybearjinni/presentation/molecules/molecules.dart'; import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; -/// Show light toggles in a container with the background color from smart room +/// Show light toggles in a container with the background color from smart area /// object class DimmableLightMolecule extends StatefulWidget { const DimmableLightMolecule(this.entity); @@ -72,10 +69,12 @@ class _DimmableLightMoleculeState extends State<DimmableLightMolecule> { ], ); ConnectionsService.instance.setEntityState( - uniqueIdByVendor: uniqueIdByVendor, - property: property, - actionType: action, - value: value, + ActionObject( + uniqueIdByVendor: uniqueIdByVendor, + property: property, + actionType: action, + value: value, + ), ); } @@ -83,6 +82,7 @@ class _DimmableLightMoleculeState extends State<DimmableLightMolecule> { Widget build(BuildContext context) { final ThemeData themeData = Theme.of(context); final ColorScheme colorScheme = themeData.colorScheme; + final TextTheme textTheme = themeData.textTheme; return Column( children: [ @@ -121,7 +121,7 @@ class _DimmableLightMoleculeState extends State<DimmableLightMolecule> { width: 45, child: TextAtom( '${brightness.round()}%', - style: const TextStyle(color: Colors.black), + style: textTheme.bodyMedium, ), ), ], diff --git a/lib/presentation/molecules/devices/light_card_molecule.dart b/lib/presentation/molecules/devices/light_card_molecule.dart index abc6bfd72..eb6d16c2c 100644 --- a/lib/presentation/molecules/devices/light_card_molecule.dart +++ b/lib/presentation/molecules/devices/light_card_molecule.dart @@ -1,7 +1,4 @@ -import 'package:cbj_integrations_controller/infrastructure/gen/cbj_hub_server/protoc_as_dart/cbj_hub_server.pbgrpc.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/abstract_entity/value_objects_core.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_light_entity/generic_light_entity.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_light_entity/generic_light_value_objects.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:cybearjinni/domain/device/i_device_repository.dart'; import 'package:cybearjinni/presentation/atoms/atoms.dart'; import 'package:flutter/material.dart'; diff --git a/lib/presentation/molecules/devices/light_molecule.dart b/lib/presentation/molecules/devices/light_molecule.dart index 1ccc9e54b..5ed44e2d2 100644 --- a/lib/presentation/molecules/devices/light_molecule.dart +++ b/lib/presentation/molecules/devices/light_molecule.dart @@ -1,14 +1,12 @@ import 'dart:collection'; -import 'package:cbj_integrations_controller/infrastructure/gen/cbj_hub_server/protoc_as_dart/cbj_hub_server.pbgrpc.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/entity_type_utils.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_light_entity/generic_light_entity.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:cybearjinni/domain/connections_service.dart'; import 'package:cybearjinni/presentation/atoms/atoms.dart'; import 'package:cybearjinni/presentation/molecules/molecules.dart'; import 'package:flutter/material.dart'; -/// Show light toggles in a container with the background color from smart room +/// Show light toggles in a container with the background color from smart area /// object class LightMolecule extends StatelessWidget { const LightMolecule(this.entity); @@ -37,9 +35,11 @@ class LightMolecule extends StatelessWidget { ], ); ConnectionsService.instance.setEntityState( - uniqueIdByVendor: uniqueIdByVendor, - property: EntityProperties.lightSwitchState, - actionType: action, + ActionObject( + uniqueIdByVendor: uniqueIdByVendor, + property: EntityProperties.lightSwitchState, + actionType: action, + ), ); } diff --git a/lib/presentation/molecules/devices/printer_molecule.dart b/lib/presentation/molecules/devices/printer_molecule.dart index e1eeb72b0..a6e4efcb8 100644 --- a/lib/presentation/molecules/devices/printer_molecule.dart +++ b/lib/presentation/molecules/devices/printer_molecule.dart @@ -1,12 +1,12 @@ import 'package:another_flushbar/flushbar_helper.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_printer_entity/generic_printer_entity.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:cybearjinni/presentation/atoms/atoms.dart'; import 'package:cybearjinni/presentation/molecules/molecules.dart'; import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:url_launcher/url_launcher.dart'; -/// Show switch toggles in a container with the background color from smart room +/// Show switch toggles in a container with the background color from smart area /// object class PrinterMolecule extends StatefulWidget { const PrinterMolecule(this.entity); diff --git a/lib/presentation/molecules/devices/rgb_light_molecule.dart b/lib/presentation/molecules/devices/rgb_light_molecule.dart index 68bcc93e7..b06e2c2e5 100644 --- a/lib/presentation/molecules/devices/rgb_light_molecule.dart +++ b/lib/presentation/molecules/devices/rgb_light_molecule.dart @@ -1,18 +1,14 @@ import 'dart:collection'; -import 'package:cbj_integrations_controller/infrastructure/gen/cbj_hub_server/protoc_as_dart/cbj_hub_server.pbgrpc.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/abstract_entity/device_entity_base.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/entity_type_utils.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_rgbw_light_entity/generic_rgbw_light_entity.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:cybearjinni/domain/connections_service.dart'; -import 'package:cybearjinni/domain/device/i_device_repository.dart'; import 'package:cybearjinni/presentation/atoms/atoms.dart'; import 'package:cybearjinni/presentation/molecules/molecules.dart'; import 'package:flutter/material.dart'; import 'package:flutter_colorpicker/flutter_colorpicker.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; -/// Show light toggles in a container with the background color from smart room +/// Show light toggles in a container with the background color from smart area /// object class RgbwLightMolecule extends StatefulWidget { const RgbwLightMolecule(this.entity); @@ -87,10 +83,12 @@ class _RgbwLightMoleculeState extends State<RgbwLightMolecule> { ], ); ConnectionsService.instance.setEntityState( - uniqueIdByVendor: uniqueIdByVendor, - property: entityProperties, - actionType: action, - value: value, + ActionObject( + uniqueIdByVendor: uniqueIdByVendor, + property: entityProperties, + actionType: action, + value: value, + ), ); } @@ -123,7 +121,7 @@ class _RgbwLightMoleculeState extends State<RgbwLightMolecule> { ), ), const SeparatorAtom(variant: SeparatorVariant.reletedElements), - LightColorMods(deviceEntity: widget.entity), + LightColorMods(entity: widget.entity), Row( children: [ const FaIcon(FontAwesomeIcons.solidSun), @@ -155,13 +153,13 @@ class _RgbwLightMoleculeState extends State<RgbwLightMolecule> { class LightColorMods extends StatefulWidget { const LightColorMods({ - required this.deviceEntity, + required this.entity, this.brightness = 100, this.colorTemperature = 4500, this.hsvColor, }); - final GenericRgbwLightDE deviceEntity; + final GenericRgbwLightDE entity; final int colorTemperature; final HSVColor? hsvColor; final double brightness; @@ -187,7 +185,7 @@ class _LightColorMods extends State<LightColorMods> { } Future<void> _initialized() async { - final GenericRgbwLightDE rgbwLightDe = widget.deviceEntity; + final GenericRgbwLightDE rgbwLightDe = widget.entity; int lightColorTemperature = int.parse(rgbwLightDe.lightColorTemperature.getOrCrash()); @@ -209,21 +207,63 @@ class _LightColorMods extends State<LightColorMods> { }); } + void setEntityState( + EntityProperties entityProperties, + EntityActions action, { + HashMap<ActionValues, dynamic>? value, + }) { + final VendorsAndServices? vendor = + widget.entity.cbjDeviceVendor.vendorsAndServices; + if (vendor == null) { + return; + } + + final HashMap<VendorsAndServices, HashSet<String>> uniqueIdByVendor = + HashMap(); + uniqueIdByVendor.addEntries( + [ + MapEntry( + vendor, + HashSet<String>() + ..addAll([widget.entity.deviceCbjUniqueId.getOrCrash()]), + ), + ], + ); + ConnectionsService.instance.setEntityState( + ActionObject( + uniqueIdByVendor: uniqueIdByVendor, + property: entityProperties, + actionType: action, + value: value, + ), + ); + } + Future<void> _changeColorTemperature(int newColorTemperature) async { setState(() { colorTemperature = newColorTemperature; }); - IDeviceRepository.instance.changeColorTemperatureDevices( - devicesId: [widget.deviceEntity.cbjDeviceVendor.getOrCrash()], - colorTemperatureToChange: newColorTemperature, + setEntityState( + EntityProperties.lightColorTemperature, + EntityActions.changeTemperature, + value: HashMap.from({ActionValues.temperature: newColorTemperature}), ); } Future<void> _changeHsvColor(HSVColor newHsvColor) async { - hsvColor = newHsvColor; - IDeviceRepository.instance.changeHsvColorDevices( - devicesId: [widget.deviceEntity.cbjDeviceVendor.getOrCrash()], - hsvColorToChange: newHsvColor, + setState(() { + hsvColor = newHsvColor; + }); + + setEntityState( + EntityProperties.color, + EntityActions.hsvColor, + value: HashMap.from({ + ActionValues.alpha: newHsvColor.alpha, + ActionValues.hue: newHsvColor.hue, + ActionValues.saturation: newHsvColor.saturation, + ActionValues.value: newHsvColor.value, + }), ); } diff --git a/lib/presentation/molecules/devices/security_camera_molecule.dart b/lib/presentation/molecules/devices/security_camera_molecule.dart new file mode 100644 index 000000000..a0d481b80 --- /dev/null +++ b/lib/presentation/molecules/devices/security_camera_molecule.dart @@ -0,0 +1,68 @@ +import 'package:another_flushbar/flushbar_helper.dart'; +import 'package:auto_route/auto_route.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; +import 'package:cybearjinni/presentation/atoms/atoms.dart'; +import 'package:cybearjinni/presentation/core/routes/app_router.gr.dart'; +import 'package:cybearjinni/presentation/molecules/molecules.dart'; +import 'package:flutter/material.dart'; +import 'package:font_awesome_flutter/font_awesome_flutter.dart'; + +/// Show switch toggles in a container with the background color from smart area +/// object +class SecurityCameraMolecule extends StatefulWidget { + const SecurityCameraMolecule(this.entity); + + final GenericSecurityCameraDE entity; + + @override + State<SecurityCameraMolecule> createState() => _SecurityCameraMoleculeState(); +} + +class _SecurityCameraMoleculeState extends State<SecurityCameraMolecule> { + Future<void> _openCameraPage() async { + FlushbarHelper.createLoading( + message: 'Opening Camera', + linearProgressIndicator: const LinearProgressIndicator(), + ).show(context); + + final String cameraIp = widget.entity.deviceLastKnownIp.getOrCrash()!; + + context.router + .push(VideoStreamOutputContainerRoute(streamAddress: cameraIp)); + } + + @override + Widget build(BuildContext context) { + return DeviceNameRow( + widget.entity.cbjEntityName.getOrCrash()!, + TextButton( + style: ButtonStyle( + backgroundColor: MaterialStateProperty.all( + Colors.grey, + ), + side: MaterialStateProperty.all( + BorderSide.lerp( + const BorderSide(color: Colors.white60), + const BorderSide(color: Colors.white60), + 22, + ), + ), + ), + onPressed: _openCameraPage, + child: Tab( + icon: FaIcon( + FontAwesomeIcons.link, + color: Theme.of(context).textTheme.bodyLarge!.color, + ), + child: TextAtom( + "Open Camera", + style: TextStyle( + color: Theme.of(context).textTheme.bodyLarge!.color, + fontSize: 16, + ), + ), + ), + ), + ); + } +} diff --git a/lib/presentation/molecules/devices/smart_computer_molecule.dart b/lib/presentation/molecules/devices/smart_computer_molecule.dart index 20b9c3558..d10599095 100644 --- a/lib/presentation/molecules/devices/smart_computer_molecule.dart +++ b/lib/presentation/molecules/devices/smart_computer_molecule.dart @@ -1,12 +1,12 @@ import 'package:another_flushbar/flushbar_helper.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_smart_computer_entity/generic_smart_computer_entity.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:cybearjinni/domain/device/i_device_repository.dart'; import 'package:cybearjinni/presentation/atoms/atoms.dart'; import 'package:cybearjinni/presentation/molecules/molecules.dart'; import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; -/// Show switch toggles in a container with the background color from smart room +/// Show switch toggles in a container with the background color from smart area /// object class SmartComputerMolecule extends StatefulWidget { const SmartComputerMolecule(this.entity); diff --git a/lib/presentation/molecules/devices/smart_plug_molecule.dart b/lib/presentation/molecules/devices/smart_plug_molecule.dart index d73b43df1..2e6481417 100644 --- a/lib/presentation/molecules/devices/smart_plug_molecule.dart +++ b/lib/presentation/molecules/devices/smart_plug_molecule.dart @@ -1,15 +1,13 @@ import 'dart:async'; import 'dart:collection'; -import 'package:cbj_integrations_controller/infrastructure/gen/cbj_hub_server/protoc_as_dart/cbj_hub_server.pbgrpc.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/entity_type_utils.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_smart_plug_entity/generic_smart_plug_entity.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:cybearjinni/domain/connections_service.dart'; import 'package:cybearjinni/presentation/atoms/atoms.dart'; import 'package:cybearjinni/presentation/molecules/molecules.dart'; import 'package:flutter/material.dart'; -/// Show smartPlug toggles in a container with the background color from smart room +/// Show smartPlug toggles in a container with the background color from smart area /// object class SmartPlugsMolecule extends StatefulWidget { const SmartPlugsMolecule(this.entity); @@ -47,9 +45,11 @@ class _SmartPlugsMoleculeState extends State<SmartPlugsMolecule> { ], ); ConnectionsService.instance.setEntityState( - uniqueIdByVendor: uniqueIdByVendor, - property: EntityProperties.lightSwitchState, - actionType: action, + ActionObject( + uniqueIdByVendor: uniqueIdByVendor, + property: EntityProperties.lightSwitchState, + actionType: action, + ), ); } diff --git a/lib/presentation/molecules/devices/smart_tv_molecule.dart b/lib/presentation/molecules/devices/smart_tv_molecule.dart index 2849f7def..524292140 100644 --- a/lib/presentation/molecules/devices/smart_tv_molecule.dart +++ b/lib/presentation/molecules/devices/smart_tv_molecule.dart @@ -1,17 +1,14 @@ import 'dart:collection'; import 'package:another_flushbar/flushbar_helper.dart'; -import 'package:cbj_integrations_controller/infrastructure/gen/cbj_hub_server/protoc_as_dart/cbj_hub_server.pbgrpc.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/abstract_entity/device_entity_base.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/entity_type_utils.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_smart_tv_entity/generic_smart_tv_entity.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:cybearjinni/domain/connections_service.dart'; import 'package:cybearjinni/presentation/atoms/atoms.dart'; import 'package:cybearjinni/presentation/molecules/molecules.dart'; import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; -/// Show switch toggles in a container with the background color from smart room +/// Show switch toggles in a container with the background color from smart area /// object class SmartTvMolecule extends StatefulWidget { const SmartTvMolecule(this.entity); @@ -97,14 +94,20 @@ class _SmartTvMoleculeState extends State<SmartTvMolecule> { ], ); ConnectionsService.instance.setEntityState( - uniqueIdByVendor: uniqueIdByVendor, - property: property, - actionType: action, - value: value, + ActionObject( + uniqueIdByVendor: uniqueIdByVendor, + property: property, + actionType: action, + value: value, + ), ); } - void playVideo(String url) { + void openUrl(String? url) { + if (url == null) { + return; + } + FlushbarHelper.createLoading( message: 'Open the url', linearProgressIndicator: const LinearProgressIndicator(), @@ -112,14 +115,30 @@ class _SmartTvMoleculeState extends State<SmartTvMolecule> { setEntityState( EntityProperties.openUrl, - EntityActions.open, + EntityActions.openUrl, value: HashMap.from({ActionValues.url: url}), ); } + void sendTtl(String? text) { + if (text == null) { + return; + } + + FlushbarHelper.createLoading( + message: 'Send tts text', + linearProgressIndicator: const LinearProgressIndicator(), + ).show(context); + + setEntityState( + EntityProperties.speekers, + EntityActions.speek, + value: HashMap.from({ActionValues.text: text}), + ); + } + void openUrlPopUp() { - String url = - 'http://commondatastorage.googleapis.com/gtv-videos-bucket/big_buck_bunny_1080p.mp4'; + String? url; showDialog( context: context, @@ -150,7 +169,6 @@ class _SmartTvMoleculeState extends State<SmartTvMolecule> { Container( padding: const EdgeInsets.all(8.0), child: TextFormField( - initialValue: url, onChanged: (textInUrl) { url = textInUrl; }, @@ -168,7 +186,77 @@ class _SmartTvMoleculeState extends State<SmartTvMolecule> { child: ElevatedButton( onPressed: () { Navigator.pop(context); - playVideo(url); + openUrl(url); + }, + style: ElevatedButton.styleFrom( + backgroundColor: Colors.black, + // fixedSize: Size(250, 50), + ), + child: const TextAtom( + "Submit", + ), + ), + ), + ], + ), + ), + ), + ); + }, + ); + } + + void ttsPopUp() { + String? text = 'Welcome Home'; + + showDialog( + context: context, + builder: (context) { + return AlertDialog( + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.all( + Radius.circular( + 20.0, + ), + ), + ), + contentPadding: const EdgeInsets.only( + top: 10.0, + ), + title: const TextAtom( + 'Text To Speech', + style: TextStyle(fontSize: 24.0), + ), + content: SizedBox( + height: 400, + child: SingleChildScrollView( + padding: const EdgeInsets.all(8.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: <Widget>[ + Container( + padding: const EdgeInsets.all(8.0), + child: TextFormField( + initialValue: 'Welcome Home', + onChanged: (textInUrl) { + text = textInUrl; + }, + decoration: const InputDecoration( + border: OutlineInputBorder(), + hintText: 'Enter TTS here', + labelText: 'Text', + ), + ), + ), + Container( + width: double.infinity, + height: 60, + padding: const EdgeInsets.all(8.0), + child: ElevatedButton( + onPressed: () { + Navigator.pop(context); + sendTtl(text); }, style: ElevatedButton.styleFrom( backgroundColor: Colors.black, @@ -219,14 +307,14 @@ class _SmartTvMoleculeState extends State<SmartTvMolecule> { ), ), ), - onPressed: onPause, + onPressed: onVolumeDown, child: Tab( icon: FaIcon( - FontAwesomeIcons.pause, + FontAwesomeIcons.volumeLow, color: Theme.of(context).textTheme.bodyLarge!.color, ), child: TextAtom( - 'Pause', + 'Down', style: TextStyle( color: Theme.of(context).textTheme.bodyLarge!.color, fontSize: 16, @@ -248,14 +336,14 @@ class _SmartTvMoleculeState extends State<SmartTvMolecule> { ), ), ), - onPressed: onPlay, + onPressed: onVolumeUp, child: Tab( icon: FaIcon( - FontAwesomeIcons.play, + FontAwesomeIcons.volumeHigh, color: Theme.of(context).textTheme.bodyLarge!.color, ), child: TextAtom( - 'Play', + 'Up', style: TextStyle( color: Theme.of(context).textTheme.bodyLarge!.color, fontSize: 16, @@ -277,14 +365,14 @@ class _SmartTvMoleculeState extends State<SmartTvMolecule> { ), ), ), - onPressed: onVolumeDown, + onPressed: onNetflix, child: Tab( icon: FaIcon( - FontAwesomeIcons.volumeLow, + FontAwesomeIcons.video, color: Theme.of(context).textTheme.bodyLarge!.color, ), child: TextAtom( - 'Down', + 'Netflix', style: TextStyle( color: Theme.of(context).textTheme.bodyLarge!.color, fontSize: 16, @@ -292,7 +380,7 @@ class _SmartTvMoleculeState extends State<SmartTvMolecule> { ), ), ), - const SeparatorAtom(variant: SeparatorVariant.closeWidgets), + const SeparatorAtom(), TextButton( style: ButtonStyle( backgroundColor: MaterialStateProperty.all( @@ -306,14 +394,14 @@ class _SmartTvMoleculeState extends State<SmartTvMolecule> { ), ), ), - onPressed: onVolumeUp, + onPressed: openUrlPopUp, child: Tab( icon: FaIcon( - FontAwesomeIcons.volumeHigh, + FontAwesomeIcons.globe, color: Theme.of(context).textTheme.bodyLarge!.color, ), child: TextAtom( - 'Up', + 'Open URL', style: TextStyle( color: Theme.of(context).textTheme.bodyLarge!.color, fontSize: 16, @@ -335,14 +423,14 @@ class _SmartTvMoleculeState extends State<SmartTvMolecule> { ), ), ), - onPressed: onNetflix, + onPressed: ttsPopUp, child: Tab( icon: FaIcon( - FontAwesomeIcons.video, + FontAwesomeIcons.globe, color: Theme.of(context).textTheme.bodyLarge!.color, ), child: TextAtom( - 'Netflix', + 'TTS', style: TextStyle( color: Theme.of(context).textTheme.bodyLarge!.color, fontSize: 16, @@ -364,14 +452,43 @@ class _SmartTvMoleculeState extends State<SmartTvMolecule> { ), ), ), - onPressed: openUrlPopUp, + onPressed: onPause, child: Tab( icon: FaIcon( - FontAwesomeIcons.video, + FontAwesomeIcons.pause, + color: Theme.of(context).textTheme.bodyLarge!.color, + ), + child: TextAtom( + 'YouTube Pause', + style: TextStyle( + color: Theme.of(context).textTheme.bodyLarge!.color, + fontSize: 16, + ), + ), + ), + ), + const SeparatorAtom(variant: SeparatorVariant.closeWidgets), + TextButton( + style: ButtonStyle( + backgroundColor: MaterialStateProperty.all( + Colors.grey, + ), + side: MaterialStateProperty.all( + BorderSide.lerp( + const BorderSide(color: Colors.white60), + const BorderSide(color: Colors.white60), + 22, + ), + ), + ), + onPressed: onPlay, + child: Tab( + icon: FaIcon( + FontAwesomeIcons.play, color: Theme.of(context).textTheme.bodyLarge!.color, ), child: TextAtom( - 'Video', + 'YouTube Play', style: TextStyle( color: Theme.of(context).textTheme.bodyLarge!.color, fontSize: 16, diff --git a/lib/presentation/molecules/devices/switch_molecule.dart b/lib/presentation/molecules/devices/switch_molecule.dart index e75135c96..77bee7513 100644 --- a/lib/presentation/molecules/devices/switch_molecule.dart +++ b/lib/presentation/molecules/devices/switch_molecule.dart @@ -1,15 +1,13 @@ import 'dart:async'; import 'dart:collection'; -import 'package:cbj_integrations_controller/infrastructure/gen/cbj_hub_server/protoc_as_dart/cbj_hub_server.pbgrpc.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/entity_type_utils.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_switch_entity/generic_switch_entity.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:cybearjinni/domain/connections_service.dart'; import 'package:cybearjinni/presentation/atoms/atoms.dart'; import 'package:cybearjinni/presentation/molecules/molecules.dart'; import 'package:flutter/material.dart'; -/// Show switch toggles in a container with the background color from smart room +/// Show switch toggles in a container with the background color from smart area /// object class SwitchMolecule extends StatefulWidget { const SwitchMolecule(this.entity); @@ -47,9 +45,11 @@ class _SwitchMoleculeState extends State<SwitchMolecule> { ], ); ConnectionsService.instance.setEntityState( - uniqueIdByVendor: uniqueIdByVendor, - property: EntityProperties.lightSwitchState, - actionType: action, + ActionObject( + uniqueIdByVendor: uniqueIdByVendor, + property: EntityProperties.lightSwitchState, + actionType: action, + ), ); } diff --git a/lib/presentation/molecules/list_view_molecule.dart b/lib/presentation/molecules/list_view_molecule.dart index f9c03a7ee..4d6121140 100644 --- a/lib/presentation/molecules/list_view_molecule.dart +++ b/lib/presentation/molecules/list_view_molecule.dart @@ -11,6 +11,7 @@ class ListViewMolecule extends StatelessWidget { this.reverse = false, this.physics, this.shrinkWrap = false, + this.separatorVariant = SeparatorVariant.reletedElements, }); final int itemCount; @@ -20,6 +21,7 @@ class ListViewMolecule extends StatelessWidget { final ScrollPhysics? physics; final bool shrinkWrap; final ListViewVeriant veriant; + final SeparatorVariant separatorVariant; @override Widget build(BuildContext context) { @@ -31,6 +33,7 @@ class ListViewMolecule extends StatelessWidget { itemCount: itemCount, scrollDirection: scrollDirection, reverse: reverse, + padding: EdgeInsets.zero, itemBuilder: (BuildContext context, int index) => itemBuilder(context, index), ); @@ -41,10 +44,11 @@ class ListViewMolecule extends StatelessWidget { itemCount: itemCount, scrollDirection: scrollDirection, reverse: reverse, + padding: EdgeInsets.zero, itemBuilder: (BuildContext context, int index) => itemBuilder(context, index), separatorBuilder: (context, index) => - const SeparatorAtom(variant: SeparatorVariant.reletedElements), + SeparatorAtom(variant: separatorVariant), ); } } diff --git a/lib/presentation/molecules/molecules.dart b/lib/presentation/molecules/molecules.dart index 65a9b2d5a..7343aac46 100644 --- a/lib/presentation/molecules/molecules.dart +++ b/lib/presentation/molecules/molecules.dart @@ -9,6 +9,7 @@ export 'devices/light_card_molecule.dart'; export 'devices/light_molecule.dart'; export 'devices/printer_molecule.dart'; export 'devices/rgb_light_molecule.dart'; +export 'devices/security_camera_molecule.dart'; export 'devices/smart_computer_molecule.dart'; export 'devices/smart_plug_molecule.dart'; export 'devices/smart_tv_molecule.dart'; @@ -17,3 +18,4 @@ export 'list_tile_molecule.dart'; export 'list_view_molecule.dart'; export 'loading_page_molecule.dart'; export 'top_bar_molecule.dart'; +export 'scenes_grid.dart'; diff --git a/lib/presentation/molecules/scenes_grid.dart b/lib/presentation/molecules/scenes_grid.dart new file mode 100644 index 000000000..131fbb10a --- /dev/null +++ b/lib/presentation/molecules/scenes_grid.dart @@ -0,0 +1,49 @@ +import 'package:cbj_integrations_controller/integrations_controller.dart'; +import 'package:cybearjinni/presentation/atoms/atoms.dart'; +import 'package:flutter/material.dart'; + +class ScenesGrid extends StatefulWidget { + const ScenesGrid({required this.scenes}); + + final List<SceneCbjEntity> scenes; + + @override + State<ScenesGrid> createState() => _ScenesGridState(); +} + +class _ScenesGridState extends State<ScenesGrid> { + late AreaEntity folderOfScenes; + + @override + Widget build(BuildContext context) { + final Size screenSize = MediaQuery.of(context).size; + + final ThemeData themeData = Theme.of(context); + final TextTheme textTheme = themeData.textTheme; + + int gridCrossAxisCount = 2; + if (screenSize.width > 700) { + gridCrossAxisCount = 4; + } + + if (widget.scenes.isEmpty) { + return Center( + child: TextAtom( + 'You can add automations in the plus button', + style: textTheme.bodyLarge, + ), + ); + } + return GridView.builder( + reverse: true, + itemBuilder: (context, index) { + final SceneCbjEntity sceneCbj = widget.scenes[index]; + return SceneAtom(sceneCbj); + }, + itemCount: widget.scenes.length, + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: gridCrossAxisCount, + ), + ); + } +} diff --git a/lib/presentation/organisms/devices_list_view.dart b/lib/presentation/organisms/devices_list_view.dart index cfa7e92e4..98811f2c2 100644 --- a/lib/presentation/organisms/devices_list_view.dart +++ b/lib/presentation/organisms/devices_list_view.dart @@ -1,7 +1,6 @@ import 'dart:collection'; -import 'package:cbj_integrations_controller/infrastructure/gen/cbj_hub_server/protoc_as_dart/cbj_hub_server.pbgrpc.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/abstract_entity/device_entity_base.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:cybearjinni/presentation/atoms/atoms.dart'; import 'package:cybearjinni/presentation/core/entities_utils.dart'; import 'package:cybearjinni/presentation/molecules/molecules.dart'; @@ -52,7 +51,7 @@ class DevicesListView extends StatelessWidget { geEntitiesByType(); return ListViewMolecule( - ListViewVeriant.builder, + ListViewVeriant.separated, shrinkWrap: true, itemBuilder: (context, index) { final EntityTypes type = entitiesByType.keys.elementAt(index); @@ -69,9 +68,9 @@ class DevicesListView extends StatelessWidget { if (numberOfType == 1) { headline = firstEntityOfType.cbjEntityName.getOrCrash(); - supportingText = firstEntityOfType.entityStateGRPC.getOrCrash(); + supportingText = firstEntityOfType.entityStateGRPC.state.name; } else { - headline = '$numberOfType ${type}s'; + headline = '$numberOfType ${type.name}s'; supportingText = ''; } diff --git a/lib/presentation/organisms/empty_open_room_organism.dart b/lib/presentation/organisms/empty_open_area_organism.dart similarity index 94% rename from lib/presentation/organisms/empty_open_room_organism.dart rename to lib/presentation/organisms/empty_open_area_organism.dart index 8b2c6f111..9e102753b 100644 --- a/lib/presentation/organisms/empty_open_room_organism.dart +++ b/lib/presentation/organisms/empty_open_area_organism.dart @@ -2,7 +2,7 @@ import 'package:auto_route/auto_route.dart'; import 'package:cybearjinni/presentation/atoms/atoms.dart'; import 'package:flutter/material.dart'; -class EmptyOpenRoomOrganism extends StatelessWidget { +class EmptyOpenAreaOrganism extends StatelessWidget { @override Widget build(BuildContext context) { return SingleChildScrollView( diff --git a/lib/presentation/organisms/open_area_organism.dart b/lib/presentation/organisms/open_area_organism.dart new file mode 100644 index 000000000..cc3a09195 --- /dev/null +++ b/lib/presentation/organisms/open_area_organism.dart @@ -0,0 +1,46 @@ +import 'package:cbj_integrations_controller/integrations_controller.dart'; +import 'package:cybearjinni/presentation/atoms/atoms.dart'; +import 'package:cybearjinni/presentation/molecules/molecules.dart'; +import 'package:cybearjinni/presentation/organisms/organisms.dart'; +import 'package:flutter/material.dart'; + +class OpenAreaOrganism extends StatefulWidget { + const OpenAreaOrganism({ + required this.areaEntity, + required this.entityTypes, + required this.entities, + }); + + /// If it have value will only show Printers in this area + final AreaEntity areaEntity; + final Set<EntityTypes> entityTypes; + final Set<DeviceEntityBase> entities; + + @override + State<OpenAreaOrganism> createState() => _OpenAreaOrganismState(); +} + +class _OpenAreaOrganismState extends State<OpenAreaOrganism> { + @override + Widget build(BuildContext context) { + if (widget.entities.isEmpty) { + return EmptyOpenAreaOrganism(); + } + + return Container( + margin: const EdgeInsets.symmetric(horizontal: 5, vertical: 15), + child: ListView.separated( + reverse: true, + padding: EdgeInsets.zero, + itemBuilder: (context, index) { + final DeviceEntityBase device = widget.entities.elementAt(index); + + return DeviceByTypeMolecule(device); + }, + itemCount: widget.entities.length, + separatorBuilder: (BuildContext context, int index) => + const SeparatorAtom(variant: SeparatorVariant.farAppart), + ), + ); + } +} diff --git a/lib/presentation/organisms/open_room_organism.dart b/lib/presentation/organisms/open_room_organism.dart deleted file mode 100644 index 87dde7195..000000000 --- a/lib/presentation/organisms/open_room_organism.dart +++ /dev/null @@ -1,48 +0,0 @@ -import 'package:cbj_integrations_controller/domain/room/room_entity.dart'; -import 'package:cbj_integrations_controller/infrastructure/gen/cbj_hub_server/protoc_as_dart/cbj_hub_server.pbgrpc.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/abstract_entity/device_entity_base.dart'; -import 'package:cybearjinni/presentation/atoms/atoms.dart'; -import 'package:cybearjinni/presentation/molecules/molecules.dart'; -import 'package:cybearjinni/presentation/organisms/organisms.dart'; -import 'package:flutter/material.dart'; - -class OpenRoomOrganism extends StatefulWidget { - const OpenRoomOrganism({ - required this.roomEntity, - required this.entityTypes, - required this.devices, - }); - - /// If it have value will only show Printers in this room - final RoomEntity roomEntity; - final Set<EntityTypes> entityTypes; - final Set<DeviceEntityBase> devices; - - @override - State<OpenRoomOrganism> createState() => _OpenRoomOrganismState(); -} - -class _OpenRoomOrganismState extends State<OpenRoomOrganism> { - @override - Widget build(BuildContext context) { - if (widget.devices.isEmpty) { - return EmptyOpenRoomOrganism(); - } - - return Container( - margin: const EdgeInsets.symmetric(horizontal: 5, vertical: 15), - child: ListView.separated( - reverse: true, - padding: EdgeInsets.zero, - itemBuilder: (context, index) { - final DeviceEntityBase device = widget.devices.elementAt(index); - - return DeviceByTypeMolecule(device); - }, - itemCount: widget.devices.length, - separatorBuilder: (BuildContext context, int index) => - const SeparatorAtom(variant: SeparatorVariant.farAppart), - ), - ); - } -} diff --git a/lib/presentation/organisms/organisms.dart b/lib/presentation/organisms/organisms.dart index f479d3eed..7c48f1352 100644 --- a/lib/presentation/organisms/organisms.dart +++ b/lib/presentation/organisms/organisms.dart @@ -1,4 +1,4 @@ export 'devices_list_view.dart'; -export 'empty_open_room_organism.dart'; -export 'open_room_organism.dart'; +export 'empty_open_area_organism.dart'; +export 'open_area_organism.dart'; export 'page_organism.dart'; diff --git a/lib/presentation/pages/add_action_page.dart b/lib/presentation/pages/add_action_page.dart new file mode 100644 index 000000000..61b19e623 --- /dev/null +++ b/lib/presentation/pages/add_action_page.dart @@ -0,0 +1,199 @@ +import 'dart:collection'; + +import 'package:auto_route/auto_route.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; +import 'package:cybearjinni/presentation/atoms/atoms.dart'; +import 'package:cybearjinni/presentation/core/snack_bar_service.dart'; +import 'package:cybearjinni/presentation/organisms/organisms.dart'; +import 'package:flutter/material.dart'; + +@RoutePage<EntityActionObject?>() +class AddActionPage extends StatefulWidget { + const AddActionPage({required this.entities}); + + final HashMap<String, DeviceEntityBase> entities; + + @override + State<AddActionPage> createState() => _AddActionPageState(); +} + +class _AddActionPageState extends State<AddActionPage> { + DeviceEntityBase? selectedEntity; + EntityProperties? selectedProperty; + EntityActions? selectedAction; + + void onEntitySelect(String entityId) { + setState(() { + selectedEntity = widget.entities[entityId]; + }); + } + + Future<void> onActionSelected(String value) async { + setState(() { + selectedAction = EntityActions.values.elementAt(int.parse(value)); + }); + } + + Future<void> _onPropertySelected(String property) async { + setState(() { + selectedProperty = EntityProperties.values.elementAt(int.parse(property)); + }); + } + + @override + Widget build(BuildContext context) { + return PageOrganism( + pageName: 'Add Action', + child: SingleChildScrollView( + child: Container( + margin: const EdgeInsets.symmetric(horizontal: 10), + child: Column( + children: [ + const SizedBox( + height: 30, + ), + const SizedBox( + height: 70, + ), + const Row( + children: [ + TextAtom( + 'Choose Action', + style: TextStyle(fontSize: 27), + ), + ], + ), + DropdownButton<String>( + dropdownColor: Colors.black, + style: const TextStyle(color: Colors.white), + icon: const Icon(Icons.arrow_drop_down), + hint: TextAtom( + selectedEntity?.cbjEntityName.getOrCrash() ?? 'Choose Entity', + style: const TextStyle(color: Colors.white), + ), + elevation: 16, + underline: Container( + height: 2, + ), + onChanged: (value) => onEntitySelect(value!), + items: + widget.entities.values.map<DropdownMenuItem<String>>((e) { + return DropdownMenuItem<String>( + value: e.getCbjDeviceId, + child: TextAtom(e.cbjEntityName.getOrCrash()!), + ); + }).toList(), + ), + const SizedBox( + height: 40, + ), + DropdownButton<String>( + dropdownColor: Colors.black, + style: const TextStyle(color: Colors.white), + icon: const Icon(Icons.arrow_drop_down), + hint: TextAtom( + selectedProperty?.name ?? 'Select Property', + style: const TextStyle(color: Colors.white), + ), + elevation: 16, + underline: Container( + height: 2, + ), + onChanged: (value) => _onPropertySelected(value!), + items: selectedEntity + ?.getListOfPropertiesToChange() + .map<DropdownMenuItem<String>>((e) { + return DropdownMenuItem<String>( + value: e.index.toString(), + child: TextAtom(e.name), + ); + }).toList() ?? + <DropdownMenuItem<String>>[ + const DropdownMenuItem<String>( + value: 'Choose entity first', + child: TextAtom('Choose entity first'), + ), + ], + ), + const SizedBox( + height: 40, + ), + DropdownButton<String>( + dropdownColor: Colors.black, + style: const TextStyle(color: Colors.white), + icon: const Icon(Icons.arrow_drop_down), + hint: TextAtom( + selectedAction?.name ?? 'Choose Action', + style: const TextStyle(color: Colors.white), + ), + elevation: 16, + underline: Container( + height: 2, + ), + onChanged: (value) => onActionSelected(value!), + items: (selectedProperty != null && + selectedProperty!.getActions.isNotEmpty) + ? selectedProperty!.getActions + .map<DropdownMenuItem<String>>((e) { + return DropdownMenuItem<String>( + value: e.index.toString(), + child: TextAtom(e.name), + ); + }).toList() + : const <DropdownMenuItem<String>>[ + DropdownMenuItem<String>( + value: 'Choose property first', + child: TextAtom('Choose property first'), + ), + ], + ), + const SizedBox( + height: 70, + ), + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + TextButton( + onPressed: () { + SnackBarService().show(context, 'Add action'); + if (selectedEntity == null || + selectedProperty == null || + selectedAction == null) { + return; + } + final EntityActionObject entityActionObject = + EntityActionObject( + entity: selectedEntity!, + property: selectedProperty!, + action: selectedAction!, + ); + // TODO: Add pop + context.router + .pop<EntityActionObject?>(entityActionObject); + }, + child: const TextAtom( + 'Done', + style: TextStyle(fontSize: 20), + ), + ), + ], + ), + ], + ), + ), + ), + ); + } +} + +class EntityActionObject { + EntityActionObject({ + required this.entity, + required this.property, + required this.action, + }); + + final DeviceEntityBase entity; + final EntityProperties property; + final EntityActions action; +} diff --git a/lib/presentation/pages/add_bindings/add_binding_page.dart b/lib/presentation/pages/add_bindings/add_binding_page.dart new file mode 100644 index 000000000..b0a4e67a3 --- /dev/null +++ b/lib/presentation/pages/add_bindings/add_binding_page.dart @@ -0,0 +1,216 @@ +import 'dart:collection'; + +import 'package:adaptive_action_sheet/adaptive_action_sheet.dart'; +import 'package:auto_route/auto_route.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; +import 'package:cybearjinni/domain/connections_service.dart'; +import 'package:cybearjinni/presentation/atoms/atoms.dart'; +import 'package:cybearjinni/presentation/core/routes/app_router.gr.dart'; +import 'package:cybearjinni/presentation/core/snack_bar_service.dart'; +import 'package:cybearjinni/presentation/molecules/molecules.dart'; +import 'package:cybearjinni/presentation/pages/add_action_page.dart'; +import 'package:cybearjinni/presentation/pages/add_bindings/widgets/binding_action_widget.dart'; +import 'package:flutter/material.dart'; +import 'package:font_awesome_flutter/font_awesome_flutter.dart'; +import 'package:hexcolor/hexcolor.dart'; + +/// Page for adding new binding +@RoutePage() +class AddBindingPage extends StatefulWidget { + @override + State<AddBindingPage> createState() => _AddBindingPageState(); +} + +class _AddBindingPageState extends State<AddBindingPage> { + void backButtonFunction(BuildContext context) { + context.router.pop(); + } + + @override + void initState() { + super.initState(); + initialzeEntities(); + } + + HashMap<String, DeviceEntityBase>? entities; + + String bindingName = ''; + + /// List of devices with entities, will be treated as actions + HashSet<EntityActionObject> allDevicesWithNewAction = HashSet(); + Set<MapEntry<String, String>> allEntityActions = {}; + bool showErrorMessages = false; + bool isSubmitting = false; + + Future<void> initialzeEntities() async { + final HashMap<String, DeviceEntityBase> entitiesTemp = + await ConnectionsService.instance.getAllEntities; + + setState(() { + entities = entitiesTemp; + }); + } + + Future<void> _sendBindingToHub() async { + // IBindingCbjRepository.instance + // .addOrUpdateNewBindingInHubFromDevicesPropertyActionList( + // bindingName, + // allDevicesWithNewAction, + // ); + } + + Future<void> _addFullAction(EntityActionObject value) async { + setState(() { + allDevicesWithNewAction.add(value); + }); + } + + @override + Widget build(BuildContext context) { + if (entities == null) { + return const Scaffold( + body: CircularProgressIndicatorAtom(), + ); + } + + return Scaffold( + body: ColoredBox( + color: HexColor('#FBF5F9'), + child: Column( + children: [ + TopBarMolecule( + pageName: 'Add Binding', + rightIconFunction: backButtonFunction, + leftIcon: FontAwesomeIcons.arrowLeft, + leftIconFunction: backButtonFunction, + ), + Container( + margin: const EdgeInsets.symmetric(horizontal: 20), + child: Column( + children: [ + const SizedBox( + height: 30, + ), + TextFormField( + decoration: const InputDecoration( + prefixIcon: FaIcon(FontAwesomeIcons.fileSignature), + labelText: 'Binding Name', + ), + onChanged: (value) { + bindingName = value; + }, + ), + SizedBox( + height: 300, + width: 500, + child: ListView.builder( + itemCount: allDevicesWithNewAction.length, + itemBuilder: (BuildContext context, int index) { + final EntityActionObject currentDevice = + allDevicesWithNewAction.elementAt(index); + + return Container( + margin: const EdgeInsets.symmetric(vertical: 1), + child: BindingActionWidget( + entity: currentDevice.entity, + propertyToChange: currentDevice.property, + actionToChange: currentDevice.action, + ), + ); + }, + ), + ), + const SizedBox(height: 30), + Container( + decoration: BoxDecoration( + color: Colors.lightBlueAccent.withOpacity(0.5), + // Red border with the width is equal to 5 + border: Border.all(), + ), + child: TextButton( + onPressed: () { + showAdaptiveActionSheet( + context: context, + actions: <BottomSheetAction>[ + BottomSheetAction( + title: const TextAtom( + 'Add device action', + style: TextStyle( + color: Colors.blueGrey, + fontSize: 23, + ), + ), + onPressed: (_) async { + final EntityActionObject? actionList = + await context.router + .push<EntityActionObject?>( + AddActionRoute(entities: entities!), + ); + if (actionList != null) { + _addFullAction(actionList); + } + }, + ), + BottomSheetAction( + title: TextAtom( + 'Add service action', + style: TextStyle( + color: Colors.green.shade600, + fontSize: 23, + ), + ), + onPressed: (_) { + SnackBarService().show( + context, + 'Adding service action will be added in the future', + ); + }, + ), + BottomSheetAction( + title: const TextAtom( + 'Add time based action', + style: TextStyle( + color: Colors.blue, + fontSize: 23, + ), + ), + onPressed: (_) { + SnackBarService().show( + context, + 'Adding time based action will be added in the future', + ); + }, + ), + ], + ); + }, + child: const TextAtom('+ Add action'), + ), + ), + const SizedBox(height: 10), + Container( + decoration: BoxDecoration( + color: Colors.lightBlueAccent.withOpacity(0.5), + // Red border with the width is equal to 5 + border: Border.all(), + ), + child: TextButton( + onPressed: () { + SnackBarService().show( + context, + 'Adding Binding', + ); + _sendBindingToHub(); + }, + child: const TextAtom('Add Binding'), + ), + ), + ], + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/presentation/pages/add_new_automation_process/add_bindings/widgets/binding_action_widget.dart b/lib/presentation/pages/add_bindings/widgets/binding_action_widget.dart similarity index 72% rename from lib/presentation/pages/add_new_automation_process/add_bindings/widgets/binding_action_widget.dart rename to lib/presentation/pages/add_bindings/widgets/binding_action_widget.dart index 3e0ee4bb0..eb073a415 100644 --- a/lib/presentation/pages/add_new_automation_process/add_bindings/widgets/binding_action_widget.dart +++ b/lib/presentation/pages/add_bindings/widgets/binding_action_widget.dart @@ -1,5 +1,5 @@ import 'package:auto_size_text/auto_size_text.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/abstract_entity/device_entity_base.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; @@ -8,19 +8,19 @@ import 'package:font_awesome_flutter/font_awesome_flutter.dart'; class BindingActionWidget extends StatelessWidget { /// Get all and store all info about the action const BindingActionWidget({ - required this.deviceEntityBase, + required this.entity, required this.propertyToChange, required this.actionToChange, }); /// Cbj unique id of a device - final DeviceEntityBase deviceEntityBase; + final DeviceEntityBase entity; /// The action for the device - final String propertyToChange; + final EntityProperties propertyToChange; /// The action for the device - final String actionToChange; + final EntityActions actionToChange; @override Widget build(BuildContext context) { @@ -32,11 +32,11 @@ class BindingActionWidget extends StatelessWidget { color: Colors.yellow, ), title: AutoSizeText( - '${deviceEntityBase.cbjEntityName.getOrCrash()!} - $propertyToChange', + '${entity.cbjEntityName.getOrCrash()!} - ${propertyToChange.name}', maxLines: 2, ), trailing: AutoSizeText( - actionToChange, + actionToChange.name, style: const TextStyle(color: Colors.black), ), ), diff --git a/lib/presentation/pages/add_new_room/widgets/add_new_room_form.dart b/lib/presentation/pages/add_new_area_page.dart similarity index 57% rename from lib/presentation/pages/add_new_room/widgets/add_new_room_form.dart rename to lib/presentation/pages/add_new_area_page.dart index 295caa264..8b6331dc1 100644 --- a/lib/presentation/pages/add_new_room/widgets/add_new_room_form.dart +++ b/lib/presentation/pages/add_new_area_page.dart @@ -1,93 +1,91 @@ import 'package:auto_route/auto_route.dart'; -import 'package:cbj_integrations_controller/domain/room/i_room_repository.dart'; -import 'package:cbj_integrations_controller/domain/room/room_entity.dart'; -import 'package:cbj_integrations_controller/domain/room/room_failures.dart'; -import 'package:cbj_integrations_controller/domain/room/value_objects_room.dart'; -import 'package:cbj_integrations_controller/infrastructure/gen/cbj_hub_server/protoc_as_dart/cbj_hub_server.pbgrpc.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/abstract_entity/device_entity_base.dart'; -import 'package:cybearjinni/domain/device/i_device_repository.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; +import 'package:cybearjinni/domain/connections_service.dart'; import 'package:cybearjinni/presentation/atoms/atoms.dart'; import 'package:cybearjinni/presentation/core/snack_bar_service.dart'; -import 'package:dartz/dartz.dart' as dartz; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:multi_select_flutter/multi_select_flutter.dart'; -class AddNewRoomForm extends StatefulWidget { +@RoutePage() +class AddNewAreaPage extends StatelessWidget { @override - State<AddNewRoomForm> createState() => _AddNewRoomFormState(); + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + backgroundColor: Colors.purple, + title: const TextAtom('Add New Area'), + ), + body: AddNewAreaForm(), + ); + } } -class _AddNewRoomFormState extends State<AddNewRoomForm> { - Set<RoomEntity?> _allRooms = {}; - Set<DeviceEntityBase?> _allDevices = {}; - RoomUniqueId roomUniqueId = RoomUniqueId(); - RoomDefaultName cbjEntityName = RoomDefaultName(''); - RoomBackground background = RoomBackground( +class AddNewAreaForm extends StatefulWidget { + @override + State<AddNewAreaForm> createState() => _AddNewAreaFormState(); +} + +class _AddNewAreaFormState extends State<AddNewAreaForm> { + // final Set<DeviceEntityBase?> _allDevices = {}; + AreaUniqueId areaUniqueId = AreaUniqueId(); + AreaDefaultName cbjEntityName = AreaDefaultName(''); + AreaBackground background = AreaBackground( 'https://live.staticflickr.com/5220/5486044345_f67abff3e9_h.jpg', ); - RoomTypes roomTypes = RoomTypes(const {}); - RoomDevicesId roomDevicesId = RoomDevicesId(const {}); - RoomScenesId roomScenesId = RoomScenesId(const {}); - RoomRoutinesId roomRoutinesId = RoomRoutinesId(const {}); - RoomBindingsId roomBindingsId = RoomBindingsId(const {}); - RoomMostUsedBy roomMostUsedBy = RoomMostUsedBy(const {}); - RoomPermissions roomPermissions = RoomPermissions(const {}); + AreaTypes areaTypes = AreaTypes(const {}); + AreaEntitiesId areaDevicesId = AreaEntitiesId(const {}); + AreaScenesId areaScenesId = AreaScenesId(const {}); + AreaRoutinesId areaRoutinesId = AreaRoutinesId(const {}); + AreaBindingsId areaBindingsId = AreaBindingsId(const {}); + AreaMostUsedBy areaMostUsedBy = AreaMostUsedBy(const {}); + AreaPermissions areaPermissions = AreaPermissions(const {}); bool showErrorMessages = false; bool isSubmitting = false; - dartz.Option authFailureOrSuccessOption = dartz.none(); - - @override - void initState() { - super.initState(); - _initialized(); - } - Future<void> _initialized() async { - IRoomRepository.instance.getAllRooms().fold((l) => null, (r) { - _allRooms = Set<RoomEntity>.from(r.iter); - }); + // Future<void> _initialized() async { + // IAreaRepository.instance.getAllAreas().fold((l) => null, (r) { + // _allAreas = Set<AreaEntity>.from(r.iter); + // }); - (await IDeviceRepository.instance.getAllEntites()).fold((l) => null, (r) { - _allDevices = Set<DeviceEntityBase>.from(r.iter); - }); - _allRooms.removeWhere((element) => element == null); - _allDevices.removeWhere((element) => element == null); - setState(() { - _allRooms = _allRooms as Set<RoomEntity>; - _allDevices = _allDevices as Set<DeviceEntityBase>; - }); - } + // (await IDeviceRepository.instance.getAllEntites()).fold((l) => null, (r) { + // _allDevices = Set<DeviceEntityBase>.from(r.iter); + // }); + // _allAreas.removeWhere((element) => element == null); + // _allDevices.removeWhere((element) => element == null); + // setState(() { + // _allAreas = _allAreas as Set<AreaEntity>; + // _allDevices = _allDevices as Set<DeviceEntityBase>; + // }); + // } - Future<void> _createRoom() async { - final RoomEntity roomEntity = RoomEntity( - uniqueId: RoomUniqueId.fromUniqueString(roomUniqueId.getOrCrash()), - cbjEntityName: RoomDefaultName(cbjEntityName.getOrCrash()), - background: RoomBackground(background.getOrCrash()), - roomTypes: RoomTypes(roomTypes.getOrCrash()), - roomDevicesId: RoomDevicesId(roomDevicesId.getOrCrash()), - roomScenesId: RoomScenesId(roomScenesId.getOrCrash()), - roomRoutinesId: RoomRoutinesId(roomRoutinesId.getOrCrash()), - roomBindingsId: RoomBindingsId(roomBindingsId.getOrCrash()), - roomMostUsedBy: RoomMostUsedBy(roomMostUsedBy.getOrCrash()), - roomPermissions: RoomPermissions(roomPermissions.getOrCrash()), + Future<void> _createArea() async { + final AreaEntity areaEntity = AreaEntity( + uniqueId: AreaUniqueId.fromUniqueString(areaUniqueId.getOrCrash()), + cbjEntityName: AreaDefaultName(cbjEntityName.getOrCrash()), + background: AreaBackground(background.getOrCrash()), + areaTypes: AreaTypes(areaTypes.getOrCrash()), + entitiesId: AreaEntitiesId(areaDevicesId.getOrCrash()), + areaScenesId: AreaScenesId(areaScenesId.getOrCrash()), + areaRoutinesId: AreaRoutinesId(areaRoutinesId.getOrCrash()), + areaBindingsId: AreaBindingsId(areaBindingsId.getOrCrash()), + areaMostUsedBy: AreaMostUsedBy(areaMostUsedBy.getOrCrash()), + areaPermissions: AreaPermissions(areaPermissions.getOrCrash()), ); - IRoomRepository.instance.create(roomEntity); + ConnectionsService.instance.setNewArea(areaEntity); } Future<void> _defaultNameChanged(String value) async { setState(() { - cbjEntityName = RoomDefaultName(value); - authFailureOrSuccessOption = dartz.none(); + cbjEntityName = AreaDefaultName(value); }); } - Future<void> _roomTypesChanged(Set<String> value) async { + Future<void> _areaTypesChanged(Set<String> value) async { setState(() { - roomTypes = RoomTypes(value); - authFailureOrSuccessOption = dartz.none(); + areaTypes = AreaTypes(value); }); } @@ -118,7 +116,7 @@ class _AddNewRoomFormState extends State<AddNewRoomForm> { value, ), validator: (_) => cbjEntityName.value.fold( - (RoomFailure f) => 'Validation error', + (AreaFailure f) => 'Validation error', (r) => null, ), ), @@ -156,7 +154,7 @@ class _AddNewRoomFormState extends State<AddNewRoomForm> { }).toList(), listType: MultiSelectListType.CHIP, onConfirm: (List<int> values) { - _roomTypesChanged( + _areaTypesChanged( values.map((e) => e.toString()).toSet(), ); }, @@ -172,12 +170,16 @@ class _AddNewRoomFormState extends State<AddNewRoomForm> { children: [ Expanded( child: TextButton( - onPressed: () { - _createRoom(); + onPressed: () async { SnackBarService().show( context, 'Adding area', ); + await _createArea(); + if (!mounted) { + return; + } + context.router.pop(); }, child: const TextAtom('ADD'), diff --git a/lib/presentation/pages/add_new_automation_process/add_action/add_action_page.dart b/lib/presentation/pages/add_new_automation_process/add_action/add_action_page.dart deleted file mode 100644 index 328f57f67..000000000 --- a/lib/presentation/pages/add_new_automation_process/add_action/add_action_page.dart +++ /dev/null @@ -1,27 +0,0 @@ -import 'package:auto_route/auto_route.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/abstract_entity/device_entity_base.dart'; -import 'package:cybearjinni/presentation/molecules/molecules.dart'; -import 'package:cybearjinni/presentation/pages/add_new_automation_process/add_action/widgets/action_choose_information.dart'; -import 'package:flutter/material.dart'; -import 'package:font_awesome_flutter/font_awesome_flutter.dart'; - -@RoutePage<List<MapEntry<DeviceEntityBase, MapEntry<String?, String?>>>>() -class AddActionPage extends StatelessWidget { - void backButtonFunction(BuildContext context) {} - - @override - Widget build(BuildContext context) { - return Scaffold( - body: Column( - children: [ - TopBarMolecule( - pageName: 'Add Action', - leftIcon: FontAwesomeIcons.arrowLeft, - leftIconFunction: (_) => context.router.pop(), - ), - ActionChooseInformation(), - ], - ), - ); - } -} diff --git a/lib/presentation/pages/add_new_automation_process/add_action/widgets/action_choose_information.dart b/lib/presentation/pages/add_new_automation_process/add_action/widgets/action_choose_information.dart deleted file mode 100644 index 0768f3c60..000000000 --- a/lib/presentation/pages/add_new_automation_process/add_action/widgets/action_choose_information.dart +++ /dev/null @@ -1,263 +0,0 @@ -import 'package:auto_route/auto_route.dart'; -import 'package:cbj_integrations_controller/domain/room/i_room_repository.dart'; -import 'package:cbj_integrations_controller/domain/room/room_entity.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/abstract_entity/device_entity_base.dart'; -import 'package:cybearjinni/domain/device/i_device_repository.dart'; -import 'package:cybearjinni/presentation/atoms/atoms.dart'; -import 'package:cybearjinni/presentation/core/snack_bar_service.dart'; -import 'package:flutter/material.dart'; -import 'package:hexcolor/hexcolor.dart'; - -class ActionChooseInformation extends StatefulWidget { - @override - State<ActionChooseInformation> createState() => - _ActionChooseInformationState(); -} - -class _ActionChooseInformationState extends State<ActionChooseInformation> { - List<RoomEntity> _allRooms = []; - List<DeviceEntityBase> _allEntities = []; - - String actionsName = ''; - String propertyName = ''; - - /// Will contain (in that order) device to change his property to change and the new value of this property - List<MapEntry<DeviceEntityBase, MapEntry<String?, String?>>> - allEntitiesWithNewAction = []; - List<MapEntry<String, String>> allEntityActions = []; - bool isSubmitting = false; - - @override - void initState() { - super.initState(); - _initialized(); - } - - Future<void> _initialized() async { - List<RoomEntity?> allRoomsTemp = []; - IRoomRepository.instance.getAllRooms().fold((l) => null, (r) { - allRoomsTemp = List<RoomEntity?>.from(r.iter); - }); - allRoomsTemp.removeWhere((element) => element == null); - - List<DeviceEntityBase?> allEntitiesTemp = []; - (await IDeviceRepository.instance.getAllEntites()).fold((l) => null, (r) { - allEntitiesTemp = List<DeviceEntityBase>.from(r.iter); - }); - allEntitiesTemp.removeWhere((element) => element == null); - setState(() { - _allRooms = allRoomsTemp.map((e) => e!).toList(); - _allEntities = allEntitiesTemp.map((e) => e!).toList(); - }); - } - - Future<void> _changeActionEntities(String actionForProperty) async { - for (final DeviceEntityBase? device in _allEntities) { - if (device != null && actionForProperty == device.uniqueId.getOrCrash()) { - setState(() { - allEntitiesWithNewAction = [ - MapEntry(device, const MapEntry(null, null)), - ]; - actionsName = ''; - }); - } - } - } - - Future<void> _actionsNameChange(String value) async { - if (allEntitiesWithNewAction.isNotEmpty) { - final List<MapEntry<DeviceEntityBase, MapEntry<String?, String?>>> - tempAllEntitiesWithNewActionList = - List.from(allEntitiesWithNewAction); - - final MapEntry<String?, String> propertyWithAction = MapEntry( - tempAllEntitiesWithNewActionList[0].value.key, - actionsName, - ); - - tempAllEntitiesWithNewActionList[0] = - MapEntry(tempAllEntitiesWithNewActionList[0].key, propertyWithAction); - - setState(() { - actionsName = value; - allEntitiesWithNewAction = tempAllEntitiesWithNewActionList; - }); - } - } - - Future<void> _changePropertyForEntities(String propertyOfDevice) async { - if (allEntitiesWithNewAction.isNotEmpty) { - final List<MapEntry<DeviceEntityBase, MapEntry<String?, String?>>> - tempAllEntitiesWithNewActionList = - List.from(allEntitiesWithNewAction); - - final MapEntry<String?, String?> propertyWithAction = MapEntry( - propertyOfDevice, - null, - ); - - tempAllEntitiesWithNewActionList[0] = - MapEntry(tempAllEntitiesWithNewActionList[0].key, propertyWithAction); - - setState(() { - propertyName = propertyOfDevice; - allEntitiesWithNewAction = tempAllEntitiesWithNewActionList; - }); - } - } - - @override - Widget build(BuildContext context) { - if (_allEntities.isEmpty || _allRooms.isEmpty) { - return const Expanded( - child: Center( - child: TextAtom( - 'At lest one area and device needed for this feature', - ), - ), - ); - } - - return SingleChildScrollView( - child: Container( - color: HexColor('#3A3A3A'), - margin: const EdgeInsets.symmetric(horizontal: 10), - child: Column( - children: [ - const SizedBox( - height: 30, - ), - const SizedBox( - height: 70, - ), - const Row( - children: [ - TextAtom( - 'Choose Action', - style: TextStyle(fontSize: 27), - ), - ], - ), - DropdownButton<String>( - dropdownColor: Colors.black, - style: const TextStyle(color: Colors.white), - icon: const Icon(Icons.arrow_drop_down), - hint: TextAtom( - allEntitiesWithNewAction.isNotEmpty - ? allEntitiesWithNewAction[0] - .key - .cbjEntityName - .getOrCrash()! - : 'Choose Device', - style: const TextStyle(color: Colors.white), - ), - elevation: 16, - underline: Container( - height: 2, - ), - onChanged: (value) => _changeActionEntities(value!), - items: _allEntities.map<DropdownMenuItem<String>>((e) { - return DropdownMenuItem<String>( - value: e.uniqueId.getOrCrash(), - child: TextAtom(e.cbjEntityName.getOrCrash()!), - ); - }).toList(), - ), - const SizedBox( - height: 40, - ), - DropdownButton<String>( - dropdownColor: Colors.black, - style: const TextStyle(color: Colors.white), - icon: const Icon(Icons.arrow_drop_down), - hint: TextAtom( - propertyName != '' ? propertyName : 'Property to change', - style: const TextStyle(color: Colors.white), - ), - elevation: 16, - underline: Container( - height: 2, - ), - onChanged: (value) => _changePropertyForEntities(value!), - items: allEntitiesWithNewAction.isNotEmpty - ? allEntitiesWithNewAction[0] - .key - .getListOfPropertiesToChange() - .map<DropdownMenuItem<String>>((e) { - return DropdownMenuItem<String>( - value: e.name, - child: TextAtom(e.name), - ); - }).toList() - : <DropdownMenuItem<String>>[ - const DropdownMenuItem<String>( - value: 'Choose entity first', - child: TextAtom('Choose entity first'), - ), - ], - ), - const SizedBox( - height: 40, - ), - DropdownButton<String>( - dropdownColor: Colors.black, - style: const TextStyle(color: Colors.white), - icon: const Icon(Icons.arrow_drop_down), - hint: TextAtom( - actionsName != '' ? actionsName : 'Choose Action', - style: const TextStyle(color: Colors.white), - ), - elevation: 16, - underline: Container( - height: 2, - ), - onChanged: (value) => _actionsNameChange(value!), - items: (allEntitiesWithNewAction.isNotEmpty && - allEntitiesWithNewAction[0].value.key != null && - allEntitiesWithNewAction[0].value.key!.isNotEmpty) - ? allEntitiesWithNewAction[0] - .key - .getAllValidActions() - .map<DropdownMenuItem<String>>((e) { - return DropdownMenuItem<String>( - value: e, - child: TextAtom(e), - ); - }).toList() - : <DropdownMenuItem<String>>[ - const DropdownMenuItem<String>( - value: 'Choose property first', - child: TextAtom('Choose property first'), - ), - ], - ), - const SizedBox( - height: 70, - ), - Row( - mainAxisAlignment: MainAxisAlignment.end, - children: [ - TextButton( - onPressed: () { - SnackBarService().show(context, 'Add action'); - - context.router.pop< - List< - MapEntry<DeviceEntityBase, - MapEntry<String?, String?>>>>( - allEntitiesWithNewAction, - ); - }, - child: const TextAtom( - 'Done', - style: TextStyle(fontSize: 20), - ), - ), - ], - ), - ], - ), - ), - ); - } -} diff --git a/lib/presentation/pages/add_new_automation_process/add_bindings/add_binding_page.dart b/lib/presentation/pages/add_new_automation_process/add_bindings/add_binding_page.dart deleted file mode 100644 index 5663fb0e9..000000000 --- a/lib/presentation/pages/add_new_automation_process/add_bindings/add_binding_page.dart +++ /dev/null @@ -1,34 +0,0 @@ -import 'package:auto_route/auto_route.dart'; -import 'package:cybearjinni/presentation/molecules/molecules.dart'; -import 'package:cybearjinni/presentation/pages/add_new_automation_process/add_bindings/widgets/add_binding_widget.dart'; -import 'package:flutter/material.dart'; -import 'package:font_awesome_flutter/font_awesome_flutter.dart'; -import 'package:hexcolor/hexcolor.dart'; - -/// Page for adding new binding -@RoutePage() -class AddBindingPage extends StatelessWidget { - void backButtonFunction(BuildContext context) { - context.router.pop(); - } - - @override - Widget build(BuildContext context) { - return Scaffold( - body: ColoredBox( - color: HexColor('#FBF5F9'), - child: Column( - children: [ - TopBarMolecule( - pageName: 'Add Binding', - rightIconFunction: backButtonFunction, - leftIcon: FontAwesomeIcons.arrowLeft, - leftIconFunction: backButtonFunction, - ), - AddBindingWidget(), - ], - ), - ), - ); - } -} diff --git a/lib/presentation/pages/add_new_automation_process/add_bindings/widgets/add_binding_widget.dart b/lib/presentation/pages/add_new_automation_process/add_bindings/widgets/add_binding_widget.dart deleted file mode 100644 index 879733d2d..000000000 --- a/lib/presentation/pages/add_new_automation_process/add_bindings/widgets/add_binding_widget.dart +++ /dev/null @@ -1,208 +0,0 @@ -import 'package:adaptive_action_sheet/adaptive_action_sheet.dart'; -import 'package:auto_route/auto_route.dart'; -import 'package:cbj_integrations_controller/domain/binding/i_binding_cbj_repository.dart'; -import 'package:cbj_integrations_controller/domain/vendors/login_abstract/core_login_failures.dart'; -import 'package:cbj_integrations_controller/infrastructure/gen/cbj_hub_server/protoc_as_dart/cbj_hub_server.pbgrpc.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/abstract_entity/device_entity_base.dart'; -import 'package:cybearjinni/domain/device/i_device_repository.dart'; -import 'package:cybearjinni/presentation/atoms/atoms.dart'; -import 'package:cybearjinni/presentation/core/routes/app_router.gr.dart'; -import 'package:cybearjinni/presentation/core/snack_bar_service.dart'; -import 'package:cybearjinni/presentation/pages/add_new_automation_process/add_bindings/widgets/binding_action_widget.dart'; -import 'package:dartz/dartz.dart' as dartz; -import 'package:flutter/material.dart'; -import 'package:font_awesome_flutter/font_awesome_flutter.dart'; - -class AddBindingWidget extends StatefulWidget { - @override - State<AddBindingWidget> createState() => _AddBindingWidgetState(); -} - -class _AddBindingWidgetState extends State<AddBindingWidget> { - Set<DeviceEntityBase> _allDevices = {}; - - String bindingName = ''; - - /// List of devices with entities, will be treated as actions - Set<MapEntry<DeviceEntityBase, MapEntry<String?, String?>>> - allDevicesWithNewAction = {}; - Set<MapEntry<String, String>> allEntityActions = {}; - bool showErrorMessages = false; - bool isSubmitting = false; - dartz.Option<dartz.Either<CoreLoginFailure, dartz.Unit>> - authFailureOrSuccessOption = dartz.none(); - - @override - void initState() { - super.initState(); - _initialized(); - } - - Future<void> _initialized() async { - Set<DeviceEntityBase?> value = {}; - (await IDeviceRepository.instance.getAllEntites()).fold((l) => null, (r) { - value = Set<DeviceEntityBase?>.from(r.iter); - }); - value.removeWhere((element) => element == null); - - setState(() { - _allDevices = value.map((e) => e!).toSet(); - }); - } - - Future<void> _sendBindingToHub() async { - IBindingCbjRepository.instance - .addOrUpdateNewBindingInHubFromDevicesPropertyActionList( - bindingName, - allDevicesWithNewAction, - ); - } - - Future<void> _addDevicesWithNewActions( - Set<MapEntry<DeviceEntityBase, MapEntry<String?, String?>>> value, - ) async { - setState(() { - allDevicesWithNewAction.addAll(value); - }); - } - - @override - Widget build(BuildContext context) { - if (_allDevices.isEmpty) { - return const CircularProgressIndicatorAtom(); - } - - return Container( - margin: const EdgeInsets.symmetric(horizontal: 20), - child: Column( - children: [ - const SizedBox( - height: 30, - ), - TextFormField( - decoration: const InputDecoration( - prefixIcon: FaIcon(FontAwesomeIcons.fileSignature), - labelText: 'Binding Name', - ), - onChanged: (value) { - bindingName = value; - }, - ), - SizedBox( - height: 300, - width: 500, - child: ListView.builder( - itemCount: allDevicesWithNewAction.length, - itemBuilder: (BuildContext context, int index) { - final MapEntry<DeviceEntityBase, MapEntry<String?, String?>> - currentDevice = allDevicesWithNewAction.elementAt(index); - - return Container( - margin: const EdgeInsets.symmetric(vertical: 1), - child: BindingActionWidget( - deviceEntityBase: currentDevice.key, - propertyToChange: - currentDevice.value.key ?? 'Missing property', - actionToChange: currentDevice.value.value ?? - EntityActions.actionNotSupported.toString(), - ), - ); - }, - ), - ), - const SizedBox(height: 30), - Container( - decoration: BoxDecoration( - color: Colors.lightBlueAccent.withOpacity(0.5), - // Red border with the width is equal to 5 - border: Border.all(), - ), - child: TextButton( - onPressed: () { - showAdaptiveActionSheet( - context: context, - actions: <BottomSheetAction>[ - BottomSheetAction( - title: const TextAtom( - 'Add device action', - style: TextStyle( - color: Colors.blueGrey, - fontSize: 23, - ), - ), - onPressed: (_) async { - final Set< - MapEntry<DeviceEntityBase, - MapEntry<String?, String?>>>? actionList = - await context.router.push< - Set< - MapEntry<DeviceEntityBase, - MapEntry<String?, String?>>>>( - const AddActionRoute(), - ); - if (actionList != null) { - _addDevicesWithNewActions( - actionList, - ); - } - }, - ), - BottomSheetAction( - title: TextAtom( - 'Add service action', - style: TextStyle( - color: Colors.green.shade600, - fontSize: 23, - ), - ), - onPressed: (_) { - SnackBarService().show( - context, - 'Adding service action will be added in the future', - ); - }, - ), - BottomSheetAction( - title: const TextAtom( - 'Add time based action', - style: TextStyle( - color: Colors.blue, - fontSize: 23, - ), - ), - onPressed: (_) { - SnackBarService().show( - context, - 'Adding time based action will be added in the future', - ); - }, - ), - ], - ); - }, - child: const TextAtom('+ Add action'), - ), - ), - const SizedBox(height: 10), - Container( - decoration: BoxDecoration( - color: Colors.lightBlueAccent.withOpacity(0.5), - // Red border with the width is equal to 5 - border: Border.all(), - ), - child: TextButton( - onPressed: () { - SnackBarService().show( - context, - 'Adding Binding', - ); - _sendBindingToHub(); - }, - child: const TextAtom('Add Binding'), - ), - ), - ], - ), - ); - } -} diff --git a/lib/presentation/pages/add_new_automation_process/add_routine/add_routine_page.dart b/lib/presentation/pages/add_new_automation_process/add_routine/add_routine_page.dart deleted file mode 100644 index fa8c0b869..000000000 --- a/lib/presentation/pages/add_new_automation_process/add_routine/add_routine_page.dart +++ /dev/null @@ -1,45 +0,0 @@ -import 'package:auto_route/auto_route.dart'; -import 'package:cbj_integrations_controller/domain/routine/value_objects_routine_cbj.dart'; -import 'package:cybearjinni/presentation/molecules/molecules.dart'; -import 'package:cybearjinni/presentation/pages/add_new_automation_process/add_routine/widgets/add_routine_widget.dart'; -import 'package:flutter/material.dart'; -import 'package:font_awesome_flutter/font_awesome_flutter.dart'; -import 'package:hexcolor/hexcolor.dart'; - -/// Page for adding new routine -@RoutePage() -class AddRoutinePage extends StatelessWidget { - const AddRoutinePage({ - required this.daysToRepeat, - required this.hourToRepeat, - required this.minutesToRepeat, - }); - - final RoutineCbjRepeatDateDays daysToRepeat; - final RoutineCbjRepeatDateHour hourToRepeat; - final RoutineCbjRepeatDateMinute minutesToRepeat; - - void backButtonFunction(BuildContext context) { - context.router.pop(); - } - - @override - Widget build(BuildContext context) { - return Scaffold( - body: ColoredBox( - color: HexColor('#FBF5F9'), - child: Column( - children: [ - TopBarMolecule( - pageName: 'Add Routine', - rightIconFunction: backButtonFunction, - leftIcon: FontAwesomeIcons.arrowLeft, - leftIconFunction: backButtonFunction, - ), - AddRoutineWidget(), - ], - ), - ), - ); - } -} diff --git a/lib/presentation/pages/add_new_automation_process/add_routine/widgets/add_routine_widget.dart b/lib/presentation/pages/add_new_automation_process/add_routine/widgets/add_routine_widget.dart deleted file mode 100644 index a599d488d..000000000 --- a/lib/presentation/pages/add_new_automation_process/add_routine/widgets/add_routine_widget.dart +++ /dev/null @@ -1,223 +0,0 @@ -import 'package:adaptive_action_sheet/adaptive_action_sheet.dart'; -import 'package:auto_route/auto_route.dart'; -import 'package:cbj_integrations_controller/domain/routine/i_routine_cbj_repository.dart'; -import 'package:cbj_integrations_controller/domain/routine/value_objects_routine_cbj.dart'; -import 'package:cbj_integrations_controller/domain/vendors/login_abstract/core_login_failures.dart'; -import 'package:cbj_integrations_controller/infrastructure/gen/cbj_hub_server/protoc_as_dart/cbj_hub_server.pbgrpc.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/abstract_entity/device_entity_base.dart'; -import 'package:cybearjinni/domain/device/i_device_repository.dart'; -import 'package:cybearjinni/presentation/atoms/atoms.dart'; -import 'package:cybearjinni/presentation/core/routes/app_router.gr.dart'; -import 'package:cybearjinni/presentation/core/snack_bar_service.dart'; -import 'package:cybearjinni/presentation/pages/add_new_automation_process/add_routine/widgets/routine_action_widget.dart'; -import 'package:dartz/dartz.dart' as dartz; -import 'package:flutter/material.dart'; -import 'package:font_awesome_flutter/font_awesome_flutter.dart'; - -class AddRoutineWidget extends StatefulWidget { - @override - State<AddRoutineWidget> createState() => _AddRoutineWidgetState(); -} - -class _AddRoutineWidgetState extends State<AddRoutineWidget> { - Set<DeviceEntityBase> _allDevices = {}; - - String? routineName; - - RoutineCbjRepeatDateDays? daysToRepeat; - RoutineCbjRepeatDateHour? hourToRepeat; - RoutineCbjRepeatDateMinute? minutesToRepeat; - - /// List of devices with entities, will be treated as actions - Set<MapEntry<DeviceEntityBase, MapEntry<String?, String?>>> - allDevicesWithNewAction = {}; - Set<MapEntry<String, String>> allEntityActions = {}; - bool showErrorMessages = false; - bool isSubmitting = false; - dartz.Option<dartz.Either<CoreLoginFailure, dartz.Unit>> - authFailureOrSuccessOption = dartz.none(); - - @override - @override - void initState() { - super.initState(); - _initialized(); - } - - Future<void> _initialized() async { - Set<DeviceEntityBase?> temp = {}; - (await IDeviceRepository.instance.getAllEntites()).fold((l) => null, (r) { - temp = Set<DeviceEntityBase?>.from(r.iter); - }); - temp.removeWhere((element) => element == null); - - setState(() { - _allDevices = temp.map((e) => e!).toSet(); - }); - } - - Future<void> _sendRoutineToHub() async { - if (daysToRepeat == null || - hourToRepeat == null || - minutesToRepeat == null || - routineName == null) { - return; - } - IRoutineCbjRepository.instance - .addOrUpdateNewRoutineInHubFromDevicesPropertyActionList( - routineName!, - allDevicesWithNewAction, - daysToRepeat!, - hourToRepeat!, - minutesToRepeat!, - ); - } - - Future<void> _routineNameChange(String value) async { - routineName = value; - } - - Future<void> _addDevicesWithNewActions( - Iterable<MapEntry<DeviceEntityBase, MapEntry<String?, String?>>> value, - ) async { - setState(() { - allDevicesWithNewAction.addAll(value); - }); - } - - @override - Widget build(BuildContext context) { - if (_allDevices.isNotEmpty) { - return const CircularProgressIndicatorAtom(); - } - - return Container( - margin: const EdgeInsets.symmetric(horizontal: 20), - child: Column( - children: [ - const SizedBox( - height: 30, - ), - TextFormField( - decoration: const InputDecoration( - prefixIcon: FaIcon(FontAwesomeIcons.fileSignature), - labelText: 'Routine Name', - ), - onChanged: _routineNameChange, - ), - SizedBox( - height: 300, - width: 500, - child: ListView.builder( - itemCount: allDevicesWithNewAction.length, - itemBuilder: (BuildContext context, int index) { - final MapEntry<DeviceEntityBase, MapEntry<String?, String?>> - currentDevice = allDevicesWithNewAction.elementAt(index); - - return Container( - margin: const EdgeInsets.symmetric(vertical: 1), - child: RoutineActionWidget( - deviceEntityBase: currentDevice.key, - propertyToChange: - currentDevice.value.key ?? 'Missing property', - actionToChange: currentDevice.value.value ?? - EntityActions.actionNotSupported.toString(), - ), - ); - }, - ), - ), - const SizedBox(height: 30), - Container( - decoration: BoxDecoration( - color: Colors.lightBlueAccent.withOpacity(0.5), - // Red border with the width is equal to 5 - border: Border.all(), - ), - child: TextButton( - onPressed: () { - showAdaptiveActionSheet( - context: context, - actions: <BottomSheetAction>[ - BottomSheetAction( - title: const TextAtom( - 'Add device action', - style: TextStyle( - color: Colors.blueGrey, - fontSize: 23, - ), - ), - onPressed: (_) async { - final Set< - MapEntry<DeviceEntityBase, - MapEntry<String?, String?>>>? actionList = - await context.router.push< - Set< - MapEntry<DeviceEntityBase, - MapEntry<String?, String?>>>>( - const AddActionRoute(), - ); - if (actionList != null) { - _addDevicesWithNewActions(actionList); - } - }, - ), - BottomSheetAction( - title: TextAtom( - 'Add service action', - style: TextStyle( - color: Colors.green.shade600, - fontSize: 23, - ), - ), - onPressed: (_) { - SnackBarService().show( - context, - 'Adding service action will be added in the future', - ); - }, - ), - BottomSheetAction( - title: const TextAtom( - 'Add time based action', - style: TextStyle( - color: Colors.blue, - fontSize: 23, - ), - ), - onPressed: (_) { - SnackBarService().show( - context, - 'Adding time based action will be added in the future', - ); - }, - ), - ], - ); - }, - child: const TextAtom('+ Add action'), - ), - ), - const SizedBox(height: 10), - Container( - decoration: BoxDecoration( - color: Colors.lightBlueAccent.withOpacity(0.5), - // Red border with the width is equal to 5 - border: Border.all(), - ), - child: TextButton( - onPressed: () { - SnackBarService().show( - context, - 'Adding Routine', - ); - _sendRoutineToHub(); - }, - child: const TextAtom('Add Routine'), - ), - ), - ], - ), - ); - } -} diff --git a/lib/presentation/pages/add_new_automation_process/add_scene/add_scene_page.dart b/lib/presentation/pages/add_new_automation_process/add_scene/add_scene_page.dart deleted file mode 100644 index c3f22a76a..000000000 --- a/lib/presentation/pages/add_new_automation_process/add_scene/add_scene_page.dart +++ /dev/null @@ -1,34 +0,0 @@ -import 'package:auto_route/auto_route.dart'; -import 'package:cybearjinni/presentation/molecules/molecules.dart'; -import 'package:cybearjinni/presentation/pages/add_new_automation_process/add_scene/widgets/add_scene_widget.dart'; -import 'package:flutter/material.dart'; -import 'package:font_awesome_flutter/font_awesome_flutter.dart'; -import 'package:hexcolor/hexcolor.dart'; - -/// Page for adding new scene -@RoutePage() -class AddScenePage extends StatelessWidget { - void backButtonFunction(BuildContext context) { - context.router.pop(); - } - - @override - Widget build(BuildContext context) { - return Scaffold( - body: ColoredBox( - color: HexColor('#FBF5F9'), - child: Column( - children: [ - TopBarMolecule( - pageName: 'Add Scene', - rightIconFunction: backButtonFunction, - leftIcon: FontAwesomeIcons.arrowLeft, - leftIconFunction: backButtonFunction, - ), - AddSceneWidget(), - ], - ), - ), - ); - } -} diff --git a/lib/presentation/pages/add_new_automation_process/add_scene/widgets/add_scene_widget.dart b/lib/presentation/pages/add_new_automation_process/add_scene/widgets/add_scene_widget.dart deleted file mode 100644 index 8caba3d2b..000000000 --- a/lib/presentation/pages/add_new_automation_process/add_scene/widgets/add_scene_widget.dart +++ /dev/null @@ -1,223 +0,0 @@ -import 'package:adaptive_action_sheet/adaptive_action_sheet.dart'; -import 'package:auto_route/auto_route.dart'; -import 'package:cbj_integrations_controller/domain/scene/i_scene_cbj_repository.dart'; -import 'package:cbj_integrations_controller/domain/vendors/login_abstract/core_login_failures.dart'; -import 'package:cbj_integrations_controller/infrastructure/gen/cbj_hub_server/protoc_as_dart/cbj_hub_server.pbgrpc.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/abstract_entity/device_entity_base.dart'; -import 'package:cybearjinni/domain/device/i_device_repository.dart'; -import 'package:cybearjinni/presentation/atoms/atoms.dart'; -import 'package:cybearjinni/presentation/core/routes/app_router.gr.dart'; -import 'package:cybearjinni/presentation/core/snack_bar_service.dart'; -import 'package:cybearjinni/presentation/pages/add_new_automation_process/add_scene/widgets/scene_action_widget.dart'; -import 'package:dartz/dartz.dart' as dartz; -import 'package:flutter/material.dart'; -import 'package:font_awesome_flutter/font_awesome_flutter.dart'; - -class AddSceneWidget extends StatefulWidget { - @override - State<AddSceneWidget> createState() => _AddSceneWidgetState(); -} - -class _AddSceneWidgetState extends State<AddSceneWidget> { - String sceneName = ''; - Set<DeviceEntityBase> allDevices = {}; - - /// List of devices with entities, will be treated as actions - Set<MapEntry<DeviceEntityBase, MapEntry<String?, String?>>> - allDevicesWithNewAction = {}; - Set<MapEntry<String, String>> allEntityActions = {}; - bool showErrorMessages = false; - bool isSubmitting = false; - dartz.Option<dartz.Either<CoreLoginFailure, dartz.Unit>> - authFailureOrSuccessOption = dartz.none(); - - @override - void initState() { - super.initState(); - _initialized(); - } - - Future<void> _initialized() async { - Set<DeviceEntityBase?> allDevicesTemp = {}; - (await IDeviceRepository.instance.getAllEntites()).fold((l) => null, (r) { - allDevicesTemp = Set<DeviceEntityBase>.from(r.iter); - }); - - allDevicesTemp.removeWhere((element) => element == null); - setState(() { - allDevices = allDevicesTemp.map((e) => e!).toSet(); - }); - } - - Future<void> _sendSceneToHub() async { - ISceneCbjRepository.instance - .addOrUpdateNewSceneInHubFromDevicesPropertyActionList( - sceneName, - allDevicesWithNewAction, - // TODO: Check what value to use - AreaPurposesTypes.laundryRoom, - ); - } - - Future<void> _sceneNameChange(String value) async { - sceneName = value; - } - - Future<void> _addDevicesWithNewActions( - Set<MapEntry<DeviceEntityBase, MapEntry<String?, String?>>> value, - ) async { - setState(() { - allDevicesWithNewAction.addAll(value); - }); - } - - // Set<MapEntry<DeviceEntityBase, MapEntry<String?, String?>>> - // smartDevicesWithActionToAdd, - // required String actionsName, - // required Set<DeviceEntityBase> allDevices, - // required Set<MapEntry<DeviceEntityBase, MapEntry<String?, String?>>> - // allDevicesWithNewAction, - // required Set<MapEntry<String, String>> allEntityActions, - // required bool showErrorMessages, - // required bool isSubmitting, - // required Option<Either<CoreLoginFailure, Unit>> authFailureOrSuccessOption, - - @override - Widget build(BuildContext context) { - if (allEntityActions.isNotEmpty) { - return const CircularProgressIndicatorAtom(); - } - - return Container( - margin: const EdgeInsets.symmetric(horizontal: 20), - child: Column( - children: [ - const SizedBox( - height: 30, - ), - TextFormField( - decoration: const InputDecoration( - prefixIcon: FaIcon(FontAwesomeIcons.fileSignature), - labelText: 'Scene Name', - ), - style: const TextStyle(color: Colors.black), - onChanged: _sceneNameChange, - ), - SizedBox( - height: 300, - width: 500, - child: ListView.builder( - itemCount: allDevicesWithNewAction.length, - itemBuilder: (BuildContext context, int index) { - final MapEntry<DeviceEntityBase, MapEntry<String?, String?>> - currentDevice = allDevicesWithNewAction.elementAt(index); - - return Container( - margin: const EdgeInsets.symmetric(vertical: 1), - child: SceneActionWidget( - deviceEntityBase: currentDevice.key, - propertyToChange: - currentDevice.value.key ?? 'Missing property', - actionToChange: currentDevice.value.value ?? - EntityActions.actionNotSupported.toString(), - ), - ); - }, - ), - ), - const SizedBox(height: 30), - DecoratedBox( - decoration: BoxDecoration( - color: Colors.lightBlueAccent.withOpacity(0.5), - // Red border with the width is equal to 5 - border: Border.all(), - ), - child: TextButton( - onPressed: () { - showAdaptiveActionSheet( - context: context, - actions: <BottomSheetAction>[ - BottomSheetAction( - title: const TextAtom( - 'Add device action', - style: TextStyle( - color: Colors.blueGrey, - fontSize: 23, - ), - ), - onPressed: (_) async { - final Set< - MapEntry<DeviceEntityBase, - MapEntry<String?, String?>>>? actionList = - await context.router.push< - Set< - MapEntry<DeviceEntityBase, - MapEntry<String?, String?>>>>( - const AddActionRoute(), - ); - if (actionList != null) { - _addDevicesWithNewActions( - actionList, - ); - } - }, - ), - BottomSheetAction( - title: TextAtom( - 'Add service action', - style: TextStyle( - color: Colors.green.shade600, - fontSize: 23, - ), - ), - onPressed: (_) { - SnackBarService().show( - context, - 'Adding service action will be added in the future', - ); - }, - ), - BottomSheetAction( - title: const TextAtom( - 'Add time based action', - style: TextStyle( - color: Colors.blue, - fontSize: 23, - ), - ), - onPressed: (_) { - SnackBarService().show( - context, - 'Adding time based action will be added in the future', - ); - }, - ), - ], - ); - }, - child: const TextAtom('+ Add action'), - ), - ), - const SizedBox(height: 10), - DecoratedBox( - decoration: BoxDecoration( - color: Colors.lightBlueAccent.withOpacity(0.5), - // Red border with the width is equal to 5 - border: Border.all(), - ), - child: TextButton( - onPressed: () { - SnackBarService().show( - context, - 'Adding Scene', - ); - _sendSceneToHub(); - }, - child: const TextAtom('Add Scene'), - ), - ), - ], - ), - ); - } -} diff --git a/lib/presentation/pages/add_new_automation_process/choose_automation_type_to_add/choose_automation_type_to_add_page.dart b/lib/presentation/pages/add_new_automation_process/choose_automation_type_to_add/choose_automation_type_to_add_page.dart deleted file mode 100644 index 8390a294b..000000000 --- a/lib/presentation/pages/add_new_automation_process/choose_automation_type_to_add/choose_automation_type_to_add_page.dart +++ /dev/null @@ -1,241 +0,0 @@ -import 'package:auto_route/auto_route.dart'; -import 'package:auto_size_text/auto_size_text.dart'; -import 'package:cybearjinni/presentation/atoms/atoms.dart'; -import 'package:cybearjinni/presentation/core/routes/app_router.gr.dart'; -import 'package:cybearjinni/presentation/molecules/molecules.dart'; -import 'package:flutter/material.dart'; -import 'package:font_awesome_flutter/font_awesome_flutter.dart'; - -/// Page for the user to decide what kind of Scene he wants to add -@RoutePage() -class ChooseAutomationTypeToAddPage extends StatelessWidget { - void backButtonFunction(BuildContext context) { - context.router.pop(); - } - - @override - Widget build(BuildContext context) { - return Scaffold( - body: Column( - children: [ - TopBarMolecule( - pageName: 'Add Automations', - - // FontAwesomeIcons.magnifyingGlass, - rightIconFunction: backButtonFunction, - leftIcon: FontAwesomeIcons.arrowLeft, - leftIconFunction: backButtonFunction, - ), - Container( - margin: const EdgeInsets.symmetric(horizontal: 10), - child: Column( - children: [ - const SizedBox( - height: 20, - ), - const TextAtom( - 'Do several things at once or start actions' - ' automatically by adding a trigger.', - style: TextStyle( - color: Colors.black, - ), - ), - const SizedBox( - height: 13, - ), - const TextAtom( - 'Please choose your automation trigger', - style: TextStyle( - color: Colors.black, - fontSize: 18, - ), - ), - const SizedBox( - height: 30, - ), - SingleChildScrollView( - child: Column( - children: [ - Container( - decoration: BoxDecoration( - color: Colors.lightBlueAccent.withOpacity(0.5), - // Red border with the width is equal to 5 - border: Border.all(), - ), - padding: const EdgeInsets.all(10), - child: TextButton( - onPressed: () { - context.router.push(const AddSceneRoute()); - }, - child: const Column( - children: [ - Row( - children: [ - TextAtom( - 'Scenes - ', - style: TextStyle( - color: Colors.black, - fontSize: 25, - ), - ), - AutoSizeText( - 'Triggered by user click', - maxFontSize: 18, - style: TextStyle( - color: Colors.black, - ), - ), - ], - ), - TextAtom( - 'Combining a number of actions in a big button.', - style: TextStyle( - color: Colors.black, - fontSize: 13, - ), - ), - TextAtom( - 'Example:\n"Arriving Home" button that will turn on some lights and turn up all the blinds when you click on it.', - style: TextStyle( - color: Colors.black, - fontSize: 15, - ), - ), - ], - ), - ), - ), - const SizedBox( - height: 20, - ), - Container( - decoration: BoxDecoration( - color: Colors.yellow.withOpacity(0.5), - // Red border with the width is equal to 5 - border: Border.all(), - ), - padding: const EdgeInsets.all(10), - child: TextButton( - onPressed: () { - // showDialog( - // context: context, - // builder: (_) => const AlertDialog( - // title: TextAtom( - // 'Not supported yet', - // ), - // ), - // ); - context.router.push(const PickRepeatTimeRoute()); - }, - child: const Column( - children: [ - Row( - children: [ - TextAtom( - 'Routines - ', - style: TextStyle( - color: Colors.black, - fontSize: 25, - ), - ), - AutoSizeText( - 'Triggered by time', - maxFontSize: 18, - style: TextStyle( - color: Colors.black, - ), - ), - ], - ), - TextAtom( - 'Like alarm clock but for triggering actions.', - style: TextStyle( - color: Colors.black, - fontSize: 13, - ), - ), - TextAtom( - 'Example:\nTurn on the thermostat for an hour and open all blinds each day at 7:00am.', - style: TextStyle( - color: Colors.black, - fontSize: 15, - ), - ), - ], - ), - ), - ), - const SizedBox( - height: 20, - ), - Container( - decoration: BoxDecoration( - color: Colors.greenAccent.withOpacity(0.5), - // Red border with the width is equal to 5 - border: Border.all(), - ), - padding: const EdgeInsets.all(10), - child: TextButton( - onPressed: () { - showDialog( - context: context, - builder: (_) => const AlertDialog( - title: TextAtom( - 'Not supported yet', - ), - ), - ); - // context.router - // .push(const AddRoutineDeleteRoute()); - // context.router - // .push(const AddBindingRoute()); - }, - child: const Column( - children: [ - Row( - children: [ - TextAtom( - 'Bindings - ', - style: TextStyle( - color: Colors.black, - fontSize: 25, - ), - ), - AutoSizeText( - 'Triggered by external action', - maxFontSize: 18, - style: TextStyle( - color: Colors.black, - ), - ), - ], - ), - TextAtom( - 'Trigger actions whenever an external action occurs.', - style: TextStyle( - color: Colors.black, - fontSize: 13, - ), - ), - TextAtom( - 'Example:\nIf the home door got opened from 3:00am - 6:00am trigger anti-thief alarm system.', - style: TextStyle( - color: Colors.black, - fontSize: 15, - ), - ), - ], - ), - ), - ), - ], - ), - ), - ], - ), - ), - ], - ), - ); - } -} diff --git a/lib/presentation/pages/add_new_devices/add_new_cbj_devices.dart b/lib/presentation/pages/add_new_devices/add_new_cbj_devices.dart deleted file mode 100644 index 0e828e9e8..000000000 --- a/lib/presentation/pages/add_new_devices/add_new_cbj_devices.dart +++ /dev/null @@ -1,101 +0,0 @@ -import 'dart:async'; - -import 'package:auto_route/auto_route.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_light_entity/generic_light_entity.dart'; -import 'package:cybearjinni/presentation/atoms/atoms.dart'; -import 'package:cybearjinni/presentation/molecules/molecules.dart'; -import 'package:flutter/material.dart'; -import 'package:font_awesome_flutter/font_awesome_flutter.dart'; - -/// This page will show all the CyBear Jinni devices that have connected to the -/// hotspot of the app device. -class AddNewCBJDevices extends StatefulWidget { - static List<GenericLightDE> newDevicesList = []; - static List<String> newDevicesStringList = <String>[]; - - @override - State<StatefulWidget> createState() { - return _AddNewCBJDevices(); - } -} - -class _AddNewCBJDevices extends State<AddNewCBJDevices> { - _AddNewCBJDevices() { - // final CreateTheCBJAppServer createTheCBJAppServer = CreateTheCBJAppServer(); - // StreamController<SmartDeviceInfo> smartDeviceStream; - // - // createTheCBJAppServer.createServer(smartDeviceStream); - } - - @override - void initState() { - super.initState(); - setStateTimer(); - } - - // List<SmartDeviceObject> newDevicesList = []; - - void setStateTimer() { - Timer.periodic(const Duration(seconds: 3), (Timer timer) { - setState(() { - // newDevicesList = AddNewCBJDevices.newDevicesList; - }); - }); - } - - void backButtonFunction(BuildContext context) { - context.router.pop(); - } - - @override - Widget build(BuildContext context) { - return Scaffold( - body: Container( - width: MediaQuery.of(context).size.width, - decoration: BoxDecoration( - gradient: LinearGradient( - // Where the linear gradient begins and ends - begin: Alignment.topRight, - end: Alignment.bottomCenter, - // Add one stop for each color. Stops should increase from 0 to 1 - stops: const <double>[0, 0, 0, 1], - colors: <Color>[ - Theme.of(context).primaryColor, - Theme.of(context).colorScheme.secondary, - Theme.of(context).colorScheme.secondary, - Theme.of(context).primaryColor, - ], - ), - ), - child: Column( - children: <Widget>[ - TopBarMolecule( - pageName: 'Add New CyBear Jinni Devices', - leftIcon: FontAwesomeIcons.arrowLeft, - leftIconFunction: backButtonFunction, - ), - - const SizedBox( - height: 50, - ), - - const TextAtom( - "Can't find any devices", - style: TextStyle( - fontSize: 15.0, - ), - ), - // StreamBuilder(), - // Expanded( - // child: ListView( - // children: newDevicesList.map((SmartDeviceObject newDevice) { - // return SmartDeviceToConfigure(newDevice); - // }).toList(), - // ), - // ), - ], - ), - ), - ); - } -} diff --git a/lib/presentation/pages/add_new_devices_process/choose_device_vendor_to_add/widgets/vendor_widget.dart b/lib/presentation/pages/add_new_devices_process/choose_device_vendor_to_add/widgets/vendor_widget.dart index 9cebb45c8..e14224e23 100644 --- a/lib/presentation/pages/add_new_devices_process/choose_device_vendor_to_add/widgets/vendor_widget.dart +++ b/lib/presentation/pages/add_new_devices_process/choose_device_vendor_to_add/widgets/vendor_widget.dart @@ -1,6 +1,5 @@ import 'package:auto_route/auto_route.dart'; -import 'package:cbj_integrations_controller/domain/vendors/vendor_data.dart'; -import 'package:cbj_integrations_controller/infrastructure/gen/cbj_hub_server/protoc_as_dart/cbj_hub_server.pbgrpc.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:cybearjinni/presentation/atoms/atoms.dart'; import 'package:cybearjinni/presentation/core/routes/app_router.gr.dart'; import 'package:cybearjinni/presentation/core/snack_bar_service.dart'; diff --git a/lib/presentation/pages/add_new_devices_process/choose_device_vendor_to_add/widgets/vendors_list.dart b/lib/presentation/pages/add_new_devices_process/choose_device_vendor_to_add/widgets/vendors_list.dart index bffc9b868..f14efa690 100644 --- a/lib/presentation/pages/add_new_devices_process/choose_device_vendor_to_add/widgets/vendors_list.dart +++ b/lib/presentation/pages/add_new_devices_process/choose_device_vendor_to_add/widgets/vendors_list.dart @@ -1,5 +1,4 @@ -import 'package:cbj_integrations_controller/domain/vendors/i_vendor_repository.dart'; -import 'package:cbj_integrations_controller/domain/vendors/vendor_data.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:cybearjinni/presentation/pages/add_new_devices_process/choose_device_vendor_to_add/widgets/vendor_widget.dart'; import 'package:flutter/material.dart'; import 'package:kt_dart/kt.dart'; diff --git a/lib/presentation/pages/add_new_devices_process/computer_connection_check/computer_connection_check_page.dart b/lib/presentation/pages/add_new_devices_process/computer_connection_check/computer_connection_check_page.dart index 695281061..0d8200bac 100644 --- a/lib/presentation/pages/add_new_devices_process/computer_connection_check/computer_connection_check_page.dart +++ b/lib/presentation/pages/add_new_devices_process/computer_connection_check/computer_connection_check_page.dart @@ -11,7 +11,7 @@ class ComputerConnectionCheckPage extends StatelessWidget { required this.cbjCompEntity, }); - final CBJCompEntity cbjCompEntity; + final CbjCompEntity cbjCompEntity; void leftIconFunction(BuildContext context) { context.router.pop(); diff --git a/lib/presentation/pages/add_new_devices_process/computer_connection_check/widgets/computer_connection_check_widget.dart b/lib/presentation/pages/add_new_devices_process/computer_connection_check/widgets/computer_connection_check_widget.dart index aa27d27bd..c5de27c4d 100644 --- a/lib/presentation/pages/add_new_devices_process/computer_connection_check/widgets/computer_connection_check_widget.dart +++ b/lib/presentation/pages/add_new_devices_process/computer_connection_check/widgets/computer_connection_check_widget.dart @@ -1,7 +1,5 @@ import 'package:another_flushbar/flushbar_helper.dart'; -import 'package:cbj_integrations_controller/infrastructure/core/utils.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/abstract_entity/value_objects_core.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_light_entity/generic_light_entity.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:cybearjinni/domain/cbj_comp/cbj_comp_entity.dart'; import 'package:cybearjinni/domain/cbj_comp/cbj_comp_failures.dart'; import 'package:cybearjinni/domain/cbj_comp/cbj_comp_value_objects.dart'; @@ -23,10 +21,10 @@ class ComputerConnectionCheckWidget extends StatefulWidget { required this.cbjCompEntity, }); - final CBJCompEntity cbjCompEntity; + final CbjCompEntity cbjCompEntity; static String deviceNameFieldKey = 'deviceNameField'; - static String devicesDefaultRoomNameField = ''; + static String devicesDefaultAreaNameField = ''; @override State<ComputerConnectionCheckWidget> createState() => @@ -103,15 +101,15 @@ class _ComputerConnectionCheckWidgetState } /// Organize all the data from the text fields to updated CBJCompEntity - CBJCompEntity newCBJCompEntity( - CBJCompEntity cbjCompEntity, + CbjCompEntity newCBJCompEntity( + CbjCompEntity cbjCompEntity, Map<String, TextEditingController> textEditingController, ) { final String deviceNameFieldKey = ConfigureNewCbjCompWidgets.deviceNameFieldKey; final List<GenericLightDE> deviceEntityList = []; - textEditingController['allInSameRoom']!.text; + textEditingController['allInSameArea']!.text; final ManageNetworkEntity manageWiFiEntity = IManageNetworkRepository.manageWiFiEntity!; @@ -129,18 +127,18 @@ class _ComputerConnectionCheckWidgetState icLogger.w("Can't add unsupported device"); } }); - final CBJCompEntity compUpdatedData = cbjCompEntity.copyWith( - cBJCompDevices: CBJCompDevices(deviceEntityList.toImmutableList()), + final CbjCompEntity compUpdatedData = cbjCompEntity.copyWith( + cBJCompDevices: CbjCompDevices(deviceEntityList.toImmutableList()), ); return compUpdatedData; } - Future<bool> initialNewDevice(CBJCompEntity compUpdatedData) async { + Future<bool> initialNewDevice(CbjCompEntity compUpdatedData) async { bool error = false; - final dartz.Either<CBJCompFailure, dartz.Unit> updateAllDevices = - await ICBJCompRepository.instance.firstSetup(compUpdatedData); + final dartz.Either<CbjCompFailure, dartz.Unit> updateAllDevices = + await ICbjCompRepository.instance.firstSetup(compUpdatedData); updateAllDevices.fold( (l) { diff --git a/lib/presentation/pages/add_new_devices_process/configure_new_cbj_comp/configure_new_cbj_comp_page.dart b/lib/presentation/pages/add_new_devices_process/configure_new_cbj_comp/configure_new_cbj_comp_page.dart index a3134cdd3..86096e395 100644 --- a/lib/presentation/pages/add_new_devices_process/configure_new_cbj_comp/configure_new_cbj_comp_page.dart +++ b/lib/presentation/pages/add_new_devices_process/configure_new_cbj_comp/configure_new_cbj_comp_page.dart @@ -11,7 +11,7 @@ class ConfigureNewCbjCompPage extends StatelessWidget { required this.cbjCompEntity, }); - final CBJCompEntity cbjCompEntity; + final CbjCompEntity cbjCompEntity; void leftIconFunction(BuildContext context) { context.router.pop(); diff --git a/lib/presentation/pages/add_new_devices_process/configure_new_cbj_comp/widgets/configure_new_cbj_comp_widget.dart b/lib/presentation/pages/add_new_devices_process/configure_new_cbj_comp/widgets/configure_new_cbj_comp_widget.dart index 3935fe098..d892863e0 100644 --- a/lib/presentation/pages/add_new_devices_process/configure_new_cbj_comp/widgets/configure_new_cbj_comp_widget.dart +++ b/lib/presentation/pages/add_new_devices_process/configure_new_cbj_comp/widgets/configure_new_cbj_comp_widget.dart @@ -1,8 +1,5 @@ import 'package:auto_route/auto_route.dart'; -import 'package:cbj_integrations_controller/infrastructure/core/utils.dart'; -import 'package:cbj_integrations_controller/infrastructure/gen/cbj_hub_server/protoc_as_dart/cbj_hub_server.pbgrpc.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/abstract_entity/value_objects_core.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_light_entity/generic_light_entity.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:cybearjinni/domain/cbj_comp/cbj_comp_entity.dart'; import 'package:cybearjinni/domain/cbj_comp/cbj_comp_failures.dart'; import 'package:cybearjinni/domain/cbj_comp/cbj_comp_value_objects.dart'; @@ -26,10 +23,10 @@ class ConfigureNewCbjCompWidgets extends StatefulWidget { required this.cbjCompEntity, }); - final CBJCompEntity cbjCompEntity; + final CbjCompEntity cbjCompEntity; static String deviceNameFieldKey = 'deviceNameField'; - static String devicesDefaultRoomNameField = ''; + static String devicesDefaultAreaNameField = ''; @override State<ConfigureNewCbjCompWidgets> createState() => @@ -50,13 +47,13 @@ class _ConfigureNewCbjCompWidgetsState _sendHotSpotInformation(widget.cbjCompEntity); } - Future<void> _sendHotSpotInformation(CBJCompEntity cBJCompEntity) async { + Future<void> _sendHotSpotInformation(CbjCompEntity cBJCompEntity) async { progressPercentage += 0.3; setState(() { state = ConfigureNewCbjCompState.actionInProgress; }); - final CBJCompEntity compUpdatedData = cBJCompEntity; + final CbjCompEntity compUpdatedData = cBJCompEntity; final dartz.Either<SecurityBearFailures, dartz.Unit> setSecurityBearWiFi = await ISecurityBearConnectionRepository.instance .setSecurityBearWiFiInformation(compUpdatedData); @@ -92,15 +89,15 @@ class _ConfigureNewCbjCompWidgetsState } /// Organize all the data from the text fields to updated CBJCompEntity - CBJCompEntity newCBJCompEntity( - CBJCompEntity cbjCompEntity, + CbjCompEntity newCBJCompEntity( + CbjCompEntity cbjCompEntity, Map<String, TextEditingController> textEditingController, ) { final String deviceNameFieldKey = ConfigureNewCbjCompWidgets.deviceNameFieldKey; final List<GenericLightDE> deviceEntityList = []; - textEditingController['allInSameRoom']!.text; + textEditingController['allInSameArea']!.text; final ManageNetworkEntity manageWiFiEntity = IManageNetworkRepository.manageWiFiEntity!; @@ -118,18 +115,18 @@ class _ConfigureNewCbjCompWidgetsState icLogger.w("Can't add unsupported device"); } }); - final CBJCompEntity compUpdatedData = cbjCompEntity.copyWith( - cBJCompDevices: CBJCompDevices(deviceEntityList.toImmutableList()), + final CbjCompEntity compUpdatedData = cbjCompEntity.copyWith( + cBJCompDevices: CbjCompDevices(deviceEntityList.toImmutableList()), ); return compUpdatedData; } - Future<bool> initialNewDevice(CBJCompEntity compUpdatedData) async { + Future<bool> initialNewDevice(CbjCompEntity compUpdatedData) async { bool error = false; - final dartz.Either<CBJCompFailure, dartz.Unit> updateAllDevices = - await ICBJCompRepository.instance.firstSetup(compUpdatedData); + final dartz.Either<CbjCompFailure, dartz.Unit> updateAllDevices = + await ICbjCompRepository.instance.firstSetup(compUpdatedData); updateAllDevices.fold( (l) { @@ -141,7 +138,7 @@ class _ConfigureNewCbjCompWidgetsState } Widget devicesList( - CBJCompEntity cbjCompEntityForDeviceList, + CbjCompEntity cbjCompEntityForDeviceList, Map<String, TextEditingController> textEditingController, BuildContext context, ) { @@ -236,7 +233,7 @@ class _ConfigureNewCbjCompWidgetsState ), autocorrect: false, onChanged: (value) { - // roomName = value; + // areaName = value; }, ), ), @@ -276,7 +273,7 @@ class _ConfigureNewCbjCompWidgetsState @override Widget build(BuildContext context) { final Map<String, TextEditingController> textEditingController = {}; - textEditingController['allInSameRoom'] = TextEditingController(); + textEditingController['allInSameArea'] = TextEditingController(); switch (state) { case ConfigureNewCbjCompState.actionInProgress: diff --git a/lib/presentation/pages/add_new_devices_process/scan_for_new_cbj_comps/widgets/cbj_comp_card.dart b/lib/presentation/pages/add_new_devices_process/scan_for_new_cbj_comps/widgets/cbj_comp_card.dart index f1dd8a737..b46cace96 100644 --- a/lib/presentation/pages/add_new_devices_process/scan_for_new_cbj_comps/widgets/cbj_comp_card.dart +++ b/lib/presentation/pages/add_new_devices_process/scan_for_new_cbj_comps/widgets/cbj_comp_card.dart @@ -1,6 +1,5 @@ import 'package:auto_route/auto_route.dart'; -import 'package:cbj_integrations_controller/infrastructure/gen/cbj_hub_server/protoc_as_dart/cbj_hub_server.pbgrpc.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_light_entity/generic_light_entity.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:cybearjinni/domain/cbj_comp/cbj_comp_entity.dart'; import 'package:cybearjinni/presentation/atoms/atoms.dart'; import 'package:cybearjinni/presentation/core/routes/app_router.gr.dart'; @@ -11,7 +10,7 @@ class CBJCompCard extends StatelessWidget { required this.cbjCompEntity, }); - final CBJCompEntity cbjCompEntity; + final CbjCompEntity cbjCompEntity; @override Widget build(BuildContext context) { diff --git a/lib/presentation/pages/add_new_devices_process/scan_for_new_cbj_comps/widgets/cbj_comp_card_with_devices_controll.dart b/lib/presentation/pages/add_new_devices_process/scan_for_new_cbj_comps/widgets/cbj_comp_card_with_devices_controll.dart index 75ab307c1..a51554c59 100644 --- a/lib/presentation/pages/add_new_devices_process/scan_for_new_cbj_comps/widgets/cbj_comp_card_with_devices_controll.dart +++ b/lib/presentation/pages/add_new_devices_process/scan_for_new_cbj_comps/widgets/cbj_comp_card_with_devices_controll.dart @@ -1,6 +1,5 @@ import 'package:auto_route/auto_route.dart'; -import 'package:cbj_integrations_controller/infrastructure/gen/cbj_hub_server/protoc_as_dart/cbj_hub_server.pbgrpc.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/generic_light_entity/generic_light_entity.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:cybearjinni/domain/cbj_comp/cbj_comp_entity.dart'; import 'package:cybearjinni/presentation/atoms/atoms.dart'; import 'package:cybearjinni/presentation/core/routes/app_router.gr.dart'; @@ -12,7 +11,7 @@ class CBJCompCardWithDevicesControll extends StatelessWidget { required this.cbjCompEntity, }); - final CBJCompEntity cbjCompEntity; + final CbjCompEntity cbjCompEntity; Widget devicesTypes(BuildContext context) { final List<Widget> typesList = []; diff --git a/lib/presentation/pages/add_new_devices_process/scan_for_new_cbj_comps/widgets/scan_for_new_cbj_comps_widget.dart b/lib/presentation/pages/add_new_devices_process/scan_for_new_cbj_comps/widgets/scan_for_new_cbj_comps_widget.dart index e41c554d7..9e1bd7d87 100644 --- a/lib/presentation/pages/add_new_devices_process/scan_for_new_cbj_comps/widgets/scan_for_new_cbj_comps_widget.dart +++ b/lib/presentation/pages/add_new_devices_process/scan_for_new_cbj_comps/widgets/scan_for_new_cbj_comps_widget.dart @@ -10,7 +10,7 @@ import 'package:cybearjinni/presentation/core/routes/app_router.gr.dart'; import 'package:dartz/dartz.dart' as dartz; import 'package:flutter/material.dart'; -/// Show light toggles in a container with the background color from smart room +/// Show light toggles in a container with the background color from smart area /// object class ScanForNewCBJCompsWidget extends StatefulWidget { @override @@ -19,7 +19,7 @@ class ScanForNewCBJCompsWidget extends StatefulWidget { } class _ScanForNewCBJCompsWidgetState extends State<ScanForNewCBJCompsWidget> { - StreamSubscription<dartz.Either<CBJCompFailure, String>>? + StreamSubscription<dartz.Either<CbjCompFailure, String>>? _cbjCompStreamSubscription; @override @@ -30,7 +30,7 @@ class _ScanForNewCBJCompsWidgetState extends State<ScanForNewCBJCompsWidget> { Future<void> _watchAllStarted() async { await _cbjCompStreamSubscription?.cancel(); - _cbjCompStreamSubscription = ICBJCompRepository.instance + _cbjCompStreamSubscription = ICbjCompRepository.instance .getConnectedComputersIP() .listen((failureOrCBJCompList) { final dynamic failureOrCompListDynamic = failureOrCBJCompList.fold( @@ -38,7 +38,7 @@ class _ScanForNewCBJCompsWidgetState extends State<ScanForNewCBJCompsWidget> { (ip) => ip, ); - if (failureOrCompListDynamic == CBJCompFailure) { + if (failureOrCompListDynamic == CbjCompFailure) { } else { _compDevicesReceived(failureOrCBJCompList); } @@ -46,14 +46,14 @@ class _ScanForNewCBJCompsWidgetState extends State<ScanForNewCBJCompsWidget> { } Future<void> _compDevicesReceived( - dartz.Either<CBJCompFailure, String> failureOrCBJCompList, + dartz.Either<CbjCompFailure, String> failureOrCBJCompList, ) async { final dynamic failureOrCompListDynamic = failureOrCBJCompList.fold( (f) => f, (ip) => ip, ); - if (failureOrCompListDynamic == CBJCompFailure) { + if (failureOrCompListDynamic == CbjCompFailure) { } else { final String ipAsString = failureOrCompListDynamic as String; routeToConfigure(ipAsString); @@ -61,8 +61,8 @@ class _ScanForNewCBJCompsWidgetState extends State<ScanForNewCBJCompsWidget> { } void routeToConfigure(String ipAsString) { - final CBJCompEntity compEntity = CBJCompEntity.empty().copyWith( - lastKnownIp: CBJCompLastKnownIp(ipAsString), + final CbjCompEntity compEntity = CbjCompEntity.empty().copyWith( + lastKnownIp: CbjCompLastKnownIp(ipAsString), ); context.router.replace( @@ -73,7 +73,7 @@ class _ScanForNewCBJCompsWidgetState extends State<ScanForNewCBJCompsWidget> { @override Future<void> dispose() async { await _cbjCompStreamSubscription?.cancel(); - await ICBJCompRepository.instance.shutdownServer(); + await ICbjCompRepository.instance.shutdownServer(); return super.dispose(); } diff --git a/lib/presentation/pages/add_new_room/add_new_room_page.dart b/lib/presentation/pages/add_new_room/add_new_room_page.dart deleted file mode 100644 index a62bac852..000000000 --- a/lib/presentation/pages/add_new_room/add_new_room_page.dart +++ /dev/null @@ -1,18 +0,0 @@ -import 'package:auto_route/auto_route.dart'; -import 'package:cybearjinni/presentation/atoms/atoms.dart'; -import 'package:cybearjinni/presentation/pages/add_new_room/widgets/add_new_room_form.dart'; -import 'package:flutter/material.dart'; - -@RoutePage() -class AddNewRoomPage extends StatelessWidget { - @override - Widget build(BuildContext context) { - return Scaffold( - appBar: AppBar( - backgroundColor: Colors.purple, - title: const TextAtom('Add New Area'), - ), - body: AddNewRoomForm(), - ); - } -} diff --git a/lib/presentation/pages/add_routine/add_routine_page.dart b/lib/presentation/pages/add_routine/add_routine_page.dart new file mode 100644 index 000000000..3c5a4a565 --- /dev/null +++ b/lib/presentation/pages/add_routine/add_routine_page.dart @@ -0,0 +1,244 @@ +import 'dart:collection'; + +import 'package:adaptive_action_sheet/adaptive_action_sheet.dart'; +import 'package:auto_route/auto_route.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; +import 'package:cybearjinni/domain/connections_service.dart'; +import 'package:cybearjinni/presentation/atoms/atoms.dart'; +import 'package:cybearjinni/presentation/core/routes/app_router.gr.dart'; +import 'package:cybearjinni/presentation/core/snack_bar_service.dart'; +import 'package:cybearjinni/presentation/molecules/molecules.dart'; +import 'package:cybearjinni/presentation/pages/add_action_page.dart'; +import 'package:cybearjinni/presentation/pages/add_routine/widgets/routine_action_widget.dart'; +import 'package:dartz/dartz.dart' as dartz; +import 'package:flutter/material.dart'; +import 'package:font_awesome_flutter/font_awesome_flutter.dart'; +import 'package:hexcolor/hexcolor.dart'; + +/// Page for adding new routine +@RoutePage() +class AddRoutinePage extends StatefulWidget { + const AddRoutinePage({ + required this.daysToRepeat, + required this.hourToRepeat, + required this.minutesToRepeat, + }); + + final RoutineCbjRepeatDateDays daysToRepeat; + final RoutineCbjRepeatDateHour hourToRepeat; + final RoutineCbjRepeatDateMinute minutesToRepeat; + + @override + State<AddRoutinePage> createState() => _AddRoutinePageState(); +} + +class _AddRoutinePageState extends State<AddRoutinePage> { + @override + void initState() { + super.initState(); + initialzeEntities(); + } + + String? routineName; + + RoutineCbjRepeatDateDays? daysToRepeat; + RoutineCbjRepeatDateHour? hourToRepeat; + RoutineCbjRepeatDateMinute? minutesToRepeat; + + /// List of devices with entities, will be treated as actions + HashSet<EntityActionObject> allDevicesWithNewAction = HashSet(); + + Set<MapEntry<String, String>> allEntityActions = {}; + bool showErrorMessages = false; + bool isSubmitting = false; + dartz.Option<dartz.Either<CoreLoginFailure, dartz.Unit>> + authFailureOrSuccessOption = dartz.none(); + + HashMap<String, DeviceEntityBase>? entities; + + Future<void> initialzeEntities() async { + final HashMap<String, DeviceEntityBase> entitiesTemp = + await ConnectionsService.instance.getAllEntities; + + setState(() { + entities = entitiesTemp; + }); + } + + Future<void> _sendRoutineToHub() async { + if (daysToRepeat == null || + hourToRepeat == null || + minutesToRepeat == null || + routineName == null) { + return; + } + // IRoutineCbjRepository.instance + // .addOrUpdateNewRoutineInHubFromDevicesPropertyActionList( + // routineName!, + // allDevicesWithNewAction, + // daysToRepeat!, + // hourToRepeat!, + // minutesToRepeat!, + // ); + } + + Future<void> _routineNameChange(String value) async { + routineName = value; + } + + Future<void> _addFullAction(EntityActionObject value) async { + setState(() { + allDevicesWithNewAction.add(value); + }); + } + + void backButtonFunction(BuildContext context) { + context.router.pop(); + } + + @override + Widget build(BuildContext context) { + if (entities == null) { + return const Scaffold( + body: CircularProgressIndicatorAtom(), + ); + } + return Scaffold( + body: ColoredBox( + color: HexColor('#FBF5F9'), + child: Column( + children: [ + TopBarMolecule( + pageName: 'Add Routine', + rightIconFunction: backButtonFunction, + leftIcon: FontAwesomeIcons.arrowLeft, + leftIconFunction: backButtonFunction, + ), + Container( + margin: const EdgeInsets.symmetric(horizontal: 20), + child: Column( + children: [ + const SizedBox( + height: 30, + ), + TextFormField( + decoration: const InputDecoration( + prefixIcon: FaIcon(FontAwesomeIcons.fileSignature), + labelText: 'Routine Name', + ), + onChanged: _routineNameChange, + ), + SizedBox( + height: 300, + width: 500, + child: ListView.builder( + itemCount: allDevicesWithNewAction.length, + itemBuilder: (BuildContext context, int index) { + final EntityActionObject currentDevice = + allDevicesWithNewAction.elementAt(index); + + return Container( + margin: const EdgeInsets.symmetric(vertical: 1), + child: RoutineActionWidget( + entity: currentDevice.entity, + propertyToChange: currentDevice.property, + actionToChange: currentDevice.action, + ), + ); + }, + ), + ), + const SizedBox(height: 30), + Container( + decoration: BoxDecoration( + color: Colors.lightBlueAccent.withOpacity(0.5), + // Red border with the width is equal to 5 + border: Border.all(), + ), + child: TextButton( + onPressed: () { + showAdaptiveActionSheet( + context: context, + actions: <BottomSheetAction>[ + BottomSheetAction( + title: const TextAtom( + 'Add device action', + style: TextStyle( + color: Colors.blueGrey, + fontSize: 23, + ), + ), + onPressed: (_) async { + final EntityActionObject? actionList = + await context.router + .push<EntityActionObject?>( + AddActionRoute(entities: entities!), + ); + if (actionList != null) { + _addFullAction(actionList); + } + }, + ), + BottomSheetAction( + title: TextAtom( + 'Add service action', + style: TextStyle( + color: Colors.green.shade600, + fontSize: 23, + ), + ), + onPressed: (_) { + SnackBarService().show( + context, + 'Adding service action will be added in the future', + ); + }, + ), + BottomSheetAction( + title: const TextAtom( + 'Add time based action', + style: TextStyle( + color: Colors.blue, + fontSize: 23, + ), + ), + onPressed: (_) { + SnackBarService().show( + context, + 'Adding time based action will be added in the future', + ); + }, + ), + ], + ); + }, + child: const TextAtom('+ Add action'), + ), + ), + const SizedBox(height: 10), + Container( + decoration: BoxDecoration( + color: Colors.lightBlueAccent.withOpacity(0.5), + // Red border with the width is equal to 5 + border: Border.all(), + ), + child: TextButton( + onPressed: () { + SnackBarService().show( + context, + 'Adding Routine', + ); + _sendRoutineToHub(); + }, + child: const TextAtom('Add Routine'), + ), + ), + ], + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/presentation/pages/add_new_automation_process/add_routine/widgets/routine_action_widget.dart b/lib/presentation/pages/add_routine/widgets/routine_action_widget.dart similarity index 72% rename from lib/presentation/pages/add_new_automation_process/add_routine/widgets/routine_action_widget.dart rename to lib/presentation/pages/add_routine/widgets/routine_action_widget.dart index c5fd6c2c1..22aabd3f6 100644 --- a/lib/presentation/pages/add_new_automation_process/add_routine/widgets/routine_action_widget.dart +++ b/lib/presentation/pages/add_routine/widgets/routine_action_widget.dart @@ -1,5 +1,5 @@ import 'package:auto_size_text/auto_size_text.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/abstract_entity/device_entity_base.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; @@ -8,19 +8,19 @@ import 'package:font_awesome_flutter/font_awesome_flutter.dart'; class RoutineActionWidget extends StatelessWidget { /// Get all and store all info about the action const RoutineActionWidget({ - required this.deviceEntityBase, + required this.entity, required this.propertyToChange, required this.actionToChange, }); /// Cbj unique id of a device - final DeviceEntityBase deviceEntityBase; + final DeviceEntityBase entity; /// The action for the device - final String propertyToChange; + final EntityProperties propertyToChange; /// The action for the device - final String actionToChange; + final EntityActions actionToChange; @override Widget build(BuildContext context) { @@ -32,11 +32,11 @@ class RoutineActionWidget extends StatelessWidget { color: Colors.yellow, ), title: AutoSizeText( - '${deviceEntityBase.cbjEntityName.getOrCrash()!} - $propertyToChange', + '${entity.cbjEntityName.getOrCrash()!} - ${propertyToChange.name}', maxLines: 2, ), trailing: AutoSizeText( - actionToChange, + actionToChange.name, style: const TextStyle(color: Colors.black), ), ), diff --git a/lib/presentation/pages/add_scene/add_scene_page.dart b/lib/presentation/pages/add_scene/add_scene_page.dart new file mode 100644 index 000000000..cce9e4f85 --- /dev/null +++ b/lib/presentation/pages/add_scene/add_scene_page.dart @@ -0,0 +1,237 @@ +import 'dart:collection'; + +import 'package:adaptive_action_sheet/adaptive_action_sheet.dart'; +import 'package:auto_route/auto_route.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; +import 'package:cybearjinni/domain/connections_service.dart'; +import 'package:cybearjinni/presentation/atoms/atoms.dart'; +import 'package:cybearjinni/presentation/core/routes/app_router.gr.dart'; +import 'package:cybearjinni/presentation/core/snack_bar_service.dart'; +import 'package:cybearjinni/presentation/organisms/organisms.dart'; +import 'package:cybearjinni/presentation/pages/add_action_page.dart'; +import 'package:cybearjinni/presentation/pages/add_scene/widgets/scene_action_widget.dart'; +import 'package:flutter/material.dart'; +import 'package:font_awesome_flutter/font_awesome_flutter.dart'; + +/// Page for adding new scene +@RoutePage() +class AddScenePage extends StatefulWidget { + @override + State<AddScenePage> createState() => _AddScenePageState(); +} + +class _AddScenePageState extends State<AddScenePage> { + @override + void initState() { + super.initState(); + initialzeEntities(); + } + + String sceneName = ''; + HashMap<String, DeviceEntityBase>? entities; + + /// List of devices with entities, will be treated as actions + HashSet<EntityActionObject> entitiesWithActions = HashSet(); + + Future<void> initialzeEntities() async { + final HashMap<String, DeviceEntityBase> entitiesTemp = + await ConnectionsService.instance.getAllEntities; + + setState(() { + entities = entitiesTemp; + }); + } + + List<ActionObjectSingle> entitiesWithActionsToActionsByVendor() => + entitiesWithActions + .map( + (e) => ActionObjectSingle( + vendor: e.entity.cbjDeviceVendor.vendorsAndServices!, + entityId: e.entity.getCbjDeviceId, + property: e.property, + actionType: e.action, + ), + ) + .toList(); + + Future<void> _sendSceneToHub() async { + final List<ActionObjectSingle> actions = + entitiesWithActionsToActionsByVendor(); + + final SceneCbjEntity scene = SceneCbjEntity( + uniqueId: UniqueId(), + name: SceneCbjName(sceneName), + backgroundColor: SceneCbjBackgroundColor(Colors.red.toString()), + automationString: SceneCbjAutomationString(''), + nodeRedFlowId: SceneCbjNodeRedFlowId(''), + firstNodeId: SceneCbjFirstNodeId(''), + iconCodePoint: + SceneCbjIconCodePoint(Icons.microwave.codePoint.toString()), + image: SceneCbjBackgroundImage(''), + lastDateOfExecute: SceneCbjLastDateOfExecute(''), + stateMassage: SceneCbjStateMassage(''), + senderDeviceOs: SceneCbjSenderDeviceOs(''), + senderDeviceModel: SceneCbjSenderDeviceModel(''), + senderId: SceneCbjSenderId(''), + compUuid: SceneCbjCompUuid(''), + entityStateGRPC: SceneCbjDeviceStateGRPC(EntityStateGRPC.ack.name), + actions: actions, + ); + + ConnectionsService.instance.addScene(scene); + } + + void _sceneNameChange(String value) { + sceneName = value; + } + + Future<void> _addFullAction(EntityActionObject value) async { + setState(() { + entitiesWithActions.add(value); + }); + } + + // Set<MapEntry<DeviceEntityBase, MapEntry<String?, String?>>> + // smartDevicesWithActionToAdd, + // required String actionsName, + // required Set<DeviceEntityBase> allDevices, + // required Set<MapEntry<DeviceEntityBase, MapEntry<String?, String?>>> + // allDevicesWithNewAction, + // required Set<MapEntry<String, String>> allEntityActions, + // required bool showErrorMessages, + // required bool isSubmitting, + // required Option<Either<CoreLoginFailure, Unit>> authFailureOrSuccessOption, + + @override + Widget build(BuildContext context) { + if (entities == null) { + return const CircularProgressIndicatorAtom(); + } + + return PageOrganism( + pageName: 'Add Scene', + child: Container( + margin: const EdgeInsets.symmetric(horizontal: 20), + child: Column( + children: [ + const SizedBox( + height: 30, + ), + TextFormField( + decoration: const InputDecoration( + prefixIcon: FaIcon(FontAwesomeIcons.fileSignature), + labelText: 'Scene Name', + ), + style: const TextStyle(color: Colors.black), + onChanged: _sceneNameChange, + ), + SizedBox( + height: 300, + width: 500, + child: ListView.builder( + itemCount: entitiesWithActions.length, + itemBuilder: (BuildContext context, int index) { + final EntityActionObject currentDevice = + entitiesWithActions.elementAt(index); + + return Container( + margin: const EdgeInsets.symmetric(vertical: 1), + child: SceneActionWidget( + entity: currentDevice.entity, + propertyToChange: currentDevice.property, + actionToChange: currentDevice.action, + ), + ); + }, + ), + ), + const SizedBox(height: 30), + DecoratedBox( + decoration: BoxDecoration( + color: Colors.lightBlueAccent.withOpacity(0.5), + // Red border with the width is equal to 5 + border: Border.all(), + ), + child: TextButton( + onPressed: () { + showAdaptiveActionSheet( + context: context, + actions: <BottomSheetAction>[ + BottomSheetAction( + title: const TextAtom( + 'Add device action', + style: TextStyle( + color: Colors.blueGrey, + fontSize: 23, + ), + ), + onPressed: (_) async { + final EntityActionObject? actionList = + await context.router.push<EntityActionObject?>( + AddActionRoute(entities: entities!), + ); + if (actionList != null) { + _addFullAction(actionList); + } + }, + ), + BottomSheetAction( + title: TextAtom( + 'Add service action', + style: TextStyle( + color: Colors.green.shade600, + fontSize: 23, + ), + ), + onPressed: (_) { + SnackBarService().show( + context, + 'Adding service action will be added in the future', + ); + }, + ), + BottomSheetAction( + title: const TextAtom( + 'Add time based action', + style: TextStyle( + color: Colors.blue, + fontSize: 23, + ), + ), + onPressed: (_) { + SnackBarService().show( + context, + 'Adding time based action will be added in the future', + ); + }, + ), + ], + ); + }, + child: const TextAtom('+ Add action'), + ), + ), + const SizedBox(height: 10), + DecoratedBox( + decoration: BoxDecoration( + color: Colors.lightBlueAccent.withOpacity(0.5), + // Red border with the width is equal to 5 + border: Border.all(), + ), + child: TextButton( + onPressed: () { + SnackBarService().show( + context, + 'Adding Scene', + ); + _sendSceneToHub(); + }, + child: const TextAtom('Add Scene'), + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/presentation/pages/add_new_automation_process/add_scene/widgets/scene_action_widget.dart b/lib/presentation/pages/add_scene/widgets/scene_action_widget.dart similarity index 72% rename from lib/presentation/pages/add_new_automation_process/add_scene/widgets/scene_action_widget.dart rename to lib/presentation/pages/add_scene/widgets/scene_action_widget.dart index 9fe0dcf31..191e000e3 100644 --- a/lib/presentation/pages/add_new_automation_process/add_scene/widgets/scene_action_widget.dart +++ b/lib/presentation/pages/add_scene/widgets/scene_action_widget.dart @@ -1,5 +1,5 @@ import 'package:auto_size_text/auto_size_text.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/abstract_entity/device_entity_base.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; @@ -8,19 +8,19 @@ import 'package:font_awesome_flutter/font_awesome_flutter.dart'; class SceneActionWidget extends StatelessWidget { /// Get all and store all info about the action const SceneActionWidget({ - required this.deviceEntityBase, + required this.entity, required this.propertyToChange, required this.actionToChange, }); /// Cbj unique id of a device - final DeviceEntityBase deviceEntityBase; + final DeviceEntityBase entity; /// The action for the device - final String propertyToChange; + final EntityProperties propertyToChange; /// The action for the device - final String actionToChange; + final EntityActions actionToChange; @override Widget build(BuildContext context) { @@ -32,11 +32,11 @@ class SceneActionWidget extends StatelessWidget { color: Colors.yellow, ), title: AutoSizeText( - '${deviceEntityBase.cbjEntityName.getOrCrash()!} - $propertyToChange', + '${entity.cbjEntityName.getOrCrash()!} - ${propertyToChange.name}', maxLines: 2, ), trailing: AutoSizeText( - actionToChange, + actionToChange.name, style: const TextStyle(color: Colors.black), ), ), diff --git a/lib/presentation/pages/add_vendors_pages/add_esphome_vendor/add_esphome_vendor_page.dart b/lib/presentation/pages/add_vendors_pages/add_esphome_vendor/add_esphome_vendor_page.dart index 0b302b546..b2d2d58cd 100644 --- a/lib/presentation/pages/add_vendors_pages/add_esphome_vendor/add_esphome_vendor_page.dart +++ b/lib/presentation/pages/add_vendors_pages/add_esphome_vendor/add_esphome_vendor_page.dart @@ -1,5 +1,5 @@ import 'package:auto_route/auto_route.dart'; -import 'package:cbj_integrations_controller/domain/vendors/vendor_data.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:cybearjinni/presentation/atoms/atoms.dart'; import 'package:cybearjinni/presentation/pages/add_vendors_pages/add_esphome_vendor/widgets/esphome_sign_in_form.dart'; import 'package:flutter/material.dart'; diff --git a/lib/presentation/pages/add_vendors_pages/add_esphome_vendor/widgets/esphome_sign_in_form.dart b/lib/presentation/pages/add_vendors_pages/add_esphome_vendor/widgets/esphome_sign_in_form.dart index df9eae279..31d43e771 100644 --- a/lib/presentation/pages/add_vendors_pages/add_esphome_vendor/widgets/esphome_sign_in_form.dart +++ b/lib/presentation/pages/add_vendors_pages/add_esphome_vendor/widgets/esphome_sign_in_form.dart @@ -1,9 +1,5 @@ import 'package:auto_route/auto_route.dart'; -import 'package:cbj_integrations_controller/domain/vendors/esphome_login/generic_esphome_login_entity.dart'; -import 'package:cbj_integrations_controller/domain/vendors/esphome_login/generic_esphome_login_value_objects.dart'; -import 'package:cbj_integrations_controller/domain/vendors/i_vendor_repository.dart'; -import 'package:cbj_integrations_controller/domain/vendors/login_abstract/value_login_objects_core.dart'; -import 'package:cbj_integrations_controller/domain/vendors/vendor_data.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:cybearjinni/presentation/atoms/atoms.dart'; import 'package:cybearjinni/presentation/core/snack_bar_service.dart'; import 'package:flutter/material.dart'; diff --git a/lib/presentation/pages/add_vendors_pages/add_ewelink_vendor/add_ewelink_vendor_page.dart b/lib/presentation/pages/add_vendors_pages/add_ewelink_vendor/add_ewelink_vendor_page.dart index bdb19a4eb..b6f5a0486 100644 --- a/lib/presentation/pages/add_vendors_pages/add_ewelink_vendor/add_ewelink_vendor_page.dart +++ b/lib/presentation/pages/add_vendors_pages/add_ewelink_vendor/add_ewelink_vendor_page.dart @@ -1,5 +1,5 @@ import 'package:auto_route/auto_route.dart'; -import 'package:cbj_integrations_controller/domain/vendors/vendor_data.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:cybearjinni/presentation/atoms/atoms.dart'; import 'package:cybearjinni/presentation/pages/add_vendors_pages/add_ewelink_vendor/widgets/ewelink_sign_in_form.dart'; import 'package:flutter/material.dart'; diff --git a/lib/presentation/pages/add_vendors_pages/add_ewelink_vendor/widgets/ewelink_sign_in_form.dart b/lib/presentation/pages/add_vendors_pages/add_ewelink_vendor/widgets/ewelink_sign_in_form.dart index ebc20b7f4..c6a003148 100644 --- a/lib/presentation/pages/add_vendors_pages/add_ewelink_vendor/widgets/ewelink_sign_in_form.dart +++ b/lib/presentation/pages/add_vendors_pages/add_ewelink_vendor/widgets/ewelink_sign_in_form.dart @@ -1,9 +1,5 @@ import 'package:auto_route/auto_route.dart'; -import 'package:cbj_integrations_controller/domain/vendors/ewelink_login/generic_ewelink_login_entity.dart'; -import 'package:cbj_integrations_controller/domain/vendors/ewelink_login/generic_ewelink_login_value_objects.dart'; -import 'package:cbj_integrations_controller/domain/vendors/i_vendor_repository.dart'; -import 'package:cbj_integrations_controller/domain/vendors/login_abstract/value_login_objects_core.dart'; -import 'package:cbj_integrations_controller/domain/vendors/vendor_data.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:cybearjinni/presentation/atoms/atoms.dart'; import 'package:cybearjinni/presentation/core/snack_bar_service.dart'; import 'package:flutter/material.dart'; diff --git a/lib/presentation/pages/add_vendors_pages/add_lifx_vendor/add_lifx_vendor_page.dart b/lib/presentation/pages/add_vendors_pages/add_lifx_vendor/add_lifx_vendor_page.dart index 4bf965d8e..0eea2c536 100644 --- a/lib/presentation/pages/add_vendors_pages/add_lifx_vendor/add_lifx_vendor_page.dart +++ b/lib/presentation/pages/add_vendors_pages/add_lifx_vendor/add_lifx_vendor_page.dart @@ -1,5 +1,5 @@ import 'package:auto_route/auto_route.dart'; -import 'package:cbj_integrations_controller/domain/vendors/vendor_data.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:cybearjinni/presentation/atoms/atoms.dart'; import 'package:cybearjinni/presentation/pages/add_vendors_pages/add_lifx_vendor/widgets/lifx_sign_in_form.dart'; import 'package:flutter/material.dart'; diff --git a/lib/presentation/pages/add_vendors_pages/add_lifx_vendor/widgets/lifx_sign_in_form.dart b/lib/presentation/pages/add_vendors_pages/add_lifx_vendor/widgets/lifx_sign_in_form.dart index dd24f614a..659d38c38 100644 --- a/lib/presentation/pages/add_vendors_pages/add_lifx_vendor/widgets/lifx_sign_in_form.dart +++ b/lib/presentation/pages/add_vendors_pages/add_lifx_vendor/widgets/lifx_sign_in_form.dart @@ -1,9 +1,5 @@ import 'package:auto_route/auto_route.dart'; -import 'package:cbj_integrations_controller/domain/vendors/i_vendor_repository.dart'; -import 'package:cbj_integrations_controller/domain/vendors/lifx_login/generic_lifx_login_entity.dart'; -import 'package:cbj_integrations_controller/domain/vendors/lifx_login/generic_lifx_login_value_objects.dart'; -import 'package:cbj_integrations_controller/domain/vendors/login_abstract/value_login_objects_core.dart'; -import 'package:cbj_integrations_controller/domain/vendors/vendor_data.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:cybearjinni/presentation/atoms/atoms.dart'; import 'package:cybearjinni/presentation/core/snack_bar_service.dart'; import 'package:flutter/material.dart'; diff --git a/lib/presentation/pages/change_area_for_devices_page.dart b/lib/presentation/pages/change_area_for_devices_page.dart new file mode 100644 index 000000000..ea615a1e4 --- /dev/null +++ b/lib/presentation/pages/change_area_for_devices_page.dart @@ -0,0 +1,200 @@ +import 'dart:collection'; + +import 'package:auto_route/auto_route.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; +import 'package:cybearjinni/domain/connections_service.dart'; +import 'package:cybearjinni/presentation/atoms/atoms.dart'; +import 'package:cybearjinni/presentation/core/routes/app_router.gr.dart'; +import 'package:cybearjinni/presentation/core/snack_bar_service.dart'; +import 'package:cybearjinni/presentation/molecules/molecules.dart'; +import 'package:flutter/material.dart'; +import 'package:font_awesome_flutter/font_awesome_flutter.dart'; +import 'package:multi_select_flutter/multi_select_flutter.dart'; + +@RoutePage() +class ChangeAreaForDevicesPage extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Scaffold( + body: Column( + children: [ + TopBarMolecule( + pageName: 'Change Area For Devices', + leftIcon: FontAwesomeIcons.arrowLeft, + leftIconFunction: context.router.pop, + ), + ChangeAreaForDevicesWidget(), + ], + ), + ); + } +} + +class ChangeAreaForDevicesWidget extends StatefulWidget { + @override + State<ChangeAreaForDevicesWidget> createState() => + _ChangeAreaForDevicesWidgetState(); +} + +class _ChangeAreaForDevicesWidgetState + extends State<ChangeAreaForDevicesWidget> { + HashMap<String, AreaEntity>? areas; + HashMap<String, DeviceEntityBase>? entities; + AreaEntity? selectedArea; + HashSet<String> selectedEntities = HashSet(); + AreaBackground background = AreaBackground( + 'https://live.staticflickr.com/5220/5486044345_f67abff3e9_h.jpg', + ); + + @override + void initState() { + super.initState(); + _initialized(); + } + + Future<void> _initialized() async { + getAreas(); + getEntities(); + } + + Future getAreas() async { + final HashMap<String, AreaEntity> areasTemp = + await ConnectionsService.instance.getAllAreas; + setState(() { + areas = areasTemp; + }); + } + + Future getEntities() async { + final HashMap<String, DeviceEntityBase> entitiesTemp = + await ConnectionsService.instance.getAllEntities; + setState(() { + entities = entitiesTemp; + }); + } + + Future _addEtitiesToArea() async { + final String? id = selectedArea?.uniqueId.getOrCrash(); + if (id == null) { + return; + } + ConnectionsService.instance.setEtitiesToArea(id, selectedEntities); + } + + void onAreaSelected(String? value) { + setState(() { + selectedArea = areas?[value]; + }); + } + + void onEntitiesSelected(List<String?> values) => + selectedEntities = HashSet.from(values); + + @override + Widget build(BuildContext context) { + if (areas == null || entities == null) { + return const CircularProgressIndicatorAtom(); + } + + final Size screenSize = MediaQuery.of(context).size; + return Container( + margin: const EdgeInsets.symmetric(horizontal: 10), + child: Column( + children: [ + SizedBox( + height: screenSize.height * 0.05, + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + const TextAtom( + 'Choose Area', + style: TextStyle(fontSize: 27), + ), + TextButton( + onPressed: () async { + await context.router.push(const AddNewAreaRoute()); + getAreas(); + }, + child: const TextAtom( + 'Add New Area', + style: TextStyle( + fontSize: 16, + color: Colors.white, + backgroundColor: Colors.pink, + ), + ), + ), + ], + ), + DropdownButton<String>( + dropdownColor: Colors.black, + icon: const Icon(Icons.arrow_drop_down), + hint: TextAtom( + selectedArea?.cbjEntityName.getOrCrash() ?? 'Choose Area', + ), + elevation: 16, + underline: Container( + height: 2, + ), + onChanged: onAreaSelected, + items: areas!.values.map<DropdownMenuItem<String>>((e) { + return DropdownMenuItem<String>( + value: e.uniqueId.getOrCrash(), + child: TextAtom(e.cbjEntityName.getOrCrash()), + ); + }).toList(), + ), + SizedBox( + height: screenSize.height * 0.1, + ), + const Row( + children: [ + TextAtom( + 'Choose Entity', + style: TextStyle(fontSize: 27), + ), + ], + ), + Container( + constraints: BoxConstraints(maxHeight: screenSize.height * 0.5), + child: SingleChildScrollView( + child: MultiSelectDialogField( + initialValue: selectedArea?.entitiesId.getOrCrash().toList() ?? + List<String>.empty(), + items: List<MultiSelectItem<String?>>.of( + entities!.values.map( + (e) => MultiSelectItem( + e.getCbjDeviceId, + e.cbjEntityName.getOrCrash()!, + ), + ), + ), + listType: MultiSelectListType.CHIP, + onConfirm: onEntitiesSelected, + ), + ), + ), + Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + TextButton( + onPressed: () { + SnackBarService().show( + context, + 'Changing devices for area', + ); + _addEtitiesToArea(); + }, + child: const TextAtom( + 'Save', + style: TextStyle(fontSize: 20), + ), + ), + ], + ), + ], + ), + ); + } +} diff --git a/lib/presentation/pages/change_room_for_devices/change_room_for_devices_page.dart b/lib/presentation/pages/change_room_for_devices/change_room_for_devices_page.dart deleted file mode 100644 index 2b2dd82fa..000000000 --- a/lib/presentation/pages/change_room_for_devices/change_room_for_devices_page.dart +++ /dev/null @@ -1,28 +0,0 @@ -import 'package:auto_route/auto_route.dart'; -import 'package:cybearjinni/presentation/molecules/molecules.dart'; -import 'package:cybearjinni/presentation/pages/change_room_for_devices/widgets/change_room_for_devices_widget.dart'; -import 'package:flutter/material.dart'; -import 'package:font_awesome_flutter/font_awesome_flutter.dart'; - -@RoutePage() -class ChangeRoomForDevicesPage extends StatelessWidget { - void backButtonFunction(BuildContext context) { - context.router.pop(); - } - - @override - Widget build(BuildContext context) { - return Scaffold( - body: Column( - children: [ - TopBarMolecule( - pageName: 'Change Area For Devices', - leftIcon: FontAwesomeIcons.arrowLeft, - leftIconFunction: backButtonFunction, - ), - ChangeRoomForDevicesWidget(), - ], - ), - ); - } -} diff --git a/lib/presentation/pages/change_room_for_devices/widgets/change_room_for_devices_widget.dart b/lib/presentation/pages/change_room_for_devices/widgets/change_room_for_devices_widget.dart deleted file mode 100644 index f72277f36..000000000 --- a/lib/presentation/pages/change_room_for_devices/widgets/change_room_for_devices_widget.dart +++ /dev/null @@ -1,209 +0,0 @@ -import 'package:auto_route/auto_route.dart'; -import 'package:cbj_integrations_controller/domain/room/i_room_repository.dart'; -import 'package:cbj_integrations_controller/domain/room/room_entity.dart'; -import 'package:cbj_integrations_controller/domain/room/value_objects_room.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/abstract_entity/device_entity_base.dart'; -import 'package:cybearjinni/domain/device/i_device_repository.dart'; -import 'package:cybearjinni/presentation/atoms/atoms.dart'; -import 'package:cybearjinni/presentation/core/routes/app_router.gr.dart'; -import 'package:cybearjinni/presentation/core/snack_bar_service.dart'; -import 'package:dartz/dartz.dart' as dartz; -import 'package:flutter/material.dart'; -import 'package:multi_select_flutter/multi_select_flutter.dart'; - -class ChangeRoomForDevicesWidget extends StatefulWidget { - @override - State<ChangeRoomForDevicesWidget> createState() => - _ChangeRoomForDevicesWidgetState(); -} - -class _ChangeRoomForDevicesWidgetState - extends State<ChangeRoomForDevicesWidget> { - Set<RoomEntity?> _allRooms = {}; - Set<DeviceEntityBase?> _allDevices = {}; - RoomUniqueId roomUniqueId = RoomUniqueId(); - RoomDefaultName cbjEntityName = RoomDefaultName(''); - RoomBackground background = RoomBackground( - 'https://live.staticflickr.com/5220/5486044345_f67abff3e9_h.jpg', - ); - RoomTypes roomTypes = RoomTypes(const {}); - RoomDevicesId roomDevicesId = RoomDevicesId(const {}); - RoomScenesId roomScenesId = RoomScenesId(const {}); - RoomRoutinesId roomRoutinesId = RoomRoutinesId(const {}); - RoomBindingsId roomBindingsId = RoomBindingsId(const {}); - RoomMostUsedBy roomMostUsedBy = RoomMostUsedBy(const {}); - RoomPermissions roomPermissions = RoomPermissions(const {}); - bool showErrorMessages = false; - bool isSubmitting = false; - dartz.Option authFailureOrSuccessOption = dartz.none(); - - @override - void initState() { - super.initState(); - _initialized(); - } - - Future<void> _initialized() async { - IRoomRepository.instance.getAllRooms().fold((l) => null, (r) { - _allRooms = Set<RoomEntity>.from(r.iter); - }); - - (await IDeviceRepository.instance.getAllEntites()).fold((l) => null, (r) { - _allDevices = Set<DeviceEntityBase>.from(r.iter); - }); - _allRooms.removeWhere((element) => element == null); - _allDevices.removeWhere((element) => element == null); - setState(() { - _allRooms = _allRooms as Set<RoomEntity>; - _allDevices = _allDevices as Set<DeviceEntityBase>; - }); - } - - Future<void> _changeRoomDevices() async { - final RoomEntity roomEntity = RoomEntity( - uniqueId: RoomUniqueId.fromUniqueString(roomUniqueId.getOrCrash()), - cbjEntityName: RoomDefaultName(cbjEntityName.getOrCrash()), - background: RoomBackground(background.getOrCrash()), - roomTypes: RoomTypes(roomTypes.getOrCrash()), - roomDevicesId: RoomDevicesId(roomDevicesId.getOrCrash()), - roomScenesId: RoomScenesId(roomScenesId.getOrCrash()), - roomRoutinesId: RoomRoutinesId(roomRoutinesId.getOrCrash()), - roomBindingsId: RoomBindingsId(roomBindingsId.getOrCrash()), - roomMostUsedBy: RoomMostUsedBy(roomMostUsedBy.getOrCrash()), - roomPermissions: RoomPermissions(roomPermissions.getOrCrash()), - ); - - IRoomRepository.instance.create(roomEntity); - } - - Future<void> _roomIdChanged(String value) async { - for (final RoomEntity? roomEntity in _allRooms) { - if (roomEntity != null && roomEntity.uniqueId.getOrCrash() == value) { - setState(() { - roomUniqueId = roomEntity.uniqueId; - cbjEntityName = roomEntity.cbjEntityName; - authFailureOrSuccessOption = dartz.none(); - }); - - return; - } - } - } - - Future<void> _roomDevicesIdChanged(Set<String> value) async { - setState(() { - roomDevicesId = RoomDevicesId(value); - authFailureOrSuccessOption = dartz.none(); - }); - } - - @override - Widget build(BuildContext context) { - final Size screenSize = MediaQuery.of(context).size; - return Container( - margin: const EdgeInsets.symmetric(horizontal: 10), - child: Column( - children: [ - SizedBox( - height: screenSize.height * 0.05, - ), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - const TextAtom( - 'Choose Area', - style: TextStyle(fontSize: 27), - ), - TextButton( - onPressed: () { - context.router.push(const AddNewRoomRoute()); - }, - child: const TextAtom( - 'Add New Area', - style: TextStyle( - fontSize: 16, - color: Colors.white, - backgroundColor: Colors.pink, - ), - ), - ), - ], - ), - DropdownButton<String>( - dropdownColor: Colors.black, - icon: const Icon(Icons.arrow_drop_down), - hint: TextAtom( - cbjEntityName.isValid() - ? cbjEntityName.getOrCrash() - : 'Choose Area', - ), - elevation: 16, - underline: Container( - height: 2, - ), - onChanged: (value) { - _roomIdChanged(value!); - }, - items: _allRooms.map<DropdownMenuItem<String>>((e) { - // .map<DropdownMenuItem<String>>((String value) { - return DropdownMenuItem<String>( - value: e?.uniqueId.getOrCrash(), - child: TextAtom(e?.cbjEntityName.getOrCrash() ?? ''), - ); - }).toList(), - ), - SizedBox( - height: screenSize.height * 0.1, - ), - const Row( - children: [ - TextAtom( - 'Choose Device', - style: TextStyle(fontSize: 27), - ), - ], - ), - Container( - constraints: BoxConstraints(maxHeight: screenSize.height * 0.5), - child: SingleChildScrollView( - child: MultiSelectDialogField( - items: List<MultiSelectItem<String?>>.of( - _allDevices.map( - (e) => MultiSelectItem( - e?.uniqueId.getOrCrash(), - e?.cbjEntityName.getOrCrash()! ?? '', - ), - ), - ), - listType: MultiSelectListType.CHIP, - onConfirm: (List<String?> values) { - _roomDevicesIdChanged( - Set<String>.from(values), - ); - }, - ), - ), - ), - Row( - mainAxisAlignment: MainAxisAlignment.end, - children: [ - TextButton( - onPressed: () { - SnackBarService().show( - context, - 'Changing devices for area', - ); - _changeRoomDevices(); - }, - child: const TextAtom( - 'Done', - style: TextStyle(fontSize: 20), - ), - ), - ], - ), - ], - ), - ); - } -} diff --git a/lib/presentation/pages/choose_automation_type_to_add_page.dart b/lib/presentation/pages/choose_automation_type_to_add_page.dart new file mode 100644 index 000000000..f93c65640 --- /dev/null +++ b/lib/presentation/pages/choose_automation_type_to_add_page.dart @@ -0,0 +1,229 @@ +import 'package:auto_route/auto_route.dart'; +import 'package:auto_size_text/auto_size_text.dart'; +import 'package:cybearjinni/presentation/atoms/atoms.dart'; +import 'package:cybearjinni/presentation/core/routes/app_router.gr.dart'; +import 'package:cybearjinni/presentation/organisms/organisms.dart'; +import 'package:flutter/material.dart'; + +/// Page for the user to decide what kind of Scene he wants to add +@RoutePage() +class ChooseAutomationTypeToAddPage extends StatelessWidget { + void backButtonFunction(BuildContext context) { + context.router.pop(); + } + + @override + Widget build(BuildContext context) { + return PageOrganism( + pageName: 'Add Automations', + child: Container( + margin: const EdgeInsets.symmetric(horizontal: 10), + child: Column( + children: [ + const SizedBox( + height: 20, + ), + const TextAtom( + 'Do several things at once or start actions' + ' automatically by adding a trigger.', + style: TextStyle( + color: Colors.black, + ), + ), + const SizedBox( + height: 13, + ), + const TextAtom( + 'Please choose your automation trigger', + style: TextStyle( + color: Colors.black, + fontSize: 18, + ), + ), + const SizedBox( + height: 30, + ), + SingleChildScrollView( + child: Column( + children: [ + Container( + decoration: BoxDecoration( + color: Colors.lightBlueAccent, + // Red border with the width is equal to 5 + border: Border.all(), + ), + padding: const EdgeInsets.all(10), + child: TextButton( + onPressed: () { + context.router.push(const AddSceneRoute()); + }, + child: const Column( + children: [ + Row( + children: [ + TextAtom( + 'Scenes - ', + style: TextStyle( + color: Colors.black, + fontSize: 25, + ), + ), + AutoSizeText( + 'Triggered by user click', + maxFontSize: 18, + style: TextStyle( + color: Colors.black, + ), + ), + ], + ), + TextAtom( + 'Combining a number of actions in a big button.', + style: TextStyle( + color: Colors.black, + fontSize: 13, + ), + ), + TextAtom( + 'Example:\n"Arriving Home" button that will turn on some lights and turn up all the blinds when you click on it.', + style: TextStyle( + color: Colors.black, + fontSize: 15, + ), + ), + ], + ), + ), + ), + const SizedBox( + height: 20, + ), + Container( + decoration: BoxDecoration( + color: Colors.yellow, + // Red border with the width is equal to 5 + border: Border.all(), + ), + padding: const EdgeInsets.all(10), + child: TextButton( + onPressed: () { + // showDialog( + // context: context, + // builder: (_) => const AlertDialog( + // title: TextAtom( + // 'Not supported yet', + // ), + // ), + // ); + context.router.push(const PickRepeatTimeRoute()); + }, + child: const Column( + children: [ + Row( + children: [ + TextAtom( + 'Routines - ', + style: TextStyle( + color: Colors.black, + fontSize: 25, + ), + ), + AutoSizeText( + 'Triggered by time', + maxFontSize: 18, + style: TextStyle( + color: Colors.black, + ), + ), + ], + ), + TextAtom( + 'Like alarm clock but for triggering actions.', + style: TextStyle( + color: Colors.black, + fontSize: 13, + ), + ), + TextAtom( + 'Example:\nTurn on the thermostat for an hour and open all blinds each day at 7:00am.', + style: TextStyle( + color: Colors.black, + fontSize: 15, + ), + ), + ], + ), + ), + ), + const SizedBox( + height: 20, + ), + Container( + decoration: BoxDecoration( + color: Colors.greenAccent, + // Red border with the width is equal to 5 + border: Border.all(), + ), + padding: const EdgeInsets.all(10), + child: TextButton( + onPressed: () { + showDialog( + context: context, + builder: (_) => const AlertDialog( + title: TextAtom( + 'Not supported yet', + ), + ), + ); + // context.router + // .push(const AddRoutineDeleteRoute()); + // context.router + // .push(const AddBindingRoute()); + }, + child: const Column( + children: [ + Row( + children: [ + TextAtom( + 'Bindings - ', + style: TextStyle( + color: Colors.black, + fontSize: 25, + ), + ), + AutoSizeText( + 'Triggered by external action', + maxFontSize: 18, + style: TextStyle( + color: Colors.black, + ), + ), + ], + ), + TextAtom( + 'Trigger actions whenever an external action occurs.', + style: TextStyle( + color: Colors.black, + fontSize: 13, + ), + ), + TextAtom( + 'Example:\nIf the home door got opened from 3:00am - 6:00am trigger anti-thief alarm system.', + style: TextStyle( + color: Colors.black, + fontSize: 15, + ), + ), + ], + ), + ), + ), + ], + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/presentation/pages/connect_to_hub/widgets/cbj_hub_in_network_widget.dart b/lib/presentation/pages/connect_to_hub/widgets/cbj_hub_in_network_widget.dart index f388b71d4..967edd8aa 100644 --- a/lib/presentation/pages/connect_to_hub/widgets/cbj_hub_in_network_widget.dart +++ b/lib/presentation/pages/connect_to_hub/widgets/cbj_hub_in_network_widget.dart @@ -1,8 +1,7 @@ import 'dart:collection'; import 'package:auto_route/auto_route.dart'; -import 'package:cbj_integrations_controller/domain/hub/hub_failures.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/abstract_entity/device_entity_base.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:cybearjinni/domain/connections_service.dart'; import 'package:cybearjinni/presentation/atoms/atoms.dart'; import 'package:cybearjinni/presentation/core/routes/app_router.gr.dart'; diff --git a/lib/presentation/pages/connect_to_hub_more/connect_to_hub_more_page.dart b/lib/presentation/pages/connect_to_hub_more/connect_to_hub_more_page.dart deleted file mode 100644 index 9d3304cac..000000000 --- a/lib/presentation/pages/connect_to_hub_more/connect_to_hub_more_page.dart +++ /dev/null @@ -1,75 +0,0 @@ -import 'package:auto_route/auto_route.dart'; -import 'package:cybearjinni/presentation/atoms/atoms.dart'; -import 'package:cybearjinni/presentation/pages/connect_to_hub_more/widgets/connect_to_hub_more_widget.dart'; -import 'package:flutter/material.dart'; -import 'package:hexcolor/hexcolor.dart'; - -@RoutePage() -class ConnectToHubMorePage extends StatelessWidget { - @override - Widget build(BuildContext context) { - return Scaffold( - body: Container( - decoration: BoxDecoration( - gradient: LinearGradient( - colors: [ - HexColor('#9355e5'), - HexColor('#b162e4'), - ], - ), - ), - child: Column( - children: [ - const SizedBox( - height: 50, - ), - Container( - alignment: Alignment.center, - child: const TextAtom( - 'More Connections Options', - textAlign: TextAlign.center, - style: TextStyle( - fontSize: 23, - color: Colors.white, - ), - ), - ), - const SizedBox( - height: 40, - ), - Expanded( - child: Center( - child: ConnectToHubMoreWidget(), - ), - ), - const SizedBox( - height: 15, - ), - Container( - margin: const EdgeInsets.symmetric(horizontal: 5), - child: Row( - mainAxisAlignment: MainAxisAlignment.end, - children: [ - TextButton( - onPressed: () async { - context.router.pop(); - }, - style: TextButton.styleFrom( - minimumSize: const Size(70, 30), - backgroundColor: HexColor('#985dc7'), - foregroundColor: Colors.white, - ), - child: const TextAtom( - 'Back', - style: TextStyle(color: Colors.white), - ), - ), - ], - ), - ), - ], - ), - ), - ); - } -} diff --git a/lib/presentation/pages/connect_to_hub_more/widgets/connect_to_hub_more_widget.dart b/lib/presentation/pages/connect_to_hub_more_page.dart similarity index 73% rename from lib/presentation/pages/connect_to_hub_more/widgets/connect_to_hub_more_widget.dart rename to lib/presentation/pages/connect_to_hub_more_page.dart index b27911373..7d89f66db 100644 --- a/lib/presentation/pages/connect_to_hub_more/widgets/connect_to_hub_more_widget.dart +++ b/lib/presentation/pages/connect_to_hub_more_page.dart @@ -1,7 +1,7 @@ import 'dart:async'; import 'package:auto_route/auto_route.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/abstract_entity/device_entity_base.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:cybearjinni/domain/connections_service.dart'; import 'package:cybearjinni/domain/device/devices_failures.dart'; import 'package:cybearjinni/presentation/atoms/atoms.dart'; @@ -12,6 +12,76 @@ import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:hexcolor/hexcolor.dart'; import 'package:kt_dart/kt.dart'; +@RoutePage() +class ConnectToHubMorePage extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Scaffold( + body: Container( + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [ + HexColor('#9355e5'), + HexColor('#b162e4'), + ], + ), + ), + child: Column( + children: [ + const SizedBox( + height: 50, + ), + Container( + alignment: Alignment.center, + child: const TextAtom( + 'More Connections Options', + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 23, + color: Colors.white, + ), + ), + ), + const SizedBox( + height: 40, + ), + Expanded( + child: Center( + child: ConnectToHubMoreWidget(), + ), + ), + const SizedBox( + height: 15, + ), + Container( + margin: const EdgeInsets.symmetric(horizontal: 5), + child: Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + TextButton( + onPressed: () async { + context.router.pop(); + }, + style: TextButton.styleFrom( + minimumSize: const Size(70, 30), + backgroundColor: HexColor('#985dc7'), + foregroundColor: Colors.white, + ), + child: const TextAtom( + 'Back', + style: TextStyle(color: Colors.white), + ), + ), + ], + ), + ), + ], + ), + ), + ); + } +} + class ConnectToHubMoreWidget extends StatefulWidget { @override State<ConnectToHubMoreWidget> createState() => _ConnectToHubMoreWidgetState(); diff --git a/lib/presentation/pages/entities_in_area_page.dart b/lib/presentation/pages/entities_in_area_page.dart new file mode 100644 index 000000000..8d9208e43 --- /dev/null +++ b/lib/presentation/pages/entities_in_area_page.dart @@ -0,0 +1,84 @@ +import 'package:auto_route/auto_route.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; +import 'package:cybearjinni/domain/connections_service.dart'; +import 'package:cybearjinni/presentation/atoms/circular_progress_indicator_atom.dart'; +import 'package:cybearjinni/presentation/organisms/organisms.dart'; +import 'package:flutter/material.dart'; + +@RoutePage() +class EntitiesInAreaPage extends StatefulWidget { + const EntitiesInAreaPage({ + required this.areaEntity, + required this.entityTypes, + }); + + /// If it have value will only show Printers in this area + final AreaEntity areaEntity; + final Set<EntityTypes> entityTypes; + + @override + State<EntitiesInAreaPage> createState() => _EntitiesInAreaPageState(); +} + +class _EntitiesInAreaPageState extends State<EntitiesInAreaPage> { + Set<DeviceEntityBase>? entities; + late bool showAllTypes; + + @override + void initState() { + super.initState(); + showAllTypes = widget.entityTypes.isEmpty; + initialzeDevices(); + } + + Future initialzeDevices() async { + final Map<String, DeviceEntityBase> entitiesMap = + await ConnectionsService.instance.getAllEntities; + final Set<String> entityIdsInArea = + widget.areaEntity.entitiesId.getOrCrash(); + final Set<EntityTypes> entityTypes = widget.entityTypes; + final Set<DeviceEntityBase> tempEntities; + + tempEntities = entitiesMap.values + .where( + (element) => + entityIdsInArea.contains(element.getCbjDeviceId) && + (showAllTypes || + entityTypes.contains(element.entityTypes.type)) && + supportedEntityType(element.entityTypes.type), + ) + .toSet(); + + setState(() { + entities = tempEntities; + }); + } + + bool supportedEntityType(EntityTypes type) { + return !(type == EntityTypes.smartTypeNotSupported || + type == EntityTypes.emptyEntity); + } + + @override + Widget build(BuildContext context) { + String pageName = ''; + + if (showAllTypes) { + pageName = '${widget.areaEntity.cbjEntityName.getOrCrash()} Entities'; + } else if (entities != null) { + pageName = + '${widget.areaEntity.cbjEntityName.getOrCrash()} ${widget.entityTypes.firstOrNull?.name}'; + } + + return PageOrganism( + pageName: pageName, + child: entities != null + ? OpenAreaOrganism( + areaEntity: widget.areaEntity, + entityTypes: widget.entityTypes, + entities: entities!, + ) + : const CircularProgressIndicatorAtom(), + ); + } +} diff --git a/lib/presentation/pages/entities_in_network_page.dart b/lib/presentation/pages/entities_in_network_page.dart index b0175e247..2c0e13cb7 100644 --- a/lib/presentation/pages/entities_in_network_page.dart +++ b/lib/presentation/pages/entities_in_network_page.dart @@ -1,5 +1,5 @@ import 'package:auto_route/auto_route.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/abstract_entity/device_entity_base.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:cybearjinni/domain/connections_service.dart'; import 'package:cybearjinni/presentation/atoms/atoms.dart'; import 'package:cybearjinni/presentation/core/theme_data.dart'; diff --git a/lib/presentation/pages/entities_in_room_page.dart b/lib/presentation/pages/entities_in_room_page.dart deleted file mode 100644 index 34a06317f..000000000 --- a/lib/presentation/pages/entities_in_room_page.dart +++ /dev/null @@ -1,79 +0,0 @@ -import 'package:auto_route/auto_route.dart'; -import 'package:cbj_integrations_controller/domain/room/room_entity.dart'; -import 'package:cbj_integrations_controller/infrastructure/gen/cbj_hub_server/protoc_as_dart/cbj_hub_server.pbgrpc.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/abstract_entity/device_entity_base.dart'; -import 'package:cybearjinni/domain/connections_service.dart'; -import 'package:cybearjinni/presentation/atoms/circular_progress_indicator_atom.dart'; -import 'package:cybearjinni/presentation/organisms/organisms.dart'; -import 'package:flutter/material.dart'; - -@RoutePage() -class EntitiesInRoomPage extends StatefulWidget { - const EntitiesInRoomPage({ - required this.roomEntity, - required this.entityTypes, - }); - - /// If it have value will only show Printers in this room - final RoomEntity roomEntity; - final Set<EntityTypes> entityTypes; - - @override - State<EntitiesInRoomPage> createState() => _EntitiesInRoomPageState(); -} - -class _EntitiesInRoomPageState extends State<EntitiesInRoomPage> { - Set<DeviceEntityBase>? devices; - late bool showAllTypes; - - @override - void initState() { - super.initState(); - showAllTypes = widget.entityTypes.isEmpty; - initialzeDevices(); - } - - Future initialzeDevices() async { - final Map<String, DeviceEntityBase> devicesMap = - await ConnectionsService.instance.getAllEntities; - final Set<String> deviceIdsInRoom = - widget.roomEntity.roomDevicesId.getOrCrash(); - final Set<EntityTypes> entityTypes = widget.entityTypes; - final Set<DeviceEntityBase> tempDevices; - - tempDevices = devicesMap.values - .where( - (element) => - deviceIdsInRoom.contains(element.getCbjDeviceId) && - (showAllTypes || entityTypes.contains(element.entityTypes.type)), - ) - .toSet(); - - setState(() { - devices = tempDevices; - }); - } - - @override - Widget build(BuildContext context) { - String pageName = ''; - - if (showAllTypes) { - pageName = '${widget.roomEntity.cbjEntityName.getOrCrash()} Entities'; - } else if (devices != null) { - pageName = - '${widget.roomEntity.cbjEntityName.getOrCrash()} ${widget.entityTypes.firstOrNull?.name}'; - } - - return PageOrganism( - pageName: pageName, - child: devices != null - ? OpenRoomOrganism( - roomEntity: widget.roomEntity, - entityTypes: widget.entityTypes, - devices: devices!, - ) - : const CircularProgressIndicatorAtom(), - ); - } -} diff --git a/lib/presentation/pages/home_page/home_page.dart b/lib/presentation/pages/home_page/home_page.dart index 77a53dbbc..de48cccd1 100644 --- a/lib/presentation/pages/home_page/home_page.dart +++ b/lib/presentation/pages/home_page/home_page.dart @@ -1,9 +1,14 @@ +import 'dart:async'; +import 'dart:collection'; + import 'package:auto_route/auto_route.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; +import 'package:cybearjinni/domain/connections_service.dart'; import 'package:cybearjinni/presentation/atoms/atoms.dart'; import 'package:cybearjinni/presentation/core/routes/app_router.gr.dart'; import 'package:cybearjinni/presentation/molecules/molecules.dart'; import 'package:cybearjinni/presentation/pages/home_page/tabs/scenes_in_folders_tab/scenes_in_folders_tab.dart'; -import 'package:cybearjinni/presentation/pages/home_page/tabs/smart_devices_tab/smart_devices_widgets.dart'; +import 'package:cybearjinni/presentation/pages/home_page/tabs/smart_devices_tab/entities_by_area_tab.dart'; import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:material_design_icons_flutter/material_design_icons_flutter.dart'; @@ -19,23 +24,114 @@ class _HomePageState extends State<HomePage> { @override void initState() { super.initState(); + _watchEntities(); + _watchAreas(); + initializedScenes(); } - /// Tab num, value will be the default tab to show - int _currentTabNum = 1; - final _pages = [ - ScenesInFoldersTab(), - SmartDevicesWidgets(), - // BindingsPage(), - ]; - final _pageController = PageController(initialPage: 1); - @override void dispose() { + entitiesStream?.cancel(); + areasStream?.cancel(); _pageController.dispose(); super.dispose(); } + HashMap<String, SceneCbjEntity>? scenes; + + StreamSubscription<MapEntry<String, DeviceEntityBase>>? entitiesStream; + StreamSubscription<MapEntry<String, AreaEntity>>? areasStream; + + HashMap<String, AreaEntity>? areas; + HashMap<String, DeviceEntityBase>? entities; + + Future<void> initializedScenes() async { + final HashMap<String, SceneCbjEntity> scenecsTemp = + await ConnectionsService.instance.getScenes(); + + setState(() { + scenes = scenecsTemp; + }); + } + + Future _watchAreas() async { + await areasStream?.cancel(); + + areasStream = ConnectionsService.instance.watchAreas().listen((areaEntery) { + if (!mounted) { + return; + } + + setState(() { + areas ??= HashMap(); + areas!.addEntries([areaEntery]); + }); + }); + _initialzeAreas(); + } + + Future _initialzeAreas() async { + final HashMap<String, AreaEntity> areasTemp = + await ConnectionsService.instance.getAllAreas; + setState(() { + areas ??= HashMap(); + + areas!.addAll(areasTemp); + }); + } + + Future _watchEntities() async { + await entitiesStream?.cancel(); + + entitiesStream = ConnectionsService.instance + .watchEntities() + .listen((MapEntry<String, DeviceEntityBase> entityEntery) { + if (!mounted || + unSupportedEntityType(entityEntery.value.entityTypes.type)) { + return; + } + + setState(() { + entities ??= HashMap(); + entities!.addEntries([entityEntery]); + }); + }); + _initialzeEntities(); + } + + Future _initialzeEntities() async { + final HashMap<String, DeviceEntityBase> entitiesTemp = + await ConnectionsService.instance.getAllEntities; + entitiesTemp.removeWhere( + (key, value) => + value.entityTypes.type == EntityTypes.smartTypeNotSupported || + value.entityTypes.type == EntityTypes.emptyEntity, + ); + setState(() { + entities ??= HashMap(); + entities!.addAll(entitiesTemp); + }); + } + + HashMap<String, DeviceEntityBase> getSupportedEnities( + HashMap<String, DeviceEntityBase> entities, + ) { + entities.removeWhere( + (key, value) => unSupportedEntityType(value.entityTypes.type), + ); + return entities; + } + + bool unSupportedEntityType(EntityTypes type) { + return type == EntityTypes.smartTypeNotSupported || + type == EntityTypes.emptyEntity; + } + + /// Tab num, value will be the default tab to show + int _currentTabNum = 1; + + final _pageController = PageController(initialPage: 1); + static List<BottomNavigationBarItemAtom> getBottomNavigationBarItems() { return [ BottomNavigationBarItemAtom( @@ -72,6 +168,12 @@ class _HomePageState extends State<HomePage> { @override Widget build(BuildContext context) { + if (entities == null || areas == null || scenes == null) { + return const Scaffold( + body: CircularProgressIndicatorAtom(), + ); + } + return Scaffold( body: Stack( children: [ @@ -83,19 +185,22 @@ class _HomePageState extends State<HomePage> { }); }, controller: _pageController, - children: _pages, + children: [ + ScenesInFoldersTab(scenes), + EntitiesByAreaTab(areas: areas!, entities: entities!), + // BindingsPage(), + ], ), bottomNavigationBar: BottomNavigationBarMolecule( bottomNaviList: getBottomNavigationBarItems(), onTap: changeByTabNumber, pageIndex: _currentTabNum, ), - // BottomNavigationBarHomePage(callback, _currentTabNum), ), Column( children: [ const Expanded( - child: TextAtom(''), + child: SizedBox(), ), SizedBox( height: 55, @@ -103,8 +208,10 @@ class _HomePageState extends State<HomePage> { mainAxisAlignment: MainAxisAlignment.center, children: [ GestureDetector( - onTap: () { - context.router.push(const PlusButtonRoute()); + onTap: () async { + await context.router.push(const PlusButtonRoute()); + _initialzeAreas(); + initializedScenes(); }, child: CircleAvatar( backgroundColor: Colors.blue.withOpacity(0.9), diff --git a/lib/presentation/pages/home_page/tabs/scenes_in_folders_tab/scenes_in_folders_tab.dart b/lib/presentation/pages/home_page/tabs/scenes_in_folders_tab/scenes_in_folders_tab.dart index 882e7be63..577f77a2d 100644 --- a/lib/presentation/pages/home_page/tabs/scenes_in_folders_tab/scenes_in_folders_tab.dart +++ b/lib/presentation/pages/home_page/tabs/scenes_in_folders_tab/scenes_in_folders_tab.dart @@ -1,58 +1,121 @@ -import 'package:adaptive_action_sheet/adaptive_action_sheet.dart'; +import 'dart:collection'; + +import 'package:auto_route/auto_route.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:cybearjinni/presentation/atoms/atoms.dart'; -import 'package:cybearjinni/presentation/core/snack_bar_service.dart'; +import 'package:cybearjinni/presentation/core/routes/app_router.gr.dart'; import 'package:cybearjinni/presentation/molecules/molecules.dart'; -import 'package:cybearjinni/presentation/pages/home_page/tabs/scenes_in_folders_tab/widgets/scenes_in_folders_l.dart'; import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; class ScenesInFoldersTab extends StatelessWidget { - /// Execute when user press the icon in top right side - void userCogFunction(BuildContext context) { - showAdaptiveActionSheet( - context: context, - actions: <BottomSheetAction>[ - BottomSheetAction( - title: const TextAtom( - '⚙️ Scenes Settings', - style: TextStyle( - color: Colors.blueGrey, - fontSize: 23, - ), + const ScenesInFoldersTab(this.scenes); + final HashMap<String, SceneCbjEntity>? scenes; + + Widget scenesFoldersWidget( + BuildContext context, + AreaEntity folderOfScenes, + ) { + const double borderRadius = 5; + return Container( + decoration: BoxDecoration( + color: Colors.black, + image: DecorationImage( + image: NetworkImage( + folderOfScenes.background.getOrCrash(), ), - onPressed: (_) { - SnackBarService().show( - context, - 'Settings page will be added in the future', - ); - }, + fit: BoxFit.cover, ), - ], + borderRadius: const BorderRadius.all(Radius.circular(borderRadius)), + border: Border.all( + color: Colors.black.withOpacity(0.7), + width: 0.4, + ), + ), + margin: const EdgeInsets.symmetric(vertical: 3, horizontal: 5), + child: TextButton( + style: ButtonStyle( + padding: MaterialStateProperty.all<EdgeInsets>( + EdgeInsets.zero, + ), + ), + onPressed: () { + context.router.push( + ScenesRoute( + area: folderOfScenes, + ), + ); + }, + child: Column( + children: [ + const SizedBox( + height: 130, + ), + Container( + width: double.infinity, + decoration: BoxDecoration( + color: Colors.black.withOpacity(0.7), + borderRadius: const BorderRadius.only( + bottomRight: Radius.circular(borderRadius), + bottomLeft: Radius.circular(borderRadius), + ), + ), + child: TextAtom( + folderOfScenes.cbjEntityName.getOrCrash(), + style: TextStyle( + color: Theme.of(context).textTheme.bodyLarge!.color, + fontSize: 30, + ), + textAlign: TextAlign.center, + ), + ), + ], + ), + ), ); } - void leftIconFunction(BuildContext context) { - Scaffold.of(context).openDrawer(); - } - - void rightSecondFunction(BuildContext context) {} - @override Widget build(BuildContext context) { + if (scenes == null || scenes!.isEmpty) { + final ThemeData themeData = Theme.of(context); + final TextTheme textTheme = themeData.textTheme; + + return Center( + child: TextAtom( + 'You can add automations in the plus button', + style: textTheme.bodyLarge, + ), + ); + } + return Column( children: <Widget>[ TopBarMolecule( pageName: 'Automations', - - rightIconFunction: userCogFunction, leftIcon: FontAwesomeIcons.sitemap, leftIconFunction: (BuildContext context) {}, - // rightSecondIcon: FontAwesomeIcons.magnifyingGlass, - // rightSecondFunction: rightSecondFunction, ), Expanded( - child: ScenesInFoldersL(), + child: ScenesGrid( + scenes: scenes!.values.toList(), + ), ), + // TODO: Code for room folders + // Expanded( + // child: ListView.builder( + // reverse: true, + // padding: EdgeInsets.zero, + // itemBuilder: (context, index) { + // final AreaEntity sceneFolder = scenes![index]; + // return scenesFoldersWidget( + // context, + // sceneFolder, + // ); + // }, + // itemCount: allAreasWithScenes!.length, + // ), + // ), ], ); } diff --git a/lib/presentation/pages/home_page/tabs/scenes_in_folders_tab/widgets/scenes_in_folders_l.dart b/lib/presentation/pages/home_page/tabs/scenes_in_folders_tab/widgets/scenes_in_folders_l.dart deleted file mode 100644 index 37abbf6df..000000000 --- a/lib/presentation/pages/home_page/tabs/scenes_in_folders_tab/widgets/scenes_in_folders_l.dart +++ /dev/null @@ -1,152 +0,0 @@ -import 'package:auto_route/auto_route.dart'; -import 'package:cbj_integrations_controller/domain/room/i_room_repository.dart'; -import 'package:cbj_integrations_controller/domain/room/room_entity.dart'; -import 'package:cbj_integrations_controller/domain/room/room_failures.dart'; -import 'package:cbj_integrations_controller/domain/scene/i_scene_cbj_repository.dart'; -import 'package:cbj_integrations_controller/domain/scene/scene_cbj_entity.dart'; -import 'package:cybearjinni/presentation/atoms/atoms.dart'; -import 'package:cybearjinni/presentation/core/routes/app_router.gr.dart'; -import 'package:dartz/dartz.dart' as dartz; -import 'package:flutter/material.dart'; -import 'package:kt_dart/collection.dart'; - -class ScenesInFoldersL extends StatefulWidget { - @override - State<ScenesInFoldersL> createState() => _ScenesInFoldersLState(); -} - -class _ScenesInFoldersLState extends State<ScenesInFoldersL> { - List<SceneCbjEntity> allScenes = <SceneCbjEntity>[]; - List<RoomEntity>? allRoomsWithScenes; - - @override - void initState() { - super.initState(); - _initialized(); - } - - Future<void> _initialized() async { - final List<RoomEntity> temp = []; - final Set<SceneCbjEntity> eitherAllScenes = - await ISceneCbjRepository.instance.getAllScenesAsList(); - allScenes.addAll(eitherAllScenes); - - if (allScenes.isEmpty) { - return; - } - - final dartz.Either<RoomFailure, KtList<RoomEntity>> eitherAllRooms = - IRoomRepository.instance.getAllRooms(); - eitherAllRooms.fold((l) => null, (KtList<RoomEntity> r) { - for (final RoomEntity rE in r.asList()) { - if (rE.roomScenesId.getOrCrash().isNotEmpty) { - temp.add(rE); - } - } - }); - - setState(() { - allRoomsWithScenes = temp; - }); - } - - Widget scenesFoldersWidget( - BuildContext context, - RoomEntity folderOfScenes, - ) { - const double borderRadius = 5; - return Container( - decoration: BoxDecoration( - color: Colors.black, - image: DecorationImage( - image: NetworkImage( - folderOfScenes.background.getOrCrash(), - ), - fit: BoxFit.cover, - ), - borderRadius: const BorderRadius.all(Radius.circular(borderRadius)), - border: Border.all( - color: Colors.black.withOpacity(0.7), - width: 0.4, - ), - ), - margin: const EdgeInsets.symmetric(vertical: 3, horizontal: 5), - child: TextButton( - style: ButtonStyle( - padding: MaterialStateProperty.all<EdgeInsets>( - EdgeInsets.zero, - ), - ), - onPressed: () { - context.router.push( - ScenesRoute( - folderOfScenes: folderOfScenes, - ), - ); - }, - child: Column( - children: [ - const SizedBox( - height: 130, - ), - Container( - width: double.infinity, - decoration: BoxDecoration( - color: Colors.black.withOpacity(0.7), - borderRadius: const BorderRadius.only( - bottomRight: Radius.circular(borderRadius), - bottomLeft: Radius.circular(borderRadius), - ), - ), - child: TextAtom( - folderOfScenes.cbjEntityName.getOrCrash(), - style: TextStyle( - color: Theme.of(context).textTheme.bodyLarge!.color, - fontSize: 30, - ), - textAlign: TextAlign.center, - ), - ), - ], - ), - ), - ); - } - - @override - Widget build(BuildContext context) { - if (allRoomsWithScenes == null) { - return const Center( - child: TextAtom( - 'In development', - style: TextStyle(color: Colors.purple), - ), - ); - } - - if (allRoomsWithScenes!.isEmpty) { - return const Center( - child: TextAtom( - 'You can add automations in the plus button', - style: TextStyle( - fontSize: 18, - color: Colors.black, - ), - ), - ); - } - - return ListView.builder( - reverse: true, - padding: EdgeInsets.zero, - itemBuilder: (context, index) { - final RoomEntity sceneFolder = allRoomsWithScenes![index]; - return scenesFoldersWidget( - context, - sceneFolder, - ); - }, - itemCount: allRoomsWithScenes!.length, - ); - } -} diff --git a/lib/presentation/pages/home_page/tabs/smart_devices_tab/rooms_widgets/rom_widget.dart b/lib/presentation/pages/home_page/tabs/smart_devices_tab/areas_widgets/area_widget.dart similarity index 63% rename from lib/presentation/pages/home_page/tabs/smart_devices_tab/rooms_widgets/rom_widget.dart rename to lib/presentation/pages/home_page/tabs/smart_devices_tab/areas_widgets/area_widget.dart index f68c1d0a6..88f9e1e36 100644 --- a/lib/presentation/pages/home_page/tabs/smart_devices_tab/rooms_widgets/rom_widget.dart +++ b/lib/presentation/pages/home_page/tabs/smart_devices_tab/areas_widgets/area_widget.dart @@ -1,34 +1,31 @@ import 'dart:collection'; import 'package:auto_route/auto_route.dart'; -import 'package:cbj_integrations_controller/domain/room/room_entity.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/abstract_entity/device_entity_base.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:cybearjinni/presentation/atoms/atoms.dart'; import 'package:cybearjinni/presentation/core/routes/app_router.gr.dart'; import 'package:cybearjinni/presentation/organisms/organisms.dart'; import 'package:flutter/material.dart'; -class RoomWidget extends StatefulWidget { - const RoomWidget({ - required this.room, - required this.rooms, +class AreaWidget extends StatefulWidget { + const AreaWidget({ + required this.area, + required this.areas, required this.entities, - required this.entitiesInTheRoom, }); - final RoomEntity room; - final HashMap<String, RoomEntity> rooms; - final Set<String> entitiesInTheRoom; + final AreaEntity area; + final HashMap<String, AreaEntity> areas; final HashMap<String, DeviceEntityBase> entities; @override - State<RoomWidget> createState() => _RoomWidgetState(); + State<AreaWidget> createState() => _AreaWidgetState(); } -class _RoomWidgetState extends State<RoomWidget> { +class _AreaWidgetState extends State<AreaWidget> { @override Widget build(BuildContext context) { - if (widget.entitiesInTheRoom.isEmpty) { + if (widget.entities.isEmpty) { return const SizedBox(); } @@ -36,7 +33,7 @@ class _RoomWidgetState extends State<RoomWidget> { final TextTheme textTheme = themeData.textTheme; final ColorScheme colorScheme = themeData.colorScheme; - final int numberOfDevicesInTheRoom = widget.entitiesInTheRoom.length; + final int numberOfDevicesInTheArea = widget.entities.length; return AnimatedSize( duration: const Duration(milliseconds: 300), @@ -45,9 +42,9 @@ class _RoomWidgetState extends State<RoomWidget> { TextButton( onPressed: () { context.router.push( - EntitiesInRoomRoute( + EntitiesInAreaRoute( entityTypes: const {}, - roomEntity: widget.room, + areaEntity: widget.area, ), ); }, @@ -56,7 +53,7 @@ class _RoomWidgetState extends State<RoomWidget> { child: Row( children: [ TextAtom( - widget.room.cbjEntityName.getOrCrash(), + widget.area.cbjEntityName.getOrCrash(), style: textTheme.headlineSmall! .copyWith(color: colorScheme.secondary), ), @@ -64,8 +61,8 @@ class _RoomWidgetState extends State<RoomWidget> { child: SizedBox(), ), TextAtom( - numberOfDevicesInTheRoom >= 2 - ? numberOfDevicesInTheRoom.toString() + numberOfDevicesInTheArea >= 2 + ? numberOfDevicesInTheArea.toString() : '', style: textTheme.bodyLarge, ), @@ -73,14 +70,14 @@ class _RoomWidgetState extends State<RoomWidget> { ), ), ), - const SeparatorAtom(variant: SeparatorVariant.closeWidgets), + const SeparatorAtom(variant: SeparatorVariant.extenstionOfElement), DevicesListView( HashSet.from(widget.entities.values), (entity) { context.router.push( - EntitiesInRoomRoute( + EntitiesInAreaRoute( entityTypes: entity, - roomEntity: widget.room, + areaEntity: widget.area, ), ); }, diff --git a/lib/presentation/pages/home_page/tabs/smart_devices_tab/areas_widgets/areas_list_view_widget.dart b/lib/presentation/pages/home_page/tabs/smart_devices_tab/areas_widgets/areas_list_view_widget.dart new file mode 100644 index 000000000..ec395a85d --- /dev/null +++ b/lib/presentation/pages/home_page/tabs/smart_devices_tab/areas_widgets/areas_list_view_widget.dart @@ -0,0 +1,63 @@ +import 'dart:collection'; + +import 'package:cbj_integrations_controller/integrations_controller.dart'; +import 'package:cybearjinni/presentation/atoms/atoms.dart'; +import 'package:cybearjinni/presentation/molecules/molecules.dart'; +import 'package:cybearjinni/presentation/pages/home_page/tabs/smart_devices_tab/areas_widgets/area_widget.dart'; +import 'package:flutter/material.dart'; + +class AreasListViewWidget extends StatelessWidget { + const AreasListViewWidget({ + required this.entities, + required this.areas, + }); + + final HashMap<String, DeviceEntityBase> entities; + final HashMap<String, AreaEntity> areas; + + HashMap<String, Set<String>> initialzeEntitiesByAreas() { + final HashMap<String, Set<String>> devicesByAreas = HashMap(); + + devicesByAreas.addAll( + areas.map((key, value) => MapEntry(key, value.entitiesId.getOrCrash())), + ); + return devicesByAreas; + } + + @override + Widget build(BuildContext context) { + final HashMap<String, Set<String>> devicesByAreas = + initialzeEntitiesByAreas(); + + return ListViewMolecule( + ListViewVeriant.separated, + separatorVariant: SeparatorVariant.generalSpacing, + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + itemBuilder: (context, index) { + final String areaId = devicesByAreas.keys.elementAt(index); + final Set<String>? entitiesInTheArea = devicesByAreas[areaId]; + final AreaEntity? area = areas[areaId]; + + if (entitiesInTheArea == null || area == null) { + return const SizedBox(); + } + + return AreaWidget( + area: area, + areas: areas, + entities: HashMap.fromEntries( + entitiesInTheArea.map((e) { + final DeviceEntityBase? eneity = entities[e]; + if (eneity == null) { + return null; + } + return MapEntry(e, eneity); + }).nonNulls, + ), + ); + }, + itemCount: devicesByAreas.length, + ); + } +} diff --git a/lib/presentation/pages/home_page/tabs/smart_devices_tab/entities_by_area_tab.dart b/lib/presentation/pages/home_page/tabs/smart_devices_tab/entities_by_area_tab.dart new file mode 100644 index 000000000..964a62ac3 --- /dev/null +++ b/lib/presentation/pages/home_page/tabs/smart_devices_tab/entities_by_area_tab.dart @@ -0,0 +1,56 @@ +import 'dart:collection'; + +import 'package:cbj_integrations_controller/integrations_controller.dart'; +import 'package:cybearjinni/presentation/atoms/atoms.dart'; +import 'package:cybearjinni/presentation/molecules/molecules.dart'; +import 'package:cybearjinni/presentation/pages/home_page/tabs/smart_devices_tab/areas_widgets/areas_list_view_widget.dart'; +import 'package:flutter/material.dart'; +import 'package:font_awesome_flutter/font_awesome_flutter.dart'; + +class EntitiesByAreaTab extends StatelessWidget { + const EntitiesByAreaTab({ + required this.areas, + required this.entities, + }); + + final HashMap<String, AreaEntity> areas; + final HashMap<String, DeviceEntityBase> entities; + + @override + Widget build(BuildContext context) { + final ThemeData themeData = Theme.of(context); + final TextTheme textTheme = themeData.textTheme; + final ColorScheme colorScheme = themeData.colorScheme; + + return Column( + children: <Widget>[ + TopBarMolecule( + pageName: 'Entities', + leftIcon: FontAwesomeIcons.solidLightbulb, + leftIconFunction: (BuildContext context) {}, + ), + Expanded( + child: SingleChildScrollView( + reverse: true, + child: Column( + children: [ + TextAtom( + 'Areas', + style: textTheme.headlineLarge! + .copyWith(color: colorScheme.primary), + ), + const SeparatorAtom(variant: SeparatorVariant.farAppart), + MarginedExpandedAtom( + child: AreasListViewWidget( + entities: entities, + areas: areas, + ), + ), + ], + ), + ), + ), + ], + ); + } +} diff --git a/lib/presentation/pages/home_page/tabs/smart_devices_tab/rooms_widgets/rooms_list_view_widget.dart b/lib/presentation/pages/home_page/tabs/smart_devices_tab/rooms_widgets/rooms_list_view_widget.dart deleted file mode 100644 index 416f8eda1..000000000 --- a/lib/presentation/pages/home_page/tabs/smart_devices_tab/rooms_widgets/rooms_list_view_widget.dart +++ /dev/null @@ -1,55 +0,0 @@ -import 'dart:collection'; - -import 'package:cbj_integrations_controller/domain/room/room_entity.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/abstract_entity/device_entity_base.dart'; -import 'package:cybearjinni/presentation/pages/home_page/tabs/smart_devices_tab/rooms_widgets/rom_widget.dart'; -import 'package:flutter/material.dart'; - -class RoomsListViewWidget extends StatelessWidget { - const RoomsListViewWidget({ - required this.entities, - required this.rooms, - }); - - final HashMap<String, DeviceEntityBase> entities; - final HashMap<String, RoomEntity> rooms; - - HashMap<String, Set<String>> initialzeEntitiesByRooms() { - final HashMap<String, Set<String>> devicesByRooms = HashMap(); - - devicesByRooms.addAll( - rooms - .map((key, value) => MapEntry(key, value.roomDevicesId.getOrCrash())), - ); - return devicesByRooms; - } - - @override - Widget build(BuildContext context) { - final HashMap<String, Set<String>> devicesByRooms = - initialzeEntitiesByRooms(); - - return ListView.builder( - shrinkWrap: true, - physics: const NeverScrollableScrollPhysics(), - padding: EdgeInsets.zero, - itemBuilder: (context, index) { - final String roomId = devicesByRooms.keys.elementAt(index); - final Set<String>? entitiesInTheRoom = devicesByRooms[roomId]; - final RoomEntity? room = rooms[roomId]; - - if (entitiesInTheRoom == null || room == null) { - return const SizedBox(); - } - - return RoomWidget( - room: room, - rooms: rooms, - entities: entities, - entitiesInTheRoom: entitiesInTheRoom, - ); - }, - itemCount: devicesByRooms.length, - ); - } -} diff --git a/lib/presentation/pages/home_page/tabs/smart_devices_tab/settings_page_of_smart_devices.dart b/lib/presentation/pages/home_page/tabs/smart_devices_tab/settings_page_of_smart_devices.dart deleted file mode 100644 index c74b7fba1..000000000 --- a/lib/presentation/pages/home_page/tabs/smart_devices_tab/settings_page_of_smart_devices.dart +++ /dev/null @@ -1,73 +0,0 @@ -import 'package:auto_route/auto_route.dart'; -import 'package:cybearjinni/presentation/atoms/atoms.dart'; -import 'package:cybearjinni/presentation/molecules/molecules.dart'; -import 'package:flutter/material.dart'; -import 'package:font_awesome_flutter/font_awesome_flutter.dart'; - -class SettingsPageSmartDevices extends StatelessWidget { - void backButtonFunction(BuildContext context) { - context.router.pop(); - } - - @override - Widget build(BuildContext context) { - return Scaffold( - body: Container( - width: MediaQuery.of(context).size.width, - decoration: BoxDecoration( - gradient: LinearGradient( - // Where the linear gradient begins and ends - begin: Alignment.topRight, - end: Alignment.bottomCenter, - // Add one stop for each color. Stops should increase from 0 to 1 - stops: const <double>[0, 0, 0, 1], - colors: <Color>[ - Theme.of(context).primaryColor, - Theme.of(context).colorScheme.secondary, - Theme.of(context).colorScheme.secondary, - Theme.of(context).primaryColor, - ], - ), - ), - child: Column( - children: <Widget>[ - TopBarMolecule( - pageName: 'Smart Devices Settings', - leftIcon: FontAwesomeIcons.arrowLeft, - leftIconFunction: backButtonFunction, - ), - const SizedBox( - height: 30, - ), - Container( - height: 35, - width: MediaQuery.of(context).size.width - 20, - decoration: const BoxDecoration( - color: Colors.black38, - borderRadius: BorderRadius.all(Radius.circular(10)), - ), - alignment: Alignment.center, - child: TextAtom( - 'Open Access Point', - style: TextStyle( - fontSize: 25, - color: Theme.of(context).textTheme.bodyLarge!.color, - ), - ), - ), - const SizedBox( - height: 20, - ), - // Expanded( - // child: BlocProvider( - // create: (context) => getIt<ManageAccessPointBloc>() - // ..add(ManageAccessPointEvent.initialized()), - // child: OpenAccessPointWidget(), - // ), - // ), - ], - ), - ), - ); - } -} diff --git a/lib/presentation/pages/home_page/tabs/smart_devices_tab/smart_devices_by_rooms.dart b/lib/presentation/pages/home_page/tabs/smart_devices_tab/smart_devices_by_rooms.dart deleted file mode 100644 index 1eddba309..000000000 --- a/lib/presentation/pages/home_page/tabs/smart_devices_tab/smart_devices_by_rooms.dart +++ /dev/null @@ -1,156 +0,0 @@ -import 'dart:async'; -import 'dart:collection'; - -import 'package:cbj_integrations_controller/domain/room/room_entity.dart'; -import 'package:cbj_integrations_controller/domain/room/value_objects_room.dart'; -import 'package:cbj_integrations_controller/infrastructure/gen/cbj_hub_server/protoc_as_dart/cbj_hub_server.pbgrpc.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/abstract_entity/device_entity_base.dart'; -import 'package:cybearjinni/domain/connections_service.dart'; -import 'package:cybearjinni/presentation/atoms/atoms.dart'; -import 'package:cybearjinni/presentation/core/snack_bar_service.dart'; -import 'package:cybearjinni/presentation/organisms/organisms.dart'; -import 'package:cybearjinni/presentation/pages/home_page/tabs/smart_devices_tab/rooms_widgets/rooms_list_view_widget.dart'; -import 'package:flutter/material.dart'; - -class SmartDevicesByRooms extends StatefulWidget { - @override - State<SmartDevicesByRooms> createState() => _SmartDevicesByRoomsState(); -} - -class _SmartDevicesByRoomsState extends State<SmartDevicesByRooms> { - HashMap<String, RoomEntity> rooms = HashMap(); - HashMap<String, DeviceEntityBase> devices = HashMap(); - - @override - void initState() { - super.initState(); - addDiscoveredRoom(); - _watchEntities(); - } - - @override - void dispose() { - entitiesStream?.cancel(); - super.dispose(); - } - - void addDiscoveredRoom() { - final RoomEntity discoveredRoom = RoomEntity( - uniqueId: RoomUniqueId.discovered(), - cbjEntityName: RoomDefaultName('Discovered'), - roomTypes: RoomTypes(const {}), - roomDevicesId: RoomDevicesId(const {}), - roomScenesId: RoomScenesId(const {}), - roomRoutinesId: RoomRoutinesId(const {}), - roomBindingsId: RoomBindingsId(const {}), - roomMostUsedBy: RoomMostUsedBy(const {}), - roomPermissions: RoomPermissions(const {}), - background: RoomBackground( - 'https://images.pexels.com/photos/459654/pexels-photo-459654.jpeg?auto=compress&cs=tinysrgb&h=750&w=1260', - ), - ); - rooms[RoomUniqueId.discovered().getOrCrash()] = discoveredRoom; - } - - StreamSubscription<MapEntry<String, DeviceEntityBase>>? entitiesStream; - - Future _watchEntities() async { - await entitiesStream?.cancel(); - - entitiesStream = ConnectionsService.instance - .watchEntities() - .listen((MapEntry<String, DeviceEntityBase> entityEntery) { - if (!mounted || - supportedDeviceType(entityEntery.value.entityTypes.type)) { - return; - } - - final RoomEntity? discoverRoom = rooms[RoomUniqueId.discovereId]; - - if (discoverRoom == null) { - return; - } - discoverRoom.addDeviceId(entityEntery.key); - - setState(() { - rooms[RoomUniqueId.discovered().getOrCrash()] = discoverRoom; - devices.addEntries([entityEntery]); - }); - }); - _initialzeRoomsAndDevices(); - } - - Future<void> _initialzeRoomsAndDevices() async { - final HashMap<String, DeviceEntityBase> allDevice = - await ConnectionsService.instance.getAllEntities; - - final HashMap<String, DeviceEntityBase> supportedEntities = - getSupportedEnities(allDevice); - final RoomEntity? tempDiscoverRoom = - rooms[RoomUniqueId.discovered().getOrCrash()]; - if (tempDiscoverRoom == null) { - return; - } - for (final String deviceId in supportedEntities.keys) { - tempDiscoverRoom.addDeviceId(deviceId); - } - - setState(() { - rooms[RoomUniqueId.discovered().getOrCrash()] = tempDiscoverRoom; - devices.addAll(supportedEntities); - }); - } - - HashMap<String, DeviceEntityBase> getSupportedEnities( - HashMap<String, DeviceEntityBase> entities, - ) { - entities.removeWhere( - (key, value) => supportedDeviceType(value.entityTypes.type), - ); - return entities; - } - - bool supportedDeviceType(EntityTypes type) { - return type == EntityTypes.smartTypeNotSupported || - type == EntityTypes.emptyEntity; - } - - @override - Widget build(BuildContext context) { - if (devices.isEmpty || rooms.isEmpty) { - return GestureDetector( - onTap: () { - SnackBarService().show( - context, - 'Add new device by pressing the plus button', - ); - }, - child: EmptyOpenRoomOrganism(), - ); - } - - final ThemeData themeData = Theme.of(context); - final TextTheme textTheme = themeData.textTheme; - final ColorScheme colorScheme = themeData.colorScheme; - - return SingleChildScrollView( - reverse: true, - child: Column( - children: [ - TextAtom( - 'Areas', - style: - textTheme.headlineLarge!.copyWith(color: colorScheme.primary), - ), - const SeparatorAtom(variant: SeparatorVariant.farAppart), - MarginedExpandedAtom( - child: RoomsListViewWidget( - entities: devices, - rooms: rooms, - ), - ), - ], - ), - ); - } -} diff --git a/lib/presentation/pages/home_page/tabs/smart_devices_tab/smart_devices_widgets.dart b/lib/presentation/pages/home_page/tabs/smart_devices_tab/smart_devices_widgets.dart deleted file mode 100644 index 15a740832..000000000 --- a/lib/presentation/pages/home_page/tabs/smart_devices_tab/smart_devices_widgets.dart +++ /dev/null @@ -1,57 +0,0 @@ -import 'package:adaptive_action_sheet/adaptive_action_sheet.dart'; -import 'package:auto_route/auto_route.dart'; -import 'package:cybearjinni/presentation/atoms/atoms.dart'; -import 'package:cybearjinni/presentation/core/routes/app_router.gr.dart'; -import 'package:cybearjinni/presentation/molecules/molecules.dart'; -import 'package:cybearjinni/presentation/pages/home_page/tabs/smart_devices_tab/smart_devices_by_rooms.dart'; -import 'package:flutter/material.dart'; -import 'package:font_awesome_flutter/font_awesome_flutter.dart'; - -class SmartDevicesWidgets extends StatelessWidget { - /// Execute when user press the icon in top right side - void userCogFunction(BuildContext context) { - showAdaptiveActionSheet( - context: context, - actions: <BottomSheetAction>[ - BottomSheetAction( - title: const TextAtom( - '⚙️ Change Area For Entities', - style: TextStyle(color: Colors.blueGrey, fontSize: 23), - ), - onPressed: (_) { - // - // Fluttertoast.showToast( - // msg: 'Settings page will be added in the future', - // toastLength: Toast.LENGTH_LONG, - // gravity: ToastGravity.CENTER, - // backgroundColor: Colors.blueGrey, - // textColor: Theme.of(context).textTheme.bodyLarge!.color, - // fontSize: 16.0, - // ); - context.router.push(const ChangeRoomForDevicesRoute()); - }, - ), - ], - ); - } - - @override - Widget build(BuildContext context) { - return Column( - children: <Widget>[ - TopBarMolecule( - pageName: 'Entities', - rightIcon: Icons.more_vert, - rightIconFunction: userCogFunction, - leftIcon: FontAwesomeIcons.solidLightbulb, - leftIconFunction: (BuildContext context) {}, - // rightSecondIcon: FontAwesomeIcons.magnifyingGlass, - // rightSecondFunction: rightSecondFunction, - ), - Expanded( - child: SmartDevicesByRooms(), - ), - ], - ); - } -} diff --git a/lib/presentation/pages/introduction_screen/introduction_screen_body.dart b/lib/presentation/pages/introduction_screen/introduction_screen_body.dart index 2b9d98497..d4312805c 100644 --- a/lib/presentation/pages/introduction_screen/introduction_screen_body.dart +++ b/lib/presentation/pages/introduction_screen/introduction_screen_body.dart @@ -1,7 +1,7 @@ import 'dart:collection'; import 'package:auto_route/auto_route.dart'; -import 'package:cbj_integrations_controller/infrastructure/generic_entities/abstract_entity/device_entity_base.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:cybearjinni/domain/connections_service.dart'; import 'package:cybearjinni/presentation/atoms/atoms.dart'; import 'package:cybearjinni/presentation/core/routes/app_router.gr.dart'; diff --git a/lib/presentation/pages/pages.dart b/lib/presentation/pages/pages.dart index 7bfe00b29..ceb5e18f3 100644 --- a/lib/presentation/pages/pages.dart +++ b/lib/presentation/pages/pages.dart @@ -1,30 +1,30 @@ -export 'package:cybearjinni/presentation/pages/add_new_automation_process/add_action/add_action_page.dart'; -export 'package:cybearjinni/presentation/pages/add_new_automation_process/add_bindings/add_binding_page.dart'; -export 'package:cybearjinni/presentation/pages/add_new_automation_process/add_routine/add_routine_page.dart'; -export 'package:cybearjinni/presentation/pages/add_new_automation_process/add_routine/pick_repeat_time/pick_repeat_time_page.dart'; -export 'package:cybearjinni/presentation/pages/add_new_automation_process/add_scene/add_scene_page.dart'; -export 'package:cybearjinni/presentation/pages/add_new_automation_process/choose_automation_type_to_add/choose_automation_type_to_add_page.dart'; +export 'package:cybearjinni/presentation/pages/add_action_page.dart'; +export 'package:cybearjinni/presentation/pages/add_bindings/add_binding_page.dart'; +export 'package:cybearjinni/presentation/pages/add_new_area_page.dart'; export 'package:cybearjinni/presentation/pages/add_new_devices_process/choose_device_vendor_to_add/choose_device_vendor_to_add_page.dart'; export 'package:cybearjinni/presentation/pages/add_new_devices_process/computer_connection_check/computer_connection_check_page.dart'; export 'package:cybearjinni/presentation/pages/add_new_devices_process/configure_new_cbj_comp/configure_new_cbj_comp_page.dart'; export 'package:cybearjinni/presentation/pages/add_new_devices_process/connect_to_home_wifi/connect_to_home_wifi_page.dart'; export 'package:cybearjinni/presentation/pages/add_new_devices_process/open_access_point/open_access_pointi_page.dart'; export 'package:cybearjinni/presentation/pages/add_new_devices_process/scan_for_new_cbj_comps/scan_for_new_cbj_comps_page.dart'; -export 'package:cybearjinni/presentation/pages/add_new_room/add_new_room_page.dart'; +export 'package:cybearjinni/presentation/pages/add_routine/add_routine_page.dart'; +export 'package:cybearjinni/presentation/pages/add_scene/add_scene_page.dart'; export 'package:cybearjinni/presentation/pages/add_vendors_pages/add_esphome_vendor/add_esphome_vendor_page.dart'; export 'package:cybearjinni/presentation/pages/add_vendors_pages/add_ewelink_vendor/add_ewelink_vendor_page.dart'; export 'package:cybearjinni/presentation/pages/add_vendors_pages/add_lifx_vendor/add_lifx_vendor_page.dart'; -export 'package:cybearjinni/presentation/pages/change_room_for_devices/change_room_for_devices_page.dart'; +export 'package:cybearjinni/presentation/pages/change_area_for_devices_page.dart'; +export 'package:cybearjinni/presentation/pages/choose_automation_type_to_add_page.dart'; export 'package:cybearjinni/presentation/pages/connect_to_hub/connect_to_hub_page.dart'; -export 'package:cybearjinni/presentation/pages/connect_to_hub_more/connect_to_hub_more_page.dart'; +export 'package:cybearjinni/presentation/pages/connect_to_hub_more_page.dart'; +export 'package:cybearjinni/presentation/pages/entities_in_area_page.dart'; export 'package:cybearjinni/presentation/pages/entities_in_network_page.dart'; -export 'package:cybearjinni/presentation/pages/entities_in_room_page.dart'; export 'package:cybearjinni/presentation/pages/home_page/home_page.dart'; export 'package:cybearjinni/presentation/pages/introduction_screen/introduction_screen_page.dart'; -export 'package:cybearjinni/presentation/pages/plus_button/plus_button.dart'; -export 'package:cybearjinni/presentation/pages/remote_pipes/remote_pipes_page.dart'; +export 'package:cybearjinni/presentation/pages/pick_repeat_time_page.dart'; +export 'package:cybearjinni/presentation/pages/plus_button.dart'; +export 'package:cybearjinni/presentation/pages/remote_pipes_page.dart'; export 'package:cybearjinni/presentation/pages/scenes/scenes_page.dart'; export 'package:cybearjinni/presentation/pages/smart_camera_container_page.dart'; -export 'package:cybearjinni/presentation/pages/software_info/software_info_page.dart'; +export 'package:cybearjinni/presentation/pages/software_info_page.dart'; export 'package:cybearjinni/presentation/pages/splash_page.dart'; export 'package:cybearjinni/presentation/pages/video_stream_output_container_page.dart'; diff --git a/lib/presentation/pages/add_new_automation_process/add_routine/pick_repeat_time/pick_repeat_time_page.dart b/lib/presentation/pages/pick_repeat_time_page.dart similarity index 98% rename from lib/presentation/pages/add_new_automation_process/add_routine/pick_repeat_time/pick_repeat_time_page.dart rename to lib/presentation/pages/pick_repeat_time_page.dart index 2b2f285c3..07bd9bb1a 100644 --- a/lib/presentation/pages/add_new_automation_process/add_routine/pick_repeat_time/pick_repeat_time_page.dart +++ b/lib/presentation/pages/pick_repeat_time_page.dart @@ -1,5 +1,5 @@ import 'package:auto_route/auto_route.dart'; -import 'package:cbj_integrations_controller/domain/routine/value_objects_routine_cbj.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:cybearjinni/presentation/atoms/atoms.dart'; import 'package:cybearjinni/presentation/core/routes/app_router.gr.dart'; import 'package:cybearjinni/presentation/molecules/molecules.dart'; diff --git a/lib/presentation/pages/plus_button.dart b/lib/presentation/pages/plus_button.dart new file mode 100644 index 000000000..cc95ceb54 --- /dev/null +++ b/lib/presentation/pages/plus_button.dart @@ -0,0 +1,310 @@ +import 'package:auto_route/auto_route.dart'; +import 'package:cybearjinni/domain/connections_service.dart'; +import 'package:cybearjinni/presentation/atoms/atoms.dart'; +import 'package:cybearjinni/presentation/core/routes/app_router.gr.dart'; +import 'package:cybearjinni/presentation/molecules/molecules.dart'; +import 'package:flutter/material.dart'; +import 'package:font_awesome_flutter/font_awesome_flutter.dart'; +import 'package:iconify_flutter/iconify_flutter.dart'; +import 'package:iconify_flutter/icons/simple_icons.dart'; + +@RoutePage() +class PlusButtonPage extends StatelessWidget { + Future<void> _logout(BuildContext context) async { + context.router.replace(const ConnectToHubRoute()); + ConnectionsService.setCurrentConnectionType(null); + } + + @override + Widget build(BuildContext context) { + final ThemeData themeData = Theme.of(context); + final TextTheme textTheme = themeData.textTheme; + final ColorScheme colorScheme = themeData.colorScheme; + + return Scaffold( + body: Column( + children: [ + TopBarMolecule( + pageName: 'Add and Manage', + leftIcon: FontAwesomeIcons.arrowLeft, + leftIconFunction: (_) => context.router.pop(), + ), + SingleChildScrollView( + child: Column( + children: [ + const SizedBox( + height: 30, + ), + Container( + padding: const EdgeInsets.symmetric(horizontal: 15), + alignment: Alignment.topLeft, + child: TextAtom( + 'Add:', + style: textTheme.titleMedium, + ), + ), + const SizedBox( + height: 10, + ), + ColoredBox( + color: Colors.white, + child: Column( + children: [ + const SizedBox( + height: 1, + ), + ColoredBox( + color: Colors.teal.withOpacity(0.9), + child: ListTile( + leading: FaIcon( + FontAwesomeIcons.solidLightbulb, + color: colorScheme.background, + ), + title: TextAtom( + 'Manage Entities', + style: TextStyle( + color: + Theme.of(context).textTheme.bodyLarge!.color, + ), + ), + onTap: () => context.router + .push(const ChangeAreaForDevicesRoute()), + ), + ), + const SizedBox( + height: 1, + ), + ColoredBox( + color: Colors.brown.withOpacity(0.9), + child: ListTile( + leading: FaIcon( + FontAwesomeIcons.arrowRightToBracket, + color: colorScheme.background, + ), + title: TextAtom( + 'Login To Vendor', + style: TextStyle( + color: + Theme.of(context).textTheme.bodyLarge!.color, + ), + ), + onTap: () { + context.router + .push(const ChooseDeviceVendorToAddRoute()); + }, + ), + ), + if (ConnectionsService.getCurrentConnectionType() == + ConnectionType.hub) ...[ + const SizedBox(height: 1), + ColoredBox( + color: Colors.blue, + child: ListTile( + leading: FaIcon( + FontAwesomeIcons.globe, + color: colorScheme.background, + ), + title: TextAtom( + 'Add Remote Control Support', + style: TextStyle( + color: Theme.of(context) + .textTheme + .bodyLarge! + .color, + ), + ), + onTap: () { + context.router.push(const RemotePipesRoute()); + }, + ), + ), + ], + const SizedBox(height: 1), + ColoredBox( + color: Colors.purple.withOpacity(0.7), + child: ListTile( + leading: FaIcon( + FontAwesomeIcons.sitemap, + color: colorScheme.background, + ), + title: TextAtom( + 'Add Automation', + style: TextStyle( + color: + Theme.of(context).textTheme.bodyLarge!.color, + ), + ), + onTap: () { + context.router + .push(const ChooseAutomationTypeToAddRoute()); + }, + ), + ), + const SizedBox(height: 1), + ColoredBox( + color: Colors.indigoAccent.withOpacity(0.7), + child: ListTile( + leading: FaIcon( + FontAwesomeIcons.camera, + color: colorScheme.background, + ), + title: TextAtom( + 'Turn Phone To a Security Camera', + style: TextStyle( + color: + Theme.of(context).textTheme.bodyLarge!.color, + ), + ), + onTap: () async { + context.router + .push(const SmartCameraContainerRoute()); + // await IHubConnectionRepository.instance + // .closeConnection(); + }, + ), + ), + const SizedBox(height: 1), + ], + ), + ), + const SizedBox( + height: 40, + ), + Container( + alignment: Alignment.topLeft, + padding: const EdgeInsets.symmetric(horizontal: 15), + child: TextAtom( + 'Manage:', + style: textTheme.titleMedium, + ), + ), + const SizedBox( + height: 10, + ), + ColoredBox( + color: Colors.white, + child: Column( + children: [ + const SizedBox( + height: 1, + ), + ColoredBox( + color: Colors.pink.withOpacity(0.9), + child: ListTile( + leading: FaIcon( + FontAwesomeIcons.computer, + color: colorScheme.background, + ), + title: TextAtom( + 'All Entities in the network', + style: TextStyle( + color: + Theme.of(context).textTheme.bodyLarge!.color, + ), + ), + onTap: () => context.router + .push(const EntitiesInNetworkRoute()), + ), + ), + if (ConnectionsService.getCurrentConnectionType() == + ConnectionType.hub) ...[ + const SizedBox( + height: 1, + ), + ColoredBox( + color: Colors.redAccent.withOpacity(0.9), + child: ListTile( + leading: Iconify( + SimpleIcons.node_red, + color: colorScheme.background, + ), + title: TextAtom( + 'Open Node-RED of Hub', + style: TextStyle( + color: Theme.of(context) + .textTheme + .bodyLarge! + .color, + ), + ), + onTap: () { + // final HubEntity? hubEntity = + // IHubConnectionRepository.hubEntity; + // if (hubEntity != null && + // hubEntity.lastKnownIp.isValid()) { + // final String lastKnownIp = + // hubEntity.lastKnownIp.getOrCrash(); + // launchUrl( + // Uri.parse('http://$lastKnownIp:1880'), + // mode: LaunchMode.externalApplication, + // ); + // } else { + // showDialog( + // context: context, + // builder: (_) => const AlertDialog( + // title: TextAtom( + // "Can't find Hub/Node-Red IP to connect to", + // ), + // ), + // ); + // } + }, + ), + ), + ], + const SizedBox( + height: 1, + ), + ColoredBox( + color: Colors.orangeAccent, + child: ListTile( + leading: FaIcon( + FontAwesomeIcons.info, + color: colorScheme.background, + ), + title: TextAtom( + 'Software Info', + style: TextStyle( + color: + Theme.of(context).textTheme.bodyLarge!.color, + ), + ), + onTap: () { + context.router.push(const SoftwareInfoRoute()); + }, + ), + ), + const SizedBox( + height: 1, + ), + ColoredBox( + color: Colors.greenAccent, + child: ListTile( + leading: FaIcon( + FontAwesomeIcons.personThroughWindow, + color: colorScheme.background, + ), + title: TextAtom( + 'Log Out', + style: TextStyle( + color: + Theme.of(context).textTheme.bodyLarge!.color, + ), + ), + onTap: () => _logout(context), + ), + ), + const SizedBox( + height: 1, + ), + ], + ), + ), + ], + ), + ), + ], + ), + ); + } +} diff --git a/lib/presentation/pages/plus_button/plus_button.dart b/lib/presentation/pages/plus_button/plus_button.dart deleted file mode 100644 index dfed42253..000000000 --- a/lib/presentation/pages/plus_button/plus_button.dart +++ /dev/null @@ -1,24 +0,0 @@ -import 'package:auto_route/auto_route.dart'; -import 'package:cybearjinni/presentation/molecules/molecules.dart'; -import 'package:cybearjinni/presentation/pages/plus_button/widgets/plus_button_wighet.dart'; -import 'package:flutter/material.dart'; -import 'package:font_awesome_flutter/font_awesome_flutter.dart'; - -@RoutePage() -class PlusButtonPage extends StatelessWidget { - @override - Widget build(BuildContext context) { - return Scaffold( - body: Column( - children: [ - TopBarMolecule( - pageName: 'Add and Manage', - leftIcon: FontAwesomeIcons.arrowLeft, - leftIconFunction: (_) => context.router.pop(), - ), - PlusButtonWidget(), - ], - ), - ); - } -} diff --git a/lib/presentation/pages/plus_button/widgets/plus_button_wighet.dart b/lib/presentation/pages/plus_button/widgets/plus_button_wighet.dart deleted file mode 100644 index 80ed5bff2..000000000 --- a/lib/presentation/pages/plus_button/widgets/plus_button_wighet.dart +++ /dev/null @@ -1,258 +0,0 @@ -import 'package:auto_route/auto_route.dart'; -import 'package:cbj_integrations_controller/domain/hub/hub_entity.dart'; -import 'package:cybearjinni/domain/connections_service.dart'; -import 'package:cybearjinni/domain/i_hub_connection_repository.dart'; -import 'package:cybearjinni/presentation/atoms/atoms.dart'; -import 'package:cybearjinni/presentation/core/routes/app_router.gr.dart'; -import 'package:flutter/material.dart'; -import 'package:font_awesome_flutter/font_awesome_flutter.dart'; -import 'package:iconify_flutter/iconify_flutter.dart'; -import 'package:iconify_flutter/icons/simple_icons.dart'; -import 'package:url_launcher/url_launcher.dart'; - -class PlusButtonWidget extends StatelessWidget { - Future<void> _logout(BuildContext context) async { - context.router.replace(const ConnectToHubRoute()); - ConnectionsService.setCurrentConnectionType(null); - } - - @override - Widget build(BuildContext context) { - final ThemeData themeData = Theme.of(context); - final TextTheme textTheme = themeData.textTheme; - final ColorScheme colorScheme = themeData.colorScheme; - - return SingleChildScrollView( - child: Column( - children: [ - const SizedBox( - height: 30, - ), - Container( - padding: const EdgeInsets.symmetric(horizontal: 15), - alignment: Alignment.topLeft, - child: TextAtom( - 'Add:', - style: textTheme.titleMedium, - ), - ), - const SizedBox( - height: 10, - ), - ColoredBox( - color: Colors.white, - child: Column( - children: [ - const SizedBox(height: 1), - ColoredBox( - color: Colors.indigoAccent.withOpacity(0.7), - child: ListTile( - leading: FaIcon( - FontAwesomeIcons.camera, - color: colorScheme.background, - ), - title: TextAtom( - 'Turn Phone To a Security Camera', - style: TextStyle( - color: Theme.of(context).textTheme.bodyLarge!.color, - ), - ), - onTap: () async { - context.router.push(const SmartCameraContainerRoute()); - await IHubConnectionRepository.instance.closeConnection(); - }, - ), - ), - const SizedBox( - height: 1, - ), - ColoredBox( - color: Colors.brown.withOpacity(0.9), - child: ListTile( - leading: FaIcon( - FontAwesomeIcons.solidLightbulb, - color: colorScheme.background, - ), - title: TextAtom( - 'Add Entity', - style: TextStyle( - color: Theme.of(context).textTheme.bodyLarge!.color, - ), - ), - onTap: () { - context.router.push(const ChooseDeviceVendorToAddRoute()); - }, - ), - ), - const SizedBox(height: 1), - ColoredBox( - color: Colors.blue, - child: ListTile( - leading: FaIcon( - FontAwesomeIcons.globe, - color: colorScheme.background, - ), - title: TextAtom( - 'Add Remote Control Support', - style: TextStyle( - color: Theme.of(context).textTheme.bodyLarge!.color, - ), - ), - onTap: () { - context.router.push(const RemotePipesRoute()); - }, - ), - ), - const SizedBox(height: 1), - ColoredBox( - color: Colors.purple.withOpacity(0.7), - child: ListTile( - leading: FaIcon( - FontAwesomeIcons.sitemap, - color: colorScheme.background, - ), - title: TextAtom( - 'Add Automation', - style: TextStyle( - color: Theme.of(context).textTheme.bodyLarge!.color, - ), - ), - onTap: () { - context.router - .push(const ChooseAutomationTypeToAddRoute()); - }, - ), - ), - const SizedBox(height: 1), - ], - ), - ), - const SizedBox( - height: 40, - ), - Container( - alignment: Alignment.topLeft, - padding: const EdgeInsets.symmetric(horizontal: 15), - child: TextAtom( - 'Manage:', - style: textTheme.titleMedium, - ), - ), - const SizedBox( - height: 10, - ), - ColoredBox( - color: Colors.white, - child: Column( - children: [ - const SizedBox( - height: 1, - ), - ColoredBox( - color: Colors.pink.withOpacity(0.9), - child: ListTile( - leading: FaIcon( - FontAwesomeIcons.computer, - color: colorScheme.background, - ), - title: TextAtom( - 'All Entities in the network', - style: TextStyle( - color: Theme.of(context).textTheme.bodyLarge!.color, - ), - ), - onTap: () => - context.router.push(const EntitiesInNetworkRoute()), - ), - ), - const SizedBox( - height: 1, - ), - ColoredBox( - color: Colors.redAccent.withOpacity(0.9), - child: ListTile( - leading: Iconify( - SimpleIcons.node_red, - color: colorScheme.background, - ), - title: TextAtom( - 'Open Node-RED of Hub', - style: TextStyle( - color: Theme.of(context).textTheme.bodyLarge!.color, - ), - ), - onTap: () { - final HubEntity? hubEntity = - IHubConnectionRepository.hubEntity; - if (hubEntity != null && - hubEntity.lastKnownIp.isValid()) { - final String lastKnownIp = - hubEntity.lastKnownIp.getOrCrash(); - launchUrl( - Uri.parse('http://$lastKnownIp:1880'), - mode: LaunchMode.externalApplication, - ); - } else { - showDialog( - context: context, - builder: (_) => const AlertDialog( - title: TextAtom( - "Can't find Hub/Node-Red IP to connect to", - ), - ), - ); - } - }, - ), - ), - const SizedBox( - height: 1, - ), - ColoredBox( - color: Colors.orangeAccent, - child: ListTile( - leading: FaIcon( - FontAwesomeIcons.info, - color: colorScheme.background, - ), - title: TextAtom( - 'Software Info', - style: TextStyle( - color: Theme.of(context).textTheme.bodyLarge!.color, - ), - ), - onTap: () { - context.router.push(const SoftwareInfoRoute()); - }, - ), - ), - const SizedBox( - height: 1, - ), - ColoredBox( - color: Colors.greenAccent, - child: ListTile( - leading: FaIcon( - FontAwesomeIcons.rightFromBracket, - color: colorScheme.background, - ), - title: TextAtom( - 'Log Out', - style: TextStyle( - color: Theme.of(context).textTheme.bodyLarge!.color, - ), - ), - onTap: () => _logout(context), - ), - ), - const SizedBox( - height: 1, - ), - ], - ), - ), - ], - ), - ); - } -} diff --git a/lib/presentation/pages/remote_pipes/remote_pipes_page.dart b/lib/presentation/pages/remote_pipes/remote_pipes_page.dart deleted file mode 100644 index 1fedc23bb..000000000 --- a/lib/presentation/pages/remote_pipes/remote_pipes_page.dart +++ /dev/null @@ -1,51 +0,0 @@ -import 'package:adaptive_action_sheet/adaptive_action_sheet.dart'; -import 'package:auto_route/auto_route.dart'; -import 'package:cybearjinni/presentation/atoms/atoms.dart'; -import 'package:cybearjinni/presentation/molecules/molecules.dart'; -import 'package:cybearjinni/presentation/pages/remote_pipes/widgets/manage_remote_pipes_widget.dart'; -import 'package:flutter/material.dart'; -import 'package:font_awesome_flutter/font_awesome_flutter.dart'; - -@RoutePage() -class RemotePipesPage extends StatelessWidget { - /// Execute when remote pipes press the icon in top right side - void userCogFunction(BuildContext context) { - showAdaptiveActionSheet( - context: context, - actions: <BottomSheetAction>[ - BottomSheetAction( - title: const TextAtom( - '➕ Add remote pipes', - style: TextStyle(color: Colors.green, fontSize: 23), - ), - onPressed: (_) { - // context.router.push(const AddUserToHomeRoute()); - }, - ), - ], - ); - } - - void leftIconFunction(BuildContext context) { - context.router.pop(); - } - - @override - Widget build(BuildContext context) { - return Scaffold( - body: Column( - children: [ - TopBarMolecule( - pageName: 'Remote Pipes', - rightIconFunction: userCogFunction, - leftIcon: FontAwesomeIcons.arrowLeft, - leftIconFunction: leftIconFunction, - ), - Expanded( - child: RemotePipesWidget(), - ), - ], - ), - ); - } -} diff --git a/lib/presentation/pages/remote_pipes/widgets/error_remote_pipes_card_widget.dart b/lib/presentation/pages/remote_pipes/widgets/error_remote_pipes_card_widget.dart deleted file mode 100644 index 1beff35bb..000000000 --- a/lib/presentation/pages/remote_pipes/widgets/error_remote_pipes_card_widget.dart +++ /dev/null @@ -1,42 +0,0 @@ -import 'package:cybearjinni/domain/home_user/home_user_entity.dart'; -import 'package:cybearjinni/presentation/atoms/atoms.dart'; -import 'package:flutter/material.dart'; - -class ErrorRemotePipesCard extends StatelessWidget { - const ErrorRemotePipesCard({ - required this.homeUser, - super.key, - }); - - final HomeUserEntity? homeUser; - - @override - Widget build(BuildContext context) { - return Card( - color: Theme.of(context).colorScheme.error, - child: Padding( - padding: const EdgeInsets.all(4), - child: Column( - children: <Widget>[ - TextAtom( - 'Invalid remote pipes, please, contact support', - style: Theme.of(context) - .primaryTextTheme - .bodyMedium! - .copyWith(fontSize: 18), - ), - const SizedBox(height: 2), - TextAtom( - 'Details for nerds:', - style: Theme.of(context).primaryTextTheme.bodyMedium, - ), - TextAtom( - homeUser!.failureOption.fold(() => '', (f) => f.toString()), - style: Theme.of(context).primaryTextTheme.bodyMedium, - ), - ], - ), - ), - ); - } -} diff --git a/lib/presentation/pages/remote_pipes/widgets/remote_pipes_card_widget.dart b/lib/presentation/pages/remote_pipes/widgets/remote_pipes_card_widget.dart deleted file mode 100644 index 5a87e7b16..000000000 --- a/lib/presentation/pages/remote_pipes/widgets/remote_pipes_card_widget.dart +++ /dev/null @@ -1,50 +0,0 @@ -import 'package:cybearjinni/domain/home_user/home_user_entity.dart'; -import 'package:cybearjinni/presentation/atoms/atoms.dart'; -import 'package:flutter/material.dart'; -import 'package:font_awesome_flutter/font_awesome_flutter.dart'; - -class RemotePipesCard extends StatelessWidget { - const RemotePipesCard({ - required this.homeUser, - super.key, - }); - - final HomeUserEntity? homeUser; - - @override - Widget build(BuildContext context) { - return Container( - decoration: BoxDecoration( - border: Border( - top: BorderSide( - color: Theme.of(context).textTheme.bodyLarge!.color!, - ), - bottom: BorderSide( - color: Theme.of(context).textTheme.bodyLarge!.color!, - ), - ), - ), - height: 100, - child: Center( - child: ListTile( - leading: FaIcon( - FontAwesomeIcons.userGraduate, - color: Theme.of(context).textTheme.bodyLarge!.color, - ), - title: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - TextAtom( - homeUser!.email!.getOrCrash()!, - style: TextStyle( - color: Theme.of(context).textTheme.bodyLarge!.color, - ), - ), - ], - ), - onTap: () {}, - ), - ), - ); - } -} diff --git a/lib/presentation/pages/remote_pipes/widgets/manage_remote_pipes_widget.dart b/lib/presentation/pages/remote_pipes_page.dart similarity index 63% rename from lib/presentation/pages/remote_pipes/widgets/manage_remote_pipes_widget.dart rename to lib/presentation/pages/remote_pipes_page.dart index d92973b0e..1662f52b1 100644 --- a/lib/presentation/pages/remote_pipes/widgets/manage_remote_pipes_widget.dart +++ b/lib/presentation/pages/remote_pipes_page.dart @@ -1,13 +1,57 @@ +import 'package:adaptive_action_sheet/adaptive_action_sheet.dart'; import 'package:auto_route/auto_route.dart'; -import 'package:cbj_integrations_controller/domain/remote_pipes/i_remote_pipes_repository.dart'; -import 'package:cbj_integrations_controller/domain/remote_pipes/remote_pipes_entity.dart'; -import 'package:cbj_integrations_controller/domain/remote_pipes/remote_pipes_value_objects.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:cybearjinni/presentation/atoms/atoms.dart'; import 'package:cybearjinni/presentation/core/snack_bar_service.dart'; +import 'package:cybearjinni/presentation/molecules/molecules.dart'; import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; -/// Show light toggles in a container with the background color from smart room +@RoutePage() +class RemotePipesPage extends StatelessWidget { + /// Execute when remote pipes press the icon in top right side + void userCogFunction(BuildContext context) { + showAdaptiveActionSheet( + context: context, + actions: <BottomSheetAction>[ + BottomSheetAction( + title: const TextAtom( + '➕ Add remote pipes', + style: TextStyle(color: Colors.green, fontSize: 23), + ), + onPressed: (_) { + // context.router.push(const AddUserToHomeRoute()); + }, + ), + ], + ); + } + + void leftIconFunction(BuildContext context) { + context.router.pop(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + body: Column( + children: [ + TopBarMolecule( + pageName: 'Remote Pipes', + rightIconFunction: userCogFunction, + leftIcon: FontAwesomeIcons.arrowLeft, + leftIconFunction: leftIconFunction, + ), + Expanded( + child: RemotePipesWidget(), + ), + ], + ), + ); + } +} + +/// Show light toggles in a container with the background color from smart area /// object class RemotePipesWidget extends StatefulWidget { @override diff --git a/lib/presentation/pages/scenes/scenes_page.dart b/lib/presentation/pages/scenes/scenes_page.dart index f3999c2d3..12ab9dcf2 100644 --- a/lib/presentation/pages/scenes/scenes_page.dart +++ b/lib/presentation/pages/scenes/scenes_page.dart @@ -1,19 +1,52 @@ +import 'dart:collection'; import 'dart:ui'; import 'package:adaptive_action_sheet/adaptive_action_sheet.dart'; import 'package:auto_route/auto_route.dart'; -import 'package:cbj_integrations_controller/domain/room/room_entity.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; +import 'package:cybearjinni/domain/connections_service.dart'; import 'package:cybearjinni/presentation/atoms/atoms.dart'; import 'package:cybearjinni/presentation/molecules/molecules.dart'; -import 'package:cybearjinni/presentation/pages/scenes/widgets/folder_of_scenes.dart'; import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; @RoutePage() -class ScenesPage extends StatelessWidget { - const ScenesPage(this.folderOfScenes); +class ScenesPage extends StatefulWidget { + const ScenesPage(this.area); - final RoomEntity folderOfScenes; + final AreaEntity area; + + @override + State<ScenesPage> createState() => _ScenesPageState(); +} + +class _ScenesPageState extends State<ScenesPage> { + HashMap<String, SceneCbjEntity>? scenes; + + @override + void initState() { + super.initState(); + _initialized(); + } + + Future<void> _initialized() async { + final HashMap<String, SceneCbjEntity> scenecsTemp = + await ConnectionsService.instance.getScenes(); + + final HashMap<String, SceneCbjEntity> scenesInArea = HashMap.fromEntries( + widget.area.areaScenesId.getOrCrash().map((e) { + final SceneCbjEntity? scene = scenecsTemp[e]; + if (scene == null) { + return null; + } + return MapEntry(scene.uniqueId.getOrCrash(), scene); + }).nonNulls, + ); + + setState(() { + scenes = scenesInArea; + }); + } /// Execute when user press the icon in top right side void userCogFunction(BuildContext context) { @@ -44,12 +77,18 @@ class ScenesPage extends StatelessWidget { @override Widget build(BuildContext context) { + if (scenes == null) { + return Scaffold( + body: LoadingPageMolecule(), + ); + } + return Scaffold( body: Container( decoration: BoxDecoration( image: DecorationImage( image: NetworkImage( - folderOfScenes.background.getOrCrash(), + widget.area.background.getOrCrash(), ), fit: BoxFit.cover, ), @@ -62,15 +101,15 @@ class ScenesPage extends StatelessWidget { children: [ TopBarMolecule( pageName: 'Scenes_In_Folder', - rightIconFunction: userCogFunction, leftIcon: FontAwesomeIcons.arrowLeft, leftIconFunction: leftIconFunction, // rightSecondIcon: FontAwesomeIcons.magnifyingGlass, - // ), Expanded( - child: FolderOfScenesWidget(folderOfScenes: folderOfScenes), + child: ScenesGrid( + scenes: scenes!.values.toList(), + ), ), ], ), diff --git a/lib/presentation/pages/scenes/widgets/folder_of_scenes.dart b/lib/presentation/pages/scenes/widgets/folder_of_scenes.dart deleted file mode 100644 index b6ac321b3..000000000 --- a/lib/presentation/pages/scenes/widgets/folder_of_scenes.dart +++ /dev/null @@ -1,93 +0,0 @@ -import 'package:cbj_integrations_controller/domain/room/room_entity.dart'; -import 'package:cbj_integrations_controller/domain/scene/i_scene_cbj_repository.dart'; -import 'package:cbj_integrations_controller/domain/scene/scene_cbj_entity.dart'; -import 'package:cbj_integrations_controller/domain/scene/scene_cbj_failures.dart'; -import 'package:cybearjinni/presentation/atoms/atoms.dart'; -import 'package:cybearjinni/presentation/pages/scenes/widgets/scene_widget.dart'; -import 'package:dartz/dartz.dart' as dartz; -import 'package:flutter/material.dart'; - -class FolderOfScenesWidget extends StatefulWidget { - const FolderOfScenesWidget({required this.folderOfScenes}); - - final RoomEntity folderOfScenes; - - @override - State<FolderOfScenesWidget> createState() => _FolderOfScenesWidgetState(); -} - -class _FolderOfScenesWidgetState extends State<FolderOfScenesWidget> { - late RoomEntity folderOfScenes; - - List<SceneCbjEntity> allScenesInTheRoom = []; - List<SceneCbjEntity>? scenesList; - - late SceneCbjEntity sceneCbj; - - @override - void initState() { - super.initState(); - _initialized(); - } - - Future<void> _initialized() async { - folderOfScenes = widget.folderOfScenes; - - final Map<String, SceneCbjEntity> eitherAllScenes = - await ISceneCbjRepository.instance.getAllScenesAsMap(); - for (final String sceneId in folderOfScenes.roomScenesId.getOrCrash()) { - if (eitherAllScenes.containsKey(sceneId)) { - allScenesInTheRoom.add(eitherAllScenes[sceneId]!); - } - } - - if (allScenesInTheRoom.isEmpty) { - return; - } - - setState(() { - scenesList = allScenesInTheRoom; - }); - } - - SceneCbjEntity getTheScene( - dartz.Either<SceneCbjFailure, SceneCbjEntity> scenesList, - ) { - return scenesList.fold((l) => throw 'Invalid value', (r) => r); - } - - @override - Widget build(BuildContext context) { - final Size screenSize = MediaQuery.of(context).size; - - int gridCrossAxisCount = 2; - if (screenSize.width > 700) { - gridCrossAxisCount = 4; - } - if (scenesList == null) { - return const CircularProgressIndicatorAtom(); - } - if (scenesList!.isEmpty || allScenesInTheRoom.isEmpty) { - return const Center( - child: TextAtom( - 'You can add automations in the plus button', - style: TextStyle( - fontSize: 18, - color: Colors.black, - ), - ), - ); - } - return GridView.builder( - reverse: true, - itemBuilder: (context, index) { - final SceneCbjEntity sceneCbj = scenesList![index]; - return SceneWidget(sceneCbj); - }, - itemCount: scenesList!.length, - gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( - crossAxisCount: gridCrossAxisCount, - ), - ); - } -} diff --git a/lib/presentation/pages/software_info/software_info_page.dart b/lib/presentation/pages/software_info/software_info_page.dart deleted file mode 100644 index 033728f47..000000000 --- a/lib/presentation/pages/software_info/software_info_page.dart +++ /dev/null @@ -1,51 +0,0 @@ -import 'package:adaptive_action_sheet/adaptive_action_sheet.dart'; -import 'package:auto_route/auto_route.dart'; -import 'package:cybearjinni/presentation/atoms/atoms.dart'; -import 'package:cybearjinni/presentation/molecules/molecules.dart'; -import 'package:cybearjinni/presentation/pages/software_info/widgets/software_info_widget.dart'; -import 'package:flutter/material.dart'; -import 'package:font_awesome_flutter/font_awesome_flutter.dart'; - -@RoutePage() -class SoftwareInfoPage extends StatelessWidget { - /// Execute when software nfo press the icon in top right side - void userCogFunction(BuildContext context) { - showAdaptiveActionSheet( - context: context, - actions: <BottomSheetAction>[ - BottomSheetAction( - title: const TextAtom( - '➕ Add software nfo', - style: TextStyle(color: Colors.green, fontSize: 23), - ), - onPressed: (_) { - // context.router.push(const AddUserToHomeRoute()); - }, - ), - ], - ); - } - - void leftIconFunction(BuildContext context) { - context.router.pop(); - } - - @override - Widget build(BuildContext context) { - return Scaffold( - body: Column( - children: [ - TopBarMolecule( - pageName: 'Software Info', - rightIconFunction: userCogFunction, - leftIcon: FontAwesomeIcons.arrowLeft, - leftIconFunction: leftIconFunction, - ), - Expanded( - child: SoftwareInfoWidget(), - ), - ], - ), - ); - } -} diff --git a/lib/presentation/pages/software_info/widgets/error_software_info_card_widget.dart b/lib/presentation/pages/software_info/widgets/error_software_info_card_widget.dart deleted file mode 100644 index ac74e2636..000000000 --- a/lib/presentation/pages/software_info/widgets/error_software_info_card_widget.dart +++ /dev/null @@ -1,42 +0,0 @@ -import 'package:cybearjinni/domain/home_user/home_user_entity.dart'; -import 'package:cybearjinni/presentation/atoms/atoms.dart'; -import 'package:flutter/material.dart'; - -class ErrorSoftwareInfoCard extends StatelessWidget { - const ErrorSoftwareInfoCard({ - required this.homeUser, - super.key, - }); - - final HomeUserEntity? homeUser; - - @override - Widget build(BuildContext context) { - return Card( - color: Theme.of(context).colorScheme.error, - child: Padding( - padding: const EdgeInsets.all(4), - child: Column( - children: <Widget>[ - TextAtom( - 'Invalid software nfo, please, contact support', - style: Theme.of(context) - .primaryTextTheme - .bodyMedium! - .copyWith(fontSize: 18), - ), - const SizedBox(height: 2), - TextAtom( - 'Details for nerds:', - style: Theme.of(context).primaryTextTheme.bodyMedium, - ), - TextAtom( - homeUser!.failureOption.fold(() => '', (f) => f.toString()), - style: Theme.of(context).primaryTextTheme.bodyMedium, - ), - ], - ), - ), - ); - } -} diff --git a/lib/presentation/pages/software_info/widgets/software_info_card_widget.dart b/lib/presentation/pages/software_info/widgets/software_info_card_widget.dart deleted file mode 100644 index e9230606a..000000000 --- a/lib/presentation/pages/software_info/widgets/software_info_card_widget.dart +++ /dev/null @@ -1,50 +0,0 @@ -import 'package:cybearjinni/domain/home_user/home_user_entity.dart'; -import 'package:cybearjinni/presentation/atoms/atoms.dart'; -import 'package:flutter/material.dart'; -import 'package:font_awesome_flutter/font_awesome_flutter.dart'; - -class SoftwareInfoCard extends StatelessWidget { - const SoftwareInfoCard({ - required this.homeUser, - super.key, - }); - - final HomeUserEntity? homeUser; - - @override - Widget build(BuildContext context) { - return Container( - decoration: BoxDecoration( - border: Border( - top: BorderSide( - color: Theme.of(context).textTheme.bodyLarge!.color!, - ), - bottom: BorderSide( - color: Theme.of(context).textTheme.bodyLarge!.color!, - ), - ), - ), - height: 100, - child: Center( - child: ListTile( - leading: FaIcon( - FontAwesomeIcons.userGraduate, - color: Theme.of(context).textTheme.bodyLarge!.color, - ), - title: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - TextAtom( - homeUser!.email!.getOrCrash()!, - style: TextStyle( - color: Theme.of(context).textTheme.bodyLarge!.color, - ), - ), - ], - ), - onTap: () {}, - ), - ), - ); - } -} diff --git a/lib/presentation/pages/software_info/widgets/software_info_widget.dart b/lib/presentation/pages/software_info_page.dart similarity index 80% rename from lib/presentation/pages/software_info/widgets/software_info_widget.dart rename to lib/presentation/pages/software_info_page.dart index ed320cc10..fb1f0bb5d 100644 --- a/lib/presentation/pages/software_info/widgets/software_info_widget.dart +++ b/lib/presentation/pages/software_info_page.dart @@ -1,9 +1,57 @@ +import 'package:adaptive_action_sheet/adaptive_action_sheet.dart'; +import 'package:auto_route/auto_route.dart'; import 'package:cybearjinni/domain/software_info/i_software_info_repository.dart'; import 'package:cybearjinni/domain/software_info/software_info_entity.dart'; import 'package:cybearjinni/presentation/atoms/atoms.dart'; +import 'package:cybearjinni/presentation/molecules/molecules.dart'; import 'package:flutter/material.dart'; +import 'package:font_awesome_flutter/font_awesome_flutter.dart'; -/// Show light toggles in a container with the background color from smart room +@RoutePage() +class SoftwareInfoPage extends StatelessWidget { + /// Execute when software nfo press the icon in top right side + void userCogFunction(BuildContext context) { + showAdaptiveActionSheet( + context: context, + actions: <BottomSheetAction>[ + BottomSheetAction( + title: const TextAtom( + '➕ Add software nfo', + style: TextStyle(color: Colors.green, fontSize: 23), + ), + onPressed: (_) { + // context.router.push(const AddUserToHomeRoute()); + }, + ), + ], + ); + } + + void leftIconFunction(BuildContext context) { + context.router.pop(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + body: Column( + children: [ + TopBarMolecule( + pageName: 'Software Info', + rightIconFunction: userCogFunction, + leftIcon: FontAwesomeIcons.arrowLeft, + leftIconFunction: leftIconFunction, + ), + Expanded( + child: SoftwareInfoWidget(), + ), + ], + ), + ); + } +} + +/// Show light toggles in a container with the background color from smart area /// object class SoftwareInfoWidget extends StatefulWidget { @override diff --git a/lib/presentation/pages/splash_page.dart b/lib/presentation/pages/splash_page.dart index 27b8d4464..ea0cda862 100644 --- a/lib/presentation/pages/splash_page.dart +++ b/lib/presentation/pages/splash_page.dart @@ -1,10 +1,7 @@ import 'dart:io'; import 'package:auto_route/auto_route.dart'; -import 'package:cbj_integrations_controller/domain/i_saved_devices_repo.dart'; -import 'package:cbj_integrations_controller/domain/local_db/i_local_db_repository.dart'; -import 'package:cbj_integrations_controller/infrastructure/node_red/node_red_repository.dart'; -import 'package:cbj_integrations_controller/infrastructure/system_commands/system_commands_manager_d.dart'; +import 'package:cbj_integrations_controller/integrations_controller.dart'; import 'package:cbj_smart_device_flutter/commands/flutter_commands.dart'; import 'package:cybearjinni/domain/connections_service.dart'; import 'package:cybearjinni/domain/i_local_db_repository.dart'; @@ -36,7 +33,7 @@ class _SplashPageState extends State<SplashPage> { await Future.value([ IDbRepository.instance.initializeDb(isFlutter: true), ILocalDbRepository.instance.asyncConstructor(), - ISavedDevicesRepo.instance.setUpAllFromDb(), + // ISavedDevicesRepo.instance.setUpAllFromDb(), ]); MqttServerRepository(); PhoneCommandsD(); diff --git a/pubspec.yaml b/pubspec.yaml index 8b27ed845..781a55677 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: cybearjinni description: CyBear Jinni app to interact with your CyBear Jinni Smart Devices -version: 1.4.7+71 +version: 1.4.8+72 homepage: https://cybearjinni.com publish_to: 'none' @@ -8,15 +8,6 @@ publish_to: 'none' environment: sdk: '>=3.0.0 <4.0.0' -# Don't get confuse, this is from the package flutter_launcher_icons and not flutter_icons -flutter_icons: - ios: true - android: true - windows: true - image_path: "assets/cbj_icon.png" - adaptive_icon_background: "#FFFFFF" - adaptive_icon_foreground: "assets/cbj_icon_adaptive.png" - flutter: uses-material-design: true assets: @@ -41,6 +32,7 @@ dependencies: auto_route: ^7.8.4 # Automatically resizes text to fit perfectly within its bounds. auto_size_text: ^3.0.0 + bonsoir: ^5.1.1 cbj_integrations_controller: git: https://github.com/CyBear-Jinni/cbj_integrations_controller.git cbj_smart_device_flutter: @@ -130,6 +122,7 @@ dependencies: # Helps you discover open ports, devices on subnet and more. network_tools: ^4.0.1 # Querying information about the application package, such as CFBundleVersion + network_tools_flutter: ^1.0.4 package_info_plus: ^4.2.0 # Finding commonly used locations on the filesystem path_provider: ^2.1.1 diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index 0d2ad9a88..aa29811a4 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -6,6 +6,7 @@ #include "generated_plugin_registrant.h" +#include <bonsoir_windows/bonsoir_windows_plugin_c_api.h> #include <connectivity_plus/connectivity_plus_windows_plugin.h> #include <file_selector_windows/file_selector_windows.h> #include <isar_flutter_libs/isar_flutter_libs_plugin.h> @@ -13,6 +14,8 @@ #include <url_launcher_windows/url_launcher_windows.h> void RegisterPlugins(flutter::PluginRegistry* registry) { + BonsoirWindowsPluginCApiRegisterWithRegistrar( + registry->GetRegistrarForPlugin("BonsoirWindowsPluginCApi")); ConnectivityPlusWindowsPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("ConnectivityPlusWindowsPlugin")); FileSelectorWindowsRegisterWithRegistrar( diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index 95f7ed597..acec95e55 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -3,6 +3,7 @@ # list(APPEND FLUTTER_PLUGIN_LIST + bonsoir_windows connectivity_plus file_selector_windows isar_flutter_libs