Changeset 17343


Ignore:
Timestamp:
10/02/2016 08:01:49 PM (8 months ago)
Author:
ghazan
Message:

miranda restart dialog rewritten using ui utils

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/mir_app/src/miranda.cpp

    r17133 r17343  
    146146#define MIRANDA_PROCESS_WAIT_RESOLUTION     1000 
    147147#define MIRANDA_PROCESS_WAIT_STEPS          (MIRANDA_PROCESS_WAIT_TIMEOUT/MIRANDA_PROCESS_WAIT_RESOLUTION) 
    148 static INT_PTR CALLBACK WaitForProcessDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) 
    149 { 
    150         switch (msg) { 
    151         case WM_INITDIALOG: 
    152                 TranslateDialogDefault(hwnd); 
    153                 SetWindowLongPtr(hwnd, GWLP_USERDATA, lParam); 
    154                 SendDlgItemMessage(hwnd, IDC_PROGRESSBAR, PBM_SETRANGE, 0, MAKELPARAM(0, MIRANDA_PROCESS_WAIT_STEPS)); 
    155                 SendDlgItemMessage(hwnd, IDC_PROGRESSBAR, PBM_SETSTEP, 1, 0); 
    156                 SetTimer(hwnd, 1, MIRANDA_PROCESS_WAIT_RESOLUTION, NULL); 
    157                 break; 
    158  
    159         case WM_TIMER: 
    160                 if (SendDlgItemMessage(hwnd, IDC_PROGRESSBAR, PBM_STEPIT, 0, 0) == MIRANDA_PROCESS_WAIT_STEPS) 
    161                         EndDialog(hwnd, 0); 
    162                 if (WaitForSingleObject((HANDLE)GetWindowLongPtr(hwnd, GWLP_USERDATA), 1) != WAIT_TIMEOUT) { 
    163                         SendDlgItemMessage(hwnd, IDC_PROGRESSBAR, PBM_SETPOS, MIRANDA_PROCESS_WAIT_STEPS, 0); 
    164                         EndDialog(hwnd, 0); 
    165                 } 
    166                 break; 
    167  
    168         case WM_COMMAND: 
    169                 if (LOWORD(wParam) == IDCANCEL) { 
    170                         SendDlgItemMessage(hwnd, IDC_PROGRESSBAR, PBM_SETPOS, MIRANDA_PROCESS_WAIT_STEPS, 0); 
    171                         EndDialog(hwnd, 1); 
    172                 } 
    173                 break; 
    174         } 
    175         return FALSE; 
     148 
     149class CWaitRestartDlg : public CDlgBase 
     150{ 
     151        HANDLE m_hProcess; 
     152        CTimer m_timer; 
     153        CProgress m_progress; 
     154        CCtrlButton m_cancel; 
     155 
     156protected: 
     157        void OnInitDialog(); 
     158         
     159        void Timer_OnEvent(CTimer*); 
     160 
     161        void Cancel_OnClick(CCtrlBase*); 
     162 
     163public: 
     164        CWaitRestartDlg(HANDLE hProcess); 
     165}; 
     166 
     167CWaitRestartDlg::CWaitRestartDlg(HANDLE hProcess) 
     168        : CDlgBase(g_hInst, IDD_WAITRESTART), m_timer(this, 1), 
     169        m_progress(this, IDC_PROGRESSBAR), m_cancel(this, IDCANCEL) 
     170{ 
     171        m_autoClose = 0; 
     172        m_hProcess = hProcess; 
     173        m_timer.OnEvent = Callback(this, &CWaitRestartDlg::Timer_OnEvent); 
     174        m_cancel.OnClick = Callback(this, &CWaitRestartDlg::Cancel_OnClick); 
     175} 
     176 
     177void CWaitRestartDlg::OnInitDialog() 
     178{ 
     179        m_progress.SetRange(MIRANDA_PROCESS_WAIT_STEPS); 
     180        m_progress.SetStep(1); 
     181        m_timer.Start(MIRANDA_PROCESS_WAIT_RESOLUTION); 
     182} 
     183 
     184void CWaitRestartDlg::Timer_OnEvent(CTimer *timer) 
     185{ 
     186        if (m_progress.Move() == MIRANDA_PROCESS_WAIT_STEPS) 
     187                EndModal(0); 
     188        if (WaitForSingleObject(m_hProcess, 1) != WAIT_TIMEOUT) { 
     189                m_progress.SetPosition(MIRANDA_PROCESS_WAIT_STEPS); 
     190                EndModal(0); 
     191        } 
     192} 
     193 
     194void CWaitRestartDlg::Cancel_OnClick(CCtrlBase*) 
     195{ 
     196        m_progress.SetPosition(MIRANDA_PROCESS_WAIT_STEPS); 
     197        EndModal(1); 
    176198} 
    177199 
     
    182204                HANDLE hProcess = OpenProcess(SYNCHRONIZE, FALSE, _wtol(tszPID)); 
    183205                if (hProcess) { 
    184                         INT_PTR result = DialogBoxParam(g_hInst, MAKEINTRESOURCE(IDD_WAITRESTART), NULL, WaitForProcessDlgProc, (LPARAM)hProcess); 
     206                        INT_PTR result = dlg.DoModal(); 
    185207                        CloseHandle(hProcess); 
    186208                        return result; 
Note: See TracChangeset for help on using the changeset viewer.