/*************************************************************************** * Copyright (C) 2004 - 2005 by Raphael Langerhorst * * raphael-langerhorst@gmx.at * * * * Permission is hereby granted, free of charge, to any person obtaining * * a copy of this software and associated documentation files (the * * "Software"), to deal in the Software without restriction, including * * without limitation the rights to use, copy, modify, merge, publish, * * distribute, sublicense, and/or sell copies of the Software, and to * * permit persons to whom the Software is furnished to do so, subject to * * the following conditions: * * * * The above copyright notice and this permission notice shall be * * included in all copies or substantial portions of the Software. * * * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.* * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR * * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, * * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR * * OTHER DEALINGS IN THE SOFTWARE. * ***************************************************************************/ #include "GweAdvancedController.h" #include "GDataController.h" #include namespace GWE { GweAdvancedController::GweAdvancedController(GDataController* data, QObject *parent, const char *name) : GweController(data,parent,name), Interrupted(false) { connect(Data,SIGNAL(elementAdded(const GCS::GElementID& )), this,SLOT(connectBasicElementSignals(const GCS::GElementID& ))); connect(Data,SIGNAL(elementOpened(const GCS::GElementID& )), this,SLOT(connectBasicElementSignals(const GCS::GElementID& ))); connect(Data,SIGNAL(elementOpened(const GCS::GElementID& )), this,SLOT(executeOpenElement(const GCS::GElementID& ))); QTimer::singleShot(1000,this,SLOT(startControllerThread())); } GweAdvancedController::~GweAdvancedController() { if (this->running()) { qDebug("Advanced GWE Controller Thread still running, stopping thread..."); this->Interrupted = true; this->wait(); } } void GweAdvancedController::run() { while(!Interrupted) { const QValueList elements = Data->getListOfOpenElements(); QValueList::const_iterator it; for (it = elements.begin(); it != elements.end(); ++it) { Data->writeOpenElementToStorage((*it)); msleep(1); } msleep(10000); } } void GweAdvancedController::interruptThread() { this->Interrupted = true; } void GweAdvancedController::startControllerThread() { this->start(); } }