Beispiel #1
0
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();
               }
            }
         }
Beispiel #2
0
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();
    }
}
Beispiel #3
0
void x_notify_disk_insertion(int _size,int _start, int _isprodos,int slot, int drive)
{

	readImageInfo(slot,drive+1,_size,_start,_isprodos);
}