示例#1
0
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);
}