mirror of
https://github.com/YACReader/yacreader
synced 2025-06-03 09:08:20 -04:00
Make YACReader send info for the next comic.
Now we can set the next comic as reading.
This commit is contained in:
parent
50c9238376
commit
5c876e6785
@ -1681,12 +1681,26 @@ void MainWindowViewer::decreasePageZoomLevel()
|
|||||||
|
|
||||||
void MainWindowViewer::sendComic()
|
void MainWindowViewer::sendComic()
|
||||||
{
|
{
|
||||||
YACReaderLocalClient * client = new YACReaderLocalClient;
|
YACReaderLocalClient * client = new YACReaderLocalClient;
|
||||||
currentComicDB.info.lastTimeOpened = QDateTime::currentSecsSinceEpoch();
|
currentComicDB.info.lastTimeOpened = QDateTime::currentSecsSinceEpoch();
|
||||||
viewer->updateComic(currentComicDB);
|
viewer->updateComic(currentComicDB);
|
||||||
int retries = 1;
|
|
||||||
while(!client->sendComicInfo(libraryId,currentComicDB) && retries!=0)
|
if (currentComicDB.info.currentPage == currentComicDB.info.numPages) {
|
||||||
retries--;
|
int currentIndex = siblingComics.indexOf(currentComicDB);
|
||||||
connect(client,SIGNAL(finished()),client,SLOT(deleteLater()));
|
if(currentIndex+1 > 0 && currentIndex+1 < siblingComics.count())
|
||||||
//delete client;
|
{
|
||||||
|
ComicDB & nextComic = siblingComics[currentIndex+1];
|
||||||
|
nextComic.info.hasBeenOpened = true;
|
||||||
|
int retries = 1;
|
||||||
|
while(!client->sendComicInfo(libraryId,currentComicDB,nextComic.id) && retries!=0)
|
||||||
|
retries--;
|
||||||
|
connect(client,SIGNAL(finished()),client,SLOT(deleteLater()));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
int retries = 1;
|
||||||
|
while(!client->sendComicInfo(libraryId,currentComicDB) && retries!=0)
|
||||||
|
retries--;
|
||||||
|
connect(client,SIGNAL(finished()),client,SLOT(deleteLater()));
|
||||||
|
}
|
||||||
|
//delete client;
|
||||||
}
|
}
|
||||||
|
@ -125,47 +125,92 @@ bool YACReaderLocalClient::requestComicInfo(quint64 libraryId, ComicDB & comic,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool YACReaderLocalClient::sendComicInfo(quint64 libraryId, ComicDB & comic)
|
bool YACReaderLocalClient::sendComicInfo(quint64 libraryId, ComicDB & comic)
|
||||||
{
|
{
|
||||||
localSocket->connectToServer(YACREADERLIBRARY_GUID);
|
localSocket->connectToServer(YACREADERLIBRARY_GUID);
|
||||||
if(localSocket->isOpen())
|
if(localSocket->isOpen())
|
||||||
{
|
{
|
||||||
//QLOG_INFO() << "Connection opened for sending ComicInfo";
|
//QLOG_INFO() << "Connection opened for sending ComicInfo";
|
||||||
QByteArray block;
|
QByteArray block;
|
||||||
QDataStream out(&block, QIODevice::WriteOnly);
|
QDataStream out(&block, QIODevice::WriteOnly);
|
||||||
out.setVersion(QDataStream::Qt_4_8);
|
out.setVersion(QDataStream::Qt_4_8);
|
||||||
out << (quint32)0;
|
out << (quint32)0;
|
||||||
out << (quint8)YACReader::SendComicInfo;
|
out << (quint8)YACReader::SendComicInfo;
|
||||||
out << libraryId;
|
out << libraryId;
|
||||||
out << comic;
|
out << comic;
|
||||||
out.device()->seek(0);
|
out.device()->seek(0);
|
||||||
out << (quint32)(block.size() - sizeof(quint32));
|
out << (quint32)(block.size() - sizeof(quint32));
|
||||||
|
|
||||||
int written, previousWritten;
|
int written, previousWritten;
|
||||||
written = previousWritten = 0;
|
written = previousWritten = 0;
|
||||||
int tries = 0;
|
int tries = 0;
|
||||||
while(written != block.size() && tries < 100)
|
while(written != block.size() && tries < 100)
|
||||||
{
|
{
|
||||||
written += localSocket->write(block);
|
written += localSocket->write(block);
|
||||||
if(written == previousWritten)
|
if(written == previousWritten)
|
||||||
tries++;
|
tries++;
|
||||||
previousWritten = written;
|
previousWritten = written;
|
||||||
}
|
}
|
||||||
localSocket->waitForBytesWritten(2000);
|
localSocket->waitForBytesWritten(2000);
|
||||||
localSocket->close();
|
localSocket->close();
|
||||||
//QLOG_INFO() << QString("Sending Comic Info : writen data (%1,%2)").arg(written).arg(block.size());
|
//QLOG_INFO() << QString("Sending Comic Info : writen data (%1,%2)").arg(written).arg(block.size());
|
||||||
if(tries == 100 && written != block.size())
|
if(tries == 100 && written != block.size())
|
||||||
{
|
{
|
||||||
emit finished();
|
emit finished();
|
||||||
QLOG_ERROR() << QString("Sending Comic Info : unable to write data (%1,%2)").arg(written).arg(block.size());
|
QLOG_ERROR() << QString("Sending Comic Info : unable to write data (%1,%2)").arg(written).arg(block.size());
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
emit finished();
|
emit finished();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
emit finished();
|
|
||||||
QLOG_ERROR() << "Sending Comic Info : unable to connect to the server";
|
|
||||||
return false;
|
|
||||||
|
|
||||||
|
emit finished();
|
||||||
|
QLOG_ERROR() << "Sending Comic Info : unable to connect to the server";
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool YACReaderLocalClient::sendComicInfo(quint64 libraryId, ComicDB & comic, qulonglong nextComicId)
|
||||||
|
{
|
||||||
|
localSocket->connectToServer(YACREADERLIBRARY_GUID);
|
||||||
|
if(localSocket->isOpen())
|
||||||
|
{
|
||||||
|
//QLOG_INFO() << "Connection opened for sending ComicInfo";
|
||||||
|
QByteArray block;
|
||||||
|
QDataStream out(&block, QIODevice::WriteOnly);
|
||||||
|
out.setVersion(QDataStream::Qt_4_8);
|
||||||
|
out << (quint32)0;
|
||||||
|
out << (quint8)YACReader::SendComicInfo;
|
||||||
|
out << libraryId;
|
||||||
|
out << comic;
|
||||||
|
out << nextComicId;
|
||||||
|
out.device()->seek(0);
|
||||||
|
out << (quint32)(block.size() - sizeof(quint32));
|
||||||
|
|
||||||
|
int written, previousWritten;
|
||||||
|
written = previousWritten = 0;
|
||||||
|
int tries = 0;
|
||||||
|
while(written != block.size() && tries < 100)
|
||||||
|
{
|
||||||
|
written += localSocket->write(block);
|
||||||
|
if(written == previousWritten)
|
||||||
|
tries++;
|
||||||
|
previousWritten = written;
|
||||||
|
}
|
||||||
|
localSocket->waitForBytesWritten(2000);
|
||||||
|
localSocket->close();
|
||||||
|
//QLOG_INFO() << QString("Sending Comic Info : writen data (%1,%2)").arg(written).arg(block.size());
|
||||||
|
if(tries == 100 && written != block.size())
|
||||||
|
{
|
||||||
|
emit finished();
|
||||||
|
QLOG_ERROR() << QString("Sending Comic Info : unable to write data (%1,%2)").arg(written).arg(block.size());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
emit finished();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
emit finished();
|
||||||
|
QLOG_ERROR() << "Sending Comic Info : unable to connect to the server";
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -18,6 +18,8 @@ public slots:
|
|||||||
void readMessage();
|
void readMessage();
|
||||||
bool requestComicInfo(quint64 libraryId, ComicDB & comic,QList<ComicDB> & siblings);
|
bool requestComicInfo(quint64 libraryId, ComicDB & comic,QList<ComicDB> & siblings);
|
||||||
bool sendComicInfo(quint64 libraryId, ComicDB & comic);
|
bool sendComicInfo(quint64 libraryId, ComicDB & comic);
|
||||||
|
bool sendComicInfo(quint64 libraryId, ComicDB & comic, qulonglong nextComicId);
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QLocalSocket * localSocket;
|
QLocalSocket * localSocket;
|
||||||
|
@ -99,6 +99,7 @@ void YACReaderClientConnectionWorker::run()
|
|||||||
|
|
||||||
quint64 libraryId;
|
quint64 libraryId;
|
||||||
ComicDB comic;
|
ComicDB comic;
|
||||||
|
qulonglong nextComicId;
|
||||||
int tries = 0;
|
int tries = 0;
|
||||||
int dataAvailable = 0;
|
int dataAvailable = 0;
|
||||||
QByteArray packageSize;
|
QByteArray packageSize;
|
||||||
@ -147,6 +148,15 @@ void YACReaderClientConnectionWorker::run()
|
|||||||
dataStream >> libraryId;
|
dataStream >> libraryId;
|
||||||
dataStream >> comic;
|
dataStream >> comic;
|
||||||
|
|
||||||
|
bool nextComicInfoAvailable;
|
||||||
|
|
||||||
|
if(dataStream.atEnd()) {
|
||||||
|
nextComicInfoAvailable = false;
|
||||||
|
} else {
|
||||||
|
nextComicInfoAvailable = true;
|
||||||
|
dataStream >> nextComicId;
|
||||||
|
}
|
||||||
|
|
||||||
switch (msgType)
|
switch (msgType)
|
||||||
{
|
{
|
||||||
case YACReader::RequestComicInfo:
|
case YACReader::RequestComicInfo:
|
||||||
@ -183,11 +193,13 @@ void YACReaderClientConnectionWorker::run()
|
|||||||
}
|
}
|
||||||
case YACReader::SendComicInfo:
|
case YACReader::SendComicInfo:
|
||||||
{
|
{
|
||||||
|
if (nextComicInfoAvailable) {
|
||||||
|
updateComic(libraryId,comic,nextComicId);
|
||||||
|
} else {
|
||||||
updateComic(libraryId,comic);
|
updateComic(libraryId,comic);
|
||||||
//clientConnection->disconnectFromServer();
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
clientConnection->waitForDisconnected();
|
clientConnection->waitForDisconnected();
|
||||||
@ -216,3 +228,14 @@ void YACReaderClientConnectionWorker::updateComic(quint64 libraryId, ComicDB & c
|
|||||||
DBHelper::update(libraryId, comic.info);
|
DBHelper::update(libraryId, comic.info);
|
||||||
emit comicUpdated(libraryId, comic);
|
emit comicUpdated(libraryId, comic);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void YACReaderClientConnectionWorker::updateComic(quint64 libraryId, ComicDB & comic, qulonglong nextComicId)
|
||||||
|
{
|
||||||
|
QMutexLocker locker(&dbMutex);
|
||||||
|
DBHelper::update(libraryId, comic.info);
|
||||||
|
ComicInfo nextcomicinfo;
|
||||||
|
nextcomicinfo.id = nextComicId;
|
||||||
|
DBHelper::setComicAsReading(libraryId, nextcomicinfo);
|
||||||
|
|
||||||
|
emit comicUpdated(libraryId, comic);
|
||||||
|
}
|
||||||
|
@ -43,6 +43,8 @@ private:
|
|||||||
|
|
||||||
void getComicInfo(quint64 libraryId, ComicDB & comic, QList<ComicDB> & sibling);
|
void getComicInfo(quint64 libraryId, ComicDB & comic, QList<ComicDB> & sibling);
|
||||||
void updateComic(quint64 libraryId, ComicDB & comic);
|
void updateComic(quint64 libraryId, ComicDB & comic);
|
||||||
|
void updateComic(quint64 libraryId, ComicDB & comic, qulonglong nextComicId);
|
||||||
|
|
||||||
|
|
||||||
QLocalSocket *clientConnection;
|
QLocalSocket *clientConnection;
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user