첨부 소스 코드는 나눔고딕코딩 폰트를 사용합니다.
728x90
반응형
728x170

▶ BatteryStatusType.cs

/// <summary>
/// 배터리 상태 종류
/// </summary>
public enum BatteryStatusType
{
    /// <summary>
    /// 해당 없음
    /// </summary>
    None,

    /// <summary>
    /// 배터리
    /// </summary>
    Battery,

    /// <summary>
    /// 충전중
    /// </summary>
    Charge,

    /// <summary>
    /// 전원
    /// </summary>
    AC
}

 

▶ BatteryManager.cs

using System;
using System.Windows.Forms;

/// <summary>
/// 배터리 관리자
/// </summary>
public class BatteryManager
{
    //////////////////////////////////////////////////////////////////////////////////////////////////// Field
    ////////////////////////////////////////////////////////////////////////////////////////// Private

    #region Field

    /// <summary>
    /// 배터리 상태 종류
    /// </summary>
    private BatteryStatusType batteryStatusType = BatteryStatusType.None;

    /// <summary>
    /// 전력 수명 시간 수
    /// </summary>
    private int powerLifeHourCount = 0;

    /// <summary>
    /// 전력 수명 분 수
    /// </summary>
    private int powerLifeMinuteCount = 0;

    /// <summary>
    /// 전력 수명 퍼센트
    /// </summary>
    private int powerLifePercent = 0;

    #endregion

    //////////////////////////////////////////////////////////////////////////////////////////////////// Property
    ////////////////////////////////////////////////////////////////////////////////////////// Public

    #region 배터리 상태 종류 - BatteryStatusType

    /// <summary>
    /// 배터리 상태 종류
    /// </summary>
    public BatteryStatusType BatteryStatusType
    {
        get
        {
            return this.batteryStatusType;
        }
    }

    #endregion

    #region 전력 수명 시간 수 - PowerLifeHourCount

    /// <summary>
    /// 전력 수명 시간 수
    /// </summary>
    public int PowerLifeHourCount
    {
        get
        {
            return this.powerLifeHourCount;
        }
    }

    #endregion

    #region 전력 수명 분 수 - PowerLifeMinuteCount

    /// <summary>
    /// 전력 수명 분 수
    /// </summary>
    public int PowerLifeMinuteCount
    {
        get
        {
            return this.powerLifeMinuteCount;
        }
    }

    #endregion

    #region 전력 수명 퍼센트 - PowerLifePercent

    /// <summary>
    /// 전력 수명 퍼센트
    /// </summary>
    public int PowerLifePercent
    {
        get
        {
            return this.powerLifePercent;
        }
    }

    #endregion

    //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
    ////////////////////////////////////////////////////////////////////////////////////////// Public

    #region 생성자 - BatteryManager()

    /// <summary>
    /// 생성자
    /// </summary>
    public BatteryManager()
    {
        Refresh();
    }

    #endregion

    //////////////////////////////////////////////////////////////////////////////////////////////////// Method
    ////////////////////////////////////////////////////////////////////////////////////////// Public

    #region 갱신하기 - Refresh()

    /// <summary>
    /// 갱신하기
    /// </summary>
    public void Refresh()
    {
        int powerLifeRemainingSecondCount = SystemInformation.PowerStatus.BatteryLifeRemaining;

        if(SystemInformation.PowerStatus.PowerLineStatus == PowerLineStatus.Offline)
        {
            this.batteryStatusType = BatteryStatusType.Battery;

            this.powerLifeHourCount = powerLifeRemainingSecondCount / 120;

            this.powerLifeMinuteCount = powerLifeRemainingSecondCount / 60 - powerLifeRemainingSecondCount / 120;
        }
        else
        {
            if(SystemInformation.PowerStatus.BatteryLifePercent < 1)
            {   
                this.batteryStatusType = BatteryStatusType.Charge;
            }
            else
            {
                this.batteryStatusType = BatteryStatusType.AC;
            }

            this.powerLifeHourCount   = 0;
            this.powerLifeMinuteCount = 0;
        }

        this.powerLifePercent = Convert.ToInt32(SystemInformation.PowerStatus.BatteryLifePercent * 100f);
    }

    #endregion

    #region 문자열 구하기 - ToString()

    /// <summary>
    /// 문자열 구하기
    /// </summary>
    /// <returns>문자열</returns>
    public override string ToString()
    {
        string batteryStatusTypeString = string.Empty;

        switch(this.batteryStatusType)
        {
            case BatteryStatusType.Battery : batteryStatusTypeString = "배터리"; break;
            case BatteryStatusType.Charge  : batteryStatusTypeString = "충전중"; break;
            case BatteryStatusType.AC      : batteryStatusTypeString = "전원";   break;
        }

        return string.Format("{0}:{1}", batteryStatusTypeString, this.powerLifePercent);
    }

    #endregion
}

 

728x90
반응형
그리드형(광고전용)
Posted by icodebroker

댓글을 달아 주세요