// ★コメント未記入
// SettingCommonSheet.cpp : インプリメンテーション ファイル
/*
		2004-05-10	b031228 (3204)へぼぺとの連携(moralog)
		2004-05-10	b040111 (3344) 共通設定のユニコード文字で追加のボタンを押すと強制終了 (moralog)
*/


#include "stdafx.h"
#include "shitarabian.h"
#include "SettingCommonSheet.h"

#include "GeneralSetting.h"
#include "SettingPath.h"
#include "ShitarabianDoc.h"
#include "ShitarabianView.h"
#include "ExeCommon.h"
#include "ShitarabianPlugInManager.h"
#include "MainFrm.h"
#include "EditDrawer.h"


#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CSettingCommonSheet ダイアログ


CSettingCommonSheet::CSettingCommonSheet(CWnd* pParent /*=NULL*/)
	: CDialog(CSettingCommonSheet::IDD, pParent)
{
	//{{AFX_DATA_INIT(CSettingCommonSheet)
		// メモ - ClassWizard はこの位置にマッピング用のマクロを追加または削除します。
	//}}AFX_DATA_INIT
}


void CSettingCommonSheet::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CSettingCommonSheet)
	DDX_Control(pDX, IDC_SETTING_TAB, m_tabSheet);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CSettingCommonSheet, CDialog)
	//{{AFX_MSG_MAP(CSettingCommonSheet)
	ON_BN_CLICKED(IDC_SETTING_REFLECT, OnSettingReflect)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSettingCommonSheet メッセージ ハンドラ

BOOL CSettingCommonSheet::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// 現在の設定を一時書き出す
//	m_pGeneralSetting->Write();
//	CShitarabianPlugInManager::GetInstance()->OnSave( m_pDoc );

	// ページの追加
	m_tabSheet.InsertItem( TCIF_TEXT|TCIF_PARAM, 0, "動作", 0, (LPARAM)&m_SettingMarginDlg );
	m_tabSheet.InsertItem( TCIF_TEXT|TCIF_PARAM, 1, "上下反転文字", 0, (LPARAM)&m_SettingFlipDlg );
	m_tabSheet.InsertItem( TCIF_TEXT|TCIF_PARAM, 2, "左右反転文字", 0, (LPARAM)&m_SettingMirrorDlg );
// ▼ (3344) BGN 2004.05.12 (moralog) Unicode文字描画自動化
	m_tabSheet.InsertItem( TCIF_TEXT|TCIF_PARAM, 3, "自動バックアップ", 0, (LPARAM)&m_SettingAutoBackupDlg );
	m_tabSheet.InsertItem( TCIF_TEXT|TCIF_PARAM, 4, "関連付け", 0, (LPARAM)&m_SettingRelationDlg );
	m_tabSheet.InsertItem( TCIF_TEXT|TCIF_PARAM, 5, "ランチャー", 0, (LPARAM)&m_SettingLaunchDlg );
/*
// ▽ original BGN
	m_tabSheet.InsertItem( TCIF_TEXT|TCIF_PARAM, 3, "ﾕﾆｺｰﾄﾞ文字", 0, (LPARAM)&m_SettingUnicoderDlg );
	m_tabSheet.InsertItem( TCIF_TEXT|TCIF_PARAM, 4, "自動バックアップ", 0, (LPARAM)&m_SettingAutoBackupDlg );
	m_tabSheet.InsertItem( TCIF_TEXT|TCIF_PARAM, 5, "関連付け", 0, (LPARAM)&m_SettingRelationDlg );
// ▼ (3204) BGN 2004.05.10 (moralog) ランチャツールバー追加
	m_tabSheet.InsertItem( TCIF_TEXT|TCIF_PARAM, 6, "ランチャー", 0, (LPARAM)&m_SettingLaunchDlg );
// ▲ (3204) END
// △ original END
*/
// ▲ (3344) END

	// 各子ダイアログの初期化
	CreatePagez();

	// とりあえず１ページ目を表示
	m_SettingMarginDlg.ShowWindow( SW_SHOW );
	PostMessage( WM_PAINT, 0, 0 );
	
	return TRUE;  // コントロールにフォーカスを設定しないとき、戻り値は TRUE となります
	              // 例外: OCX プロパティ ページの戻り値は FALSE となります
}

void CSettingCommonSheet::OnCancel() 
{
	// TODO: この位置に特別な後処理を追加してください。
	
	CDialog::OnCancel();
}

void CSettingCommonSheet::OnOK() 
{
	OnSettingReflect();
	CDialog::OnOK();
}


/*-----------------------------------------------------------------------------
[名称]	設定書き出し
[機能]	設定をファイルへ保存する。
[戻値]	なし
[備考]	書き出しフォルダが CSettingPath に正しく設定されていること。
-----------------------------------------------------------------------------*/
void CSettingCommonSheet::WriteToGeneral()
{
	UpdateData( TRUE );

	m_SettingMarginDlg.WriteToGeneral();

//	CGeneralSetting*	pGeneralSetting	= CGeneralSetting::GetInstance();
//	pGeneralSetting->SetExt( m_strExt );
}


