00001
00002
00003
00004
00005
00006 #include "stdafx.h"
00007 #include "FdmApp.h"
00008 #include "UploadsWnd.h"
00009 #include "plugincmds.h"
00010 #include "uploader\coredll\cmds.h"
00011 #include "mfchelp.h"
00012
00013 #ifdef _DEBUG
00014 #define new DEBUG_NEW
00015 #undef THIS_FILE
00016 static char THIS_FILE[] = __FILE__;
00017 #endif
00018
00019 CUploadsWnd *_pwndUploads = NULL;
00020
00021 HMODULE CUploadsWnd::m_hUploadsDll = NULL;
00022
00023 CUploadsWnd::CUploadsWnd()
00024 {
00025 m_pwndUploads = NULL;
00026 }
00027
00028 CUploadsWnd::~CUploadsWnd()
00029 {
00030
00031 }
00032
00033 BEGIN_MESSAGE_MAP(CUploadsWnd, CWnd)
00034
00035 ON_WM_CREATE()
00036 ON_WM_SIZE()
00037
00038
00039 ON_MESSAGE (WM_WGP_SHUTDOWN, OnAppExit)
00040 ON_MESSAGE (WM_WGP_READYTOSHUTDOWN, OnAppQueryExit)
00041 ON_MESSAGE (WM_WGP_UPDATE_MENUMAIN, OnUpdateMenu)
00042 ON_MESSAGE (WM_WGP_UPDATE_MENUVIEW, OnUpdateMenuView)
00043 ON_MESSAGE (WM_WGP_UPDATE_CMDITEM, OnUpdateToolBar)
00044 ON_MESSAGE (WM_WGP_INSERT, OnInsert)
00045
00046 ON_COMMAND_RANGE(ID_ULLIST_1, ID_ULLIST_7, OnListShowCol)
00047 ON_COMMAND_RANGE(ID_ULOG_1, ID_ULOG_3, OnLogShowCol)
00048
00049 ON_COMMAND_RANGE (WGP_MENU_CMDFIRST, WGP_MENU_CMDLAST, OnUploadsCmd)
00050
00051 END_MESSAGE_MAP()
00052
00053 BOOL CUploadsWnd::Create(CWnd *pWndParent)
00054 {
00055 CRect rc (0, 0, 50, 50);
00056
00057 if (FALSE == CWnd::Create (AfxRegisterWndClass (0, NULL,
00058 NULL, NULL), NULL, WS_CHILD | WS_VISIBLE, rc, pWndParent, 0x16721))
00059 return FALSE;
00060
00061 return TRUE;
00062 }
00063
00064 HWND CUploadsWnd::Plugin_CreateMainWindow(HWND hWndParent)
00065 {
00066 fsnew1 (_pwndUploads, CUploadsWnd);
00067
00068 _pwndUploads->Create (CWnd::FromHandle (hWndParent));
00069
00070 return _pwndUploads->m_hWnd;
00071 }
00072
00073 void CUploadsWnd::Plugin_GetToolBarInfo(wgTButtonInfo **ppButtons, int *pcButtons)
00074 {
00075 static wgTButtonInfo btns [] =
00076 {
00077 wgTButtonInfo (ID_UPL_CREATENEW, TBSTYLE_BUTTON, ""),
00078 wgTButtonInfo (ID_UPL_START, TBSTYLE_BUTTON, ""),
00079 wgTButtonInfo (ID_UPL_STOP, TBSTYLE_BUTTON, ""),
00080
00081 };
00082
00083 btns [0].pszToolTip = LS (L_UPLOADFILES);
00084 btns [1].pszToolTip = LS (L_START_UPLOAD);
00085 btns [2].pszToolTip = LS (L_STOP_UPLOAD);
00086
00087
00088 *ppButtons = btns;
00089 *pcButtons = sizeof (btns) / sizeof (wgTButtonInfo);
00090 }
00091
00092 void CUploadsWnd::Plugin_GetMenuImages(fsSetImage **ppImages, int *pcImages)
00093 {
00094 static fsSetImage images [] =
00095 {
00096 fsSetImage (ID_UPL_CREATENEW, 0),
00097 fsSetImage (ID_UPL_START, 1),
00098 fsSetImage (ID_UPL_STOP, 2),
00099
00100 fsSetImage (ID_UPL_PROPERTIES, 6),
00101 fsSetImage (ID_UPL_DELETE, 7),
00102 };
00103
00104 *ppImages = images;
00105 *pcImages = sizeof (images) / sizeof (fsSetImage);
00106 }
00107
00108 void CUploadsWnd::Plugin_GetMenuViewItems(wgMenuViewItem **ppItems, int *)
00109 {
00110 *ppItems = NULL;
00111 }
00112
00113 void CUploadsWnd::Plugin_GetPluginNames(LPCSTR *ppszLong, LPCSTR *ppszShort)
00114 {
00115 static CString strName;
00116 strName = LSNP (L_UPLOADS);
00117 *ppszLong = *ppszShort = strName;
00118 }
00119
00120 void CUploadsWnd::Plugin_SetLanguage(wgLanguage, HMENU hMenuMain, HMENU hMenuView)
00121 {
00122 _pwndUploads->ApplyLanguageToMenu (CMenu::FromHandle (hMenuMain));
00123 _pwndUploads->ApplyLanguageToMenuView (CMenu::FromHandle (hMenuView));
00124 if (_pwndUploads->m_pwndUploads != NULL)
00125 _pwndUploads->m_pwndUploads->ApplyLanguage ();
00126 }
00127
00128 LRESULT CUploadsWnd::OnAppExit(WPARAM, LPARAM)
00129 {
00130 if (m_pwndUploads)
00131 m_pwndUploads->StopAllUploads (FALSE);
00132
00133 while (m_pwndUploads->get_UploadsStat ()->IsUploadsRunning ())
00134 {
00135 Sleep (10);
00136 MSG msg;
00137 while (PeekMessage (&msg, NULL, 0, 0, PM_REMOVE))
00138 DispatchMessage (&msg);
00139 }
00140
00141 SaveAll ();
00142
00143 return 0;
00144 }
00145
00146 LRESULT CUploadsWnd::OnAppQueryExit(WPARAM, LPARAM)
00147 {
00148 return 0;
00149 }
00150
00151 LRESULT CUploadsWnd::OnUpdateMenu(WPARAM, LPARAM lp)
00152 {
00153 UpdateMenu (CMenu::FromHandle (*((HMENU*)lp)));
00154 return 0;
00155 }
00156
00157 void CUploadsWnd::UpdateMenu(CMenu *pMenu)
00158 {
00159 if (m_pwndUploads)
00160 m_pwndUploads->UpdateMenu (pMenu);
00161 }
00162
00163 LRESULT CUploadsWnd::OnUpdateToolBar(WPARAM wp, LPARAM)
00164 {
00165 return UpdateToolBar (wp);
00166 }
00167
00168 int CUploadsWnd::UpdateToolBar(UINT nID)
00169 {
00170 if (m_pwndUploads == NULL)
00171 return 0;
00172
00173 BOOL bEnabled, bChecked;
00174
00175 m_pwndUploads->GetMenuCommandState (nID, bEnabled, bChecked);
00176
00177 int iState = bEnabled ? WGP_CMDITEMSTATE_ENABLED : WGP_CMDITEMSTATE_DISABLED;
00178 if (bChecked) iState |= WGP_CMDITEMSTATE_CHECKED;
00179
00180 return iState;
00181 }
00182
00183 LRESULT CUploadsWnd::OnInsert(WPARAM, LPARAM)
00184 {
00185 OnUploadsCmd (ID_UPL_CREATENEW);
00186 return 0;
00187 }
00188
00189 LRESULT CUploadsWnd::OnUpdateMenuView(WPARAM, LPARAM lp)
00190 {
00191 HMENU* pMenus = (HMENU*) lp;
00192 UpdateListColMenu (CMenu::FromHandle (pMenus [0]));
00193 UpdateLogColMenu (CMenu::FromHandle (pMenus [1]));
00194 return 0;
00195 }
00196
00197 void CUploadsWnd::ApplyLanguageToMenu(CMenu *menu)
00198 {
00199 menu->ModifyMenu (0, MF_BYPOSITION | MF_STRING, 0, LS (L_UPLOADS));
00200
00201 if (m_pwndUploads)
00202 m_pwndUploads->ApplyLanguageToMenu (menu);
00203 }
00204
00205 int CUploadsWnd::OnCreate(LPCREATESTRUCT lpCreateStruct)
00206 {
00207 if (CWnd::OnCreate(lpCreateStruct) == -1)
00208 return -1;
00209
00210 if (FALSE == LoadFumCoreDll (true))
00211 return -1;
00212
00213 vmsUploadsDll::FNSDC pfnSetCaller = (vmsUploadsDll::FNSDC) GetProcAddress (m_hUploadsDll,
00214 "_SetDllCaller");
00215 ASSERT (pfnSetCaller != NULL);
00216 pfnSetCaller (&m_udc);
00217
00218 vmsUploadsDll::FNCUW pfnCreate = (vmsUploadsDll::FNCUW) GetProcAddress (m_hUploadsDll,
00219 "_CreateUploadsWindow");
00220 ASSERT (pfnCreate != NULL);
00221
00222 m_pwndUploads = pfnCreate (this);
00223
00224 return 0;
00225 }
00226
00227 void CUploadsWnd::OnSize(UINT nType, int cx, int cy)
00228 {
00229 if (m_pwndUploads)
00230 m_pwndUploads->get_Wnd ()->MoveWindow (0, 0, cx, cy);
00231 }
00232
00233 void CUploadsWnd::SaveAll()
00234 {
00235 if (m_pwndUploads)
00236 m_pwndUploads->SaveAll ();
00237 }
00238
00239 void CUploadsWnd::UpdateLogColMenu(CMenu *menu)
00240 {
00241 ASSERT (m_pwndUploads);
00242
00243
00244 BOOL bEn = m_pwndUploads->GetListViewColumnCount (vmsUploadsDll::LV_TASK_LOG) > 1;
00245 for (int i = 0; i < 3; i++)
00246 {
00247 if (m_pwndUploads->IsListViewColumnShown (vmsUploadsDll::LV_TASK_LOG, i))
00248 {
00249 menu->CheckMenuItem (ID_ULOG_1+i, MF_CHECKED);
00250 if (bEn == FALSE)
00251
00252 menu->EnableMenuItem (ID_ULOG_1+i, MF_GRAYED);
00253 }
00254 }
00255 }
00256
00257 void CUploadsWnd::ApplyLanguageToMenuView(CMenu *menu)
00258 {
00259 menu->ModifyMenu (0, MF_BYPOSITION | MF_STRING, 0, LS (L_LISTOFUPLS));
00260 menu->ModifyMenu (1, MF_BYPOSITION | MF_STRING, 0, LS (L_LOG));
00261
00262 UINT aCmds [] = {ID_ULLIST_1, ID_ULLIST_2, ID_ULLIST_3, ID_ULLIST_4, ID_ULLIST_5,
00263 ID_ULLIST_6, ID_ULLIST_7, ID_ULOG_1, ID_ULOG_2, ID_ULOG_3 };
00264 LPCSTR apszCmds [] = {"URL", LS (L_NAME), LS (L_SIZE), LS (L_UPLOADED),
00265 LS (L_TIMELEFT), LS (L_SPEED), LS (L_ADDED),
00266 LS (L_TIME), LS (L_DATE), LS (L_INFORMATION)};
00267
00268 for (int i = 0; i < sizeof (aCmds) / sizeof (UINT); i++)
00269 menu->ModifyMenu (aCmds [i], MF_BYCOMMAND|MF_STRING, aCmds [i], apszCmds [i]);
00270 }
00271
00272 void CUploadsWnd::UpdateListColMenu(CMenu *menu)
00273 {
00274 ASSERT (m_pwndUploads);
00275
00276 BOOL bEn = m_pwndUploads->GetListViewColumnCount (vmsUploadsDll::LV_UPLOADS_TASKS) > 1;
00277 for (int i = 0; i < 7; i++)
00278 {
00279 if (m_pwndUploads->IsListViewColumnShown (vmsUploadsDll::LV_UPLOADS_TASKS, i))
00280 {
00281 menu->CheckMenuItem (ID_ULLIST_1+i, MF_CHECKED);
00282 if (bEn == FALSE)
00283 menu->EnableMenuItem (ID_ULLIST_1+i, MF_GRAYED);
00284 }
00285 }
00286 }
00287
00288 void CUploadsWnd::OnListShowCol(UINT nID)
00289 {
00290 int iCol = nID - ID_ULLIST_1;
00291 m_pwndUploads->ChangeListViewColumnVisibility (vmsUploadsDll::LV_UPLOADS_TASKS, iCol);
00292 }
00293
00294 void CUploadsWnd::OnLogShowCol(UINT nID)
00295 {
00296 int iCol = nID - ID_ULOG_1;
00297 m_pwndUploads->ChangeListViewColumnVisibility (vmsUploadsDll::LV_TASK_LOG, iCol);
00298 }
00299
00300 HMENU CUploadsWnd::Plugin_GetMainMenu()
00301 {
00302 return _pwndUploads->m_pwndUploads ?
00303 _pwndUploads->m_pwndUploads->GetUploadsMenu () : NULL;
00304 }
00305
00306 HMENU CUploadsWnd::Plugin_GetViewMenu()
00307 {
00308 return LoadMenu (AfxGetInstanceHandle (), MAKEINTRESOURCE (IDM_UPLOADS_VIEW));
00309 }
00310
00311 void CUploadsWnd::OnUploadsCmd(UINT nCmd)
00312 {
00313 m_pwndUploads->get_Wnd ()->SendMessage (WM_COMMAND, nCmd);
00314 }
00315
00316
00317 BOOL CUploadsWnd::LoadFumCoreDll(bool bShowUI)
00318 {
00319 if (m_hUploadsDll == NULL)
00320 {
00321 #ifndef _DEBUG
00322 CString strFP = fsGetFumProgramFilesFolder ();
00323 m_hUploadsDll = LoadLibrary (strFP + "fumcore.dll");
00324 #else
00325 m_hUploadsDll = LoadLibrary ("D:\\VCW\\FDM\\FDM\\Uploader\\CoreDll\\Debug\\fumcore.dll");
00326 ASSERT (m_hUploadsDll != NULL);
00327 #endif
00328
00329 if (m_hUploadsDll == NULL)
00330 return FALSE;
00331 }
00332
00333 vmsUploadsDll::FNGV pfnGetVersion = (vmsUploadsDll::FNGV) GetProcAddress (m_hUploadsDll,
00334 "_GetVersion");
00335 DWORD dwMajorVer;
00336 pfnGetVersion (&dwMajorVer, NULL);
00337 if (dwMajorVer != vmsUploadsDll::DLL_INTERFACE_VERSION)
00338 {
00339 FreeLibrary (m_hUploadsDll);
00340 m_hUploadsDll = NULL;
00341
00342 if (bShowUI)
00343 {
00344 ::MessageBox (AfxGetApp ()->m_pMainWnd->m_hWnd,
00345 LS (L_FDM_FUMCOREDLL_REQTOUPDATE), LS (L_WARNING), MB_ICONERROR);
00346 }
00347
00348 return FALSE;
00349 }
00350
00351 return TRUE;
00352 }