[app] Make sure that book path is mixed into the image id
That fixes the problem with different books having images with the same ids.
This commit is contained in:
parent
50600c3268
commit
13c3c73004
1 changed files with 20 additions and 4 deletions
|
@ -31,8 +31,8 @@
|
||||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "BooksImageProvider.h"
|
|
||||||
#include "BooksPageWidget.h"
|
#include "BooksPageWidget.h"
|
||||||
|
#include "BooksImageProvider.h"
|
||||||
#include "BooksTextStyle.h"
|
#include "BooksTextStyle.h"
|
||||||
#include "BooksDefs.h"
|
#include "BooksDefs.h"
|
||||||
|
|
||||||
|
@ -557,9 +557,25 @@ void BooksPageWidget::onLongPressTaskDone()
|
||||||
Q_EMIT browserLinkPressed(url);
|
Q_EMIT browserLinkPressed(url);
|
||||||
}
|
}
|
||||||
} else if (iLongPressTask->iKind == IMAGE) {
|
} else if (iLongPressTask->iKind == IMAGE) {
|
||||||
static const QString PREFIX("image://");
|
// Make sure that the book path is mixed into the image id to handle
|
||||||
QString id(QString::fromStdString(iLongPressTask->iImageId));
|
// the case of different books having images with identical ids
|
||||||
QString url = PREFIX + BooksImageProvider::PROVIDER_ID + "/" + id;
|
QString id = QString::fromStdString(iLongPressTask->iImageId);
|
||||||
|
QString path;
|
||||||
|
if (iModel) {
|
||||||
|
BooksBook* book = iModel->book();
|
||||||
|
if (book) {
|
||||||
|
path = book->path();
|
||||||
|
if (!path.isEmpty()) {
|
||||||
|
if (!id.contains(path)) {
|
||||||
|
QString old = id;
|
||||||
|
id = path + ":" + old;
|
||||||
|
HDEBUG(old << "-> " << id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
static const QString IMAGE_URL("image://%1/%2");
|
||||||
|
QString url = IMAGE_URL.arg(BooksImageProvider::PROVIDER_ID, id);
|
||||||
BooksImageProvider::instance()->addImage(iModel, id,
|
BooksImageProvider::instance()->addImage(iModel, id,
|
||||||
iLongPressTask->iImageData);
|
iLongPressTask->iImageData);
|
||||||
Q_EMIT imagePressed(url, iLongPressTask->iRect);
|
Q_EMIT imagePressed(url, iLongPressTask->iRect);
|
||||||
|
|
Loading…
Reference in a new issue