/*-----------------------------------------------------------------------------
[名称]	設定読み込み
[機能]	設定種類をコンボボックスへ列挙する。
[戻値]	なし
[備考]	なし
-----------------------------------------------------------------------------*/
void CSettingCommonSheet::ReadFromGeneral()
{
	m_SettingMarginDlg.ReadFromGeneral();
}

void CSettingCommonSheet::OnSettingReflect() 
{
	// ダイアログのOK処理
	m_SettingMarginDlg.Confirm();
	m_SettingFlipDlg.Confirm();
	m_SettingMirrorDlg.Confirm();
// ▼ (3344) BGN 2004.05.12 (moralog) Unicode文字描画自動化
// ▽ original BGN
//	m_SettingUnicoderDlg.Confirm();
// △ original END
// ▲ (3344) END
	m_SettingRelationDlg.Confirm();
	m_SettingAutoBackupDlg.Confirm();
// ▼ (3204) BGN 2004.05.10 (moralog) ランチャツールバー追加
	m_SettingLaunchDlg.Confirm();
// ▲ (3204) END

	// ダイアログ設定の反映
	{
// ▼ (3344) BGN 2004.05.12 (moralog) Unicode文字描画自動化
// ▽ original BGN
//		// Unicode
//		CUnicoder*		pUnicoder = CUnicoder::GetInstance();
//		pUnicoder->GetList()->RemoveAll();
//		pUnicoder->GetList()->Append( *(m_SettingUnicoderDlg.m_FontList.GetList()) );
//		pUnicoder->SetEnable( m_SettingUnicoderDlg.m_bEnable );
// △ original END
// ▲ (3344) END

		// 設定の保存
		WriteToGeneral();
		m_pGeneralSetting->Write();
		CShitarabianPlugInManager::GetInstance()->OnSave( m_pDoc );
	}

	// 再描画
	// ＨＴＭＬ文字符号設定の更新による表示情報再構築
	m_pDoc->UpdateEmphasis();
	m_pDoc->SetAllUpdate();
	m_pDoc->ReDraw();
}

BOOL CSettingCommonSheet::DestroyWindow() 
{
	m_tabSheet.DeleteAllItems();

	DestroyPagez();
	
	return CDialog::DestroyWindow();
}


/*-----------------------------------------------------------------------------
[名称]	ページダイアログの破棄
[機能]	各子ダイアログの破棄処理。
[戻値]	なし
[備考]	なし
-----------------------------------------------------------------------------*/
void CSettingCommonSheet::DestroyPagez()
{
	m_SettingMarginDlg.DestroyWindow();
	m_SettingFlipDlg.DestroyWindow();
	m_SettingMirrorDlg.DestroyWindow();
// ▼ (3344) BGN 2004.05.12 (moralog) Unicode文字描画自動化
// ▽ original BGN
//	m_SettingUnicoderDlg.DestroyWindow();
// △ original END
// ▲ (3344) END
	m_SettingRelationDlg.DestroyWindow();
	m_SettingAutoBackupDlg.DestroyWindow();
// ▼ (3204) BGN 2004.05.10 (moralog) ランチャツールバー追加
	m_SettingLaunchDlg.DestroyWindow();
// ▲ (3204) END
}


/*-----------------------------------------------------------------------------
[名称]	ページダイアログの初期化
[機能]	各子ダイアログの初期化処理。
[戻値]	なし
[備考]	なし
-----------------------------------------------------------------------------*/
void CSettingCommonSheet::CreatePagez()
{
	// 余白設定
	m_SettingMarginDlg.Create( IDD_SETTING_MARGIN, &m_tabSheet );

	// Flip, Mirror
	m_SettingFlipDlg.Attach( CGeneralSetting::GetInstance()->GetFlipz() );
	m_SettingFlipDlg.Create( IDD_FLIP, &m_tabSheet );
	m_SettingMirrorDlg.Attach( CGeneralSetting::GetInstance()->GetMirrorz() );
	m_SettingMirrorDlg.Create( IDD_FLIP, &m_tabSheet );

// ▼ (3344) BGN 2004.05.12 (moralog) Unicode文字描画自動化
// ▽ original BGN
//	// ユニコード文字
//	CUnicoder*		pUnicoder = CUnicoder::GetInstance();
//	m_SettingUnicoderDlg.m_FontList.GetList()->RemoveAll();
//	m_SettingUnicoderDlg.m_FontList.GetList()->Append( *(pUnicoder->GetList()) );
//	m_SettingUnicoderDlg.m_bEnable = pUnicoder->GetEnable();
//	m_SettingUnicoderDlg.Create( IDD_UNICODER, &m_tabSheet );
// △ original END
// ▲ (3344) END

	// 関連付け
	m_SettingRelationDlg.Create( IDD_RELATION, &m_tabSheet );

	// 自動バックアップ
	m_SettingAutoBackupDlg.Create( IDD_SETTING_AUTOBACKUP, &m_tabSheet );

// ▼ (3204) BGN 2004.05.10 (moralog) ランチャツールバー追加
	// ランチャ
	m_SettingLaunchDlg.Create( IDD_LAUNCH, &m_tabSheet );
// ▲ (3204) END

	m_tabSheet.ReflectPagez();
}
