diff --git a/config_reseau_ethernet_wifi.qml b/config_reseau_ethernet_wifi.qml index 2a601e1..a5a6bcb 100644 --- a/config_reseau_ethernet_wifi.qml +++ b/config_reseau_ethernet_wifi.qml @@ -453,7 +453,7 @@ Shipheart_page { //--------------------------------------------------------------------------------------- // Canal : - if (wifi_ap_cde !== 0) + if ((wifi_ap_cde !== 0) && (wifi_sta_cde === 0)) // Si STA est actif, le canal AP suivra celui du mode STA ; inutile de l'afficher dans ce cas... { req = 'SELECT Valeur FROM TB_Configuration WHERE Nom="Wifi_ap_canal" '; res = bdd.requete_unique(req); diff --git a/config_reseau_wifi_ap.qml b/config_reseau_wifi_ap.qml index 9755eac..cbf8ec7 100644 --- a/config_reseau_wifi_ap.qml +++ b/config_reseau_wifi_ap.qml @@ -39,6 +39,7 @@ Shipheart_page { // Données : property string ip_ap: "" + property int commande_sta: 0 // Modèles : @@ -180,8 +181,9 @@ Shipheart_page { width: parent.width height: visible ? hauteur_ligne_formulaire : 0 color: "transparent" - visible: !flag_init && (champ_formulaire_Ap_commande.model.get(champ_formulaire_Ap_commande.currentIndex).valeur === 1) -//visible: false + visible: !flag_init && + (champ_formulaire_Ap_commande.model.get(champ_formulaire_Ap_commande.currentIndex).valeur === 1) && + (commande_sta === 0) // Si le mode STA est actif, le canal du mode AP suivra celui du mode STA.... Shipheart_formulaire_label { text: qsTr("Canal") @@ -226,6 +228,35 @@ Shipheart_page { } } + //------------------------------------------------------------------------------- + // Ligne de formulaire : Ap_partage + Rectangle { + width: parent.width + height: visible ? hauteur_ligne_formulaire : 0 + color: "transparent" + visible: !flag_init && + (champ_formulaire_Ap_commande.model.get(champ_formulaire_Ap_commande.currentIndex).valeur === 1) && + (commande_sta === 1) // Si le mode STA est inactif, le partage n'a pas de sens... +//visible: false + + Shipheart_formulaire_label { + text: qsTr("Partage accès STA") + width: parent.width * pourcentage_largeur_labels_formulaire + } + + Shipheart_formulaire_combobox { + id: champ_formulaire_Ap_partage + model: ListModel { } + width: parent.width * (1 - pourcentage_largeur_labels_formulaire) + onActivated: { + shipheart_clic(); + } + } + + Shipheart_formulaire_ligne_separation { + haut_bas_hautbas: shipheart_formulaire_ligne_separation_basse + } + } } } @@ -366,8 +397,16 @@ Shipheart_page { var commande_ap; var mode; var ap_canal; + var ap_partage; + //--------------------------------------------------------------------------------------- + // Commande_sta: + req = 'SELECT Valeur FROM TB_Configuration WHERE Nom="Wifi_sta_cde" '; + res = bdd.requete_unique(req); + commande_sta = Number(res[0]); +//console.log("Etat de la commande STA = " + commande_sta); + //--------------------------------------------------------------------------------------- // Commande AP : req = 'SELECT Valeur FROM TB_Configuration WHERE Nom="Wifi_ap_cde" '; @@ -454,6 +493,21 @@ Shipheart_page { res = bdd.requete_unique(req); ip_ap = res[0]; + //--------------------------------------------------------------------------------------- + // Partage AP : + req = 'SELECT Valeur FROM TB_Configuration WHERE Nom="Wifi_ap_partage_internet" '; + res = bdd.requete_unique(req); + ap_partage = Number(res[0]); + + champ_formulaire_Ap_partage.model.clear(); + champ_formulaire_Ap_partage.model.append({"valeur": 0, "texte": qsTr("Off") }); + champ_formulaire_Ap_partage.model.append({"valeur": 1, "texte": qsTr("On") }); + + // Positionnement de l'index sur la valeur en cours : + i = recherche_index_valeur_modele(ap_partage, champ_formulaire_Ap_partage.model, "ap_partage"); + if (i === -1) champ_formulaire_Ap_partage.currentIndex = recherche_index_valeur_modele(1, champ_formulaire_Ap_partage.model, "ap_partage"); + else champ_formulaire_Ap_partage.currentIndex = i; + flag_init = false; // Indique que l'init est terminée } @@ -483,14 +537,13 @@ Shipheart_page { // Retourne une chaine vide si Ok, le message d'erreur si NOK //============================================================================================================= function check_saisie() - { - + { if (champ_formulaire_Ap_commande.model.get(champ_formulaire_Ap_commande.currentIndex).valeur > 0) { var liste_caracteres_autorisés_ssid_ap = "-."; // En plus des chiffres et des lettres majuscules et minuscules - var regex_ssid_ap = new RegExp("(^[0-9A-Za-z]+$)"); - var liste_caracteres_autorisés_pwd_ap = "-_./="; // En plus des chiffres et des lettres majuscules et minuscules - var regex_pwd_ap = new RegExp("(^[0-9A-Za-z" + liste_caracteres_autorisés_pwd_ap + "]+$)"); + var regex_ssid_ap = new RegExp("^[0-9A-Za-z" + echapper_regex(liste_caracteres_autorisés_ssid_ap) + "]+$"); + var liste_caracteres_autorisés_pwd_ap = "-_./="; // En plus des chiffres et des lettres majuscules et minuscules + var regex_pwd_ap = new RegExp("^[0-9A-Za-z" + echapper_regex(liste_caracteres_autorisés_pwd_ap) + "]+$"); if ((champ_formulaire_Ap_ssid.text.length < 1) || (champ_formulaire_Ap_ssid.text.length > 32)) return(qsTr("Le nom du réseau (SSID) doit comprendre entre 1 et 32 caractères.
Merci d'entrer un nom valide.")); if ((champ_formulaire_Ap_pwd.text.length < 8) || (champ_formulaire_Ap_pwd.text.length > 63)) return(qsTr("Le mot de passe d'accès au réseau doit comprendre entre 8 et 63 caractères.
Merci d'entrer un mot de passe valide.")); @@ -508,6 +561,11 @@ Shipheart_page { return(""); } + function echapper_regex(liste) + { + return liste.replace(/[-\]\\^]/g, "\\$&"); // '-', ']', '\' et '^' ont un sens entre crochets + } + //============================================================================================================= // Mise à jour des valeurs saisies //============================================================================================================= @@ -524,6 +582,8 @@ Shipheart_page { bdd.requete_unique(req); req = 'UPDATE TB_Configuration SET Valeur="' + champ_formulaire_Ap_canal.model.get(champ_formulaire_Ap_canal.currentIndex).valeur + '" WHERE Nom="Wifi_ap_canal" '; bdd.requete_unique(req); + req = 'UPDATE TB_Configuration SET Valeur="' + champ_formulaire_Ap_partage.model.get(champ_formulaire_Ap_partage.currentIndex).valeur + '" WHERE Nom="Wifi_ap_partage_internet" '; + bdd.requete_unique(req); // Demande de rechargement de la config du Wifi : req = 'UPDATE TB_Configuration SET Valeur=1 WHERE Nom="Wifi_new_config" '; diff --git a/config_reseau_wifi_sta.qml b/config_reseau_wifi_sta.qml index 5941be1..d9def0f 100644 --- a/config_reseau_wifi_sta.qml +++ b/config_reseau_wifi_sta.qml @@ -45,6 +45,7 @@ Shipheart_page { property int compteur_scan_wifi_sta: 0 property int stackview_niveau_page: 0 property string bssid: "" + property int sta_bande: 0 // 0=tout (2.4GHz et 5GHz), 1=2.4GHz et 2=5GHz property bool flag_pwd_visible: false property bool flag_wifi_sta_up: false @@ -210,6 +211,35 @@ Shipheart_page { } } + //------------------------------------------------------------------------------- + // Ligne de formulaire : STA_Bande + Rectangle { + width: parent.width + height: visible ? hauteur_ligne_formulaire : 0 + color: "transparent" + visible: !flag_init && + (champ_formulaire_Sta_commande.model.get(champ_formulaire_Sta_commande.currentIndex).valeur === 1) + + Shipheart_formulaire_label { + text: qsTr("Fréquences") + width: parent.width * pourcentage_largeur_labels_formulaire + } + + Shipheart_formulaire_combobox { + id: champ_formulaire_Sta_bande + model: ListModel { } + width: parent.width * (1 - pourcentage_largeur_labels_formulaire) + onActivated: { + shipheart_clic(); + sta_bande = champ_formulaire_Sta_bande.model.get(champ_formulaire_Sta_bande.currentIndex).valeur; + } + } + + Shipheart_formulaire_ligne_separation { + haut_bas_hautbas: shipheart_formulaire_ligne_separation_basse + } + } + } } } @@ -385,10 +415,6 @@ Shipheart_page { var i; var nom_champ, valeur_champ; var commande_sta; - var commande_ap; - var mode; - var ap_canal; - stackview_niveau_page = stackView.depth; @@ -419,6 +445,22 @@ Shipheart_page { if (i === -1) champ_formulaire_Sta_commande.currentIndex = recherche_index_valeur_modele(1, champ_formulaire_Sta_commande.model, "commande_sta"); else champ_formulaire_Sta_commande.currentIndex = i; + //--------------------------------------------------------------------------------------- + // Sta_bande: + req = 'SELECT Valeur FROM TB_Configuration WHERE Nom="Wifi_sta_bande" '; + res = bdd.requete_unique(req); + sta_bande = Number(res[0]); + + champ_formulaire_Sta_bande.model.clear(); + champ_formulaire_Sta_bande.model.append({"valeur": 0, "texte": qsTr("Auto (2.4GHz & 5GHz)") }); + champ_formulaire_Sta_bande.model.append({"valeur": 1, "texte": qsTr("2.4GHz") }); + champ_formulaire_Sta_bande.model.append({"valeur": 2, "texte": qsTr("5GHz") }); + + // Positionnement de l'index sur la valeur en cours : + i = recherche_index_valeur_modele(sta_bande, champ_formulaire_Sta_bande.model, "sta_bande"); + if (i === -1) champ_formulaire_Sta_bande.currentIndex = recherche_index_valeur_modele(1, champ_formulaire_Sta_bande.model, "sta_bande"); + else champ_formulaire_Sta_bande.currentIndex = i; + mise_a_jour(); @@ -457,7 +499,22 @@ Shipheart_page { "qualite_ssid": 0, "connu": false }); - req = 'SELECT Bssid, Presence, Nom, Psk, Canal, Qualite, Connu FROM TB_Wifi_sta ORDER BY Qualite DESC '; + var filtre; + switch(sta_bande) + { + case 1: + filtre = "WHERE Canal<20"; // 2.4GHz seulement + break; + case 2: + filtre = "WHERE Canal>=20"; // 5GHz seulement + break; + case 0: + default: + filtre = ""; // Toutes les fréquences + break; + } + + req = 'SELECT Bssid, Presence, Nom, Psk, Canal, Qualite, Connu FROM TB_Wifi_sta ' + filtre + ' ORDER BY Qualite DESC '; //console.log("req = [ " + req + " ;]"); nb = bdd.requete(req); @@ -534,6 +591,10 @@ Shipheart_page { // Mise à jour dans TB_Configuration : req = 'UPDATE TB_Configuration SET Valeur="' + champ_formulaire_Sta_commande.model.get(champ_formulaire_Sta_commande.currentIndex).valeur + '" WHERE Nom="Wifi_sta_cde" '; bdd.requete_unique(req); + + req = 'UPDATE TB_Configuration SET Valeur="' + champ_formulaire_Sta_bande.model.get(champ_formulaire_Sta_bande.currentIndex).valeur + '" WHERE Nom="Wifi_sta_bande" '; + bdd.requete_unique(req); + req = 'UPDATE TB_Configuration SET Valeur="' + champ_formulaire_Sta_liste_ssid.model.get(champ_formulaire_Sta_liste_ssid.currentIndex).bssid + '" WHERE Nom="BSSID_Wifi_sta" '; bdd.requete_unique(req); diff --git a/home.qml b/home.qml index 4270a67..f6df195 100644 --- a/home.qml +++ b/home.qml @@ -2991,11 +2991,14 @@ console.log("Exécution de la commande [ " + commande + " ]"); res = bdd.requete_unique(req); adresse = res[0]; - req = 'SELECT Nom, Canal, Qualite FROM TB_Wifi_sta WHERE Bssid="' + bssid + '" '; + req = 'SELECT Nom, Qualite FROM TB_Wifi_sta WHERE Bssid="' + bssid + '" '; res = bdd.requete_unique(req); nom = res[0]; - canal = Number(res[1]); - qualite = Number(res[2]); + qualite = Number(res[1]); + + req = 'SELECT Valeur FROM TB_Systeme WHERE Nom="Canal_wifi_sta" '; + res = bdd.requete_unique(req); + canal = res[0]; msg += ""; @@ -3051,7 +3054,7 @@ console.log("Exécution de la commande [ " + commande + " ]"); res = bdd.requete_unique(req); nom = res[0]; - req = 'SELECT Valeur FROM TB_Configuration WHERE Nom="Wifi_ap_canal" '; + req = 'SELECT Valeur FROM TB_Systeme WHERE Nom="Canal_wifi_ap" '; res = bdd.requete_unique(req); canal = res[0];