ChoosePhotoBase.h 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280
  1. #ifndef __CHOOSEPHOTOBASE_H__
  2. #define __CHOOSEPHOTOBASE_H__
  3. #include "MyBmpButton2.h"
  4. #include "resource.h"
  5. #include <afxtempl.h>
  6. #include "shockwaveflash.h"
  7. #include "EditListCtrl.h"
  8. #include "ShowSelPhoto.h"
  9. #include "ShowSelPhoto2.h"
  10. #include "DragListCtrl.h" // add by Jeff 2015.04.06
  11. #include "DragDropListCtrl.h" // add by Jeff 2015.04.06
  12. #include <vector>
  13. using namespace std;
  14. #define THUMBNAIL_WIDTH 100
  15. #define THUMBNAIL_HEIGHT 90
  16. //文件类型;
  17. typedef enum _FILETYPE
  18. {
  19. TYPE_FOLDER = 1, //文件夹;
  20. TYPE_ICON //图标;
  21. }FILETYPE;
  22. //查看相片时的操作类型索引;
  23. typedef enum _OPERTYPEINDX
  24. {
  25. INDX_ALL = 0, //全部;
  26. INDX_SEL, //选中;
  27. INDX_NOSEL, //未选;
  28. INDX_DEL, //删除;
  29. INDX_INTOALBUM, //入册;
  30. INDX_ENTRYPHASSE //入底;
  31. }OPERTYPEINDX;
  32. //图片资源;
  33. typedef struct _SResData
  34. {
  35. int nType; //文件类型;
  36. CString strName; //文件名;
  37. CString strFilePath; //文件图片全路径;
  38. }SResData;
  39. //菜单按钮信息;
  40. struct SMenuBtnData
  41. {
  42. UINT nID;
  43. CString strBtnName;
  44. SMenuBtnData(const UINT n, const LPCTSTR pName)
  45. {
  46. nID = n;
  47. strBtnName = pName;
  48. }
  49. };
  50. typedef struct _SFolderInfo SFolderInfo;
  51. // 选片、选设计基类;
  52. class ChoosePhotoBase : public CDialog
  53. {
  54. public:
  55. ChoosePhotoBase();
  56. ChoosePhotoBase(DWORD id, CWnd *pParent);
  57. virtual ~ChoosePhotoBase();
  58. virtual BOOL OnInitDialog();
  59. virtual CStringArray* GetCurArray(const int nIndx, SFolderInfo* m_pForder = NULL);
  60. virtual BOOL OnDel();
  61. //点击右键事件
  62. virtual void OnRclickList1();
  63. virtual CString GetZSInfo(int iItem);
  64. virtual BOOL ReLoad();
  65. virtual BOOL GetData();
  66. virtual void UpdateChooseZS();
  67. virtual void LoadPhotos();
  68. virtual void GetNoSelPhoto();
  69. virtual void GetDelPhotos(OUT CString& strDelPhotos);
  70. //获取所有文件夹名;
  71. virtual void GetAllFolderNames(CString& strNames);
  72. // 排序;
  73. virtual void ChoosePhotoBase::SortArray2(CArray<int, int>&datearray);
  74. // 创建线程加载函数LoadThumbNail3;
  75. virtual void LoadThumbImages();
  76. virtual BOOL TerminateThread();
  77. // 绘制工作;
  78. virtual void DrawImageWork() = 0;
  79. // 缩放图片大小;
  80. virtual void ZoomImage(Image* pImage, Rect& desRt);
  81. // 绘制界面;
  82. virtual void DrawInterface();
  83. // 获取路径添加到选中相片;
  84. virtual int GetPathAddToSel(CStringArray* pSelArr, const CString& strName, CStringArray* pAllArr);
  85. virtual void OnPaint2(CWnd *pWnd);
  86. //通过文件夹获取所有文件;
  87. virtual void GetAllFileFromFolder(const int nType, CString& strFileNames);
  88. public:
  89. static CString GetModifyTime2(CString path);
  90. // 从相片编号获取路径;
  91. static CString GetPathFromNo2(CString dir, CString no, CStringArray *pArray);
  92. // 从相片编号获取路径;
  93. static CString GetPathFromNo(CString dir, CString no, CStringArray *pArray);
  94. void SetLiaPath(CString path);
  95. int DelPhotoFromName(CStringArray& arr, const CString& strName);
  96. int GetZS(CString str);
  97. int GetCrrSel(){return m_SelectCategory;}
  98. void GetSelCountFromName(CString name, CString &scount);
  99. // 获取全部图片路径;
  100. void GetAllPhotoPath(CString& strDirPath, CStringArray& arr);
  101. // 获取套系名称;
  102. void GetTXName(const CString* pStrOrder, const int nModle, BOOL& bGrowthTx, CString& strTxName);
  103. void GetPhotos();
  104. // 判断字符串是否是数字组成;
  105. BOOL CheckOK(CString name);
  106. BOOL CheckName(CString name);
  107. CString GetSelName(CString name);
  108. // 清除资源的路径;
  109. void ClearResData();
  110. // 记录要删除的相片;
  111. void RecordDeletedPhotos(CString* pStrDel, CStringArray& arr);
  112. // 添加选中相片;
  113. int AddPhotoFromDir(CStringArray* pSelArr, const CString& strDir, CString& str);
  114. void Save(IN LPCTSTR lpPath, IN LPCTSTR lpFileName);
  115. BOOL IsPhoto2Exist();
  116. // 文件是否存在;
  117. BOOL IsFileExistInDir(CString* pPath);
  118. // 是否选取相片;
  119. BOOL IsSelPhoto(CString strPhotoName);
  120. // 检查本机上是否有缓存的相片;
  121. BOOL IsThereACacheImg();
  122. // 获取未选相片数量;
  123. int GetNoSelPhotoCount(CStringArray* pAllPhotoPath, CStringArray* pSelPhotoPath);
  124. void CalChooseZS(CStringArray* pSelArr, CStringArray* pAllArr);
  125. //重新从资源里加载图片;
  126. int ReLoadImageFromRes(Image** pImageOut, const CString& strFile, BOOL& bNulling);
  127. //检测目录是否存在;
  128. BOOL IsShareFolderExist(CString& strSharePath);
  129. protected:
  130. BOOL m_bSort;
  131. BOOL m_bCanSave;
  132. int m_ticks;
  133. int m_timer;
  134. int m_nChoosePhotoType; // =0:修片; =1:原片 =2:原片+修片;
  135. CString m_sChooseFilter;
  136. CStringArray m_DirArrayBuf;
  137. ShowSelPhoto m_selphotownd;
  138. ShowSelPhoto2 m_selphotownd2;
  139. public:
  140. CString m_liapath;
  141. CString m_path; // 选片或看设计的片种目录;
  142. CString m_strOrderNumber;
  143. CString m_status8;
  144. CString m_name;
  145. CString m_seltxname; // 选片时选中的套系名或景点名;
  146. CString taoxiname;
  147. CString m_taoxijiage;
  148. CString m_waiter1;
  149. CString m_waiter2;
  150. CString m_clothescount;
  151. CString ren;
  152. CString m_time5old;
  153. CString m_time6old;
  154. CString m_checkstatus; // 未看 或者 OK;
  155. CString m_size;
  156. CString m_oldmoney3;
  157. CString m_name1;
  158. CString m_name2;
  159. CString m_phone1;
  160. CString m_phone2;
  161. CString m_time4;
  162. CString m_waiter3; // 选片人员(g_user.name当前登陆系统人员)
  163. CString m_takezs;
  164. CString m_taoxizs;
  165. CString m_choosezs;
  166. CString m_money3;
  167. CString m_urgent;
  168. CString m_bz3;
  169. CString m_bz4;
  170. CString m_bz2;
  171. CString m_time5;
  172. CString m_time6;
  173. CString m_delphotos; // dindan.delphotos字段里保存着删除的相片,格式:001;002;003;004;
  174. CStringArray m_AllPhotoPath; // 查看全部相片;相片名的全路径名;
  175. CStringArray m_SelPhotoPath; // 查看选中相片;
  176. CStringArray m_NoSelPhotoPath; // 查看未选相片;
  177. CStringArray m_DelPhotoPath; // 查看删除相片;相片名的全路径名;
  178. CStringArray m_IntoAlbumPath; // 查看入册相片;
  179. CStringArray m_EntryPhasepath; // 查看入底相片;
  180. CArray<CStringArray, CStringArray> m_oldsparray; // 表dindansp3;
  181. CArray<CStringArray, CStringArray> m_sparray; // 表shangpin:订单号、商品名、商品单位、商品价格1、价格2、价格3、类别、是否上架、备注;
  182. CArray<CStringArray, CStringArray> m_List2array; // 表shangpin;
  183. int m_SelectCategory; // 作用:当前欲查看的相片(全部、选中、未选、删除、入册、入底);
  184. int m_Runingmode; // 作用:选片模式==0、看设计模式==1, 默认为0;
  185. BOOL m_bSave;
  186. int m_bModify; // 修改;
  187. BOOL m_bSaveFail;
  188. BOOL m_bGrowthTX;
  189. BOOL m_bHide; //是否显示小图;
  190. BOOL m_bFromLocal; //是否通过本地获取相图路径;
  191. bool m_bRunning; // 线程运行标志;
  192. bool m_bTerminate; // 线程终止的标志;
  193. unsigned int m_dwThreadID; // Thread ID;
  194. HANDLE m_hThread;
  195. HANDLE m_hEvent; // Thread and Event handle;
  196. vector<SResData*> m_vResData; //
  197. HWND m_showpichwd;
  198. Image* m_pHideImg; // 相片icon;
  199. Image* m_pBk;
  200. CArray<DWORD, DWORD> m_picarray; // DWORD = MyBmpButton2*地址;
  201. CArray<CRect, CRect> m_rcarray; // MyBmpButton2位置;
  202. // dindansp.no或no2的记录(未使用);
  203. CStringArray m_noarray;
  204. // dindansp.no或no2的记录;
  205. CStringArray m_no2array;
  206. // CListCtrl m_ListCtrl;
  207. CImageList m_ImageListThumb; // image list holding the thumbnails
  208. // dindansp表: 自动id、编号、商品名称、价格、数量、(p数、张数、)照片编号;
  209. CEditListCtrl m_List3;
  210. // dindansp表: 用于显示dindansp表,商品编号,商品名,数量;
  211. CEditListCtrl m_List2;
  212. CComboBox m_combo1;
  213. #if JEFF_TEST_ON
  214. //CDragListCtrl m_List1;
  215. CDragDropListCtrl m_List1;
  216. #else
  217. CListCtrl m_List1;
  218. #endif
  219. };
  220. #endif // #ifndef __CHOOSEPHOTOBASE_H__