From d28b56db17036f3a4b0b9980f134868a6a764efe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luis=20=C3=81ngel=20San=20Mart=C3=ADn?= Date: Thu, 21 May 2015 12:09:25 +0200 Subject: [PATCH] fixed crash on server when the content of an empty folder is requested (browsing) --- .../server/controllers/foldercontroller.cpp | 128 +++++++++--------- 1 file changed, 67 insertions(+), 61 deletions(-) diff --git a/YACReaderLibrary/server/controllers/foldercontroller.cpp b/YACReaderLibrary/server/controllers/foldercontroller.cpp index 7a8f9cb7..30aa657f 100644 --- a/YACReaderLibrary/server/controllers/foldercontroller.cpp +++ b/YACReaderLibrary/server/controllers/foldercontroller.cpp @@ -51,7 +51,7 @@ void FolderController::service(HttpRequest& request, HttpResponse& response) } if(folderId!=1) - t.setVariable("folder.name",folderName); + t.setVariable("folder.name",folderName); else t.setVariable("folder.name",libraryName); QList folderContent = DBHelper::getFolderSubfoldersFromLibrary(libraryId,folderId); @@ -155,75 +155,81 @@ void FolderController::service(HttpRequest& request, HttpResponse& response) t.setVariable(QString("path%1.name").arg(i-1),DBHelper::getFolderName(libraryId,foldersPath[i].first)); } - t.loop("element",numFoldersAtCurrentPage); - int i = 0; - while(iname); - if(item->isDir()) - { - t.setVariable(QString("element%1.class").arg(i),"folder"); - - QList children = DBHelper::getFolderComicsFromLibrary(libraryId, item->id); - if(children.length()>0) + if(folderContent.length() > 0) + { + t.loop("element",numFoldersAtCurrentPage); + int i = 0; + while(iname); + if(item->isDir()) { - const ComicDB * comic = static_cast(children.at(0)); - t.setVariable(QString("element%1.image.url").arg(i),QString("/library/%1/cover/%2.jpg?folderCover=true").arg(libraryId).arg(comic->info.hash)); + t.setVariable(QString("element%1.class").arg(i),"folder"); + + QList children = DBHelper::getFolderComicsFromLibrary(libraryId, item->id); + if(children.length()>0) + { + const ComicDB * comic = static_cast(children.at(0)); + t.setVariable(QString("element%1.image.url").arg(i),QString("/library/%1/cover/%2.jpg?folderCover=true").arg(libraryId).arg(comic->info.hash)); + } + else + t.setVariable(QString("element%1.image.url").arg(i),"/images/f.png"); + + t.setVariable(QString("element%1.browse").arg(i),QString("BROWSE").arg(QString("/library/%1/folder/%2").arg(libraryId).arg(item->id))); + t.setVariable(QString("element%1.cover.browse").arg(i),QString("").arg(QString("/library/%1/folder/%2").arg(libraryId).arg(item->id))); + t.setVariable(QString("element%1.cover.browse.end").arg(i),""); + //t.setVariable(QString("element%1.url").arg(i),"/library/"+libraryName+"/folder/"+QString("%1").arg(folderContent.at(i + (page*10))->id)); + //t.setVariable(QString("element%1.downloadurl").arg(i),"/library/"+libraryName+"/folder/"+QString("%1/info").arg(folderContent.at(i + (page*elementsPerPage))->id)); + + t.setVariable(QString("element%1.download").arg(i),QString("IMPORT").arg("/library/"+QString::number(libraryId)+"/folder/"+QString("%1/info").arg(folderContent.at(i + (page*elementsPerPage))->id))); + t.setVariable(QString("element%1.read").arg(i),""); + + t.setVariable(QString("element%1.size").arg(i),""); + t.setVariable(QString("element%1.pages").arg(i),""); + t.setVariable(QString("element%1.status").arg(i),""); } else - t.setVariable(QString("element%1.image.url").arg(i),"/images/f.png"); - - t.setVariable(QString("element%1.browse").arg(i),QString("BROWSE").arg(QString("/library/%1/folder/%2").arg(libraryId).arg(item->id))); - t.setVariable(QString("element%1.cover.browse").arg(i),QString("").arg(QString("/library/%1/folder/%2").arg(libraryId).arg(item->id))); - t.setVariable(QString("element%1.cover.browse.end").arg(i),""); - //t.setVariable(QString("element%1.url").arg(i),"/library/"+libraryName+"/folder/"+QString("%1").arg(folderContent.at(i + (page*10))->id)); - //t.setVariable(QString("element%1.downloadurl").arg(i),"/library/"+libraryName+"/folder/"+QString("%1/info").arg(folderContent.at(i + (page*elementsPerPage))->id)); - - t.setVariable(QString("element%1.download").arg(i),QString("IMPORT").arg("/library/"+QString::number(libraryId)+"/folder/"+QString("%1/info").arg(folderContent.at(i + (page*elementsPerPage))->id))); - t.setVariable(QString("element%1.read").arg(i),""); - - t.setVariable(QString("element%1.size").arg(i),""); - t.setVariable(QString("element%1.pages").arg(i),""); - t.setVariable(QString("element%1.status").arg(i),""); - } - else - { - t.setVariable(QString("element%1.class").arg(i),"cover"); - const ComicDB * comic = (ComicDB *)item; - t.setVariable(QString("element%1.browse").arg(i),""); - //t.setVariable(QString("element%1.downloadurl").arg(i),"/library/"+libraryName+"/comic/"+QString("%1").arg(comic->id)); - if(!session.isComicOnDevice(comic->info.hash) && !session.isComicDownloaded(comic->info.hash)) - t.setVariable(QString("element%1.download").arg(i),QString("IMPORT").arg("/library/"+QString::number(libraryId)+"/comic/"+QString("%1").arg(comic->id))); - else if (session.isComicOnDevice(comic->info.hash)) + { + t.setVariable(QString("element%1.class").arg(i),"cover"); + const ComicDB * comic = (ComicDB *)item; + t.setVariable(QString("element%1.browse").arg(i),""); + //t.setVariable(QString("element%1.downloadurl").arg(i),"/library/"+libraryName+"/comic/"+QString("%1").arg(comic->id)); + if(!session.isComicOnDevice(comic->info.hash) && !session.isComicDownloaded(comic->info.hash)) + t.setVariable(QString("element%1.download").arg(i),QString("IMPORT").arg("/library/"+QString::number(libraryId)+"/comic/"+QString("%1").arg(comic->id))); + else if (session.isComicOnDevice(comic->info.hash)) t.setVariable(QString("element%1.download").arg(i),QString("
IMPORTED
")); - else - t.setVariable(QString("element%1.download").arg(i),QString("
IMPORTING
")); - - //t.setVariable(QString("element%1.image.url").arg(i),"/images/f.png"); + else + t.setVariable(QString("element%1.download").arg(i),QString("
IMPORTING
")); - t.setVariable(QString("element%1.read").arg(i),QString("READ").arg("/library/"+QString::number(libraryId)+"/comic/"+QString("%1").arg(comic->id)+"/remote")); + //t.setVariable(QString("element%1.image.url").arg(i),"/images/f.png"); - t.setVariable(QString("element%1.image.url").arg(i),QString("/library/%1/cover/%2.jpg").arg(libraryId).arg(comic->info.hash)); + t.setVariable(QString("element%1.read").arg(i),QString("READ").arg("/library/"+QString::number(libraryId)+"/comic/"+QString("%1").arg(comic->id)+"/remote")); - t.setVariable(QString("element%1.size").arg(i),"" + QString::number(comic->info.hash.right(comic->info.hash.length()-40).toInt()/1024.0/1024.0,'f',2)+"Mb"); - if(comic->info.hasBeenOpened) - t.setVariable(QString("element%1.pages").arg(i),QString("%1/%2 pages").arg(comic->info.currentPage).arg(comic->info.numPages.toInt())); - else - t.setVariable(QString("element%1.pages").arg(i),QString("%1 pages").arg(comic->info.numPages.toInt())); + t.setVariable(QString("element%1.image.url").arg(i),QString("/library/%1/cover/%2.jpg").arg(libraryId).arg(comic->info.hash)); - if(comic->info.read) - t.setVariable(QString("element%1.status").arg(i), QString("
")); - else if(comic->info.hasBeenOpened) - t.setVariable(QString("element%1.status").arg(i), QString("
")); - else - t.setVariable(QString("element%1.status").arg(i),""); + t.setVariable(QString("element%1.size").arg(i),"" + QString::number(comic->info.hash.right(comic->info.hash.length()-40).toInt()/1024.0/1024.0,'f',2)+"Mb"); + if(comic->info.hasBeenOpened) + t.setVariable(QString("element%1.pages").arg(i),QString("%1/%2 pages").arg(comic->info.currentPage).arg(comic->info.numPages.toInt())); + else + t.setVariable(QString("element%1.pages").arg(i),QString("%1 pages").arg(comic->info.numPages.toInt())); - t.setVariable(QString("element%1.cover.browse").arg(i),""); - t.setVariable(QString("element%1.cover.browse.end").arg(i),""); - } - i++; - } + if(comic->info.read) + t.setVariable(QString("element%1.status").arg(i), QString("
")); + else if(comic->info.hasBeenOpened) + t.setVariable(QString("element%1.status").arg(i), QString("
")); + else + t.setVariable(QString("element%1.status").arg(i),""); + + t.setVariable(QString("element%1.cover.browse").arg(i),""); + t.setVariable(QString("element%1.cover.browse.end").arg(i),""); + } + i++; + } + } else + { + t.loop("element",0); + } if(numPages > 1) {