void BtnGCNMapClick(object sender, EventArgs e) { Double dLat = Double.MaxValue; Double dLon = Double.MaxValue; String sLat = ""; String sLon = ""; bool bOK = ParameterObject.TryToConvertCoordinates(tbGCNCenter.Text, ref sLat, ref sLon); if (sLat != CoordConvHMI._sErrorValue) { dLat = MyTools.ConvertToDouble(sLat); } if (sLon != CoordConvHMI._sErrorValue) { dLon = MyTools.ConvertToDouble(sLon); } if (bOK) { _daddy.HandlerToDisplayCoordinates(dLat, dLon); } else { MessageBox.Show(_sErrTitle, _sErrTitle, MessageBoxButtons.OK, MessageBoxIcon.Error); } }
void BtnGCNCreateClick(object sender, EventArgs e) { // On vérifie // coordonnées Double dLat = Double.MaxValue; Double dLon = Double.MaxValue; String sLat = ""; String sLon = ""; bool bOK = ParameterObject.TryToConvertCoordinates(tbGCNCenter.Text, ref sLat, ref sLon); if (sLat != CoordConvHMI._sErrorValue) { dLat = MyTools.ConvertToDouble(sLat); } if (sLon != CoordConvHMI._sErrorValue) { dLon = MyTools.ConvertToDouble(sLon); } if (!bOK) { DisplayError(lblGCNCentre.Text, _daddy.GetTranslator().GetString("WaypointCoord"), tbGCNCenter.Text, ""); return; } // nom if (tbGCNName.Text == "") { DisplayError(lblGCNNom.Text, _daddy.GetTranslator().GetString("lblnotempty"), tbGCNName.Text, ""); return; } // radius Int32 radius = 0; if (!Int32.TryParse(tbGCNRadius.Text, out radius)) { DisplayError(lblGCNRadius.Text, _daddy.GetTranslator().GetString("lblnotnumber"), tbGCNRadius.Text, ""); return; } // email if ((cbGCNEmails.Visible) && (cbGCNEmails.SelectedIndex == -1)) { DisplayError(lblGCNEmail.Text, _daddy.GetTranslator().GetString("lblvalue"), "", ""); return; } String email = ""; if (cbGCNEmails.Items.Count != 0) { int pos = cbGCNEmails.SelectedIndex; email = cbGCNEmails.Items[pos].ToString(); } // type // au moins une croix quelque part... // int associé au type de cache, nom du type de cache, liste des commandes POST pour kind of notif // Tuple<int, string, List<String> // on va créer un dico avec comme clé le type de cache Dictionary <String, Tuple <int, string, List <String> > > dicoCreation = new Dictionary <string, Tuple <int, string, List <string> > >(); // On parcourt toutes les lignes, sauf la première qui correspond aux types for (int i = 1; i < lvGCNGrid.Items.Count; i++) { // On a l'item EXListViewItem lvi = (EXListViewItem)(lvGCNGrid.Items[i]); // On parcourt ses sous items for (int k = 1; k < lvi.SubItems.Count; k++) { EXBoolListViewSubItem svi = lvi.SubItems[k] as EXBoolListViewSubItem; if (svi != null) { // On a une valeur checkable if (svi.BoolValue) { // Et elle est checkée !! // On construit ce qu'il nous faut maintenant //msg += listOfCacheTypes[k-1] + " " + listOfCacheTypesId[k-1] + " " + listOfAlloweKindPerCacheType[i-1].Item1 + " " + listOfAlloweKindPerCacheType[i-1].Item2[k-1] + "\r\n"; String typeofcache = listOfCacheTypes[k - 1]; int typeofcacheid = listOfCacheTypesId[k - 1]; String kindofnotifreadable = listOfAlloweKindPerCacheType[i - 1].Item1; String kindofnotifpost = "ctl00$ContentBody$LogNotify$cblLogTypeList$" + listOfAlloweKindPerCacheType[i - 1].Item2[k - 1]; if (dicoCreation.ContainsKey(typeofcache)) { // On met à jour la liste des kind of notif Tuple <int, string, List <String> > obj = dicoCreation[typeofcache]; obj.Item3.Add(kindofnotifpost); } else { Tuple <int, string, List <String> > obj = new Tuple <int, string, List <string> >(typeofcacheid, typeofcache, new List <string>(new string[] { kindofnotifpost })); dicoCreation.Add(typeofcache, obj); } } } } } if (dicoCreation.Count == 0) { DisplayError(lblGCNGrid.Text, _daddy.GetTranslator().GetString("lblvalue"), "", ""); return; } /* * foreach(KeyValuePair<String, Tuple<int, string, List<String>>> pair in dicoCreation) * { * Tuple<int, string, List<String>> obj = pair.Value; * msg += obj.Item1.ToString() + " " + obj.Item2 + " -> "; * foreach(String s in obj.Item3) * { * msg += s + " "; * } * msg += "\r\n"; * } * _daddy.MSG(msg); * return; */ // On est valide, on peut créer _daddy._cacheDetail._gmap.ControlTextLatLon = null; // Go création CookieContainer cookieJar = _daddy.CheckGCAccount(true, false); String url = "https://www.geocaching.com/notify/edit.aspx"; bool error = false; foreach (KeyValuePair <String, Tuple <int, string, List <String> > > pair in dicoCreation) { Tuple <int, string, List <String> > obj = pair.Value; // On demande la page par défaut pour initialiser une nouvelle demande HttpWebRequest objRequest = (HttpWebRequest)WebRequest.Create(url); objRequest.Proxy = _daddy.GetProxy(); // Là encore, on peut virer le proxy si non utilisé (NULL) objRequest.CookieContainer = cookieJar; // surtout récupérer le container de cookie qui est maintenant renseigné avec le cookie d'authentification HttpWebResponse objResponse = (HttpWebResponse)objRequest.GetResponse(); String post_response; using (StreamReader responseStream = new StreamReader(objResponse.GetResponseStream())) { post_response = responseStream.ReadToEnd(); responseStream.Close(); } // On regarde si on a un message de warning if (NotificationsManager.CheckWarningMessage(_daddy, post_response)) { // Shit error = true; break; } // Une mise à jour pour définir le type de cache String post_string = NotificationsManager.GeneratePostString(_daddy, post_response, dLat, dLon, radius, tbGCNName.Text, obj, email, true); post_response = NotificationsManager.GeneratePostRequets(_daddy, url, post_string, cookieJar); // Une mise à jour pour définir le type de notif post_string = NotificationsManager.GeneratePostString(_daddy, post_response, dLat, dLon, radius, tbGCNName.Text, obj, email, true); post_response = NotificationsManager.GeneratePostRequets(_daddy, url, post_string, cookieJar); if (NotificationsManager.CheckValidationMessage(_daddy, post_response)) { // Shit error = true; break; } } if (!error) { _daddy.MsgActionDone(this); } this.DialogResult = DialogResult.OK; this.Close(); }