| |
137 |
137 |
else if (dwData & DROPEFFECT_MOVE) |
| |
138 |
138 |
pTask->SetStatus(ST_MOVE, ST_OPERATION_MASK); |
| |
139 |
139 |
|
| |
140 |
140 |
GlobalUnlock(handle); |
| |
141 |
141 |
} |
| |
142 |
142 |
else |
| |
143 |
143 |
pTask->SetStatus(ST_COPY, ST_OPERATION_MASK); |
| |
144 |
144 |
|
| |
145 |
145 |
EmptyClipboard(); |
| |
146 |
146 |
CloseClipboard(); |
| |
147 |
147 |
|
| |
148 |
148 |
BUFFERSIZES bs; |
| |
149 |
149 |
bs.m_bOnlyDefault=rConfig.get_bool(PP_BFUSEONLYDEFAULT); |
| |
150 |
150 |
bs.m_uiDefaultSize=(UINT)rConfig.get_signed_num(PP_BFDEFAULT); |
| |
151 |
151 |
bs.m_uiOneDiskSize=(UINT)rConfig.get_signed_num(PP_BFONEDISK); |
| |
152 |
152 |
bs.m_uiTwoDisksSize=(UINT)rConfig.get_signed_num(PP_BFTWODISKS); |
| |
153 |
153 |
bs.m_uiCDSize=(UINT)rConfig.get_signed_num(PP_BFCD); |
| |
154 |
154 |
bs.m_uiLANSize=(UINT)rConfig.get_signed_num(PP_BFLAN); |
| |
155 |
155 |
|
| |
156 |
156 |
pTask->SetBufferSizes(&bs); |
| |
157 |
|
pTask->SetPriority((int)rConfig.get_signed_num(PP_CMDEFAULTPRIORITY)); |
| |
|
157 |
pTask->SetPriority(boost::numeric_cast<int>(rConfig.get_signed_num(PP_CMDEFAULTPRIORITY))); |
| |
158 |
158 |
|
| |
159 |
159 |
|
| |
160 |
160 |
CFolderDialog dlg; |
| |
161 |
161 |
|
| |
162 |
162 |
const tchar_t* pszPath = NULL; |
| |
163 |
163 |
dlg.m_bdData.cvShortcuts.clear(true); |
| |
164 |
164 |
size_t stCount = rConfig.get_value_count(PP_SHORTCUTS); |
| |
165 |
165 |
for(size_t stIndex = 0; stIndex < stCount; stIndex++) |
| |
166 |
166 |
{ |
| |
167 |
167 |
pszPath = rConfig.get_string(PP_SHORTCUTS, stIndex); |
| |
168 |
168 |
dlg.m_bdData.cvShortcuts.push_back(pszPath); |
| |
169 |
169 |
} |
| |
170 |
170 |
|
| |
171 |
171 |
dlg.m_bdData.cvRecent.clear(true); |
| |
172 |
172 |
stCount = rConfig.get_value_count(PP_RECENTPATHS); |
| |
173 |
173 |
for(size_t stIndex = 0; stIndex < stCount; stIndex++) |
| |
174 |
174 |
{ |
| |
175 |
175 |
pszPath = rConfig.get_string(PP_RECENTPATHS, stIndex); |
| |
176 |
176 |
dlg.m_bdData.cvRecent.push_back(pszPath); |
| |
177 |
177 |
} |
| |
178 |
178 |
|
| |
179 |
179 |
dlg.m_bdData.bExtended=rConfig.get_bool(PP_FDEXTENDEDVIEW); |
| |
180 |
|
dlg.m_bdData.cx=(int)rConfig.get_signed_num(PP_FDWIDTH); |
| |
181 |
|
dlg.m_bdData.cy=(int)rConfig.get_signed_num(PP_FDHEIGHT); |
| |
182 |
|
dlg.m_bdData.iView=(int)rConfig.get_signed_num(PP_FDSHORTCUTLISTSTYLE); |
| |
|
180 |
dlg.m_bdData.cx=boost::numeric_cast<int>(rConfig.get_signed_num(PP_FDWIDTH)); |
| |
|
181 |
dlg.m_bdData.cy=boost::numeric_cast<int>(rConfig.get_signed_num(PP_FDHEIGHT)); |
| |
|
182 |
dlg.m_bdData.iView=boost::numeric_cast<int>(rConfig.get_signed_num(PP_FDSHORTCUTLISTSTYLE)); |
| |
183 |
183 |
dlg.m_bdData.bIgnoreDialogs=rConfig.get_bool(PP_FDIGNORESHELLDIALOGS); |
| |
184 |
184 |
|
| |
185 |
185 |
dlg.m_bdData.strInitialDir=(dlg.m_bdData.cvRecent.size() > 0) ? dlg.m_bdData.cvRecent.at(0) : _T(""); |
| |
186 |
186 |
|
| |
187 |
187 |
int iStatus=pTask->GetStatus(ST_OPERATION_MASK); |
| |
188 |
188 |
if (iStatus == ST_COPY) |
| |
189 |
189 |
dlg.m_bdData.strCaption=GetResManager().LoadString(IDS_TITLECOPY_STRING); |
| |
190 |
190 |
else if (iStatus == ST_MOVE) |
| |
191 |
191 |
dlg.m_bdData.strCaption=GetResManager().LoadString(IDS_TITLEMOVE_STRING); |
| |
192 |
192 |
else |
| |
193 |
193 |
dlg.m_bdData.strCaption=GetResManager().LoadString(IDS_TITLEUNKNOWNOPERATION_STRING); |
| |
194 |
194 |
dlg.m_bdData.strText=GetResManager().LoadString(IDS_MAINBROWSETEXT_STRING); |
| |
195 |
195 |
|
| |
196 |
196 |
|
| |
197 |
197 |
size_t stClipboardSize = pTask->GetClipboardDataSize(); |
| |
198 |
198 |
size_t stEntries = (stClipboardSize > 3) ? 2 : stClipboardSize; |
| |
199 |
199 |
for(size_t i = 0; i < stEntries; i++) |
| |
200 |
200 |
{ |
| |
201 |
201 |
dlg.m_bdData.strText += pTask->GetClipboardData(i)->GetPath() + _T("\n"); |
| |
202 |
202 |
} |
|
| |
221 |
221 |
rConfig.set_string(PP_RECENTPATHS, (*it), icpf::property::action_add); |
| |
222 |
222 |
} |
| |
223 |
223 |
|
| |
224 |
224 |
rConfig.set_bool(PP_FDEXTENDEDVIEW, dlg.m_bdData.bExtended); |
| |
225 |
225 |
rConfig.set_signed_num(PP_FDWIDTH, dlg.m_bdData.cx); |
| |
226 |
226 |
rConfig.set_signed_num(PP_FDHEIGHT, dlg.m_bdData.cy); |
| |
227 |
227 |
rConfig.set_signed_num(PP_FDSHORTCUTLISTSTYLE, dlg.m_bdData.iView); |
| |
228 |
228 |
rConfig.set_bool(PP_FDIGNORESHELLDIALOGS, dlg.m_bdData.bIgnoreDialogs); |
| |
229 |
229 |
rConfig.write(NULL); |
| |
230 |
230 |
|
| |
231 |
231 |
if ( iResult != IDOK ) |
| |
232 |
232 |
delete pTask; |
| |
233 |
233 |
else |
| |
234 |
234 |
{ |
| |
235 |
235 |
|
| |
236 |
236 |
CString strData; |
| |
237 |
237 |
dlg.GetPath(strData); |
| |
238 |
238 |
pTask->SetDestPath(strData); |
| |
239 |
239 |
|
| |
240 |
240 |
|
| |
241 |
|
for (int i=0;i<pTask->GetClipboard()->GetSize();i++) |
| |
242 |
|
pTask->GetClipboard()->GetAt(i)->CalcBufferIndex(pTask->GetDestPath()); |
| |
|
241 |
for (size_t stIndex = 0; stIndex < pTask->GetClipboard()->GetSize(); ++stIndex) |
| |
|
242 |
{ |
| |
|
243 |
pTask->GetClipboard()->GetAt(stIndex)->CalcBufferIndex(pTask->GetDestPath()); |
| |
|
244 |
} |
| |
243 |
245 |
|
| |
244 |
246 |
|
| |
245 |
247 |
pData->m_pTasks->Add(pTask); |
| |
246 |
248 |
|
| |
247 |
249 |
|
| |
248 |
250 |
pTask->Store(true); |
| |
249 |
251 |
pTask->Store(false); |
| |
250 |
252 |
|
| |
251 |
253 |
|
| |
252 |
254 |
pTask->BeginProcessing(); |
| |
253 |
255 |
} |
| |
254 |
256 |
} |
| |
255 |
257 |
|
| |
256 |
258 |
|
| |
257 |
259 |
if (GetConfig().get_bool(PP_PSHUTDOWNAFTREFINISHED)) |
| |
258 |
260 |
{ |
| |
259 |
261 |
if (uiShutCounter == 0) |
| |
260 |
262 |
{ |
| |
261 |
263 |
if (lFinished != pData->m_pTasks->m_lFinished) |
| |
262 |
264 |
{ |
| |
263 |
265 |
bEnd=true; |
| |
264 |
266 |
lFinished=pData->m_pTasks->m_lFinished; |
| |
265 |
267 |
} |
| |
266 |
268 |
|
| |
267 |
269 |
if (bEnd && pData->m_pTasks->IsFinished()) |
| |
268 |
270 |
{ |
| |
269 |
271 |
TRACE("Shut down windows\n"); |
| |
270 |
272 |
bool bShutdown=true; |
| |
271 |
273 |
if (GetConfig().get_signed_num(PP_PTIMEBEFORESHUTDOWN) != 0) |
| |
272 |
274 |
{ |
| |
273 |
275 |
CShutdownDlg dlg; |
| |
274 |
|
dlg.m_iOverallTime=(int)GetConfig().get_signed_num(PP_PTIMEBEFORESHUTDOWN); |
| |
|
276 |
dlg.m_iOverallTime = boost::numeric_cast<int>(GetConfig().get_signed_num(PP_PTIMEBEFORESHUTDOWN)); |
| |
275 |
277 |
if (dlg.m_iOverallTime < 0) |
| |
276 |
278 |
dlg.m_iOverallTime=-dlg.m_iOverallTime; |
| |
277 |
279 |
bShutdown=(dlg.DoModal() != IDCANCEL); |
| |
278 |
280 |
} |
| |
279 |
281 |
|
| |
280 |
282 |
GetConfig().set_bool(PP_PSHUTDOWNAFTREFINISHED, false); |
| |
281 |
283 |
GetConfig().write(NULL); |
| |
282 |
284 |
if (bShutdown) |
| |
283 |
285 |
{ |
| |
284 |
286 |
|
| |
285 |
287 |
HANDLE hToken=NULL; |
| |
286 |
288 |
TOKEN_PRIVILEGES tp; |
| |
287 |
289 |
if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken) |
| |
288 |
290 |
&& LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tp.Privileges[0].Luid)) |
| |
289 |
291 |
{ |
| |
290 |
292 |
tp.PrivilegeCount=1; |
| |
291 |
293 |
tp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED; |
| |
292 |
294 |
|
| |
293 |
295 |
AdjustTokenPrivileges(hToken, FALSE, &tp, NULL, NULL, NULL); |
| |
294 |
296 |
} |