Ejemplo n.º 1
0
void Task::runCloseAllVolumeTask()
{
	m_table->setEnabled( false ) ;
	sleep( 1 ) ; // for ui effect

	int volumeCount = m_table->rowCount() ;

	if( volumeCount > 0 ){

		QVector< QTableWidgetItem * > tableItems( volumeCount ) ;
		QTableWidgetItem ** it = tableItems.data() ;

		for( int i = 0 ; i < volumeCount ; i++ ){
			*( it + i ) = m_table->item( i,0 ) ;
		}

		for( QTableWidgetItem * it : tableItems ){
			QString device = it->text().replace( "\"","\"\"\"" ) ;
			auto r = utility::Task( QString( "%1 -q -d \"%2\"" ).arg( ZULUCRYPTzuluCrypt ).arg( device ) ) ;
			emit taskResult( it,r.exitCode() ) ;
			sleep( 1 ) ; // for ui effect
		}
	}

	m_table->setEnabled( true ) ;
}
/**
 * @brief threading::readyRead Действие по готовности чтения из сокета
 */
void threading::readyRead()
{
    // Считываем данные из сокета
    QString buf = static_cast<QString>(socket->readAll());
    // Считываем данные в буфер до тех пор пока не будет достигнут конец строки
    if (buf.at(buf.size() - 1) == '\n')
    {
        //qDebug() << buf << buf.toInt(); // reserved for debug

        // создаём задачу, которой передаём результат ввода в клиенте
        taskeng *myTask = new taskeng(buf.toInt());
        myTask->setAutoDelete(true);

        // устанавливаем соответствие между сигналом/слотом, атомарно (queued conn)
        connect(myTask, SIGNAL(result(QString)),
                this, SLOT(taskResult(QString)), Qt::QueuedConnection);
        // qDebug() << "Starting new task using a thread from QThreadPool"; // reserved for debug

        QThreadPool::globalInstance()->start(myTask); // returns global QThreadPool instance
        globalBuf = "";
    }
    else
    {
        globalBuf.append(buf);
    }
}