//////////////////////////////////////////
// User.h
// Copyright (c) 02/09/2022 by Ysama
//////////////////////////////////////////
////////////
//定数の定義
////////////
#define UP				FALSE
#define DOWN 			TRUE
#define NO_OF_SUBITEM	3

//////////////////
//コモンダイアログ
//////////////////
CMNDLG g_Cmndlg;

//////////////////
//拡張子チェック
//////////////////
CEXTCHK g_ExtChk;

///////////////
//ファイルパス
///////////////
char* g_Path;		//ファイルリストフォールダーへのパス
char* g_Ext;		//ファイルリストファイルの拡張子

////////////////////
//ファイルフィルター
////////////////////
char* g_LFlt;		//リストファイルフィルターへのポインター
char* g_MFlt;		//メディアファイルフィルターへのポインター

////////////////////////
//ファイルリストファイル
////////////////////////
CSTR g_File;

//////////////////////
//データ処理用CSTR変数
//////////////////////
CSTR g_Data;

////////////////////////////////
//ポップアップメニュ−のハンドル
////////////////////////////////
HMENU g_hPopup;

/////////////
//D&D用フラグ
/////////////
bool g_ByFile = FALSE;

//////////////////////////
//サブアイテムのソート関連
//////////////////////////
//列とソート方法の配列
bool sortsubno[NO_OF_SUBITEM] = {FALSE};
//ソートコールバック関数
int CALLBACK CompProc(LPARAM lp1, LPARAM lp2, LPARAM lpSort) {

	static int nItem1, nItem2;
	static char buf1[MAX_PATH], buf2[MAX_PATH];
	//アイテムの検索
	nItem1 = FileList.m_ListView.FindItem(-1, NULL, lp1);
	nItem2 = FileList.m_ListView.FindItem(-1, NULL, lp2);
	//アイテム情報の取得
	FileList.m_ListView.GetItemText(nItem1, (int)lpSort, buf1, MAX_PATH);
	FileList.m_ListView.GetItemText(nItem2, (int)lpSort, buf2, MAX_PATH);
	if(sortsubno[(bool)lpSort])
		return(strcmp(buf1, buf2));
	else
		return(strcmp(buf1, buf2) * -1);
}

////////////////////////////
//カンマ区切り文字切り出し
//★str 文字列は切り出した文
//字列だけ短縮されるので注意
////////////////////////////
char* GetDelimtStr(char* str) {

	static char buff[MAX_PATH * 4];	//取り敢えず1K bytes確保
	char *cp = str;
	int len = 0;
	switch(*cp) {
	case 0:
			return 0;			//NULL終端を指していれば単に帰る（FALSE）
	case '\"':					//「""」処理
		cp++;					//'\"'の次に進める
		while(*cp != '\"') {
			buff[len] = *cp; 	//buffへのコピー
			cp++;
			len++;
		}
		cp++;					//cpは'\"'の次の','へ進める
		buff[len] = '\0';		//buffのNULL終端処理
		break;
	default:					//「""」以外
		//','でも'\n'でもNullでもなければ
		while(*cp != ',' && *cp != '\n' && *cp) {
			buff[len] = *cp;	//strデータをbuffにコピーしてゆく
			cp++;
			len++;
		}
		buff[len] = '\0';		//buffのNULL終端処理
		break;
	}
	if(*cp){					//cpがNULL終端を指していなければ
		cp++;					//','や'\n'を指しているので一つ進め
	}
	lstrcpy(str, cp);			//残余の文字列を文字列先頭に移動
	return buff;				//切り取った文字列を返す（TRUE）
}
