ProcessingDialog::~ProcessingDialog(void) { ui->view_log->setModel(NULL); if(m_progressIndicator) { m_progressIndicator->stop(); } if(m_diskObserver) { m_diskObserver->stop(); if(!m_diskObserver->wait(15000)) { m_diskObserver->terminate(); m_diskObserver->wait(); } } if(m_cpuObserver) { m_cpuObserver->stop(); if(!m_cpuObserver->wait(15000)) { m_cpuObserver->terminate(); m_cpuObserver->wait(); } } if(m_ramObserver) { m_ramObserver->stop(); if(!m_ramObserver->wait(15000)) { m_ramObserver->terminate(); m_ramObserver->wait(); } } while(!m_threadList.isEmpty()) { ProcessThread *thread = m_threadList.takeFirst(); thread->terminate(); thread->wait(15000); delete thread; } LAMEXP_DELETE(m_progressIndicator); LAMEXP_DELETE(m_systemTray); LAMEXP_DELETE(m_diskObserver); LAMEXP_DELETE(m_cpuObserver); LAMEXP_DELETE(m_ramObserver); LAMEXP_DELETE(m_progressViewFilterGroup); LAMEXP_DELETE(m_filterInfoLabel); LAMEXP_DELETE(m_filterInfoLabelIcon); LAMEXP_DELETE(m_contextMenu); LAMEXP_DELETE(m_progressModel); WinSevenTaskbar::setOverlayIcon(this, NULL); WinSevenTaskbar::setTaskbarState(this, WinSevenTaskbar::WinSevenTaskbarNoState); LAMEXP_DELETE(ui); }