Clone
ixen <ixen@copyhandler.com>
committed
on 03 Nov 16
Added automatic selection of task when opening status dialog with no task hint (CH-277).
ParallelizeReaderWriter + 3 more
src/ch/StatusDlg.cpp (+33 -7)
145 145         m_images.Add(AfxGetApp()->LoadIcon(MAKEINTRESOURCE(IDI_PAUSED_ICON)));
146 146         m_images.Add(AfxGetApp()->LoadIcon(MAKEINTRESOURCE(IDI_FINISHED_ICON)));
147 147         m_images.Add(AfxGetApp()->LoadIcon(MAKEINTRESOURCE(IDI_CANCELLED_ICON)));
148 148         m_images.Add(AfxGetApp()->LoadIcon(MAKEINTRESOURCE(IDI_WAITING_ICON)));
149 149
150 150         m_ctlStatusList.SetImageList(&m_images, LVSIL_SMALL);
151 151
152 152         // set fixed progresses ranges
153 153         m_ctlTaskCountProgress.SetRange32(0, 100);
154 154         m_ctlProgressAll.SetRange32(0, 100);
155 155
156 156         // change the size of a dialog
157 157         StickDialogToScreenEdge();
158 158 //      ApplyButtonsState();
159 159 //      EnableControls(false);
160 160
161 161         // refresh data
162 162         RefreshStatus();
163 163
164 164         // select needed element
  165         SelectInitialTask();
  166
  167         // refresh data timer
  168         SetTimer(777, GetPropValue<PP_STATUSREFRESHINTERVAL>(GetConfig()), nullptr);
  169
  170         return TRUE;
  171 }
  172
  173 void CStatusDlg::SelectInitialTask()
  174 {
165 175         size_t stIndex = 0;
  176         bool bSelected = false;
166 177         while(stIndex < m_pTasks->GetSize())
167 178         {
168                   if(m_pTasks->GetAt(stIndex) == m_spInitialSelection)
  179                 chcore::TTaskPtr spTask = m_pTasks->GetAt(stIndex);
  180                 if(m_spInitialSelection)
169 181                 {
  182                         if(spTask == m_spInitialSelection)
  183                         {
170 184                                 m_ctlStatusList.SetItemState(boost::numeric_cast<int>(stIndex), LVIS_SELECTED, LVIS_SELECTED);
  185                                 bSelected = true;
171 186                                 break;
172 187                         }
  188                 }
  189                 else
  190                 {
  191                         if(spTask->IsRunning())
  192                         {
  193                                 m_ctlStatusList.SetItemState(boost::numeric_cast<int>(stIndex), LVIS_SELECTED, LVIS_SELECTED);
  194                                 bSelected = true;
  195                                 break;
  196                         }
  197                 }
173 198
174 199                 stIndex++;
175 200         }
176 201
177           // refresh data timer
178           SetTimer(777, GetPropValue<PP_STATUSREFRESHINTERVAL>(GetConfig()), nullptr);
179  
180           return TRUE;
  202         if(!bSelected)
  203         {
  204                 stIndex = m_pTasks->GetSize() - 1;
  205                 m_ctlStatusList.SetItemState(boost::numeric_cast<int>(stIndex), LVIS_SELECTED, LVIS_SELECTED);
181 206         }
  207 }
182 208
183 209 void CStatusDlg::EnableControls(bool bEnable)
184 210 {
185 211         // enable/disable controls
186 212         GetDlgItem(IDC_SET_BUFFERSIZE_BUTTON)->EnableWindow(bEnable);
187 213         GetDlgItem(IDC_SET_PRIORITY_BUTTON)->EnableWindow(bEnable);
188 214         GetDlgItem(IDC_TASK_ADVANCED_BUTTON)->EnableWindow(bEnable);
189 215
190 216         if (!bEnable)
191 217         {
192 218                 GetDlgItem(IDC_TASKID_STATIC)->SetWindowText(GetResManager().LoadString(IDS_EMPTYTASKID_STRING));
193 219
194 220                 GetDlgItem(IDC_OPERATION_STATIC)->SetWindowText(GetResManager().LoadString(IDS_EMPTYOPERATIONTEXT_STRING));
195 221                 GetDlgItem(IDC_SOURCEOBJECT_STATIC)->SetWindowText(GetResManager().LoadString(IDS_EMPTYSOURCETEXT_STRING));
196 222                 GetDlgItem(IDC_DESTINATIONOBJECT_STATIC)->SetWindowText(GetResManager().LoadString(IDS_EMPTYDESTINATIONTEXT_STRING));
197 223                 GetDlgItem(IDC_BUFFERSIZE_STATIC)->SetWindowText(GetResManager().LoadString(IDS_EMPTYBUFFERSIZETEXT_STRING));
198 224                 GetDlgItem(IDC_THREADPRIORITY_STATIC)->SetWindowText(GetResManager().LoadString(IDS_EMPTYPRIORITYTEXT_STRING));
199 225                 
200 226                 // subtask
201 227                 GetDlgItem(IDC_SUBTASKNAME_STATIC)->SetWindowText(GetResManager().LoadString(IDS_EMPTYSUBTASKNAME_STRING));