Add UI for retrying file transfer.
Fix bugs of file transfer queues.
Modify documents.
PUSHBUTTON "\83e\83X\83g",SOUND_ERROR_TEST,166,88,37,13\r
END\r
\r
-downerr_dlg DIALOGEX 0, 0, 182, 65\r
+downerr_dlg DIALOG 0, 0, 223, 103\r
STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | WS_POPUP | WS_CAPTION\r
CAPTION "FFFTP\81F\83G\83\89\81["\r
-FONT 9, "\82l\82r \82o\83S\83V\83b\83N", 0, 0, 0x1\r
+FONT 9, "\82l\82r \82o\83S\83V\83b\83N"\r
BEGIN\r
- DEFPUSHBUTTON "\82±\82Ì\83t\83@\83C\83\8b\82ð\92\86\8e~",IDOK,10,47,76,14\r
- PUSHBUTTON "\91S\82Ä\92\86\8e~",IDCANCEL,95,47,76,14\r
- LTEXT "\82ª\83_\83E\83\93\83\8d\81[\83h\82Å\82«\82Ü\82¹\82ñ\82Å\82µ\82½\81B",-1,16,16,138,10\r
- LTEXT "",UPDOWN_ERR_FNAME,7,4,168,8,SS_NOPREFIX\r
- EDITTEXT UPDOWN_ERR_MSG,7,28,168,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER,WS_EX_STATICEDGE\r
+ CONTROL "\8cã\82Å\8fã\8f\91\82«(&O)",DOWN_EXIST_OVW,"Button",BS_AUTORADIOBUTTON | WS_GROUP,7,46,99,10\r
+ CONTROL "\8cã\82Å\83\8a\83W\83\85\81[\83\80(&R)",DOWN_EXIST_RESUME,"Button",BS_AUTORADIOBUTTON,7,58,99,10\r
+ CONTROL "\83_\83E\83\93\83\8d\81[\83h\82µ\82È\82¢(&N)",DOWN_EXIST_IGNORE,"Button",BS_AUTORADIOBUTTON,7,70,99,10\r
+ DEFPUSHBUTTON "OK",IDOK,8,85,50,14,WS_GROUP\r
+ PUSHBUTTON "\88È\8d~\91S\82Ä(&A)",IDOK_ALL,63,85,50,14\r
+ PUSHBUTTON "\91S\82Ä\92\86\8e~(&S)",IDCANCEL,118,85,50,14\r
+ PUSHBUTTON "\83w\83\8b\83v",9,173,85,41,14\r
+ LTEXT "\82ª\83_\83E\83\93\83\8d\81[\83h\82Å\82«\82Ü\82¹\82ñ\82Å\82µ\82½\81B",-1,7,16,184,10\r
+ LTEXT "",UPDOWN_ERR_FNAME,7,4,184,8,SS_NOPREFIX\r
+ EDITTEXT UPDOWN_ERR_MSG,7,28,209,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER,WS_EX_STATICEDGE\r
END\r
\r
-uperr_dlg DIALOGEX 0, 0, 182, 65\r
+uperr_dlg DIALOG 0, 0, 223, 103\r
STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | WS_POPUP | WS_CAPTION\r
CAPTION "FFFTP\81F\83G\83\89\81["\r
-FONT 9, "\82l\82r \82o\83S\83V\83b\83N", 0, 0, 0x1\r
+FONT 9, "\82l\82r \82o\83S\83V\83b\83N"\r
BEGIN\r
- DEFPUSHBUTTON "\82±\82Ì\83t\83@\83C\83\8b\82ð\92\86\8e~",IDOK,9,47,76,14\r
- PUSHBUTTON "\91S\82Ä\92\86\8e~",IDCANCEL,95,47,76,14\r
- LTEXT "\82ª\83A\83b\83v\83\8d\81[\83h\82Å\82«\82Ü\82¹\82ñ\82Å\82µ\82½\81B",-1,21,16,137,10\r
- LTEXT "",UPDOWN_ERR_FNAME,7,4,168,8,SS_NOPREFIX\r
- EDITTEXT UPDOWN_ERR_MSG,7,29,168,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER,WS_EX_STATICEDGE\r
+ CONTROL "\8cã\82Å\8fã\8f\91\82«(&O)",DOWN_EXIST_OVW,"Button",BS_AUTORADIOBUTTON | WS_GROUP,7,46,99,10\r
+ CONTROL "\8cã\82Å\83\8a\83W\83\85\81[\83\80(&R)",DOWN_EXIST_RESUME,"Button",BS_AUTORADIOBUTTON,7,58,99,10\r
+ CONTROL "\83A\83b\83v\83\8d\81[\83h\82µ\82È\82¢(&N)",DOWN_EXIST_IGNORE,"Button",BS_AUTORADIOBUTTON,7,70,99,10\r
+ DEFPUSHBUTTON "OK",IDOK,8,85,50,14,WS_GROUP\r
+ PUSHBUTTON "\88È\8d~\91S\82Ä(&A)",IDOK_ALL,63,85,50,14\r
+ PUSHBUTTON "\91S\82Ä\92\86\8e~(&S)",IDCANCEL,118,85,50,14\r
+ PUSHBUTTON "\83w\83\8b\83v",9,173,85,41,14\r
+ LTEXT "\82ª\83A\83b\83v\83\8d\81[\83h\82Å\82«\82Ü\82¹\82ñ\82Å\82µ\82½\81B",-1,7,16,184,10\r
+ LTEXT "",UPDOWN_ERR_FNAME,7,4,184,8,SS_NOPREFIX\r
+ EDITTEXT UPDOWN_ERR_MSG,7,28,209,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER,WS_EX_STATICEDGE\r
END\r
\r
hset_code_dlg DIALOGEX 0, 0, 207, 155\r
EDITTEXT HSET_NOOP_INTERVAL,92,42,17,12,ES_AUTOHSCROLL | ES_NUMBER\r
CONTROL "Spin1",HSET_NOOP_INTERVAL_SPN,"msctls_updown32",UDS_SETBUDDYINT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,109,41,9,14\r
LTEXT "(0\81`300\95b\81F 0=\96³\8cø)",-1,122,44,76,8\r
+ LTEXT "\93]\91\97\83G\83\89\81[\8e\9e\82Ì\8f\88\97\9d",-1,7,61,81,8\r
+ COMBOBOX HSET_ERROR_MODE,7,71,71,75,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP\r
END\r
\r
savecrypt_dlg DIALOG 0, 0, 146, 50\r
downerr_dlg, DIALOG\r
BEGIN\r
LEFTMARGIN, 7\r
- RIGHTMARGIN, 175\r
- TOPMARGIN, 4\r
- BOTTOMMARGIN, 61\r
+ RIGHTMARGIN, 216\r
+ TOPMARGIN, 7\r
+ BOTTOMMARGIN, 99\r
END\r
\r
uperr_dlg, DIALOG\r
BEGIN\r
LEFTMARGIN, 7\r
- RIGHTMARGIN, 175\r
- TOPMARGIN, 4\r
- BOTTOMMARGIN, 61\r
+ RIGHTMARGIN, 216\r
+ TOPMARGIN, 7\r
+ BOTTOMMARGIN, 99\r
END\r
\r
hset_code_dlg, DIALOG\r
#define HSET_NOOP_INTERVAL 1208\r
#define HSET_NOOP_INTERVAL_SPN 1209\r
#define HSET_NETTYPE 1210\r
+#define HSET_ERROR_MODE 1211\r
#define MENU_END 40001\r
#define MENU_EXIT 40001\r
#define MENU_CONNECT 40003\r
#ifndef APSTUDIO_READONLY_SYMBOLS\r
#define _APS_NEXT_RESOURCE_VALUE 193\r
#define _APS_NEXT_COMMAND_VALUE 40176\r
-#define _APS_NEXT_CONTROL_VALUE 1211\r
+#define _APS_NEXT_CONTROL_VALUE 1212\r
#define _APS_NEXT_SYMED_VALUE 101\r
#endif\r
#endif\r
PUSHBUTTON "Test",SOUND_ERROR_TEST,166,88,37,13\r
END\r
\r
-downerr_dlg DIALOGEX 0, 0, 159, 65\r
+downerr_dlg DIALOG 0, 0, 223, 103\r
STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | WS_POPUP | WS_CAPTION\r
CAPTION "FFFTP:Error"\r
-FONT 9, "MS Sans Serif", 0, 0, 0x1\r
+FONT 9, "MS Sans Serif"\r
BEGIN\r
- DEFPUSHBUTTON "Cancel this File",IDOK,7,47,82,14\r
- PUSHBUTTON "Cancel All",IDCANCEL,102,47,50,14\r
- LTEXT "Cannot download following file :",-1,7,4,138,10\r
- LTEXT "",UPDOWN_ERR_FNAME,7,16,145,8,SS_NOPREFIX\r
- EDITTEXT UPDOWN_ERR_MSG,7,29,145,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER,WS_EX_STATICEDGE\r
+ CONTROL "&Overwrite later",DOWN_EXIST_OVW,"Button",BS_AUTORADIOBUTTON | WS_GROUP,7,46,99,10\r
+ CONTROL "&Resume later",DOWN_EXIST_RESUME,"Button",BS_AUTORADIOBUTTON,7,58,99,10\r
+ CONTROL "&Skip",DOWN_EXIST_IGNORE,"Button",BS_AUTORADIOBUTTON,7,70,99,10\r
+ DEFPUSHBUTTON "OK",IDOK,8,85,50,14,WS_GROUP\r
+ PUSHBUTTON "&Do All",IDOK_ALL,63,85,50,14\r
+ PUSHBUTTON "&Cancel All",IDCANCEL,118,85,50,14\r
+ PUSHBUTTON "&Help",9,173,85,41,14\r
+ LTEXT "Cannot download following file :",-1,7,4,184,10\r
+ LTEXT "",UPDOWN_ERR_FNAME,7,16,184,8,SS_NOPREFIX\r
+ EDITTEXT UPDOWN_ERR_MSG,7,28,209,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER,WS_EX_STATICEDGE\r
END\r
\r
-uperr_dlg DIALOGEX 0, 0, 159, 67\r
+uperr_dlg DIALOG 0, 0, 223, 103\r
STYLE DS_SETFONT | DS_MODALFRAME | DS_SETFOREGROUND | WS_POPUP | WS_CAPTION\r
CAPTION "FFFTP:Error"\r
-FONT 9, "MS Sans Serif", 0, 0, 0x1\r
+FONT 9, "MS Sans Serif"\r
BEGIN\r
- DEFPUSHBUTTON "Cancel this File",IDOK,7,49,82,14\r
- PUSHBUTTON "Cancel All",IDCANCEL,102,49,50,14\r
- LTEXT "Cannot upload following file.",-1,7,4,137,10\r
- LTEXT "",UPDOWN_ERR_FNAME,7,17,145,8,SS_NOPREFIX\r
- EDITTEXT UPDOWN_ERR_MSG,7,32,153,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER,WS_EX_STATICEDGE\r
+ CONTROL "&Overwrite later",DOWN_EXIST_OVW,"Button",BS_AUTORADIOBUTTON | WS_GROUP,7,46,99,10\r
+ CONTROL "&Resume later",DOWN_EXIST_RESUME,"Button",BS_AUTORADIOBUTTON,7,58,99,10\r
+ CONTROL "&Skip",DOWN_EXIST_IGNORE,"Button",BS_AUTORADIOBUTTON,7,70,99,10\r
+ DEFPUSHBUTTON "OK",IDOK,8,85,50,14,WS_GROUP\r
+ PUSHBUTTON "&Do All",IDOK_ALL,63,85,50,14\r
+ PUSHBUTTON "&Cancel All",IDCANCEL,118,85,50,14\r
+ PUSHBUTTON "&Help",9,173,85,41,14\r
+ LTEXT "Cannot upload following file :",-1,7,4,184,10\r
+ LTEXT "",UPDOWN_ERR_FNAME,7,16,184,8,SS_NOPREFIX\r
+ EDITTEXT UPDOWN_ERR_MSG,7,28,209,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_BORDER,WS_EX_STATICEDGE\r
END\r
\r
hset_code_dlg DIALOGEX 0, 0, 207, 155\r
EDITTEXT HSET_NOOP_INTERVAL,92,42,17,12,ES_AUTOHSCROLL | ES_NUMBER\r
CONTROL "Spin1",HSET_NOOP_INTERVAL_SPN,"msctls_updown32",UDS_SETBUDDYINT | UDS_AUTOBUDDY | UDS_ARROWKEYS | UDS_NOTHOUSANDS,109,41,9,14\r
LTEXT "(0 to 300sec: 0=Never)",-1,122,44,76,8\r
+ LTEXT "When transfer errors",-1,7,61,81,8\r
+ COMBOBOX HSET_ERROR_MODE,7,71,71,75,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP\r
END\r
\r
savecrypt_dlg DIALOG 0, 0, 146, 50\r
downerr_dlg, DIALOG\r
BEGIN\r
LEFTMARGIN, 7\r
- RIGHTMARGIN, 152\r
- TOPMARGIN, 4\r
- BOTTOMMARGIN, 61\r
+ RIGHTMARGIN, 216\r
+ TOPMARGIN, 7\r
+ BOTTOMMARGIN, 99\r
END\r
\r
uperr_dlg, DIALOG\r
BEGIN\r
LEFTMARGIN, 7\r
- RIGHTMARGIN, 152\r
- TOPMARGIN, 4\r
- BOTTOMMARGIN, 63\r
+ RIGHTMARGIN, 216\r
+ TOPMARGIN, 7\r
+ BOTTOMMARGIN, 99\r
END\r
\r
hset_code_dlg, DIALOG\r
#define HSET_NOOP_INTERVAL 1208\r
#define HSET_NOOP_INTERVAL_SPN 1209\r
#define HSET_NETTYPE 1210\r
+#define HSET_ERROR_MODE 1211\r
#define MENU_END 40001\r
#define MENU_EXIT 40001\r
#define MENU_CONNECT 40003\r
#ifndef APSTUDIO_READONLY_SYMBOLS\r
#define _APS_NEXT_RESOURCE_VALUE 193\r
#define _APS_NEXT_COMMAND_VALUE 40176\r
-#define _APS_NEXT_CONTROL_VALUE 1211\r
+#define _APS_NEXT_CONTROL_VALUE 1212\r
#define _APS_NEXT_SYMED_VALUE 101\r
#endif\r
#endif\r
int CurNetType; /* 接続中のネットワークの種類 (NTYPE_xxx) */\r
// 自動切断対策\r
int NoopInterval; /* 無意味なコマンドを送信する間隔(秒数、0で無効)*/\r
+ // 再転送対応\r
+ int TransferErrorMode; /* 転送エラー時の処理 (EXIST_xxx) */\r
+ int TransferErrorNotify; /* 転送エラー時に確認ダイアログを出すかどうか (YES/NO) */\r
} HOSTDATA;\r
\r
\r
int NetType; /* ネットワークの種類 (NTYPE_xxx) */\r
// 自動切断対策\r
int NoopInterval; /* NOOPコマンドを送信する間隔(秒数、0で無効)*/\r
+ // 再転送対応\r
+ int TransferErrorMode; /* 転送エラー時の処理 (EXIST_xxx) */\r
+ int TransferErrorNotify; /* 転送エラー時に確認ダイアログを出すかどうか (YES/NO) */\r
struct historydata *Next;\r
} HISTORYDATA;\r
\r
int AskCurNetType(void);\r
// 自動切断対策\r
int AskNoopInterval(void);\r
+// 再転送対応\r
+int AskTransferErrorMode(void);\r
+int AskTransferErrorNotify(void);\r
\r
/*===== cache.c =====*/\r
\r
return(CurHost.NoopInterval);\r
}\r
\r
+// 再転送対応\r
+int AskTransferErrorMode(void)\r
+{\r
+ return(CurHost.TransferErrorMode);\r
+}\r
+\r
+int AskTransferErrorNotify(void)\r
+{\r
+ return(CurHost.TransferErrorNotify);\r
+}\r
+\r
-- Added a feature to send commands for keep alive.\r
This is disabled by default.\r
\r
+-- Reduced chance of stopping transfer when numerous files are transfered.\r
+\r
+-- Added a feature to retry transfering files if failed.\r
+\r
\r
Outline\r
-------\r
-- Added a feature to send commands for keep alive.\r
This is disabled by default.\r
\r
+-- Reduced chance of stopping transfer when numerous files are transfered.\r
+\r
+-- Added a feature to retry transfering files if failed.\r
+\r
Changes in Ver.1.98c\r
--------------------\r
\r
\81E\83z\83X\83g\82Æ\82Ì\90Ú\91±\82ð\88Û\8e\9d\82·\82é\82½\82ß\82É\88ê\92è\8e\9e\8aÔ\82²\82Æ\82É\83R\83}\83\93\83h\82ð\91\97\90M\82·\82é\8b@\94\\82ð\r
\81@\92Ç\89Á\82µ\82Ü\82µ\82½\81B\82½\82¾\82µ\82±\82Ì\8b@\94\\82Í\83f\83t\83H\83\8b\83g\82Å\82Í\96³\8cø\82É\90Ý\92è\82³\82ê\82Ü\82·\81B\r
\r
+\81E\91å\97Ê\82Ì\83t\83@\83C\83\8b\82ð\93]\91\97\82µ\82½\8e\9e\82É\93r\92\86\82Å\93]\91\97\82ª\8fI\97¹\82·\82é\83o\83O\82ð\8cy\8c¸\82µ\82Ü\82µ\82½\81B\r
+\r
+\81E\83t\83@\83C\83\8b\82Ì\93]\91\97\82É\8e¸\94s\82µ\82½\8fê\8d\87\82É\93]\91\97\82ð\82â\82è\92¼\82·\8b@\94\\82ð\92Ç\89Á\82µ\82Ü\82µ\82½\81B\r
+\r
\r
Ver 1.96d\88È\91O\82Ö\96ß\82·\8fê\8d\87\r
-----------------------\r
\81E\8f\89\89ñ\8bN\93®\8e\9e\82Ì\83E\83B\83\93\83h\83E\82Ì\83T\83C\83Y\82Æ\83\8c\83C\83A\83E\83g\82ð\95Ï\8dX\82µ\82Ü\82µ\82½\81i\88È\91O\82Ì\r
\81@\83o\81[\83W\83\87\83\93\82Ì\90Ý\92è\82ª\8ec\82Á\82Ä\82¢\82é\8fê\8d\87\82Í\82»\82Ì\90Ý\92è\82ª\93K\97p\82³\82ê\82Ü\82·\81j\81B\r
\r
+\81E\91å\97Ê\82Ì\83t\83@\83C\83\8b\82ð\93]\91\97\82µ\82½\8e\9e\82É\93r\92\86\82Å\93]\91\97\82ª\8fI\97¹\82·\82é\83o\83O\82ð\8cy\8c¸\82µ\82Ü\82µ\82½\81B\r
+\r
+\81E\83t\83@\83C\83\8b\82Ì\93]\91\97\82É\8e¸\94s\82µ\82½\8fê\8d\87\82É\93]\91\97\82ð\82â\82è\92¼\82·\8b@\94\\82ð\92Ç\89Á\82µ\82Ü\82µ\82½\81B\r
+\r
\81¡Ver 1.98b\r
\r
\81E\90M\97\8a\82Å\82«\82È\82¢DLL\82Ì\93Ç\82Ý\8d\9e\82Ý\82ð\96h\82®\8b@\94\\82ð\92Ç\89Á\82µ\82Ü\82µ\82½\81BMicrosoft\82Ì\8f\90\96¼\82ª\r
static int DownLoadPassive(TRANSPACKET *Pkt, int *CancelCheckWork);\r
static int DownLoadFile(TRANSPACKET *Pkt, SOCKET dSkt, int CreateMode, int *CancelCheckWork);\r
static void DispDownloadFinishMsg(TRANSPACKET *Pkt, int iRetCode);\r
-static int DispUpDownErrDialog(int ResID, HWND hWnd, char *Fname);\r
+// 再転送対応\r
+//static int DispUpDownErrDialog(int ResID, HWND hWnd, char *Fname);\r
+static int DispUpDownErrDialog(int ResID, HWND hWnd, TRANSPACKET *Pkt);\r
static BOOL CALLBACK UpDownErrorDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam);\r
static int SetDownloadResume(TRANSPACKET *Pkt, int ProcMode, LONGLONG Size, int *Mode, int *CancelCheckWork);\r
static BOOL CALLBACK NoResumeWndProc(HWND hDlg, UINT iMessage, WPARAM wParam, LPARAM lParam);\r
\r
// 同時接続対応\r
static int WaitForMainThread = NO;\r
+// 再転送対応\r
+static int TransferErrorMode = EXIST_OVW;\r
+static int TransferErrorNotify = NO;\r
\r
/*===== 外部参照 =====*/\r
\r
\r
void AddTransFileList(TRANSPACKET *Pkt)\r
{\r
+ // 同時接続対応\r
+ TRANSPACKET *Pos;\r
+\r
DispTransPacket(Pkt);\r
\r
// 同時接続対応\r
Sleep(1);\r
}\r
\r
+ // 同時接続対応\r
+ Pos = TransPacketBase;\r
+ if(Pos != NULL)\r
+ {\r
+ while(Pos->Next != NULL)\r
+ Pos = Pos->Next;\r
+ }\r
if(AddTmpTransFileList(Pkt, &TransPacketBase) == FFFTP_SUCCESS)\r
{\r
if((strncmp(Pkt->Cmd, "RETR", 4) == 0) ||\r
}\r
// 同時接続対応\r
if(NextTransPacketBase == NULL)\r
- NextTransPacketBase = TransPacketBase;\r
+ {\r
+ if(Pos)\r
+ NextTransPacketBase = Pos->Next;\r
+ else\r
+ NextTransPacketBase = TransPacketBase;\r
+ }\r
ReleaseMutex(hListAccMutex);\r
// 同時接続対応\r
WaitForMainThread = NO;\r
}\r
// 同時接続対応\r
if(NextTransPacketBase == NULL)\r
- NextTransPacketBase = TransPacketBase;\r
+ NextTransPacketBase = Pkt;\r
\r
while(Pkt != NULL)\r
{\r
}\r
TransPacketBase = NotDel;\r
// 同時接続対応\r
- NextTransPacketBase = TransPacketBase;\r
+ NextTransPacketBase = NotDel;\r
TransFiles = 0;\r
PostMessage(GetMainHwnd(), WM_CHANGE_COND, 0, 0);\r
ReleaseMutex(hListAccMutex);\r
PostMessage(GetMainHwnd(), WM_COMMAND, MAKEWPARAM(MENU_AUTO_EXIT, 0), 0);\r
GoExit = NO;\r
}\r
+\r
+ // 再転送対応\r
+ TransferErrorMode = AskTransferErrorMode();\r
+ TransferErrorNotify = AskTransferErrorNotify();\r
}\r
else\r
{\r
{\r
// 全て中止を選択後にダイアログが表示されるバグ対策\r
// if(DispUpDownErrDialog(downerr_dlg, Pkt->hWndTrans, Fname) == NO)\r
- if(Canceled[Pkt->ThreadCount] == NO && ClearAll == NO && DispUpDownErrDialog(downerr_dlg, Pkt->hWndTrans, Fname) == NO)\r
- ClearAll = YES;\r
+ // 再転送対応\r
+// if(Canceled[Pkt->ThreadCount] == NO && ClearAll == NO && DispUpDownErrDialog(downerr_dlg, Pkt->hWndTrans, Fname) == NO)\r
+// ClearAll = YES;\r
+ if(Canceled[Pkt->ThreadCount] == NO && ClearAll == NO)\r
+ {\r
+ if(TransferErrorNotify == YES && DispUpDownErrDialog(downerr_dlg, Pkt->hWndTrans, Pkt) == NO)\r
+ ClearAll = YES;\r
+ else\r
+ {\r
+ Pkt->Mode = TransferErrorMode;\r
+ AddTransFileList(Pkt);\r
+ }\r
+ }\r
}\r
}\r
else\r
* int ステータス (YES=中止/NO=全て中止)\r
*----------------------------------------------------------------------------*/\r
\r
-static int DispUpDownErrDialog(int ResID, HWND hWnd, char *Fname)\r
+// 再転送対応\r
+//static int DispUpDownErrDialog(int ResID, HWND hWnd, char *Fname)\r
+static int DispUpDownErrDialog(int ResID, HWND hWnd, TRANSPACKET *Pkt)\r
{\r
if(hWnd == NULL)\r
hWnd = GetMainHwnd();\r
\r
SoundPlay(SND_ERROR);\r
- return(DialogBoxParam(GetFtpInst(), MAKEINTRESOURCE(ResID), hWnd, UpDownErrorDialogProc, (LPARAM)Fname));\r
+ // 再転送対応\r
+// return(DialogBoxParam(GetFtpInst(), MAKEINTRESOURCE(ResID), hWnd, UpDownErrorDialogProc, (LPARAM)Fname));\r
+ return(DialogBoxParam(GetFtpInst(), MAKEINTRESOURCE(ResID), hWnd, UpDownErrorDialogProc, (LPARAM)Pkt));\r
}\r
\r
\r
\r
static BOOL CALLBACK UpDownErrorDialogProc(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)\r
{\r
+ static TRANSPACKET *Pkt;\r
+ static const RADIOBUTTON DownExistButton[] = {\r
+ { DOWN_EXIST_OVW, EXIST_OVW },\r
+ { DOWN_EXIST_RESUME, EXIST_RESUME },\r
+ { DOWN_EXIST_IGNORE, EXIST_IGNORE }\r
+ };\r
+ #define DOWNEXISTBUTTONS (sizeof(DownExistButton)/sizeof(RADIOBUTTON))\r
+\r
switch (message)\r
{\r
case WM_INITDIALOG :\r
- SendDlgItemMessage(hDlg, UPDOWN_ERR_FNAME, WM_SETTEXT, 0, (LPARAM)lParam);\r
+ Pkt = (TRANSPACKET *)lParam;\r
+// SendDlgItemMessage(hDlg, UPDOWN_ERR_FNAME, WM_SETTEXT, 0, (LPARAM)lParam);\r
+ SendDlgItemMessage(hDlg, UPDOWN_ERR_FNAME, WM_SETTEXT, 0, (LPARAM)Pkt->RemoteFile);\r
// 同時接続対応\r
// SendDlgItemMessage(hDlg, UPDOWN_ERR_MSG, WM_SETTEXT, 0, (LPARAM)ErrMsg);\r
SendDlgItemMessage(hDlg, UPDOWN_ERR_MSG, WM_SETTEXT, 0, (LPARAM)GetErrMsg());\r
+\r
+ if((Pkt->Type == TYPE_A) || (Pkt->ExistSize <= 0))\r
+ EnableWindow(GetDlgItem(hDlg, DOWN_EXIST_RESUME), FALSE);\r
+\r
+ SetRadioButtonByValue(hDlg, TransferErrorMode, DownExistButton, DOWNEXISTBUTTONS);\r
return(TRUE);\r
\r
case WM_COMMAND :\r
switch(GET_WM_COMMAND_ID(wParam, lParam))\r
{\r
+ case IDOK_ALL :\r
+ TransferErrorNotify = NO;\r
+ /* ここに break はない */\r
+\r
case IDOK :\r
+ TransferErrorMode = AskRadioButtonValue(hDlg, DownExistButton, DOWNEXISTBUTTONS);\r
EndDialog(hDlg, YES);\r
break;\r
\r
case IDCANCEL :\r
EndDialog(hDlg, NO);\r
break;\r
+\r
+ case IDHELP :\r
+// hHelpWin = HtmlHelp(NULL, AskHelpFilePath(), HH_HELP_CONTEXT, IDH_HELP_TOPIC_0000009);\r
+ break;\r
}\r
- return(TRUE);\r
+ return(TRUE);\r
}\r
- return(FALSE);\r
+ return(FALSE);\r
}\r
\r
\r
{\r
// 全て中止を選択後にダイアログが表示されるバグ対策\r
// if(DispUpDownErrDialog(uperr_dlg, Pkt->hWndTrans, Pkt->LocalFile) == NO)\r
- if(Canceled[Pkt->ThreadCount] == NO && ClearAll == NO && DispUpDownErrDialog(uperr_dlg, Pkt->hWndTrans, Pkt->LocalFile) == NO)\r
- ClearAll = YES;\r
+ // 再転送対応\r
+// if(Canceled[Pkt->ThreadCount] == NO && ClearAll == NO && DispUpDownErrDialog(uperr_dlg, Pkt->hWndTrans, Pkt->LocalFile) == NO)\r
+// ClearAll = YES;\r
+ if(Canceled[Pkt->ThreadCount] == NO && ClearAll == NO)\r
+ {\r
+ if(TransferErrorNotify == YES && DispUpDownErrDialog(uperr_dlg, Pkt->hWndTrans, Pkt) == NO)\r
+ ClearAll = YES;\r
+ else\r
+ {\r
+ Pkt->Mode = TransferErrorMode;\r
+ AddTransFileList(Pkt);\r
+ }\r
+ }\r
}\r
}\r
else\r
New->NetType = Host->NetType;\r
// 自動切断対策\r
New->NoopInterval = Host->NoopInterval;\r
+ // 再転送対応\r
+ New->TransferErrorMode = Host->TransferErrorMode;\r
+ New->TransferErrorNotify = Host->TransferErrorNotify;\r
return;\r
}\r
\r
Host->NetType = Hist->NetType;\r
// 自動切断対策\r
Host->NoopInterval = Hist->NoopInterval;\r
+ // 再転送対応\r
+ Host->TransferErrorMode = Hist->TransferErrorMode;\r
+ Host->TransferErrorNotify = Hist->TransferErrorNotify;\r
return;\r
}\r
\r
Set->NetType = Pos->Set.NetType;\r
// 自動切断対策\r
Set->NoopInterval = Pos->Set.NoopInterval;\r
+ // 再転送対応\r
+ Set->TransferErrorMode = Pos->Set.TransferErrorMode;\r
+ Set->TransferErrorNotify = Pos->Set.TransferErrorNotify;\r
Sts = FFFTP_SUCCESS;\r
}\r
return(Sts);\r
Set->CurNetType = NTYPE_AUTO;\r
// 自動切断対策\r
Set->NoopInterval = 0;\r
+ // 再転送対応\r
+ Set->TransferErrorMode = EXIST_OVW;\r
+ Set->TransferErrorNotify = YES;\r
return;\r
}\r
\r
NMHDR *pnmhdr;\r
// int Num;\r
\r
+ // UTF-8対応\r
+ static const RADIOBUTTON KanjiButton[] = {\r
+ { HSET_NO_CNV, KANJI_NOCNV },\r
+ { HSET_SJIS_CNV, KANJI_SJIS },\r
+ { HSET_JIS_CNV, KANJI_JIS },\r
+ { HSET_EUC_CNV, KANJI_EUC },\r
+ { HSET_UTF8N_CNV, KANJI_UTF8N },\r
+ { HSET_UTF8BOM_CNV, KANJI_UTF8BOM }\r
+ };\r
+ #define KANJIBUTTONS (sizeof(KanjiButton)/sizeof(RADIOBUTTON))\r
+\r
switch (iMessage)\r
{\r
case WM_INITDIALOG :\r
SendDlgItemMessage(hDlg, HSET_NOOP_INTERVAL, EM_LIMITTEXT, (WPARAM)3, 0);\r
SetDecimalText(hDlg, HSET_NOOP_INTERVAL, TmpHost.NoopInterval);\r
SendDlgItemMessage(hDlg, HSET_NOOP_INTERVAL_SPN, UDM_SETRANGE, 0, (LPARAM)MAKELONG(300, 0));\r
+ SendDlgItemMessage(hDlg, HSET_ERROR_MODE, CB_ADDSTRING, 0, (LPARAM)MSGJPN335);\r
+ SendDlgItemMessage(hDlg, HSET_ERROR_MODE, CB_ADDSTRING, 0, (LPARAM)MSGJPN336);\r
+ SendDlgItemMessage(hDlg, HSET_ERROR_MODE, CB_ADDSTRING, 0, (LPARAM)MSGJPN337);\r
+ SendDlgItemMessage(hDlg, HSET_ERROR_MODE, CB_ADDSTRING, 0, (LPARAM)MSGJPN338);\r
+ if(TmpHost.TransferErrorNotify == YES)\r
+ SendDlgItemMessage(hDlg, HSET_ERROR_MODE, CB_SETCURSEL, 0, 0);\r
+ else if(TmpHost.TransferErrorMode == EXIST_OVW)\r
+ SendDlgItemMessage(hDlg, HSET_ERROR_MODE, CB_SETCURSEL, 1, 0);\r
+ else if(TmpHost.TransferErrorMode == EXIST_RESUME)\r
+ SendDlgItemMessage(hDlg, HSET_ERROR_MODE, CB_SETCURSEL, 2, 0);\r
+ else if(TmpHost.TransferErrorMode == EXIST_IGNORE)\r
+ SendDlgItemMessage(hDlg, HSET_ERROR_MODE, CB_SETCURSEL, 3, 0);\r
+ else\r
+ SendDlgItemMessage(hDlg, HSET_ERROR_MODE, CB_SETCURSEL, 0, 0);\r
return(TRUE);\r
\r
case WM_NOTIFY:\r
TmpHost.ReuseCmdSkt = SendDlgItemMessage(hDlg, HSET_REUSE_SOCKET, BM_GETCHECK, 0, 0);\r
TmpHost.NoopInterval = GetDecimalText(hDlg, HSET_NOOP_INTERVAL);\r
CheckRange2(&TmpHost.NoopInterval, 300, 0);\r
+ switch(SendDlgItemMessage(hDlg, HSET_ERROR_MODE, CB_GETCURSEL, 0, 0))\r
+ {\r
+ case 0:\r
+ TmpHost.TransferErrorMode = EXIST_OVW;\r
+ TmpHost.TransferErrorNotify = YES;\r
+ break;\r
+ case 1:\r
+ TmpHost.TransferErrorMode = EXIST_OVW;\r
+ TmpHost.TransferErrorNotify = NO;\r
+ break;\r
+ case 2:\r
+ TmpHost.TransferErrorMode = EXIST_RESUME;\r
+ TmpHost.TransferErrorNotify = NO;\r
+ break;\r
+ case 3:\r
+ TmpHost.TransferErrorMode = EXIST_IGNORE;\r
+ TmpHost.TransferErrorNotify = NO;\r
+ break;\r
+ }\r
Apply = YES;\r
break;\r
\r
#define MSGJPN332 "Auto"\r
#define MSGJPN333 "TCP/IPv4"\r
#define MSGJPN334 "TCP/IPv6"\r
+#define MSGJPN335 "Ask everytime"\r
+#define MSGJPN336 "Overwrite all later"\r
+#define MSGJPN337 "Resume all later"\r
+#define MSGJPN338 "Skip all"\r
#define MSGJPN332 "Auto"\r
#define MSGJPN333 "TCP/IPv4"\r
#define MSGJPN334 "TCP/IPv6"\r
+#define MSGJPN335 "Ask everytime"\r
+#define MSGJPN336 "Overwrite all later"\r
+#define MSGJPN337 "Resume all later"\r
+#define MSGJPN338 "Skip all"\r
#define MSGJPN332 "\xE8\x87\xAA\xE5\x8B\x95"\r
#define MSGJPN333 "TCP/IPv4"\r
#define MSGJPN334 "TCP/IPv6"\r
+#define MSGJPN335 "\xE6\xAF\x8E\xE5\x9B\x9E\xE5\xB0\x8B\xE3\x81\xAD\xE3\x82\x8B"\r
+#define MSGJPN336 "\xE5\x85\xA8\xE3\x81\xA6\xE5\xBE\x8C\xE3\x81\xA7\xE4\xB8\x8A\xE6\x9B\xB8\xE3\x81\x8D"\r
+#define MSGJPN337 "\xE5\x85\xA8\xE3\x81\xA6\xE5\xBE\x8C\xE3\x81\xA7\xE3\x83\xAA\xE3\x82\xB8\xE3\x83\xA5\xE3\x83\xBC\xE3\x83\xA0"\r
+#define MSGJPN338 "\xE5\x85\xA8\xE3\x81\xA6\xE3\x82\xB9\xE3\x82\xAD\xE3\x83\x83\xE3\x83\x97"\r
#define MSGJPN332 "\8e©\93®"\r
#define MSGJPN333 "TCP/IPv4"\r
#define MSGJPN334 "TCP/IPv6"\r
+#define MSGJPN335 "\96\88\89ñ\90q\82Ë\82é"\r
+#define MSGJPN336 "\91S\82Ä\8cã\82Å\8fã\8f\91\82«"\r
+#define MSGJPN337 "\91S\82Ä\8cã\82Å\83\8a\83W\83\85\81[\83\80"\r
+#define MSGJPN338 "\91S\82Ä\83X\83L\83b\83v"\r
SaveIntNum(hKey5, "NetType", Hist.NetType, DefaultHist.NetType);\r
// 自動切断対策\r
SaveIntNum(hKey5, "Noop", Hist.NoopInterval, DefaultHist.NoopInterval);\r
+ // 再転送対応\r
+ SaveIntNum(hKey5, "ErrMode", Hist.TransferErrorMode, DefaultHist.TransferErrorMode);\r
+ SaveIntNum(hKey5, "ErrNotify", Hist.TransferErrorNotify, DefaultHist.TransferErrorNotify);\r
\r
CloseSubKey(hKey5);\r
n++;\r
SaveIntNum(hKey5, "NetType", Host.NetType, DefaultHost.NetType);\r
// 自動切断対策\r
SaveIntNum(hKey5, "Noop", Host.NoopInterval, DefaultHost.NoopInterval);\r
+ // 再転送対応\r
+ SaveIntNum(hKey5, "ErrMode", Host.TransferErrorMode, DefaultHost.TransferErrorMode);\r
+ SaveIntNum(hKey5, "ErrNotify", Host.TransferErrorNotify, DefaultHost.TransferErrorNotify);\r
}\r
CloseSubKey(hKey5);\r
}\r
ReadIntValueFromReg(hKey5, "NetType", &Hist.NetType);\r
// 自動切断対策\r
ReadIntValueFromReg(hKey5, "Noop", &Hist.NoopInterval);\r
+ // 再転送対応\r
+ ReadIntValueFromReg(hKey5, "ErrMode", &Hist.TransferErrorMode);\r
+ ReadIntValueFromReg(hKey5, "ErrNotify", &Hist.TransferErrorNotify);\r
\r
CloseSubKey(hKey5);\r
AddHistoryToHistory(&Hist);\r
ReadIntValueFromReg(hKey5, "NetType", &Host.NetType);\r
// 自動切断対策\r
ReadIntValueFromReg(hKey5, "Noop", &Host.NoopInterval);\r
+ // 再転送対応\r
+ ReadIntValueFromReg(hKey5, "ErrMode", &Host.TransferErrorMode);\r
+ ReadIntValueFromReg(hKey5, "ErrNotify", &Host.TransferErrorNotify);\r
\r
CloseSubKey(hKey5);\r
\r