/*
**	Command & Conquer Generals Zero Hour(tm)
**	Copyright 2025 Electronic Arts Inc.
**
**	This program is free software: you can redistribute it and/or modify
**	it under the terms of the GNU General Public License as published by
**	the Free Software Foundation, either version 3 of the License, or
**	(at your option) any later version.
**
**	This program is distributed in the hope that it will be useful,
**	but WITHOUT ANY WARRANTY; without even the implied warranty of
**	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
**	GNU General Public License for more details.
**
**	You should have received a copy of the GNU General Public License
**	along with this program.  If not, see .
*/
// Report.cpp : implementation file
//
#include "stdafx.h"
#include "Babylon.h"
#include "Report.h"
#include 
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CReport dialog
CReport::CReport(CWnd* pParent /*=NULL*/)
	: CDialog(CReport::IDD, pParent)
{
	
	options.translations = TRUE;
	options.dialog = TRUE;
	options.limit = 0;
	langids[0] = LANGID_UNKNOWN;
	filename[0] = 0;
	//{{AFX_DATA_INIT(CReport)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}
void CReport::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CReport)
		// NOTE: the ClassWizard will add DDX and DDV calls here
	//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CReport, CDialog)
	//{{AFX_MSG_MAP(CReport)
	ON_BN_CLICKED(IDC_INVERT, OnInvert)
	ON_BN_CLICKED(IDC_SELECTALL, OnSelectall)
	ON_BN_CLICKED(IDC_SHOW_DETAILS, OnShowDetails)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CReport message handlers
BOOL CReport::OnInitDialog() 
{
	int index;
	LANGINFO	*info;
	limit = (CEdit *) GetDlgItem ( IDC_LIMIT );
	trans_status = (CButton *) GetDlgItem ( IDC_TRANSLATION_STATUS );
	dialog_status = (CButton *) GetDlgItem ( IDC_DIALOG_STATUS );
	show_details = (CButton *) GetDlgItem ( IDC_SHOW_DETAILS );
	ifless = (CButton *) GetDlgItem ( IDC_IFLESS );
	list = (CListBox *) GetDlgItem ( IDC_LANGUAGE );
	items = (CStatic *) GetDlgItem ( IDC_ITEMS );
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	trans_status->SetCheck ( options.translations );
	dialog_status->SetCheck ( options.dialog );
	show_details->SetCheck ( 0 );
	ifless->SetCheck ( 1 );
	limit->EnableWindow ( FALSE );
	ifless->EnableWindow ( FALSE );
	items->EnableWindow ( FALSE );
	limit->SetWindowText ( "100" );
	limit->SetLimitText ( 50 );
	options.limit = 100;
	index = 0;
	while ( (info = GetLangInfo ( index )) )
	{
		list->InsertString ( index,  info->name );
		if ( info->langid == CurrentLanguage )
		{
			list->SetSel ( index );
		}
		index++; 
	}
	num_langs = index;
	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}
void CReport::OnSelectall() 
{
	// TODO: Add your control notification handler code here
	 list->SelItemRange ( TRUE, 0, num_langs-1 );
}
void CReport::OnInvert() 
{
	// TODO: Add your control notification handler code here
	int index = 0;
	while ( index < num_langs )
	{
		list->SetSel ( index,  !list->GetSel ( index ));
		index++;
	}
}
void CReport::OnShowDetails() 
{
	// TODO: Add your control notification handler code here
	if ( show_details->GetCheck () == 0 )
	{
		ifless->EnableWindow ( FALSE );
		limit->EnableWindow ( FALSE );
		items->EnableWindow ( FALSE );
	}
	else
	{
		ifless->EnableWindow ( TRUE );
		limit->EnableWindow ( TRUE );
		items->EnableWindow ( TRUE );
	}	
}
void CReport::OnOK() 
{
	int count;
	int i;
	char buffer[100];
	count = list->GetSelItems ( num_langs, langindices );
	if ( !count )
	{
		AfxMessageBox ( "No languages selected" );
		return;
	}
// get the filename
	CFileDialog fd ( FALSE , NULL, "*.txt",  OFN_OVERWRITEPROMPT | OFN_NOCHANGEDIR );
		
	if ( fd.DoModal () != IDOK )
	{
		return;
	}
	strcpy ( filename, fd.GetPathName ());
	num_langs = 0;
	for ( i = 0; i langid;
		}
	}
	langids[num_langs] = LANGID_UNKNOWN;
	options.dialog = dialog_status->GetCheck ();
	options.translations = trans_status->GetCheck ();
	limit->GetWindowText( buffer, sizeof(buffer)-1);
	options.limit = atoi ( buffer );
	if ( !show_details->GetCheck () )
	{
		options.limit = 0;
	}
	else if ( !ifless->GetCheck () )
	{
		options.limit = INT_MAX;
	}
	
	CDialog::OnOK();
}
void CReport::OnCancel() 
{
	// TODO: Add extra cleanup here
	
	CDialog::OnCancel();
}