/*! ダイアログデータの設定 @date 2004.06.05 genta 元の拡張子を残す設定を追加. 日時指定でチェックボックスが空欄で残ると設定されない問題を避けるため, IDC_RADIO_BACKUP_TYPE2 を廃止してレイアウト変更 */ void CPropBackup::SetData( HWND hwndDlg ) { // BOOL bRet; // BOOL m_bGrepExitConfirm; /* Grepモードで保存確認するか */ /* バックアップの作成 */ ::CheckDlgButtonBool( hwndDlg, IDC_CHECK_BACKUP, m_Common.m_sBackup.m_bBackUp ); /* バックアップの作成前に確認 */ ::CheckDlgButtonBool( hwndDlg, IDC_CHECK_BACKUPDIALOG, m_Common.m_sBackup.m_bBackUpDialog ); // /* 指定フォルダにバックアップを作成する */ // 20051107 aroka 「バックアップの作成」に連動させる // ::CheckDlgButton( hwndDlg, IDC_CHECK_BACKUPFOLDER, .m_sBackup.m_bBackUpFolder ); /* バックアップファイル名のタイプ 1=(.bak) 2=*_日付.* */ // Jun. 5, 2004 genta 元の拡張子を残す設定(5,6)を追加. switch( m_Common.m_sBackup.GetBackupType() ){ case 2: ::CheckDlgButton( hwndDlg, IDC_RADIO_BACKUP_DATETYPE1, 1 ); // 付加する日付のタイプ(現時刻) break; case 3: case 6: ::CheckDlgButton( hwndDlg, IDC_RADIO_BACKUP_TYPE3, 1 ); break; case 4: ::CheckDlgButton( hwndDlg, IDC_RADIO_BACKUP_DATETYPE2, 1 ); // 付加する日付のタイプ(前回の保存時刻) break; case 5: case 1: default: ::CheckDlgButton( hwndDlg, IDC_RADIO_BACKUP_TYPE1, 1 ); break; } // Jun. 5, 2004 genta 元の拡張子を残す設定(5,6)を追加. ::CheckDlgButton( hwndDlg, IDC_CHECK_BACKUP_RETAINEXT, ( m_Common.m_sBackup.GetBackupType() == 5 || m_Common.m_sBackup.GetBackupType() == 6 ) ? 1 : 0 ); /* バックアップファイル名:日付の年 */ ::CheckDlgButtonBool( hwndDlg, IDC_CHECK_BACKUP_YEAR, m_Common.m_sBackup.GetBackupOpt(BKUP_YEAR) ); /* バックアップファイル名:日付の月 */ ::CheckDlgButtonBool( hwndDlg, IDC_CHECK_BACKUP_MONTH, m_Common.m_sBackup.GetBackupOpt(BKUP_MONTH) ); /* バックアップファイル名:日付の日 */ ::CheckDlgButtonBool( hwndDlg, IDC_CHECK_BACKUP_DAY, m_Common.m_sBackup.GetBackupOpt(BKUP_DAY) ); /* バックアップファイル名:日付の時 */ ::CheckDlgButtonBool( hwndDlg, IDC_CHECK_BACKUP_HOUR, m_Common.m_sBackup.GetBackupOpt(BKUP_HOUR) ); /* バックアップファイル名:日付の分 */ ::CheckDlgButtonBool( hwndDlg, IDC_CHECK_BACKUP_MIN, m_Common.m_sBackup.GetBackupOpt(BKUP_MIN) ); /* バックアップファイル名:日付の秒 */ ::CheckDlgButtonBool( hwndDlg, IDC_CHECK_BACKUP_SEC, m_Common.m_sBackup.GetBackupOpt(BKUP_SEC) ); /* 指定フォルダにバックアップを作成する */ // 20051107 aroka 移動:連動対象にする。 ::CheckDlgButtonBool( hwndDlg, IDC_CHECK_BACKUPFOLDER, m_Common.m_sBackup.m_bBackUpFolder ); ::CheckDlgButtonBool( hwndDlg, IDC_CHECK_BACKUP_FOLDER_RM, m_Common.m_sBackup.m_bBackUpFolderRM ); // 2010/5/27 Uchi /* バックアップを作成するフォルダ */ ::DlgItem_SetText( hwndDlg, IDC_EDIT_BACKUPFOLDER, m_Common.m_sBackup.m_szBackUpFolder ); /* バックアップファイルをごみ箱に放り込む */ //@@@ 2001.12.11 add MIK ::CheckDlgButton( hwndDlg, IDC_CHECK_BACKUP_DUSTBOX, m_Common.m_sBackup.m_bBackUpDustBox?BST_CHECKED:BST_UNCHECKED ); //@@@ 2001.12.11 add MIK /* バックアップ先フォルダを詳細設定する */ // 20051107 aroka ::CheckDlgButton( hwndDlg, IDC_CHECK_BACKUP_ADVANCED, m_Common.m_sBackup.m_bBackUpPathAdvanced?BST_CHECKED:BST_UNCHECKED ); /* バックアップを作成するフォルダの詳細設定 */ // 20051107 aroka ::DlgItem_SetText( hwndDlg, IDC_EDIT_BACKUPFILE, m_Common.m_sBackup.m_szBackUpPathAdvanced ); /* バックアップを作成するフォルダの詳細設定 */ // 20051128 aroka switch( m_Common.m_sBackup.GetBackupTypeAdv() ){ case 2: ::CheckDlgButton( hwndDlg, IDC_RADIO_BACKUP_DATETYPE1A, 1 ); // 付加する日付のタイプ(現時刻) break; case 4: ::CheckDlgButton( hwndDlg, IDC_RADIO_BACKUP_DATETYPE2A, 1 ); // 付加する日付のタイプ(前回の保存時刻) break; default: ::CheckDlgButton( hwndDlg, IDC_RADIO_BACKUP_DATETYPE1A, 1 ); break; } // From Here Aug. 16, 2000 genta int nN = m_Common.m_sBackup.GetBackupCount(); nN = nN < 1 ? 1 : nN; nN = nN > 99 ? 99 : nN; ::SetDlgItemInt( hwndDlg, IDC_EDIT_BACKUP_3, nN, FALSE ); // Oct. 29, 2001 genta // To Here Aug. 16, 2000 genta UpdateBackupFile( hwndDlg ); EnableBackupInput(hwndDlg); return; }
/* メッセージ処理 */ INT_PTR CPropBackup::DispatchEvent( HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam ) { WORD wNotifyCode; WORD wID; NMHDR* pNMHDR; NM_UPDOWN* pMNUD; int idCtrl; // int nVal; int nVal; //Sept.21, 2000 JEPRO スピン要素を加えたので復活させた // int nDummy; // int nCharChars; switch( uMsg ){ case WM_INITDIALOG: /* ダイアログデータの設定 Backup */ SetData( hwndDlg ); // Modified by KEITA for WIN64 2003.9.6 ::SetWindowLongPtr( hwndDlg, DWLP_USER, lParam ); /* ユーザーがエディット コントロールに入力できるテキストの長さを制限する */ // Oct. 5, 2002 genta バックアップフォルダ名の入力サイズを指定 // Oct. 8, 2002 genta 最後に付加される\の領域を残すためバッファサイズ-1しか入力させない EditCtl_LimitText( ::GetDlgItem( hwndDlg, IDC_EDIT_BACKUPFOLDER ), _countof2(m_Common.m_sBackup.m_szBackUpFolder) - 1 - 1 ); // 20051107 aroka EditCtl_LimitText( ::GetDlgItem( hwndDlg, IDC_EDIT_BACKUPFILE ), _countof2(m_Common.m_sBackup.m_szBackUpPathAdvanced) - 1 - 1 ); return TRUE; case WM_NOTIFY: idCtrl = (int)wParam; pNMHDR = (NMHDR*)lParam; pMNUD = (NM_UPDOWN*)lParam; switch( idCtrl ){ default: switch( pNMHDR->code ){ case PSN_HELP: OnHelp( hwndDlg, IDD_PROP_BACKUP ); return TRUE; case PSN_KILLACTIVE: /* ダイアログデータの取得 Backup */ GetData( hwndDlg ); return TRUE; //@@@ 2002.01.03 YAZAKI 最後に表示していたシートを正しく覚えていないバグ修正 case PSN_SETACTIVE: m_nPageNum = ID_PROPCOM_PAGENUM_BACKUP; return TRUE; } break; case IDC_SPIN_BACKUP_GENS: /* バックアップファイルの世代数 */ nVal = ::GetDlgItemInt( hwndDlg, IDC_EDIT_BACKUP_3, NULL, FALSE ); if( pMNUD->iDelta < 0 ){ ++nVal; }else if( pMNUD->iDelta > 0 ){ --nVal; } if( nVal < 1 ){ nVal = 1; } if( nVal > 99 ){ nVal = 99; } ::SetDlgItemInt( hwndDlg, IDC_EDIT_BACKUP_3, nVal, FALSE ); return TRUE; } //**** To Here Sept. 21, 2000 JEPRO ダイアログ要素にスピンを入れるので以下のWM_NOTIFYをコメントアウトにし下に修正を置いた break; case WM_COMMAND: wNotifyCode = HIWORD(wParam); /* 通知コード */ wID = LOWORD(wParam); /* 項目ID、 コントロールID、 またはアクセラレータID */ switch( wNotifyCode ){ /* ボタン/チェックボックスがクリックされた */ case BN_CLICKED: switch( wID ){ case IDC_RADIO_BACKUP_TYPE1: // Aug. 16, 2000 genta // バックアップ方式追加 case IDC_RADIO_BACKUP_TYPE3: case IDC_CHECK_BACKUP: case IDC_CHECK_BACKUPFOLDER: // Aug. 21, 2000 genta case IDC_CHECK_AUTOSAVE: // Jun. 5, 2004 genta IDC_RADIO_BACKUP_TYPE2を廃止して, // IDC_RADIO_BACKUP_DATETYPE1, IDC_RADIO_BACKUP_DATETYPE2を同列に持ってきた case IDC_RADIO_BACKUP_DATETYPE1: case IDC_RADIO_BACKUP_DATETYPE2: // 20051107 aroka case IDC_CHECK_BACKUP_ADVANCED: GetData( hwndDlg ); UpdateBackupFile( hwndDlg ); EnableBackupInput(hwndDlg); return TRUE; case IDC_BUTTON_BACKUP_FOLDER_REF: /* フォルダ参照 */ { /* バックアップを作成するフォルダ */ TCHAR szFolder[_MAX_PATH]; ::DlgItem_GetText( hwndDlg, IDC_EDIT_BACKUPFOLDER, szFolder, _countof( szFolder )); if( SelectDir( hwndDlg, LS(STR_PROPCOMBK_SEL_FOLDER), szFolder, szFolder ) ){ _tcscpy( m_Common.m_sBackup.m_szBackUpFolder, szFolder ); ::DlgItem_SetText( hwndDlg, IDC_EDIT_BACKUPFOLDER, m_Common.m_sBackup.m_szBackUpFolder ); } UpdateBackupFile( hwndDlg ); } return TRUE; default: // 20051107 aroka Default節 追加 GetData( hwndDlg ); UpdateBackupFile( hwndDlg ); } break; /* BN_CLICKED */ case EN_CHANGE: // 20051107 aroka フォルダが変更されたらリアルタイムにエディットボックス内を更新 switch( wID ){ case IDC_EDIT_BACKUPFOLDER: // 2009.02.21 ryoji 後ろに\が追加されるので,1文字余裕をみる必要がある. ::DlgItem_GetText( hwndDlg, IDC_EDIT_BACKUPFOLDER, m_Common.m_sBackup.m_szBackUpFolder, _countof2(m_Common.m_sBackup.m_szBackUpFolder) - 1 ); UpdateBackupFile( hwndDlg ); break; } break; /* EN_CHANGE */ } break; /* WM_COMMAND */ //@@@ 2001.02.04 Start by MIK: Popup Help case WM_HELP: { HELPINFO *p = (HELPINFO *)lParam; MyWinHelp( (HWND)p->hItemHandle, HELP_WM_HELP, (ULONG_PTR)(LPVOID)p_helpids ); // 2006.10.10 ryoji MyWinHelpに変更に変更 } return TRUE; /*NOTREACHED*/ //break; //@@@ 2001.02.04 End //@@@ 2001.12.22 Start by MIK: Context Menu Help //Context Menu case WM_CONTEXTMENU: MyWinHelp( hwndDlg, HELP_CONTEXTMENU, (ULONG_PTR)(LPVOID)p_helpids ); // 2006.10.10 ryoji MyWinHelpに変更に変更 return TRUE; //@@@ 2001.12.22 End } return FALSE; }
/** * @brief UpiBackupData * * Backup data from IC to system routine * * @para data address of BackupDataType * @return _UPI_NULL_ */ void UpiBackupData(BackupDataType *data) { _backup_bool_ rtnBool; _backup_u8_ rtnU8; #ifndef UG31XX_BACKUP_FILE_ENABLE rtnBool = _UPI_TRUE_; data->backupFileSts = BACKUP_FILE_STS_COMPARE; #endif ///< end of UG31XX_BACKUP_FILE_ENABLE switch(data->backupFileSts) { case BACKUP_FILE_STS_CHECKING: /// [AT-PM] : Check backup file existed or not ; 02/21/2013 rtnBool = is_file_exist(data->backupFileName); UG31_LOGN("[%s]: is_file_exist() = %d.\n", __func__, rtnBool); if(rtnBool == BACKUP_BOOL_TRUE) { data->backupFileSts = BACKUP_FILE_STS_EXIST; data->backupFileRetryCnt = 0; } else { data->backupFileRetryCnt = data->backupFileRetryCnt + 1; UG31_LOGN("[%s]: Check backup file retry count = %d\n", __func__, data->backupFileRetryCnt); if(data->backupFileRetryCnt > RETRY_CHECKING_THRESHOLD) { data->backupFileSts = BACKUP_FILE_STS_NOT_EXIST; UG31_LOGE("[%s]: Backup file is not exist.\n", __func__); } } break; case BACKUP_FILE_STS_NOT_EXIST: /// [AT-PM] : Create backup file ; 02/21/2013 PrepareData(data); rtnBool = create_backup_file(data->backupFileName, data->backupBuffer, data->backupBufferSize); UG31_LOGN("[%s]: create_backup_file() = %d.\n", __func__, rtnBool); if(rtnBool == BACKUP_BOOL_TRUE) { data->backupFileSts = BACKUP_FILE_STS_EXIST; data->icDataAvailable = BACKUP_BOOL_TRUE; } else { UG31_LOGE("[%s]: Create backup file fail.\n", __func__); } break; case BACKUP_FILE_STS_EXIST: data->backupFileSts = BACKUP_FILE_STS_COMPARE; case BACKUP_FILE_STS_COMPARE: if(data->icDataAvailable == BACKUP_BOOL_TRUE) { /// [AT-PM] : Check content of file is consist with IC or not ; 02/21/2013 rtnU8 = CheckBackupFile(data); UG31_LOGN("[%s]: CheckBackupFile() = %d.\n", __func__, rtnU8); if(rtnU8 == CHECK_BACKUP_FILE_STS_VERSION_MISMATCH) { data->backupFileSts = BACKUP_FILE_STS_UPDATE_BY_VERSION; } else if(rtnU8 == CHECK_BACKUP_FILE_STS_NEED_UPDATE) { data->backupFileSts = BACKUP_FILE_STS_UPDATE; } else if(rtnU8 == CHECK_BACKUP_FILE_STS_PASS) { data->backupFileSts = BACKUP_FILE_STS_COMPARE; } else { data->backupFileSts = BACKUP_FILE_STS_UPDATE; } } else { data->backupFileSts = BACKUP_FILE_STS_CHECKING; } break; case BACKUP_FILE_STS_UPDATE: case BACKUP_FILE_STS_UPDATE_BY_VERSION: if(data->icDataAvailable == BACKUP_BOOL_TRUE) { rtnU8 = UpdateBackupFile(data); UG31_LOGN("[%s]: UpdateBackupFile() = %d.\n", __func__, rtnU8); if(rtnU8 == CHECK_BACKUP_FILE_STS_PASS) { if(data->backupFileSts == BACKUP_FILE_STS_UPDATE_BY_VERSION) { data->backupFileSts = BACKUP_FILE_STS_VERSION_MISMATCH; } else { data->backupFileSts = BACKUP_FILE_STS_COMPARE; } } } else { data->backupFileSts = BACKUP_FILE_STS_CHECKING; } break; default: /// [AT-PM] : Un-known state ; 02/21/2013 data->backupFileSts = BACKUP_FILE_STS_NOT_EXIST; break; } }