Fix folders type when they are added

This commit is contained in:
Luis Ángel San Martín 2024-02-12 19:33:14 +01:00
parent 7baf144c69
commit 374898702d
5 changed files with 19 additions and 5 deletions

View File

@ -6,6 +6,8 @@ Version counting is based on semantic versioning (Major.Feature.Patch)
### YACReaderLibrary ### YACReaderLibrary
* Fix columns in the search results. * Fix columns in the search results.
* Fix type not being propagated to new folders from their parents.
* Fix default type set to folders in the root folder when they are added.
## 9.14.1 ## 9.14.1

View File

@ -1270,12 +1270,14 @@ qulonglong DBHelper::insert(Folder *folder, QSqlDatabase &db)
folder->added = added; folder->added = added;
QSqlQuery query(db); QSqlQuery query(db);
query.prepare("INSERT INTO folder (parentId, name, path, added) " query.prepare("INSERT INTO folder (parentId, name, path, added, type) "
"VALUES (:parentId, :name, :path, :added)"); "VALUES (:parentId, :name, :path, :added, :type)");
query.bindValue(":parentId", folder->parentId); query.bindValue(":parentId", folder->parentId);
query.bindValue(":name", folder->name); query.bindValue(":name", folder->name);
query.bindValue(":path", folder->path); query.bindValue(":path", folder->path);
query.bindValue(":added", added); query.bindValue(":added", added);
auto intType = static_cast<int>(folder->type);
query.bindValue(":type", intType);
query.exec(); query.exec();
return query.lastInsertId().toULongLong(); return query.lastInsertId().toULongLong();

View File

@ -54,7 +54,7 @@ void LibraryCreator::updateFolder(const QString &source, const QString &target,
folderDestinationModelIndex = dest; folderDestinationModelIndex = dest;
_currentPathFolders.clear(); _currentPathFolders.clear();
_currentPathFolders.append(Folder(1, 1, "root", "/")); _currentPathFolders.append(Folder::rootFolder());
QString relativeFolderPath = sourceFolder; QString relativeFolderPath = sourceFolder;
relativeFolderPath = relativeFolderPath.remove(QDir::cleanPath(source)); relativeFolderPath = relativeFolderPath.remove(QDir::cleanPath(source));
@ -139,7 +139,7 @@ void LibraryCreator::run()
if (_mode == CREATOR) { if (_mode == CREATOR) {
QLOG_INFO() << "Starting to create new library ( " << _source << "," << _target << ")"; QLOG_INFO() << "Starting to create new library ( " << _source << "," << _target << ")";
_currentPathFolders.clear(); _currentPathFolders.clear();
_currentPathFolders.append(Folder(1, 1, "root", "/")); _currentPathFolders.append(Folder::rootFolder());
// se crean los directorios .yacreaderlibrary y .yacreaderlibrary/covers // se crean los directorios .yacreaderlibrary y .yacreaderlibrary/covers
QDir dir; QDir dir;
dir.mkpath(_target + "/covers"); dir.mkpath(_target + "/covers");
@ -173,7 +173,7 @@ void LibraryCreator::run()
QLOG_INFO() << "Starting to update folder" << _sourceFolder << "in library ( " << _source << "," << _target << ")"; QLOG_INFO() << "Starting to update folder" << _sourceFolder << "in library ( " << _source << "," << _target << ")";
if (!partialUpdate) { if (!partialUpdate) {
_currentPathFolders.clear(); _currentPathFolders.clear();
_currentPathFolders.append(Folder(1, 1, "root", "/")); _currentPathFolders.append(Folder::rootFolder());
QLOG_DEBUG() << "update whole library"; QLOG_DEBUG() << "update whole library";
} }
{ {

View File

@ -70,6 +70,14 @@ Folder &Folder::operator=(const Folder &other)
return *this; return *this;
} }
Folder Folder::rootFolder()
{
auto root = Folder(1, 1, "root", "/");
root.type = YACReader::FileType::Comic; // TODO: make this configurable by the user so it can set a default type for a library
return root;
}
Folder::Folder(const QString &folderName, const QString &folderPath) Folder::Folder(const QString &folderName, const QString &folderPath)
: knownParent(false), : knownParent(false),
knownId(false), knownId(false),

View File

@ -41,6 +41,8 @@ public:
Folder(const Folder &folder); Folder(const Folder &folder);
Folder &operator=(const Folder &other); Folder &operator=(const Folder &other);
static Folder rootFolder();
inline void setId(qulonglong sid) inline void setId(qulonglong sid)
{ {
id = sid; id = sid;