FAT_Editor.cpp
上传用户:gelin96
上传日期:2017-01-08
资源大小:20993k
文件大小:22k
源码类别:

MTK

开发平台:

C++ Builder

  1. /*****************************************************************************
  2. *  Copyright Statement:
  3. *  --------------------
  4. *  This software is protected by Copyright and the information contained
  5. *  herein is confidential. The software may not be copied and the information
  6. *  contained herein may not be used or disclosed except with the written
  7. *  permission of MediaTek Inc. (C) 2005
  8. *
  9. *  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
  10. *  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
  11. *  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
  12. *  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
  13. *  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
  14. *  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
  15. *  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
  16. *  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
  17. *  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
  18. *  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
  19. *  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
  20. *  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
  21. *
  22. *  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
  23. *  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
  24. *  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
  25. *  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
  26. *  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
  27. *
  28. *  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
  29. *  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
  30. *  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
  31. *  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
  32. *  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
  33. *
  34. *****************************************************************************/
  35. /*****************************************************************************
  36.  *
  37.  * Filename:
  38.  * ---------
  39.  *   FAT_Editor.cpp
  40.  *
  41.  * Project:
  42.  * --------
  43.  *   Maui META APP
  44.  *
  45.  * Description:
  46.  * ------------
  47.  *   FAT editor source
  48.  *
  49.  * Author:
  50.  * -------
  51.  *  Andy Ueng (mtk00490)
  52.  *
  53.  *============================================================================
  54.  *             HISTORY
  55.  * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
  56.  *------------------------------------------------------------------------------
  57.  * $Revision$
  58.  * $Modtime$
  59.  * $Log$
  60.  * 
  61.  *------------------------------------------------------------------------------
  62.  * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
  63.  *============================================================================
  64.  ****************************************************************************/
  65. //---------------------------------------------------------------------------
  66. #include <IniFiles.hpp>
  67. #pragma hdrstop
  68. #ifndef _FAT_EDITOR_H_
  69. #include "FAT_Editor.h"
  70. #endif
  71. #ifndef  _MAN_ACTIVE_H_
  72. #include "man_active.h"
  73. #endif
  74. #ifndef  _MAN_FDM_H_
  75. #include "man_fdm.h"
  76. #endif
  77. #ifndef  _META_UTILS_H_
  78. #include "meta_utils.h"
  79. #endif
  80. //---------------------------------------------------------------------------
  81. #pragma package(smart_init)
  82. //===========================================================================
  83. static CFATEDITOR* g_fat_editor_ptr;
  84. static bool g_bIsRunning = false;
  85. //===========================================================================
  86. static void Req_FAT_GetDiskInfo(void)
  87. {
  88.     g_fat_editor_ptr->Req_FAT_GetDiskInfo();
  89. }
  90. //---------------------------------------------------------------------------
  91. static void Req_FAT_GetDirectoryInfo(void)
  92. {
  93.     g_fat_editor_ptr->Req_FAT_GetDirectoryInfo();
  94. }
  95. //---------------------------------------------------------------------------
  96. static void Req_FAT_GetFileInfo(void)
  97. {
  98.     g_fat_editor_ptr->Req_FAT_GetFileInfo();
  99. }
  100. //---------------------------------------------------------------------------
  101. static void Req_FAT_Read_To_File(void)
  102. {
  103.     g_fat_editor_ptr->Req_FAT_Read_To_File();
  104. }
  105. //---------------------------------------------------------------------------
  106. static void Req_FAT_Write_By_File(void)
  107. {
  108.     g_fat_editor_ptr->Req_FAT_Write_By_File();
  109. }
  110. //---------------------------------------------------------------------------
  111. static void Req_FAT_Delete(void)
  112. {
  113.     g_fat_editor_ptr->Req_FAT_Delete();
  114. }
  115. //---------------------------------------------------------------------------
  116. static int __stdcall cbFATProgress(unsigned char percent, int sent_bytes, int total_bytes, const short token, void *usr_arg)
  117. {
  118.     g_fat_editor_ptr->cbFATProgress(percent, sent_bytes, total_bytes, token, usr_arg);
  119.     return 0;
  120. }
  121. //===========================================================================
  122. CFATEDITOR::CFATEDITOR(void)
  123. {
  124.    g_bIsRunning = false;
  125.    ConfirmCallback = NULL;
  126. }
  127. //---------------------------------------------------------------------------
  128. CFATEDITOR::~CFATEDITOR()
  129. {
  130. }
  131. //---------------------------------------------------------------------------
  132. void CFATEDITOR::REQ_Stop(void)
  133. {
  134.     if (!g_bIsRunning)
  135.     {
  136.         return;
  137.     }
  138.     META_Cancel_r(m_META_HANDLE_Obj.Get_MainHandle(), m_sToken);
  139.     Confirm(METAAPP_STOP);
  140. }
  141. //---------------------------------------------------------------------------
  142. void CFATEDITOR::Confirm(E_METAAPP_RESULT_T confirm_state)
  143. {
  144.     if (!g_bIsRunning)
  145.     {
  146.         return;
  147.     }
  148.     g_bIsRunning = false;
  149.     if (m_eConfirmState != METAAPP_SUCCESS)
  150.     {
  151.         META_Cancel_r(m_META_HANDLE_Obj.Get_MainHandle(), m_sToken);
  152.     }
  153.     if (NULL == ConfirmCallback)
  154.     {
  155.         return;
  156.     }
  157.     m_eConfirmState = confirm_state;
  158.     ActiveMan->SetActiveFunction(ConfirmCallback);
  159. }
  160. //==============================================================================
  161. void CFATEDITOR::Req_FAT_GetDiskInfo_Start(const char DriveLetter)
  162. {
  163.     g_fat_editor_ptr = this;
  164.     g_bIsRunning     = true;
  165.     m_cDriveLetter   = DriveLetter;
  166.     ActiveMan->SetActiveFunction(::Req_FAT_GetDiskInfo);
  167. }
  168. //---------------------------------------------------------------------------
  169. void CFATEDITOR::Req_FAT_GetDiskInfo(void)
  170. {
  171.     if (!g_bIsRunning)
  172.     {
  173.         return;
  174.     }
  175.     META_RESULT MetaResult = META_FAT_GetDiskInfo_r(m_META_HANDLE_Obj.Get_MainHandle(), m_cDriveLetter, &m_sFatDiskInfo, NULL);
  176.     if (MetaResult != META_SUCCESS)
  177.     {
  178.         Set_ErrorString(MetaResult);
  179.         if (MetaResult != META_TIMEOUT)
  180.         {
  181.             Confirm(METAAPP_FAIL);
  182.         }
  183.         else
  184.         {
  185.             Confirm(METAAPP_TIMEOUT);
  186.         }
  187.         return;
  188.     }
  189.     Confirm(METAAPP_SUCCESS);
  190. }
  191. //=============================================================================
  192. void CFATEDITOR::Req_FAT_GetDirectoryInfo_Start(S_FAT_DIRECTORY_INFO_REQ_T fat_dir_info)
  193. {
  194.     g_fat_editor_ptr = this;
  195.     g_bIsRunning     = true;
  196.     m_sFatDirInfoReq = fat_dir_info;
  197.     ActiveMan->SetActiveFunction(::Req_FAT_GetDirectoryInfo);
  198. }
  199. //---------------------------------------------------------------------------
  200. void CFATEDITOR::Req_FAT_GetDirectoryInfo(void)
  201. {
  202.     if (!g_bIsRunning)
  203.     {
  204.         return;
  205.     }
  206.     // erase vector
  207.     if (!m_sFatDirInfoCnf.v_FATDirName.empty())
  208.     {
  209.         m_sFatDirInfoCnf.v_FATDirName.erase(m_sFatDirInfoCnf.v_FATDirName.begin(), m_sFatDirInfoCnf.v_FATDirName.end());
  210.     }
  211.     int fs_handle;
  212.     META_RESULT MetaResult = META_FAT_Find_Start_r(m_META_HANDLE_Obj.Get_MainHandle(), m_sFatDirInfoReq.as_FAT_dir_path.c_str(), m_sFatDirInfoReq.as_FAT_dir_type.c_str(), FAT_FIND_DIR_RECURSIVE, &fs_handle, &m_sToken);
  213.     if (MetaResult != META_SUCCESS)
  214.     {
  215.         Set_ErrorString(MetaResult);
  216.         switch (MetaResult)
  217.         {
  218.             case META_TIMEOUT:
  219.             {
  220.                 Confirm(METAAPP_TIMEOUT);
  221.             }
  222.             break;
  223.             case META_FAT_FILE_NOT_FOUND:
  224.             {
  225.                 Confirm(METAAPP_FAT_FILE_NOT_FOUND);
  226.             }
  227.             break;
  228.             default:
  229.             {
  230.                 Confirm(METAAPP_FAIL);
  231.             }
  232.             break;
  233.         }
  234.         return;
  235.     }
  236.     do
  237.     {
  238.         char c_fat_file_path[MAX_FILE_PATH_LEN];
  239.         int  i_fat_file_size;
  240.         MetaResult = META_FAT_Find_GetFileInfo(fs_handle, c_fat_file_path, sizeof(c_fat_file_path), &i_fat_file_size);
  241.         if (MetaResult != META_SUCCESS)
  242.         {
  243.             Set_ErrorString(MetaResult);
  244.             if (MetaResult != META_TIMEOUT)
  245.             {
  246.                 Confirm(METAAPP_FAIL);
  247.             }
  248.             else
  249.             {
  250.                 Confirm(METAAPP_TIMEOUT);
  251.             }
  252.             return;
  253.         }
  254.         AnsiString as_fat_file_path(c_fat_file_path);
  255.         m_sFatDirInfoCnf.v_FATDirName.push_back(as_fat_file_path);
  256.     }
  257.     while((MetaResult = META_FAT_Find_Next(fs_handle)) == META_SUCCESS);
  258.    //FAT_filepath_size = i;
  259.     MetaResult = META_FAT_Find_Close(&fs_handle);
  260.     if (MetaResult != META_SUCCESS)
  261.     {
  262.         Set_ErrorString(MetaResult);
  263.         if (MetaResult != META_TIMEOUT)
  264.         {
  265.             Confirm(METAAPP_FAIL);
  266.         }
  267.         else
  268.         {
  269.             Confirm(METAAPP_TIMEOUT);
  270.         }
  271.         return;
  272.     }
  273.     Confirm(METAAPP_SUCCESS);
  274. }
  275. //=============================================================================
  276. void CFATEDITOR::Req_FAT_GetFileInfo_Start(S_FAT_FILE_INFO_REQ_T fat_file_info)
  277. {
  278.     g_fat_editor_ptr = this;
  279.     g_bIsRunning     = true;
  280.     m_sFatFileInfoReq = fat_file_info;
  281.     ActiveMan->SetActiveFunction(::Req_FAT_GetFileInfo);
  282. }
  283. //---------------------------------------------------------------------------
  284. void CFATEDITOR::Req_FAT_GetFileInfo(void)
  285. {
  286.     if (!g_bIsRunning)
  287.     {
  288.         return;
  289.     }
  290.     // erase vector
  291.     if (!m_sFatFileInfoCnf.v_FATFileName.empty())
  292.     {
  293.         m_sFatFileInfoCnf.v_FATFileName.erase(m_sFatFileInfoCnf.v_FATFileName.begin(), m_sFatFileInfoCnf.v_FATFileName.end());
  294.     }
  295.     int fs_handle;
  296.     META_RESULT MetaResult = META_FAT_Find_Start_r(m_META_HANDLE_Obj.Get_MainHandle(), m_sFatFileInfoReq.as_FAT_file_path.c_str(), m_sFatFileInfoReq.as_FAT_file_type.c_str(), m_sFatFileInfoReq.e_FAT_find_mode, &fs_handle, &m_sToken);
  297.     if (MetaResult != META_SUCCESS)
  298.     {
  299.         Set_ErrorString(MetaResult);
  300.         switch (MetaResult)
  301.         {
  302.             case META_TIMEOUT:
  303.             {
  304.                 Confirm(METAAPP_TIMEOUT);
  305.             }
  306.             break;
  307.             case META_FAT_FILE_NOT_FOUND:
  308.             {
  309.                 Confirm(METAAPP_FAT_FILE_NOT_FOUND);
  310.             }
  311.             break;
  312.             default:
  313.             {
  314.                 Confirm(METAAPP_FAIL);
  315.             }
  316.             break;
  317.         }
  318.         return;
  319.     }
  320.     do
  321.     {
  322.         char c_fat_file_path[MAX_FILE_PATH_LEN];
  323.         int  i_fat_file_size;
  324.         MetaResult = META_FAT_Find_GetFileInfo(fs_handle, c_fat_file_path, sizeof(c_fat_file_path), &i_fat_file_size);
  325.         if (MetaResult != META_SUCCESS)
  326.         {
  327.             Set_ErrorString(MetaResult);
  328.             if (MetaResult != META_TIMEOUT)
  329.             {
  330.                 Confirm(METAAPP_FAIL);
  331.             }
  332.             else
  333.             {
  334.                 Confirm(METAAPP_TIMEOUT);
  335.             }
  336.             return;
  337.         }
  338.         AnsiString as_fat_file_path(c_fat_file_path);
  339.         m_sFatFileInfoCnf.v_FATFileName.push_back(as_fat_file_path);
  340.     }
  341.     while((MetaResult = META_FAT_Find_Next(fs_handle)) == META_SUCCESS);
  342.    //FAT_filepath_size = i;
  343.     MetaResult = META_FAT_Find_Close(&fs_handle);
  344.     if (MetaResult != META_SUCCESS)
  345.     {
  346.         Set_ErrorString(MetaResult);
  347.         if (MetaResult != META_TIMEOUT)
  348.         {
  349.             Confirm(METAAPP_FAIL);
  350.         }
  351.         else
  352.         {
  353.             Confirm(METAAPP_TIMEOUT);
  354.         }
  355.         return;
  356.     }
  357.     Confirm(METAAPP_SUCCESS);
  358. }
  359. //============================================================================
  360. void CFATEDITOR::Req_FAT_Read_To_File_Start(S_FAT_READ_T fat_read)
  361. {
  362.     g_fat_editor_ptr  = this;
  363.     g_bIsRunning      = true;
  364.     m_sFatRead        = fat_read;
  365.     ActiveMan->SetActiveFunction(::Req_FAT_Read_To_File);
  366. }
  367. //---------------------------------------------------------------------
  368. void CFATEDITOR::Req_FAT_Read_To_File(void)
  369. {
  370.     if (!g_bIsRunning)
  371.     {
  372.         return;
  373.     }
  374.     m_sProgress.percent = 0;
  375.     int fs_handle;
  376.     vector<AnsiString>:: iterator iter;
  377.     for (iter = m_sFatRead.v_FATFileName.begin(); iter != m_sFatRead.v_FATFileName.end(); iter++)
  378.     {
  379.         m_sProgress.as_file_name = *iter;
  380.         // open FAT file handle
  381.         META_RESULT MetaResult = META_FAT_Open_r(m_META_HANDLE_Obj.Get_MainHandle(), iter->c_str(), FAT_OPEN_READ, &fs_handle, &m_sToken);
  382.         if (MetaResult != META_SUCCESS)
  383.         {
  384.             Set_ErrorString(MetaResult);
  385.             if (MetaResult != META_TIMEOUT)
  386.             {
  387.                 Confirm(METAAPP_FAIL);
  388.             }
  389.             else
  390.             {
  391.                 Confirm(METAAPP_TIMEOUT);
  392.             }
  393.             return;
  394.         }
  395.         // read FAT file
  396.         AnsiString as_FAT_filename;
  397.         getFilenameFromStr(*iter, as_FAT_filename);
  398.         MetaResult = META_FAT_Read_To_File_r(m_META_HANDLE_Obj.Get_MainHandle(), fs_handle, (m_sFatRead.as_LocalFilePath + as_FAT_filename).c_str(), ::cbFATProgress, NULL, &m_sToken);
  399.         if (MetaResult != META_SUCCESS)
  400.         {
  401.             Set_ErrorString(MetaResult);
  402.             MetaResult = META_FAT_Close_r(m_META_HANDLE_Obj.Get_MainHandle(), &fs_handle, &m_sToken);
  403.             if (MetaResult != META_TIMEOUT)
  404.             {
  405.                 Confirm(METAAPP_FAIL);
  406.             }
  407.             else
  408.             {
  409.                 Confirm(METAAPP_TIMEOUT);
  410.             }
  411.             return;
  412.         }
  413.         // close FAT file handle
  414.         MetaResult = META_FAT_Close_r(m_META_HANDLE_Obj.Get_MainHandle(), &fs_handle, &m_sToken);
  415.         if (MetaResult != META_SUCCESS)
  416.         {
  417.             Set_ErrorString(MetaResult);
  418.             if (MetaResult != META_TIMEOUT)
  419.             {
  420.                 Confirm(METAAPP_FAIL);
  421.             }
  422.             else
  423.             {
  424.                 Confirm(METAAPP_TIMEOUT);
  425.             }
  426.             return;
  427.         }
  428.     }
  429.     Confirm(METAAPP_SUCCESS);
  430. }
  431. //-------------------------------------------------------------------------------------------------
  432. int __stdcall CFATEDITOR::cbFATProgress(unsigned char percent, int sent_bytes, int total_bytes, const short token, void *usr_arg)
  433. {
  434.     m_sProgress.percent     = percent;
  435.     m_sProgress.sent_bytes  = sent_bytes;
  436.     m_sProgress.total_bytes = total_bytes;
  437.     return 0;
  438. }
  439. //============================================================================
  440. void CFATEDITOR::Req_FAT_Write_By_File_Start(S_FAT_WRITE_T fat_write, S_FAT_FILE_INFO_REQ_T file_info)
  441. {
  442.     g_fat_editor_ptr  = this;
  443.     g_bIsRunning      = true;
  444.     m_sFatWrite       = fat_write;
  445.     m_sFatFileInfoReq = file_info;
  446.     ActiveMan->SetActiveFunction(::Req_FAT_Write_By_File);
  447. }
  448. //-------------------------------------------------------------------------------------------------
  449. void CFATEDITOR::Req_FAT_Write_By_File(void)
  450. {
  451.     if (!g_bIsRunning)
  452.     {
  453.         return;
  454.     }
  455.     m_sProgress.percent = 0;
  456.     int fs_handle;
  457.     vector<AnsiString>:: iterator iter;
  458.     for (iter = m_sFatWrite.v_LocalFileName.begin(); iter != m_sFatWrite.v_LocalFileName.end(); iter++)
  459.     {
  460.         m_sProgress.as_file_name = *iter;
  461.         // write FAT file
  462.         FAT_FILE_INFO_REQ_T req;
  463.         char cDriveLetter[1];
  464.         strncpy(cDriveLetter, m_sFatWrite.as_FATFilePath.c_str(), 1);
  465.         req.m_cDriveLetter = cDriveLetter[0];
  466.         AnsiString as_LocalFilePathName(m_sFatWrite.as_LocalFilePath + *iter);
  467.         req.m_pcfilepath = as_LocalFilePathName.c_str();
  468.         META_RESULT MetaResult = META_FAT_CheckEnoughSpace_r(m_META_HANDLE_Obj.Get_MainHandle(), &req);
  469.         if (MetaResult != META_SUCCESS)
  470.         {
  471.             Set_ErrorString(MetaResult);
  472.             Confirm(METAAPP_FAT_DISK_NOT_ENOUGH);
  473.             return;
  474.         }
  475.         // open FAT file handle
  476.         AnsiString as_FATFilePathName(m_sFatWrite.as_FATFilePath + *iter);
  477.         MetaResult = META_FAT_Open_r(m_META_HANDLE_Obj.Get_MainHandle(), as_FATFilePathName.c_str(), FAT_OPEN_WRITE, &fs_handle, &m_sToken);
  478.         if (MetaResult != META_SUCCESS)
  479.         {
  480.             Set_ErrorString(MetaResult);
  481.             if (MetaResult != META_TIMEOUT)
  482.             {
  483.                 Confirm(METAAPP_FAIL);
  484.             }
  485.             else
  486.             {
  487.                 Confirm(METAAPP_TIMEOUT);
  488.             }
  489.             return;
  490.         }
  491.         // write file to FAT
  492.         MetaResult = META_FAT_Write_By_File_r(m_META_HANDLE_Obj.Get_MainHandle(), fs_handle, as_LocalFilePathName.c_str(), ::cbFATProgress, NULL, &m_sToken);
  493.         if (MetaResult != META_SUCCESS)
  494.         {
  495.             Set_ErrorString(MetaResult);
  496.             MetaResult = META_FAT_Close_r(m_META_HANDLE_Obj.Get_MainHandle(), &fs_handle, &m_sToken);
  497.             if (MetaResult != META_TIMEOUT)
  498.             {
  499.                 Confirm(METAAPP_FAIL);
  500.             }
  501.             else
  502.             {
  503.                 Confirm(METAAPP_TIMEOUT);
  504.             }
  505.             return;
  506.         }
  507.         MetaResult = META_FAT_Close_r(m_META_HANDLE_Obj.Get_MainHandle(), &fs_handle, &m_sToken);
  508.         if (MetaResult != META_SUCCESS)
  509.         {
  510.             Set_ErrorString(MetaResult);
  511.             if (MetaResult != META_TIMEOUT)
  512.             {
  513.                 Confirm(METAAPP_FAIL);
  514.             }
  515.             else
  516.             {
  517.                 Confirm(METAAPP_TIMEOUT);
  518.             }
  519.             return;
  520.         }
  521.     }
  522.     ActiveMan->SetActiveFunction(::Req_FAT_GetFileInfo);
  523. #if 0
  524.     if( (m_eMetaResult = META_FAT_Find_Start_r( m_META_HANDLE_Obj.Get_MainHandle(), FAT_file_path, FAT_file_type, FAT_FIND_FILE_RECURSIVE, &fs_handle, &m_sToken)) == META_SUCCESS  )
  525.     {
  526.        do
  527.        {
  528.            META_FAT_Find_GetFileInfo(fs_handle, filepath, sizeof(filepath), &filesize);
  529.            strcpy(FAT_filepath[i], filepath);
  530.            i++;
  531.        }
  532.        while( META_SUCCESS == META_FAT_Find_Next(fs_handle) );
  533.        FAT_filepath_size = i;
  534.        META_FAT_Find_Close(&fs_handle);
  535.     }
  536.     g_bIsRunning = false;
  537.     return true;
  538. #endif
  539. }
  540. //==========================================================================
  541. void CFATEDITOR::Req_FAT_Delete_Start(S_FAT_DELETE_T fat_delete, S_FAT_FILE_INFO_REQ_T file_info)
  542. {
  543.     g_fat_editor_ptr  = this;
  544.     g_bIsRunning      = true;
  545.     m_sFatDelete      = fat_delete;
  546.     m_sFatFileInfoReq = file_info;
  547.     ActiveMan->SetActiveFunction(::Req_FAT_Delete);
  548. }
  549. //---------------------------------------------------------------------------------------------------------
  550. void CFATEDITOR::Req_FAT_Delete(void)
  551. {
  552.     if (!g_bIsRunning)
  553.     {
  554.         return;
  555.     }
  556.     vector<AnsiString>:: iterator iter;
  557.     for (iter = m_sFatDelete.v_FATFileName.begin(); iter != m_sFatDelete.v_FATFileName.end(); iter++)
  558.     {
  559.         m_sProgress.as_file_name = *iter;
  560.         // delete FAT file
  561.         META_RESULT MetaResult = META_FAT_Delete_r(m_META_HANDLE_Obj.Get_MainHandle(), iter->c_str(), &m_sToken);
  562.         if (MetaResult != META_SUCCESS)
  563.         {
  564.             Set_ErrorString(MetaResult);
  565.             if (MetaResult != META_TIMEOUT)
  566.             {
  567.                 Confirm(METAAPP_FAIL);
  568.             }
  569.             else
  570.             {
  571.                 Confirm(METAAPP_TIMEOUT);
  572.             }
  573.             return;
  574.         }
  575.     }
  576.     ActiveMan->SetActiveFunction(::Req_FAT_GetFileInfo);
  577.    // get FAT file list
  578.    #if 0
  579.    int i=0;
  580.    if( ( m_eMetaResult = META_FAT_Find_Start_r( m_META_HANDLE_Obj.Get_MainHandle(), FAT_file_path, FAT_file_type, FAT_FIND_FILE_RECURSIVE, &fs_handle, &m_sToken)) == META_SUCCESS  )
  581.    {
  582.        do{
  583.           META_FAT_Find_GetFileInfo(fs_handle, filepath, sizeof(filepath), &filesize);
  584.           strcpy(FAT_filepath[i], filepath);
  585.           i++;
  586.          }while( META_SUCCESS == META_FAT_Find_Next(fs_handle) );
  587.          FAT_filepath_size = i;
  588.          META_FAT_Find_Close(&fs_handle);
  589.    }
  590.    g_bIsRunning = false;
  591.    return true;
  592.    #endif
  593.     ActiveMan->SetActiveFunction(::Req_FAT_GetFileInfo); 
  594. }
  595. //===========================================================================
  596. ////////////////////////////  Global information  ///////////////////////////
  597. //===========================================================================
  598. E_METAAPP_RESULT_T CFATEDITOR::Get_ConfirmState(void)
  599. {
  600.     return  m_eConfirmState;
  601. }
  602. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  603. void CFATEDITOR::Get_Progress(S_FAT_PROGRESS_T &progress)
  604. {
  605.     progress = m_sProgress;
  606. }
  607. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  608. void CFATEDITOR::Get_FatDiskInfo(FAT_DiskInfo_T& disk_info)
  609. {
  610.     disk_info = m_sFatDiskInfo;
  611. }
  612. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  613. void CFATEDITOR::Get_FatDirInfo(S_FAT_DIRECTORY_INFO_CNF_T& dir_info)
  614. {
  615.     dir_info = m_sFatDirInfoCnf;
  616. }
  617. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  618. void CFATEDITOR::Get_FatFileInfo(S_FAT_FILE_INFO_CNF_T& file_info)
  619. {
  620.     file_info = m_sFatFileInfoCnf;
  621. }
  622. //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  623. void CFATEDITOR::Get_ErrorString(AnsiString& as_err)
  624. {
  625.     as_err = m_asErrStr;
  626. }
  627. //--------------------------------------------------------------------------
  628. void CFATEDITOR::Set_ErrorString(META_RESULT MetaResult)
  629. {
  630.     const char *ErrMsg;
  631.     ErrMsg = META_GetErrorString(MetaResult);
  632.     m_asErrStr = (AnsiString) ErrMsg;
  633. }