corregido bug al intentar abrir un c?mic en un path no existente

- ahora se muestra un error al usuario.
        - y se restaura el estado inicial.
This commit is contained in:
Luis Ángel San Martín 2012-07-29 17:03:58 +02:00
parent 7df6e4d7f7
commit 86914fd634
5 changed files with 40 additions and 17 deletions

View File

@ -31,22 +31,33 @@ void Comic::setup()
connect(this,SIGNAL(imageLoaded(int)),this,SLOT(updateBookmarkImage(int))); connect(this,SIGNAL(imageLoaded(int)),this,SLOT(updateBookmarkImage(int)));
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void Comic::load(const QString & path) bool Comic::load(const QString & path)
{ {
QFileInfo fi(path); QFileInfo fi(path);
bm->newComic(path); if(fi.exists())
emit bookmarksLoaded(*bm);
if(fi.isFile())
{
loadFromFile(path);
}
else
{
if(fi.isDir())
{ {
loadFromDir(path); bm->newComic(path);
emit bookmarksLoaded(*bm);
if(fi.isFile())
{
loadFromFile(path);
}
else
{
if(fi.isDir())
{
loadFromDir(path);
}
}
return true;
}
else
{
QMessageBox::critical(NULL,tr("Not found"),tr("Comic not found"));
emit errorOpening();
return false;
} }
}
} }
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
void Comic::loadFromFile(const QString & pathFile) void Comic::loadFromFile(const QString & pathFile)

View File

@ -33,7 +33,7 @@
Comic(const QString pathFile); Comic(const QString pathFile);
void setup(); void setup();
//Load pages from file //Load pages from file
void load(const QString & path); bool load(const QString & path);
void loadFromFile(const QString & pathFile); void loadFromFile(const QString & pathFile);
void loadFromDir(const QString & pathDir); void loadFromDir(const QString & pathDir);
int nextPage(); int nextPage();

View File

@ -403,6 +403,7 @@ void Render::load(const QString & path)
previousIndex = currentIndex = 0; previousIndex = currentIndex = 0;
connect(comic,SIGNAL(errorOpening()),this,SIGNAL(errorOpening())); connect(comic,SIGNAL(errorOpening()),this,SIGNAL(errorOpening()));
connect(comic,SIGNAL(errorOpening()),this,SLOT(reset()));
connect(comic,SIGNAL(imageLoaded(int)),this,SIGNAL(imageLoaded(int))); connect(comic,SIGNAL(imageLoaded(int)),this,SIGNAL(imageLoaded(int)));
connect(comic,SIGNAL(imageLoaded(int)),this,SLOT(pageRawDataReady(int))); connect(comic,SIGNAL(imageLoaded(int)),this,SLOT(pageRawDataReady(int)));
//connect(comic,SIGNAL(pageChanged(int)),this,SIGNAL(pageChanged(int))); //connect(comic,SIGNAL(pageChanged(int)),this,SIGNAL(pageChanged(int)));
@ -412,9 +413,19 @@ void Render::load(const QString & path)
connect(comic,SIGNAL(isBookmark(bool)),this,SIGNAL(currentPageIsBookmark(bool))); connect(comic,SIGNAL(isBookmark(bool)),this,SIGNAL(currentPageIsBookmark(bool)));
connect(comic,SIGNAL(bookmarksLoaded(const Bookmarks &)),this,SIGNAL(bookmarksLoaded(const Bookmarks &))); connect(comic,SIGNAL(bookmarksLoaded(const Bookmarks &)),this,SIGNAL(bookmarksLoaded(const Bookmarks &)));
pagesReady.clear(); pagesReady.clear();
comic->load(path); if(comic->load(path)) //garantiza que se va a intentar abrir el cómic
{
invalidate();
loadedComic = true;
update();
}
}
void Render::reset()
{
loadedComic = false;
invalidate(); invalidate();
loadedComic = true; //TODO reset if an error occurs while opening
} }
//si se solicita la siguiente página, se calcula cuál debe ser en función de si se lee en modo a doble página o no. //si se solicita la siguiente página, se calcula cuál debe ser en función de si se lee en modo a doble página o no.
//la página sólo se renderiza, si realmente ha cambiado. //la página sólo se renderiza, si realmente ha cambiado.

View File

@ -138,6 +138,7 @@ public slots:
void setBookmark(); void setBookmark();
void removeBookmark(); void removeBookmark();
void save(); void save();
void reset();
signals: signals:
void currentPageReady(); void currentPageReady();

View File

@ -130,7 +130,7 @@ void Viewer::open(QString pathFile)
goToFlow->reset(); goToFlow->reset();
render->load(pathFile); render->load(pathFile);
render->update(); //render->update();
verticalScrollBar()->setSliderPosition(verticalScrollBar()->minimum()); verticalScrollBar()->setSliderPosition(verticalScrollBar()->minimum());
} }