using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

using Microsoft.WindowsMobile.Status;

namespace StateAndNotificationsBroker_CS
{
    public partial class Form1 : Form
    {
        private SystemState sysState;

        public Form1()
        {
            InitializeComponent();
            #if DEBUG
                MinimizeBox = false;
            #else       
                MinimizeBox = true;
            #endif

            sysState = new SystemState(
                  SystemProperty.OwnerEmail, true);

             sysState.Changed += new ChangeEventHandler(sysState_Changed);     
        }

        private void sysState_Changed(object sender, ChangeEventArgs args)
        {
            lstInfo.Items.Clear();
            lstInfo.Items.Add(SystemState.OwnerEmail);
        }

        private void menuItemExit_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void menuItemInfo_Click(object sender, EventArgs e)
        {
            // Получим различную полезную информацию
            lstInfo.Items.Clear();
            lstInfo.Items.Add("Название оператора: " + SystemState.PhoneOperatorName);
            lstInfo.Items.Add("Наличие телефона: " + SystemState.PhoneRadioPresent);
            lstInfo.Items.Add("Наличие камеры: " + SystemState.CameraPresent);
            lstInfo.Items.Add("Ориентация экрана " + SystemState.DisplayRotation);
            lstInfo.Items.Add("Состояние ActiveSync6: " + SystemState.ActiveSyncStatus);
            lstInfo.Items.Add("Непрочитано SMS-сообщений: " + SystemState.MessagingSmsUnread);
            lstInfo.Items.Add("Телефон владельца: " + SystemState.OwnerPhoneNumber);
            lstInfo.Items.Add("Наличие GPRS: " + SystemState.PhoneGprsCoverage);
            lstInfo.Items.Add("Наличие SIM-карты: " + SystemState.PhoneNoSim);
        }

        private void menuItemEmailOwner_Click(object sender, EventArgs e)
        {
            // Получим email владельца устройства
            lstInfo.Items.Clear();
            lstInfo.Items.Add(SystemState.OwnerEmail);
        }

        private void menuItemBattery_Click(object sender, EventArgs e)
        {
            // Уровень зарядки батареи
            BatteryLevel batteryLevel = SystemState.PowerBatteryStrength;
            BatteryState batteryState = SystemState.PowerBatteryState;

            string strBatteryLevel = "Уровень зарядки";
            switch (batteryLevel)
            {
                case BatteryLevel.VeryLow:
                    strBatteryLevel = "Уровень зарядки: Очень низкий (0-20%)";
                    break;
                case BatteryLevel.Low:
                    strBatteryLevel = "Уровень зарядки: Низкий (21-40%)";
                    break;
                case BatteryLevel.Medium:
                    strBatteryLevel = "Уровень зарядки: Средний (41-60%)";
                    break;
                case BatteryLevel.High:
                    strBatteryLevel = "Уровень зарядки: Высокий (61-80)";
                    break;
                case BatteryLevel.VeryHigh:
                    strBatteryLevel = "Уровень зарядки: Очень высокий (81-100%)";
                    break;
            }

            // Состояние батареи
            string strBatteryState = "Состояние батареи: ";
            if ((batteryState & BatteryState.Normal) == BatteryState.Normal)
                strBatteryState += "Нормальное ";
            if ((batteryState & BatteryState.NotPresent) == BatteryState.NotPresent)
                strBatteryState += "Батарея отсутствует ";
            if ((batteryState & BatteryState.Charging) == BatteryState.Charging)
                strBatteryState += "Заряжается ";
            if ((batteryState & BatteryState.Low) == BatteryState.Low)
                strBatteryState += "Низкий заряд ";
            if ((batteryState & BatteryState.Critical) == BatteryState.Critical)
                strBatteryState += "Критическое";

            MessageBox.Show(strBatteryLevel + "\n" + strBatteryState);
        }
    }
}