/// <summary> /// Конструктор, ініціалізує новий екземпляр класа OpenWeather, вказується APPID, номер населеного пункта, мова, температурна шкала та налаштування проксі сервера. /// </summary> /// <param name="idClient">APPID (API key) на сайті: http://openweathermap.org/ .</param> /// <param name="idCity">ID (номер населеного пункта).</param> /// <param name="language">Мова, по замовчуванню українська (OWLanguage.uk).</param> /// <param name="scale">Температурна шкала, по замовчуванню, шкала Цельсія (Scale.Celsius).</param> /// <param name="proxy">Проксі сервер, по замовчуванню, не застосовується (null).</param> public OpenWeather(string idClient, int idCity, OWLanguage language = OWLanguage.uk, Scale scale = Scale.Celsius, WebProxy proxy = null) { IdClient = idClient; IdCity = idCity; Language = language; TemperatureScale = scale; Proxy = proxy; web.Encoding = Encoding.UTF8; web.Proxy = proxy; }
/// <summary> /// Метод повертає колекцію ("ключ-значення"/"населений пункт-код населеного пункта"). /// </summary> /// <param name="language">Мова, на якій будуть видаватися назви населених пунктів.</param> /// <returns>Колекція, яка містить назви населених пунктів та їх коди для OpenWeatherMap.</returns> public static SortedList <string, int> GetCities(OWLanguage language) { XmlDocument doc = new XmlDocument(); doc.LoadXml(Properties.Resources.cities); SortedList <string, int> list = new SortedList <string, int>(); foreach (XmlNode x in doc.SelectNodes("/list/city")) { list.Add(x.Attributes[language.ToString()].Value, int.Parse(x.Attributes["id"].Value)); } return(list); }
[STAThread] // вказує запускати програму в одному потоці static void Main() { OWLanguage language = (OWLanguage)Enum.Parse(typeof(OWLanguage), Properties.Settings.Default.Language); MemberInfo[] arrInfo = language.GetType().GetMember(language.ToString()); object[] attributes = arrInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false); Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(((DescriptionAttribute)attributes[0]).Description); bool instance = false; using (new Mutex(true, "FeD_Lviv.Weather", out instance)) { if (instance) { Log.Info("Запуск програми"); Application.EnableVisualStyles(); // підключення візуальних стилів Application.SetCompatibleTextRenderingDefault(false); // задається значения по замовчуванню для властивості UseCompatibleTextRendering (для всіх компонентів, які мають дану властивість) if (Properties.Settings.Default.IsFirst) { new SettingsDialog(null).ShowDialog(); if (language != (OWLanguage)Enum.Parse(typeof(OWLanguage), Properties.Settings.Default.Language)) { language = (OWLanguage)Enum.Parse(typeof(OWLanguage), Properties.Settings.Default.Language); arrInfo = language.GetType().GetMember(language.ToString()); attributes = arrInfo[0].GetCustomAttributes(typeof(DescriptionAttribute), false); Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(((DescriptionAttribute)attributes[0]).Description); } } Application.Run(new MainForm()); Log.Log(LogLevel.Info, "Вихід з програми"); } else { ErrorForm form = new ErrorForm(Global.OnlyInstance); form.StartPosition = FormStartPosition.CenterScreen; form.ShowDialog(); } } }