| |
27 |
27 |
|
| |
28 |
28 |
#ifdef _DEBUG |
| |
29 |
29 |
#define new DEBUG_NEW |
| |
30 |
30 |
#undef THIS_FILE |
| |
31 |
31 |
static char THIS_FILE[] = __FILE__; |
| |
32 |
32 |
#endif |
| |
33 |
33 |
|
| |
34 |
34 |
#define WM_INITDATA WM_USER+5 |
| |
35 |
35 |
|
| |
36 |
36 |
static const int sg_iMargin = 8; |
| |
37 |
37 |
|
| |
38 |
38 |
#define ROUND(val) ( ( (val)-static_cast<int>(val) > 0.5 ) ? static_cast<int>(val)+1 : static_cast<int>(val) ) |
| |
39 |
39 |
#undef ROUNDUP // from other module |
| |
40 |
40 |
#define ROUNDUP(val, to) ( (static_cast<int>((val)/(to))+1 )*(to) ) |
| |
41 |
41 |
|
| |
42 |
42 |
bool CMiniViewDlg::m_bLock=false; |
| |
43 |
43 |
|
| |
44 |
44 |
|
| |
45 |
45 |
|
| |
46 |
46 |
|
| |
47 |
|
CMiniViewDlg::CMiniViewDlg(chcore::TTaskManager* pArray, bool *pbHide, CWnd* pParent ) |
| |
|
47 |
CMiniViewDlg::CMiniViewDlg(chcore::TTaskManager* pTaskManager, bool *pbHide, CWnd* pParent ) |
| |
48 |
48 |
:ictranslate::CLanguageDialog(IDD_MINIVIEW_DIALOG, pParent, &m_bLock), |
| |
49 |
|
m_spTaskMgrStats(new chcore::TTaskManagerStatsSnapshot) |
| |
|
49 |
m_iLastHeight(0), |
| |
|
50 |
m_bShown(false), |
| |
|
51 |
m_pTasks(pTaskManager), |
| |
|
52 |
m_bActive(false), |
| |
|
53 |
m_iIndex(-1), |
| |
|
54 |
m_pbHide(pbHide) |
| |
50 |
55 |
{ |
| |
51 |
56 |
COLORREF cr3DFace = GetSysColor(COLOR_3DFACE); |
| |
52 |
57 |
m_brBackground.CreateSolidBrush(cr3DFace); |
| |
53 |
|
m_iLastHeight=0; |
| |
54 |
|
m_bShown=false; |
| |
55 |
|
m_pTasks=pArray; |
| |
56 |
|
m_bActive=false; |
| |
57 |
|
m_iIndex=-1; |
| |
58 |
|
m_pbHide=pbHide; |
| |
59 |
58 |
} |
| |
60 |
59 |
|
| |
61 |
|
|
| |
62 |
60 |
void CMiniViewDlg::DoDataExchange(CDataExchange* pDX) |
| |
63 |
61 |
{ |
| |
64 |
62 |
CLanguageDialog::DoDataExchange(pDX); |
| |
65 |
63 |
|
| |
66 |
64 |
DDX_Control(pDX, IDC_PROGRESS_LIST, m_ctlStatus); |
| |
67 |
65 |
|
| |
68 |
66 |
} |
| |
69 |
67 |
|
| |
70 |
68 |
BEGIN_MESSAGE_MAP(CMiniViewDlg,ictranslate::CLanguageDialog) |
| |
71 |
69 |
|
| |
72 |
70 |
ON_WM_CTLCOLOR() |
| |
73 |
71 |
ON_WM_TIMER() |
| |
74 |
72 |
ON_LBN_SELCHANGE(IDC_PROGRESS_LIST, OnSelchangeProgressList) |
| |
75 |
73 |
ON_WM_NCLBUTTONDOWN() |
| |
76 |
74 |
ON_WM_LBUTTONUP() |
| |
77 |
75 |
ON_WM_NCPAINT() |
| |
78 |
76 |
ON_WM_NCACTIVATE() |
| |
79 |
77 |
ON_LBN_SETFOCUS(IDC_PROGRESS_LIST, OnSetfocusProgressList) |
| |
80 |
78 |
ON_LBN_SELCANCEL(IDC_PROGRESS_LIST, OnSelcancelProgressList) |
| |
81 |
79 |
ON_WM_MOUSEMOVE() |
|
| |
178 |
176 |
|
| |
179 |
177 |
|
| |
180 |
178 |
CRect rcDialog, rcScreen; |
| |
181 |
179 |
GetWindowRect(&rcDialog); |
| |
182 |
180 |
SystemParametersInfo(SPI_GETWORKAREA, 0, &rcScreen, 0); |
| |
183 |
181 |
|
| |
184 |
182 |
bool bIsGluedToScreenEdge = (rcDialog.left == rcScreen.right-rcDialog.Width() |
| |
185 |
183 |
&& rcDialog.top == rcScreen.bottom-rcDialog.Height()); |
| |
186 |
184 |
|
| |
187 |
185 |
if (bInitial || bIsGluedToScreenEdge) |
| |
188 |
186 |
SetWindowPos(&wndTopMost, rcScreen.right - iWidth, rcScreen.bottom - iHeight, iWidth, iHeight, 0); |
| |
189 |
187 |
else |
| |
190 |
188 |
SetWindowPos(&wndTopMost, 0, 0, iWidth, iHeight, SWP_NOMOVE); |
| |
191 |
189 |
} |
| |
192 |
190 |
|
| |
193 |
191 |
void CMiniViewDlg::RefreshStatus() |
| |
194 |
192 |
{ |
| |
195 |
193 |
if(!m_pTasks) |
| |
196 |
194 |
return; |
| |
197 |
195 |
|
| |
198 |
|
m_pTasks->GetStatsSnapshot(m_spTaskMgrStats); |
| |
|
196 |
chcore::TTaskManagerStatsSnapshotPtr spTaskMgrStats(new chcore::TTaskManagerStatsSnapshot); |
| |
199 |
197 |
|
| |
|
198 |
m_pTasks->GetStatsSnapshot(spTaskMgrStats); |
| |
|
199 |
|
| |
200 |
200 |
int index=0; |
| |
201 |
201 |
_PROGRESSITEM_* pItem=NULL; |
| |
202 |
202 |
|
| |
203 |
203 |
if(GetPropValue<PP_MVSHOWSINGLETASKS>(GetConfig())) |
| |
204 |
204 |
{ |
| |
205 |
|
size_t stTasksCount = m_spTaskMgrStats->GetTaskStatsCount(); |
| |
|
205 |
size_t stTasksCount = spTaskMgrStats->GetTaskStatsCount(); |
| |
206 |
206 |
for(size_t stIndex = 0; stIndex < stTasksCount; ++stIndex) |
| |
207 |
207 |
{ |
| |
208 |
|
chcore::TTaskStatsSnapshotPtr spTaskStats = m_spTaskMgrStats->GetTaskStatsAt(stIndex); |
| |
|
208 |
chcore::TTaskStatsSnapshotPtr spTaskStats = spTaskMgrStats->GetTaskStatsAt(stIndex); |
| |
209 |
209 |
chcore::ETaskCurrentState eTaskState = spTaskStats->GetTaskState(); |
| |
210 |
210 |
|
| |
211 |
211 |
if(eTaskState != chcore::eTaskState_Finished && eTaskState != chcore::eTaskState_Cancelled && eTaskState != chcore::eTaskState_LoadError) |
| |
212 |
212 |
{ |
| |
213 |
213 |
pItem = m_ctlStatus.GetItemAddress(index++); |
| |
214 |
214 |
|
| |
215 |
215 |
|
| |
216 |
216 |
if(eTaskState == chcore::eTaskState_Error) |
| |
217 |
217 |
pItem->m_crColor=RGB(255, 0, 0); |
| |
218 |
218 |
else if(eTaskState == chcore::eTaskState_Paused) |
| |
219 |
219 |
pItem->m_crColor=RGB(255, 255, 0); |
| |
220 |
220 |
else if(eTaskState == chcore::eTaskState_Waiting) |
| |
221 |
221 |
pItem->m_crColor=RGB(0, 0, 255); |
| |
222 |
222 |
else |
| |
223 |
223 |
pItem->m_crColor=RGB(0, 255, 0); |
| |
224 |
224 |
|
| |
225 |
225 |
chcore::TString strPath; |
| |
226 |
226 |
chcore::TSubTaskStatsSnapshotPtr spSubtaskStats = spTaskStats->GetSubTasksStats().GetCurrentSubTaskSnapshot(); |
| |
227 |
227 |
if(spSubtaskStats) |
| |
228 |
228 |
strPath = spSubtaskStats->GetCurrentPath(); |
|
| |
257 |
257 |
{ |
| |
258 |
258 |
if (!m_bShown) |
| |
259 |
259 |
{ |
| |
260 |
260 |
if (!(*m_pbHide)) |
| |
261 |
261 |
{ |
| |
262 |
262 |
ShowWindow(); |
| |
263 |
263 |
bInitial=true; |
| |
264 |
264 |
} |
| |
265 |
265 |
} |
| |
266 |
266 |
else |
| |
267 |
267 |
{ |
| |
268 |
268 |
if (*m_pbHide) |
| |
269 |
269 |
HideWindow(); |
| |
270 |
270 |
} |
| |
271 |
271 |
} |
| |
272 |
272 |
|
| |
273 |
273 |
|
| |
274 |
274 |
pItem=m_ctlStatus.GetItemAddress(index++); |
| |
275 |
275 |
pItem->m_crColor=GetSysColor(COLOR_HIGHLIGHT); |
| |
276 |
276 |
pItem->m_strText=GetResManager().LoadString(IDS_MINIVIEWALL_STRING); |
| |
277 |
|
pItem->m_uiPos = boost::numeric_cast<int>(m_spTaskMgrStats->GetCombinedProgress() * 100.0); |
| |
|
277 |
pItem->m_uiPos = boost::numeric_cast<int>(spTaskMgrStats->GetCombinedProgress() * 100.0); |
| |
278 |
278 |
pItem->m_tTaskID = chcore::NoTaskID; |
| |
279 |
279 |
|
| |
280 |
280 |
|
| |
281 |
281 |
m_ctlStatus.SetSmoothProgress(GetPropValue<PP_MVUSESMOOTHPROGRESS>(GetConfig())); |
| |
282 |
282 |
m_ctlStatus.UpdateItems(index, true); |
| |
283 |
283 |
|
| |
284 |
284 |
m_ctlStatus.SetShowCaptions(GetPropValue<PP_MVSHOWFILENAMES>(GetConfig())); |
| |
285 |
285 |
|
| |
286 |
286 |
|
| |
287 |
287 |
RecalcSize(0, bInitial); |
| |
288 |
288 |
} |
| |
289 |
289 |
|
| |
290 |
290 |
LRESULT CMiniViewDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) |
| |
291 |
291 |
{ |
| |
292 |
292 |
if (message == WM_INITDATA) |
| |
293 |
293 |
{ |
| |
294 |
294 |
|
| |
295 |
295 |
m_ctlStatus.Init(); |
| |
296 |
296 |
|
| |
297 |
297 |
|