#include "stdafx.h"
#include "resource.h"
#include "splash.h"

extern HINSTANCE hInst;
static const char *id_def, *id_text, *id_caption;
char *id_ptext;

static LRESULT CALLBACK inputdialogproc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
	switch (message) {
		case WM_INITDIALOG:
			// 現在は、ダイアログは MS P ゴシックで固定
			// SetChildWindowFont( hDlg );
			SetWindowText(hDlg, id_caption);
			SetDlgItemText(hDlg, 1001, id_text);
			SetDlgItemText(hDlg, 1002, id_def);
			return 1;

		case WM_DROPFILES: // 編集ボックスがファイルをドロップされた
			{
				int n; // ドロップされたファイルの数
				int i; // カウンタ
				int len; // 編集ボックス内にすでに存在する文字列のバイト数
				char fname[MAX_PATH*2];
				char *buf;

				n = DragQueryFile((HDROP)wParam, (UINT)-1, NULL, 0);
				for(i=0 ; i<n ; i++) {
					if (_countof(fname) > DragQueryFile((HDROP)wParam, i, fname, _countof(fname))) {
                        len = GetWindowTextLength( GetDlgItem(hDlg, 1002) );
						if ( len > 0 ) { // すでに文字列が入っていた場合は、そこにスペースを加えてから追加
							buf = (char *)malloc( len + lstrlen(fname) + 2 );
							if ( buf ) {
								GetDlgItemText( hDlg, 1002, buf, len+1 );
								lstrcat(buf, " ");
								lstrcat(buf, fname);
								SetDlgItemText(hDlg, 1002, buf);
								safefree( buf );
							}
						}
						else { // まだ文字列が入っていない場合は、そのまま設定
                            SetDlgItemText(hDlg, 1002, fname);
						}
					}
				}
			}
			break;

		case WM_COMMAND:
			switch ( LOWORD(wParam) ) {
				case IDOK:
					{
						int len;

						len = GetWindowTextLength( GetDlgItem(hDlg, 1002) );
						id_ptext = (char *)malloc( len+1 );
						if ( id_ptext ) {
							GetDlgItemText( hDlg, 1002, id_ptext, len+1 );
						}
						EndDialog(hDlg, 0);
					}
					return 1;
			}
	}
	return 0;
}

EXTERN char *inputdlg(HWND hWnd, const char *def, const char *text, const char *caption)
{
	id_def = def;
	id_text = text;
	id_caption = caption;
	DialogBox(hInst, (LPCTSTR)IDC_NED_DIALOG, hWnd, (DLGPROC)inputdialogproc);
	return id_ptext;
}

EXTERN char *inputdlg_password(HWND hWnd, const char *def, const char *text, const char *caption)
{
	id_def = def;
	id_text = text;
	id_caption = caption;
	DialogBox(hInst, (LPCTSTR)IDC_PED_DIALOG, hWnd, (DLGPROC)inputdialogproc);
	return id_ptext;
}
