mirror of
https://github.com/YACReader/yacreader
synced 2025-06-03 09:08:20 -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 HASH 7
|
||||
#define READ 8
|
||||
#define IS_BIS 9
|
||||
|
||||
TableModel::TableModel(QObject *parent)
|
||||
: QAbstractItemModel(parent)
|
||||
@ -169,7 +170,7 @@ void TableModel::setupModelData(unsigned long long int folderId,const QString &
|
||||
//crear la consulta
|
||||
//timer.restart();
|
||||
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.exec();
|
||||
//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 "";
|
||||
}
|
||||
#define NUMBER_MAX 99999999
|
||||
void TableModel::setupModelData(QSqlQuery &sqlquery)
|
||||
{
|
||||
TableItem * currentItem;
|
||||
@ -209,18 +211,64 @@ void TableModel::setupModelData(QSqlQuery &sqlquery)
|
||||
TableItem * last = _data.back();
|
||||
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();
|
||||
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;
|
||||
i = _data.end();
|
||||
i--;
|
||||
while ((lessThan = naturalSortLessThanCI(nameCurrent,nameLast)) && i != _data.begin())
|
||||
|
||||
if(numberCurrent != NUMBER_MAX)
|
||||
{
|
||||
i--;
|
||||
nameLast = (*i)->data(FILE_NAME).toString();
|
||||
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--;
|
||||
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
|
||||
_data.insert(++i,currentItem);
|
||||
{
|
||||
if(numberCurrent != NUMBER_MAX)
|
||||
{
|
||||
if(numberCurrent == numberLast)
|
||||
if(currentItem->data(IS_BIS).toBool())
|
||||
{
|
||||
_data.insert(++i,currentItem);
|
||||
}
|
||||
else
|
||||
_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()->setClickable(false); //TODO comportamiento anómalo
|
||||
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-width:1;"
|
||||
"border-color: #9B9B9B;"
|
||||
"}");
|
||||
"border-color: #DEDEDE;"
|
||||
"}");*/
|
||||
// comicView->verticalHeader()->setStyleSheet("QHeaderView::section"
|
||||
//"{"
|
||||
// "background-color: white /* steelblue */"
|
||||
@ -486,7 +489,7 @@ void LibraryWindow::createToolBars()
|
||||
editInfoToolBar->addAction(editSelectedComicsAction);
|
||||
editInfoToolBar->addAction(selectAllComicsAction);
|
||||
editInfoToolBar->addSeparator();
|
||||
//editInfoToolBar->addAction(forceConverExtractedAction);
|
||||
editInfoToolBar->addAction(asignOrderActions);
|
||||
editInfoToolBar->addWidget(new QToolBarStretch());
|
||||
editInfoToolBar->addAction(hideComicViewAction);
|
||||
}
|
||||
@ -586,6 +589,7 @@ void LibraryWindow::createConnections()
|
||||
//Comicts edition
|
||||
connect(selectAllComicsAction,SIGNAL(triggered()),comicView,SLOT(selectAll()));
|
||||
connect(editSelectedComicsAction,SIGNAL(triggered()),this,SLOT(showProperties()));
|
||||
connect(asignOrderActions,SIGNAL(triggered()),this,SLOT(asignNumbers()));
|
||||
|
||||
connect(hideComicViewAction, SIGNAL(toggled(bool)),this, SLOT(hideComicFlow(bool)));
|
||||
|
||||
@ -678,11 +682,9 @@ void LibraryWindow::loadCovers(const QModelIndex & mi)
|
||||
dmCV->setupModelData(folderId,dm->getDatabase());
|
||||
comicView->setModel(dmCV);
|
||||
comicView->horizontalHeader()->setDefaultAlignment(Qt::AlignLeft);
|
||||
comicView->horizontalHeader()->hideSection(4);
|
||||
comicView->horizontalHeader()->hideSection(5);
|
||||
comicView->horizontalHeader()->hideSection(6);
|
||||
comicView->horizontalHeader()->hideSection(7);
|
||||
comicView->horizontalHeader()->hideSection(8);
|
||||
for(int i = 4;i<comicView->horizontalHeader()->count();i++)
|
||||
comicView->horizontalHeader()->hideSection(i);
|
||||
|
||||
|
||||
//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.
|
||||
@ -727,6 +729,7 @@ void LibraryWindow::reloadCovers()
|
||||
loadCovers(_rootIndexCV);
|
||||
|
||||
QModelIndex mi = dmCV->getIndexFromId(_comicIdEdited);
|
||||
comicView->scrollTo(mi,QAbstractItemView::PositionAtCenter);
|
||||
comicView->setCurrentIndex(mi);
|
||||
//centerComicFlow(mi);
|
||||
comicFlow->setCenterIndex(mi.row());
|
||||
@ -1073,7 +1076,7 @@ void LibraryWindow::setFoldersFilter(QString filter)
|
||||
}
|
||||
}
|
||||
}
|
||||
#include "tableitem.h"
|
||||
|
||||
void LibraryWindow::showProperties()
|
||||
{
|
||||
QModelIndexList indexList = comicView->selectionModel()->selectedRows();
|
||||
@ -1100,6 +1103,46 @@ void LibraryWindow::showProperties()
|
||||
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()
|
||||
{
|
||||
QModelIndex modelIndex = comicView->currentIndex();
|
||||
|
@ -197,6 +197,7 @@ public:
|
||||
void hideComicFlow(bool hide);
|
||||
void showExportComicsInfo();
|
||||
void showImportComicsInfo();
|
||||
void asignNumbers();
|
||||
};
|
||||
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user