mirror of
https://github.com/YACReader/yacreader
synced 2025-06-04 01:28:55 -04:00
a?adida ordenaci?n por "number" y "fileName"
a?adidos separadores verticales en comicsView a?adido asignNumbers (falta a?adir el icono)
This commit is contained in:
parent
37dcc4858f
commit
f8ee0da89b
@ -17,6 +17,7 @@
|
|||||||
#define PATH 6
|
#define PATH 6
|
||||||
#define HASH 7
|
#define HASH 7
|
||||||
#define READ 8
|
#define READ 8
|
||||||
|
#define IS_BIS 9
|
||||||
|
|
||||||
TableModel::TableModel(QObject *parent)
|
TableModel::TableModel(QObject *parent)
|
||||||
: QAbstractItemModel(parent)
|
: QAbstractItemModel(parent)
|
||||||
@ -169,7 +170,7 @@ void TableModel::setupModelData(unsigned long long int folderId,const QString &
|
|||||||
//crear la consulta
|
//crear la consulta
|
||||||
//timer.restart();
|
//timer.restart();
|
||||||
QSqlQuery selectQuery(db); //TODO check
|
QSqlQuery selectQuery(db); //TODO check
|
||||||
selectQuery.prepare("select ci.number,ci.title,c.fileName,ci.numPages,c.id,c.parentId,c.path,ci.hash,ci.read from comic c inner join comic_info ci on (c.comicInfoId = ci.id) where c.parentId = :parentId");
|
selectQuery.prepare("select ci.number,ci.title,c.fileName,ci.numPages,c.id,c.parentId,c.path,ci.hash,ci.read,ci.isBis from comic c inner join comic_info ci on (c.comicInfoId = ci.id) where c.parentId = :parentId");
|
||||||
selectQuery.bindValue(":parentId", folderId);
|
selectQuery.bindValue(":parentId", folderId);
|
||||||
selectQuery.exec();
|
selectQuery.exec();
|
||||||
//txtS << "TABLEMODEL: Tiempo de consulta: " << timer.elapsed() << "ms\r\n";
|
//txtS << "TABLEMODEL: Tiempo de consulta: " << timer.elapsed() << "ms\r\n";
|
||||||
@ -190,6 +191,7 @@ QString TableModel::getComicPath(QModelIndex mi)
|
|||||||
return _data.at(mi.row())->data(PATH).toString();
|
return _data.at(mi.row())->data(PATH).toString();
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
#define NUMBER_MAX 99999999
|
||||||
void TableModel::setupModelData(QSqlQuery &sqlquery)
|
void TableModel::setupModelData(QSqlQuery &sqlquery)
|
||||||
{
|
{
|
||||||
TableItem * currentItem;
|
TableItem * currentItem;
|
||||||
@ -209,18 +211,64 @@ void TableModel::setupModelData(QSqlQuery &sqlquery)
|
|||||||
TableItem * last = _data.back();
|
TableItem * last = _data.back();
|
||||||
QString nameLast = last->data(FILE_NAME).toString(); //TODO usar info name si está disponible, sino el nombre del fichero.....
|
QString nameLast = last->data(FILE_NAME).toString(); //TODO usar info name si está disponible, sino el nombre del fichero.....
|
||||||
QString nameCurrent = currentItem->data(FILE_NAME).toString();
|
QString nameCurrent = currentItem->data(FILE_NAME).toString();
|
||||||
|
int numberLast,numberCurrent;
|
||||||
|
numberLast = numberCurrent = NUMBER_MAX; //TODO change by std limit
|
||||||
|
|
||||||
|
if(!last->data(NUMBER).isNull())
|
||||||
|
numberLast = last->data(NUMBER).toInt();
|
||||||
|
|
||||||
|
if(!currentItem->data(NUMBER).isNull())
|
||||||
|
numberCurrent = currentItem->data(NUMBER).toInt();
|
||||||
|
|
||||||
QList<TableItem *>::iterator i;
|
QList<TableItem *>::iterator i;
|
||||||
i = _data.end();
|
i = _data.end();
|
||||||
i--;
|
i--;
|
||||||
while ((lessThan = naturalSortLessThanCI(nameCurrent,nameLast)) && i != _data.begin())
|
|
||||||
|
if(numberCurrent != NUMBER_MAX)
|
||||||
|
{
|
||||||
|
while ((lessThan =numberCurrent < numberLast) && i != _data.begin())
|
||||||
|
{
|
||||||
|
i--;
|
||||||
|
numberLast = NUMBER_MAX; //TODO change by std limit
|
||||||
|
|
||||||
|
if(!(*i)->data(NUMBER).isNull())
|
||||||
|
numberLast = (*i)->data(NUMBER).toInt();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
while ((lessThan = naturalSortLessThanCI(nameCurrent,nameLast)) && i != _data.begin() && numberLast == 99999999)
|
||||||
{
|
{
|
||||||
i--;
|
i--;
|
||||||
nameLast = (*i)->data(FILE_NAME).toString();
|
nameLast = (*i)->data(FILE_NAME).toString();
|
||||||
|
numberLast = NUMBER_MAX; //TODO change by std limit
|
||||||
|
|
||||||
|
if(!(*i)->data(NUMBER).isNull())
|
||||||
|
numberLast = (*i)->data(NUMBER).toInt();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
if(!lessThan) //si se ha encontrado un elemento menor que current, se inserta justo después
|
if(!lessThan) //si se ha encontrado un elemento menor que current, se inserta justo después
|
||||||
|
{
|
||||||
|
if(numberCurrent != NUMBER_MAX)
|
||||||
|
{
|
||||||
|
if(numberCurrent == numberLast)
|
||||||
|
if(currentItem->data(IS_BIS).toBool())
|
||||||
|
{
|
||||||
_data.insert(++i,currentItem);
|
_data.insert(++i,currentItem);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
_data.insert(i,currentItem);
|
_data.insert(i,currentItem);
|
||||||
|
else
|
||||||
|
_data.insert(++i,currentItem);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
_data.insert(++i,currentItem);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_data.insert(i,currentItem);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -98,11 +98,14 @@ void LibraryWindow::doLayout()
|
|||||||
comicView->verticalHeader()->setDefaultSectionSize(24);
|
comicView->verticalHeader()->setDefaultSectionSize(24);
|
||||||
comicView->verticalHeader()->setClickable(false); //TODO comportamiento anómalo
|
comicView->verticalHeader()->setClickable(false); //TODO comportamiento anómalo
|
||||||
comicView->setCornerButtonEnabled(false);
|
comicView->setCornerButtonEnabled(false);
|
||||||
comicView->setStyleSheet("QTableView {selection-background-color: #d7d7c7; selection-color: #000000;}\n QTableView QTableView::item{"
|
qApp->setStyleSheet ( qApp->styleSheet() +" QTableView::item{border-right-style:solid;border-width:1;border-color: #d7d7c7;} QTableView::item:selected{background-color: #d7d7c7; color:#000000; border-right-style:solid;border-width:1;border-color: #8c8590;}");
|
||||||
|
//qApp->setStyleSheet ( qApp->styleSheet() +" QTableView {selection-background-color: #d7d7c7; selection-color: #000000;}" );
|
||||||
|
|
||||||
|
/*comicView->setStyleSheet("QTableView {selection-background-color: #d7d7c7; selection-color: #000000; selection-border: 1px solid;}\n QTableView::item{"
|
||||||
"border-right-style:solid;"
|
"border-right-style:solid;"
|
||||||
"border-width:1;"
|
"border-width:1;"
|
||||||
"border-color: #9B9B9B;"
|
"border-color: #DEDEDE;"
|
||||||
"}");
|
"}");*/
|
||||||
// comicView->verticalHeader()->setStyleSheet("QHeaderView::section"
|
// comicView->verticalHeader()->setStyleSheet("QHeaderView::section"
|
||||||
//"{"
|
//"{"
|
||||||
// "background-color: white /* steelblue */"
|
// "background-color: white /* steelblue */"
|
||||||
@ -486,7 +489,7 @@ void LibraryWindow::createToolBars()
|
|||||||
editInfoToolBar->addAction(editSelectedComicsAction);
|
editInfoToolBar->addAction(editSelectedComicsAction);
|
||||||
editInfoToolBar->addAction(selectAllComicsAction);
|
editInfoToolBar->addAction(selectAllComicsAction);
|
||||||
editInfoToolBar->addSeparator();
|
editInfoToolBar->addSeparator();
|
||||||
//editInfoToolBar->addAction(forceConverExtractedAction);
|
editInfoToolBar->addAction(asignOrderActions);
|
||||||
editInfoToolBar->addWidget(new QToolBarStretch());
|
editInfoToolBar->addWidget(new QToolBarStretch());
|
||||||
editInfoToolBar->addAction(hideComicViewAction);
|
editInfoToolBar->addAction(hideComicViewAction);
|
||||||
}
|
}
|
||||||
@ -586,6 +589,7 @@ void LibraryWindow::createConnections()
|
|||||||
//Comicts edition
|
//Comicts edition
|
||||||
connect(selectAllComicsAction,SIGNAL(triggered()),comicView,SLOT(selectAll()));
|
connect(selectAllComicsAction,SIGNAL(triggered()),comicView,SLOT(selectAll()));
|
||||||
connect(editSelectedComicsAction,SIGNAL(triggered()),this,SLOT(showProperties()));
|
connect(editSelectedComicsAction,SIGNAL(triggered()),this,SLOT(showProperties()));
|
||||||
|
connect(asignOrderActions,SIGNAL(triggered()),this,SLOT(asignNumbers()));
|
||||||
|
|
||||||
connect(hideComicViewAction, SIGNAL(toggled(bool)),this, SLOT(hideComicFlow(bool)));
|
connect(hideComicViewAction, SIGNAL(toggled(bool)),this, SLOT(hideComicFlow(bool)));
|
||||||
|
|
||||||
@ -678,11 +682,9 @@ void LibraryWindow::loadCovers(const QModelIndex & mi)
|
|||||||
dmCV->setupModelData(folderId,dm->getDatabase());
|
dmCV->setupModelData(folderId,dm->getDatabase());
|
||||||
comicView->setModel(dmCV);
|
comicView->setModel(dmCV);
|
||||||
comicView->horizontalHeader()->setDefaultAlignment(Qt::AlignLeft);
|
comicView->horizontalHeader()->setDefaultAlignment(Qt::AlignLeft);
|
||||||
comicView->horizontalHeader()->hideSection(4);
|
for(int i = 4;i<comicView->horizontalHeader()->count();i++)
|
||||||
comicView->horizontalHeader()->hideSection(5);
|
comicView->horizontalHeader()->hideSection(i);
|
||||||
comicView->horizontalHeader()->hideSection(6);
|
|
||||||
comicView->horizontalHeader()->hideSection(7);
|
|
||||||
comicView->horizontalHeader()->hideSection(8);
|
|
||||||
|
|
||||||
//debido a un bug, qt4 no es capaz de ajustar el ancho teniendo en cuenta todas la filas (no sólo las visibles)
|
//debido a un bug, qt4 no es capaz de ajustar el ancho teniendo en cuenta todas la filas (no sólo las visibles)
|
||||||
//así que se ecala la primera vez y después se deja el control al usuario.
|
//así que se ecala la primera vez y después se deja el control al usuario.
|
||||||
@ -727,6 +729,7 @@ void LibraryWindow::reloadCovers()
|
|||||||
loadCovers(_rootIndexCV);
|
loadCovers(_rootIndexCV);
|
||||||
|
|
||||||
QModelIndex mi = dmCV->getIndexFromId(_comicIdEdited);
|
QModelIndex mi = dmCV->getIndexFromId(_comicIdEdited);
|
||||||
|
comicView->scrollTo(mi,QAbstractItemView::PositionAtCenter);
|
||||||
comicView->setCurrentIndex(mi);
|
comicView->setCurrentIndex(mi);
|
||||||
//centerComicFlow(mi);
|
//centerComicFlow(mi);
|
||||||
comicFlow->setCenterIndex(mi.row());
|
comicFlow->setCenterIndex(mi.row());
|
||||||
@ -1073,7 +1076,7 @@ void LibraryWindow::setFoldersFilter(QString filter)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#include "tableitem.h"
|
|
||||||
void LibraryWindow::showProperties()
|
void LibraryWindow::showProperties()
|
||||||
{
|
{
|
||||||
QModelIndexList indexList = comicView->selectionModel()->selectedRows();
|
QModelIndexList indexList = comicView->selectionModel()->selectedRows();
|
||||||
@ -1100,6 +1103,46 @@ void LibraryWindow::showProperties()
|
|||||||
propertiesDialog->show();
|
propertiesDialog->show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LibraryWindow::asignNumbers()
|
||||||
|
{
|
||||||
|
QModelIndexList indexList = comicView->selectionModel()->selectedRows();
|
||||||
|
|
||||||
|
QList<Comic> comics = dmCV->getComics(indexList);
|
||||||
|
Comic c = comics[0];
|
||||||
|
_comicIdEdited = c.id;
|
||||||
|
|
||||||
|
int startingNumber = dmCV->getIndexFromId(comics[0].id).row()+1;
|
||||||
|
if(comics.count()>1)
|
||||||
|
{
|
||||||
|
bool ok;
|
||||||
|
int n = QInputDialog::getInt(this, tr("Asign comics numbers"),
|
||||||
|
tr("Asign numbers starting in:"), dmCV->getIndexFromId(comics[0].id).row()+1,0,2147483647,1,&ok);
|
||||||
|
if (ok)
|
||||||
|
startingNumber = n;
|
||||||
|
else
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
QSqlDatabase db = DataBaseManagement::loadDatabase(dm->getDatabase());
|
||||||
|
db.transaction();
|
||||||
|
|
||||||
|
for(int i = 0;i<comics.length();i++)
|
||||||
|
{
|
||||||
|
Comic c = comics[i];
|
||||||
|
c.info.setNumber(startingNumber+i);
|
||||||
|
c.info.update(db);
|
||||||
|
/*QString hash = comics[i].info.hash;
|
||||||
|
comics[i].info.setNumber(i+1);
|
||||||
|
comics[i].info.update(db);*/
|
||||||
|
}
|
||||||
|
|
||||||
|
db.commit();
|
||||||
|
db.close();
|
||||||
|
QSqlDatabase::removeDatabase(dm->getDatabase());
|
||||||
|
|
||||||
|
reloadCovers();
|
||||||
|
}
|
||||||
|
|
||||||
void LibraryWindow::openContainingFolderComic()
|
void LibraryWindow::openContainingFolderComic()
|
||||||
{
|
{
|
||||||
QModelIndex modelIndex = comicView->currentIndex();
|
QModelIndex modelIndex = comicView->currentIndex();
|
||||||
|
@ -197,6 +197,7 @@ public:
|
|||||||
void hideComicFlow(bool hide);
|
void hideComicFlow(bool hide);
|
||||||
void showExportComicsInfo();
|
void showExportComicsInfo();
|
||||||
void showImportComicsInfo();
|
void showImportComicsInfo();
|
||||||
|
void asignNumbers();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user