515
515
CSearchDialog::CSearchDialog(wxWindow* parent, CState* pState, CQueueView* pQueue)
516
516
: CStateEventHandler(pState)
520
, m_pWindowStateManager(0)
520
m_pWindowStateManager = 0;
524
525
CSearchDialog::~CSearchDialog()
890
891
// Now in a second phase filter out all files that are also in a directory
891
892
std::list<int> selected_files_new;
892
for (std::list<int>::const_iterator iter = selected_files.begin(); iter != selected_files.end(); iter++)
893
for (std::list<int>::const_iterator iter = selected_files.begin(); iter != selected_files.end(); ++iter)
894
895
CServerPath path = m_results->m_fileData[*iter].path;
895
896
std::list<CServerPath>::const_iterator path_iter;
896
for (path_iter = selected_dirs.begin(); path_iter != selected_dirs.end(); path_iter++)
897
for (path_iter = selected_dirs.begin(); path_iter != selected_dirs.end(); ++path_iter)
898
899
if (*path_iter == path || path_iter->IsParentOf(path, false))
902
903
selected_files_new.push_back(*iter);
904
905
selected_files.swap(selected_files_new);
906
907
// At this point selected_dirs contains uncomparable
907
908
// paths and selected_files contains only files not
908
909
// covered by any of those directories.
951
952
bool start = XRCCTRL(dlg, "ID_QUEUE_START", wxRadioButton)->GetValue();
952
953
bool flatten = XRCCTRL(dlg, "ID_PATHS_FLATTEN", wxRadioButton)->GetValue();
954
for (std::list<int>::const_iterator iter = selected_files.begin(); iter != selected_files.end(); iter++)
955
for (std::list<int>::const_iterator iter = selected_files.begin(); iter != selected_files.end(); ++iter)
956
957
const CDirentry& entry = m_results->m_fileData[*iter].entry;
966
967
segments.push_front(remote_path.GetLastSegment());
967
968
remote_path = remote_path.GetParent();
969
for (std::list<wxString>::const_iterator segment_iter = segments.begin(); segment_iter != segments.end(); segment_iter++)
970
for (std::list<wxString>::const_iterator segment_iter = segments.begin(); segment_iter != segments.end(); ++segment_iter)
970
971
target_path.AddSegment(*segment_iter);
988
989
mode = start ? CRecursiveOperation::recursive_download : CRecursiveOperation::recursive_addtoqueue;
990
for (std::list<CServerPath>::const_iterator iter = selected_dirs.begin(); iter != selected_dirs.end(); iter++)
991
for (std::list<CServerPath>::const_iterator iter = selected_dirs.begin(); iter != selected_dirs.end(); ++iter)
992
993
CLocalPath target_path = path;
993
994
if (!flatten && iter->HasParent())
1021
1022
wxString question;
1022
1023
if (selected_dirs.empty())
1023
question.Printf(wxPLURAL("Really delete %d file?", "Really delete %d files?", selected_files.size()), selected_files.size());
1024
question.Printf(wxPLURAL("Really delete %d file from the server?", "Really delete %d files from the server?", selected_files.size()), selected_files.size());
1024
1025
else if (selected_files.empty())
1025
question.Printf(wxPLURAL("Really delete %d directory with its contents?", "Really delete %d directories with their contents?", selected_dirs.size()), selected_dirs.size());
1026
question.Printf(wxPLURAL("Really delete %d directory with its contents from the server?", "Really delete %d directories with their contents from the server?", selected_dirs.size()), selected_dirs.size());
1028
1029
wxString files = wxString::Format(wxPLURAL("%d file", "%d files", selected_files.size()), selected_files.size());
1029
1030
wxString dirs = wxString::Format(wxPLURAL("%d directory with its contents", "%d directories with their contents", selected_dirs.size()), selected_dirs.size());
1030
question.Printf(_("Really delete %s and %s?"), files.c_str(), dirs.c_str());
1031
question.Printf(_("Really delete %s and %s from the server?"), files.c_str(), dirs.c_str());
1033
1034
if (wxMessageBox(question, _("Confirm deletion"), wxICON_QUESTION | wxYES_NO) != wxYES)
1036
for (std::list<int>::const_iterator iter = selected_files.begin(); iter != selected_files.end(); iter++)
1037
for (std::list<int>::const_iterator iter = selected_files.begin(); iter != selected_files.end(); ++iter)
1038
1039
const CDirentry& entry = m_results->m_fileData[*iter].entry;
1039
1040
std::list<wxString> files_to_delete;
1041
1042
m_pState->m_pCommandQueue->ProcessCommand(new CDeleteCommand(m_results->m_fileData[*iter].path, files_to_delete));
1044
for (std::list<CServerPath>::const_iterator iter = selected_dirs.begin(); iter != selected_dirs.end(); iter++)
1045
for (std::list<CServerPath>::const_iterator iter = selected_dirs.begin(); iter != selected_dirs.end(); ++iter)
1046
1047
CServerPath path = *iter;
1047
1048
if (!path.HasParent())