Settings.cpp

#include "StdAfx.h"
#include "Settings.h"


using namespace Core;

using namespace System;
using namespace System::Diagnostics;


/// [ Constructor ]
static Settings::Settings()
{
    // 現在のフォルダを アプリケーション設定のフォルダに設定する
    m_applicationSettingFolder = Environment::CurrentDirectory;

    // 現在のフォルダを ユーザー設定のフォルダに設定する
    // (フォームデザイナに対応させるために 初期化が必要なため)
    m_userSettingFolder = Environment::CurrentDirectory;


    Debug::WriteLine( "アプリケーション設定のファルダが設定された : " + m_applicationSettingFolder );
}


/// ユーザー設定のフォルダを取得する [ Property ]
String^ Settings::UserSettingFloder::get()
{
    Debug::Assert( m_userSettingFolder != nullptr, "ユーザー設定のフォルダは 定義されている" );
    Debug::Assert( m_userSettingFolder != m_applicationSettingFolder, "ユーザー設定のフォルダとアプリケーション設定のフォルダは異なる" );

    return m_userSettingFolder;
}

/// 作業フォルダを設定する [ Property ]
void Settings::WorkingFolder::set( System::String^ value )
{
    Debug::Assert( m_applicationSettingFolder != value, "アプリケーション設定フォルダとは異なる" );


    // フォルダが存在しなければ、それを作成する
    IO::Directory::CreateDirectory( value );

    // ... 現在のフォルダの設定を変更する
    Environment::CurrentDirectory = value;

    Debug::WriteLine( "作業フォルダが設定された : " + value );


    // ユーザー設定のフォルダを設定する
    m_userSettingFolder = IO::Path::Combine( value, UserSettingFolderName );

    // ... そのフォルダが存在しないならば、それを作成する
    IO::Directory::CreateDirectory( m_userSettingFolder );
}


/// アプリケーションのタイトルを取得する [ Property ]
System::String^ Settings::ApplicationTitle::get()
{
    // アプリケーションのタイトルを取得する
    System::Reflection::AssemblyTitleAttribute^ title
        = safe_cast< System::Reflection::AssemblyTitleAttribute^ >( Attribute::GetCustomAttribute (
        System::Reflection::Assembly::GetExecutingAssembly(),
        System::Reflection::AssemblyTitleAttribute::typeid
        ) );


    // 自分自身のAssembly を取得する
    System::Reflection::Assembly^ assembly = System::Reflection::Assembly::GetExecutingAssembly();
    System::Version^ version = assembly->GetName()->Version;    // バージョン番号

    // バージョン番号のフォーマットを整えて タイトルに連結する
    String^ result = title->Title + String::Format( " {0}.{1}.{2}", version->Major, version->Minor, version->Revision );

#ifdef _DEBUG
    // デバッグ バージョンならば、タイトルにそれを明示する
    result += " < Debug version >";
#endif

    return result;
}