diff --git a/YACReaderLibrary/db/tablemodel.cpp b/YACReaderLibrary/db/tablemodel.cpp index edadcc69..d4fc65e3 100644 --- a/YACReaderLibrary/db/tablemodel.cpp +++ b/YACReaderLibrary/db/tablemodel.cpp @@ -435,9 +435,9 @@ QModelIndex TableModel::getIndexFromId(quint64 id) return index(i,0); } -void TableModel::startTransaction(int first, int last) +void TableModel::startTransaction() { - beginRemoveRows(QModelIndex(),first,last); + dbTransaction = DataBaseManagement::loadDatabase(_databasePath); dbTransaction.transaction(); } @@ -448,7 +448,7 @@ void TableModel::finishTransaction() dbTransaction.close(); QSqlDatabase::removeDatabase(_databasePath); - endRemoveRows(); + } void TableModel::removeInTransaction(int row) @@ -456,10 +456,12 @@ void TableModel::removeInTransaction(int row) ComicDB c = DBHelper::loadComic(_data.at(row)->data(ID).toULongLong(),dbTransaction); DBHelper::removeFromDB(&c,dbTransaction); - + beginRemoveRows(QModelIndex(),row,row); removeRow(row); delete _data.at(row); _data.removeAt(row); + + endRemoveRows(); } void TableModel::remove(ComicDB * comic, int row) diff --git a/YACReaderLibrary/db/tablemodel.h b/YACReaderLibrary/db/tablemodel.h index 6a9b1945..fe1cea32 100644 --- a/YACReaderLibrary/db/tablemodel.h +++ b/YACReaderLibrary/db/tablemodel.h @@ -52,7 +52,7 @@ public: public slots: void remove(int row); - void startTransaction(int first, int last); + void startTransaction(); void finishTransaction(); private: diff --git a/YACReaderLibrary/library_creator.cpp b/YACReaderLibrary/library_creator.cpp index 90c529ca..cf34b04c 100644 --- a/YACReaderLibrary/library_creator.cpp +++ b/YACReaderLibrary/library_creator.cpp @@ -256,13 +256,38 @@ void LibraryCreator::update(QDir dirS) QFileInfo fileInfoS = listS.at(i); if(fileInfoS.isDir()) //create folder { - _currentPathFolders.append(Folder(fileInfoS.fileName(),QDir::cleanPath(fileInfoS.absoluteFilePath()).remove(_source))); //folder actual no está en la BD +#ifdef Q_OS_MAC + QStringList src = _source.split("/"); + QString filePath = fileInfoS.absoluteFilePath(); + QStringList fp = filePath.split("/"); + for(int i = 0; i< src.count();i++) + { + fp.removeFirst(); + } + QString path = "/" + fp.join("/"); +#else + QString path = QDir::cleanPath(fileInfoS.absoluteFilePath()).remove(_source); +#endif + _currentPathFolders.append(Folder(fileInfoS.fileName(),path)); //folder actual no está en la BD create(QDir(fileInfoS.absoluteFilePath())); _currentPathFolders.pop_back(); } else //create comic { - insertComic(QDir::cleanPath(fileInfoS.absoluteFilePath()).remove(_source),fileInfoS); +#ifdef Q_OS_MAC + QStringList src = _source.split("/"); + QString filePath = fileInfoS.absoluteFilePath(); + QStringList fp = filePath.split("/"); + for(int i = 0; i< src.count();i++) + { + fp.removeFirst(); + } + QString path = "/" + fp.join("/"); +#else + + QString path = QDir::cleanPath(fileInfoS.absoluteFilePath()).remove(_source); +#endif + insertComic(path,fileInfoS); } } updated = true; @@ -289,7 +314,19 @@ void LibraryCreator::update(QDir dirS) { if(nameS!="/.yacreaderlibrary") { - _currentPathFolders.append(Folder(fileInfoS.fileName(),QDir::cleanPath(fileInfoS.absoluteFilePath()).remove(_source))); +#ifdef Q_OS_MAC + QStringList src = _source.split("/"); + QString filePath = fileInfoS.absoluteFilePath(); + QStringList fp = filePath.split("/"); + for(int i = 0; i< src.count();i++) + { + fp.removeFirst(); + } + QString path = "/" + fp.join("/"); +#else + QString path = QDir::cleanPath(fileInfoS.absoluteFilePath()).remove(_source); +#endif + _currentPathFolders.append(Folder(fileInfoS.fileName(),path)); create(QDir(fileInfoS.absoluteFilePath())); _currentPathFolders.pop_back(); } @@ -310,7 +347,19 @@ void LibraryCreator::update(QDir dirS) { if(nameS!="/.yacreaderlibrary") //skip .yacreaderlibrary folder { - _currentPathFolders.append(Folder(fileInfoS.fileName(),QDir::cleanPath(fileInfoS.absoluteFilePath()).remove(_source))); +#ifdef Q_OS_MAC + QStringList src = _source.split("/"); + QString filePath = fileInfoS.absoluteFilePath(); + QStringList fp = filePath.split("/"); + for(int i = 0; i< src.count();i++) + { + fp.removeFirst(); + } + QString path = "/" + fp.join("/"); +#else + QString path = QDir::cleanPath(fileInfoS.absoluteFilePath()).remove(_source); +#endif + _currentPathFolders.append(Folder(fileInfoS.fileName(),path)); create(QDir(fileInfoS.absoluteFilePath())); _currentPathFolders.pop_back(); } @@ -328,7 +377,19 @@ void LibraryCreator::update(QDir dirS) int comparation = QString::localeAwareCompare(nameS,nameD); if(comparation < 0) //create new thumbnail { - insertComic(QDir::cleanPath(fileInfoS.absoluteFilePath()).remove(_source),fileInfoS); +#ifdef Q_OS_MAC + QStringList src = _source.split("/"); + QString filePath = fileInfoS.absoluteFilePath(); + QStringList fp = filePath.split("/"); + for(int i = 0; i< src.count();i++) + { + fp.removeFirst(); + } + QString path = "/" + fp.join("/"); +#else + QString path = QDir::cleanPath(fileInfoS.absoluteFilePath()).remove(_source); +#endif + insertComic(path,fileInfoS); i++; } else diff --git a/YACReaderLibrary/library_window.cpp b/YACReaderLibrary/library_window.cpp index c3bb522d..2d3cb062 100644 --- a/YACReaderLibrary/library_window.cpp +++ b/YACReaderLibrary/library_window.cpp @@ -176,10 +176,12 @@ void LibraryWindow::doLayout() foldersView->header()->hide(); foldersView->setUniformRowHeights(true); foldersView->setSelectionBehavior(QAbstractItemView::SelectRows); + foldersView->setAttribute(Qt::WA_MacShowFocusRect,false); sideBar = new QWidget; QVBoxLayout * l = new QVBoxLayout; selectedLibrary = new QComboBox; + selectedLibrary->setAttribute(Qt::WA_MacShowFocusRect,false); l->setContentsMargins(sHorizontal->handleWidth(),0,0,0); YACReaderTitledToolBar * librariesTitle = new YACReaderTitledToolBar(tr("Libraries")); @@ -200,6 +202,7 @@ void LibraryWindow::doLayout() QHBoxLayout * filter = new QHBoxLayout; filter->addWidget(foldersFilter = new YACReaderSearchLineEdit()); + foldersFilter->setAttribute(Qt::WA_MacShowFocusRect,false); foldersFilter->setPlaceholderText(tr("Search folders and comics")); previousFilter = ""; @@ -1464,7 +1467,7 @@ void LibraryWindow::deleteComics() ComicsRemover * remover = new ComicsRemover(indexList,paths); //comicView->showDeleteProgress(); - dmCV->startTransaction(indexList.first().row(),indexList.last().row()); + dmCV->startTransaction(); connect(remover, SIGNAL(remove(int)), dmCV, SLOT(remove(int))); connect(remover, SIGNAL(remove(int)), comicFlow, SLOT(remove(int)));