/// <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);
        }
Example #3
0
        [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();
                }
            }
        }