void ImageWidget::readImageInfo() { int nn = socket->bytesAvailable(); if(bytesReceived <= 0) { if(socket->bytesAvailable() > 0) { info = new ImageInfo(); bytesReceived = socket->bytesAvailable(); QByteArray tt = socket->readAll(); QByteArray bt = tt.left(8); QDataStream stream1(bt); qint64 infosize; stream1 >>infosize; tt.remove(0,8); QByteArray ct = tt.left(8); QDataStream stream2(ct); stream2 >>totalBytes; tt.remove(0,8); QByteArray infoData = tt.left((int)infosize); tt.remove(0,(int)infosize); QString readData = QString::fromUtf8(infoData); QStringList ColumnList = readData.split(":"); info->id = ColumnList.at(0); info->title = ColumnList.at(1); info->size = ColumnList.at(2); info->path = ColumnList.at(3); info->bm = tt; if(bytesReceived == totalBytes) { socket->disconnectFromHost(); imageInfoList.append(*info); insertTableRow(*info); currentNum++; if(currentNum < imageCount) { ui->progressBar->setValue(currentNum); GetImageInfo(currentNum); }else{ disconnect(socket,SIGNAL(readyRead()),this,SLOT(readImageInfo())); connect(playlist,SIGNAL(clicked(QModelIndex)),this,SLOT(ImageChange(QModelIndex))); connect(playlist, SIGNAL(cellChanged(int,int)), this, SLOT(CheckBoxChanged(int, int))); ui->progressBar->hide(); } } }
void ImageWidget::GetImageInfo(int num) { QString mesg = "IMAGE:GET:"+QString::number(num)+"\n"; bytesReceived = 0; totalBytes = 0; //socket->connectToHost("127.0.0.1",6100,QTcpSocket::ReadWrite); socket->connectToHost(ip,port,QTcpSocket::ReadWrite); if (socket->waitForConnected(2000)) { if(num == 0) { connect(socket,SIGNAL(readyRead()),this,SLOT(readImageInfo())); } socket->write(mesg.toStdString().c_str(), strlen(mesg.toStdString().c_str())); //socket->waitForBytesWritten(); } }
void x_notify_disk_insertion(int _size,int _start, int _isprodos,int slot, int drive) { readImageInfo(slot,drive+1,_size,_start,_isprodos); }