Loading a database on mobile
Before continuing the UI implementation, we have to take care of the database deployment on mobile. Spoiler: this will not be fun.
We have to jump back to DatabaseManager.cpp
in the gallery-core
project:
DatabaseManager& DatabaseManager::instance() { return singleton; } DatabaseManager::DatabaseManager(const QString& path) : mDatabase(new QSqlDatabase(QSqlDatabase::addDatabase("QSQLITE"))), albumDao(*mDatabase), pictureDao(*mDatabase) { mDatabase->setDatabaseName(path); ... }
Whereas on Desktop, the SQLite3 database is created at the instruction mDatabase->setDatabaseName()
, on mobile it does not work at all. This is due to the fact that the filesystem is very specific on each mobile platform (Android and iOS). An application has only access to a narrow sandbox where it cannot mess with the rest of the filesystem. All the files inside the application directory must have specific file permissions. If we let SQLite3...