mirror of
https://github.com/YACReader/yacreader
synced 2025-05-28 03:10:27 -04:00
arreglado bug que al cambiar entre bibliotecas provocaba un cierre por acceso de memoria inv?lido la modificaci?n en treemodel no tiene nada que ver con el bug, pero es m?s seguro as? faltan por encontrar los memory leaks
1105 lines
36 KiB
C++
1105 lines
36 KiB
C++
#include "library_window.h"
|
||
#include "custom_widgets.h"
|
||
#include "treeitem.h"
|
||
|
||
#include <QHBoxLayout>
|
||
#include <QSplitter>
|
||
#include <QLabel>
|
||
#include <QDir>
|
||
#include <QDirModel>
|
||
#include <QHeaderView>
|
||
#include <QProcess>
|
||
#include <QtCore>
|
||
#include <QFileDialog>
|
||
#include <QHBoxLayout>
|
||
#include <QFileIconProvider>
|
||
#include <QMatrix>
|
||
|
||
#include <iterator>
|
||
|
||
//
|
||
|
||
LibraryWindow::LibraryWindow()
|
||
:QMainWindow(),skip(0),fullscreen(false),fetching(false)
|
||
{
|
||
setupUI();
|
||
loadLibraries();
|
||
}
|
||
|
||
void LibraryWindow::setupUI()
|
||
{
|
||
libraryCreator = new LibraryCreator();
|
||
packageManager = new PackageManager();
|
||
|
||
doModels();
|
||
doDialogs();
|
||
doLayout();
|
||
createActions();
|
||
createToolBars();
|
||
createMenus();
|
||
createConnections();
|
||
|
||
setWindowTitle(tr("YACReader Library"));
|
||
}
|
||
|
||
void LibraryWindow::doLayout()
|
||
{
|
||
sVertical = new QSplitter(Qt::Vertical); //spliter derecha
|
||
QSplitter * sHorizontal = new QSplitter(Qt::Horizontal); //spliter principal
|
||
//TODO: flowType is a global variable
|
||
//CONFIG COMIC_FLOW--------------------------------------------------------
|
||
comicFlow = new ComicFlow(0,flowType);
|
||
comicFlow->setFocusPolicy(Qt::StrongFocus);
|
||
comicFlow->setShowMarks(true);
|
||
QMatrix m;
|
||
m.rotate(-90);
|
||
m.scale(-1,1);
|
||
comicFlow->setMarkImage(QImage(":/images/setRead.png").transformed(m,Qt::SmoothTransformation));
|
||
int heightDesktopResolution = QApplication::desktop()->screenGeometry().height();
|
||
int height,width;
|
||
height = heightDesktopResolution*0.39;
|
||
width = height*0.65;
|
||
slideSizeW = QSize(width,height);
|
||
height = heightDesktopResolution*0.55;
|
||
width = height*0.70;
|
||
slideSizeF = QSize(width,height);
|
||
comicFlow->setSlideSize(slideSizeW);
|
||
setFocusProxy(comicFlow);
|
||
//-------------------------------------------------------------------------
|
||
|
||
//CONFIG TREE/TABLE VIEWS--------------------------------------------------
|
||
comicView = new QTableView;
|
||
foldersView = new QTreeView;
|
||
//-------------------------------------------------------------------------
|
||
|
||
//CONFIG FOLDERS/COMICS-------------------------------------------------------
|
||
/*sVertical->setStretchFactor(0,1);
|
||
sVertical->setStretchFactor(1,0);
|
||
*/
|
||
//views
|
||
//foldersView->setAnimated(true);
|
||
foldersView->setContextMenuPolicy(Qt::ActionsContextMenu);
|
||
foldersView->setContextMenuPolicy(Qt::ActionsContextMenu);
|
||
foldersView->header()->hide();
|
||
foldersView->setUniformRowHeights(true);
|
||
foldersView->setSelectionBehavior(QAbstractItemView::SelectRows);
|
||
|
||
comicView->setAlternatingRowColors(true);
|
||
//comicView->setStyleSheet("alternate-background-color: #e7e7d7;background-color: white;");
|
||
//comicView->setItemDelegate(new YACReaderComicViewDelegate());
|
||
comicView->setContextMenuPolicy(Qt::ActionsContextMenu);
|
||
comicView->setShowGrid(false);
|
||
comicView->horizontalHeader()->setResizeMode(QHeaderView::ResizeToContents);
|
||
comicView->horizontalHeader()->setStretchLastSection(true);
|
||
comicView->horizontalHeader()->setClickable(false);
|
||
//comicView->verticalHeader()->setResizeMode(QHeaderView::ResizeToContents);
|
||
comicView->verticalHeader()->setDefaultSectionSize(24);
|
||
comicView->verticalHeader()->setClickable(false); //TODO comportamiento an<61>malo
|
||
comicView->setCornerButtonEnabled(false);
|
||
comicView->setStyleSheet("QTableView {selection-background-color: #d7d7c7; selection-color: #000000;}");
|
||
// comicView->verticalHeader()->setStyleSheet("QHeaderView::section"
|
||
//"{"
|
||
// "background-color: white /* steelblue */"
|
||
//"}");
|
||
comicView->setSelectionBehavior(QAbstractItemView::SelectRows);
|
||
comicView->setSelectionMode(QAbstractItemView::ExtendedSelection);
|
||
//-------------------------------------------------------------------------
|
||
|
||
//CONFIG NAVEGACI<43>N/B<>SQUEDA-----------------------------------------------
|
||
left = new QWidget;
|
||
QVBoxLayout * l = new QVBoxLayout;
|
||
selectedLibrary = new QComboBox;
|
||
l->setContentsMargins(2,2,0,0);
|
||
l->addWidget(new QLabel(tr("Select a library:")));
|
||
l->addWidget(selectedLibrary);
|
||
treeActions = new QToolBar(left);
|
||
treeActions->setIconSize(QSize(16,16));
|
||
l->addWidget(treeActions);
|
||
l->addWidget(foldersView);
|
||
|
||
QVBoxLayout * searchLayout = new QVBoxLayout;
|
||
|
||
QHBoxLayout * filter = new QHBoxLayout;
|
||
filter->addWidget(foldersFilter = new QLineEdit());
|
||
previousFilter = "";
|
||
filter->addWidget(clearFoldersFilter = new QPushButton(tr("Clear")));
|
||
|
||
searchLayout->addWidget(new QLabel(tr("Search folders/comics"),this));
|
||
|
||
searchLayout->addLayout(filter);
|
||
includeComicsCheckBox = new QCheckBox(tr("Include files (slower)"),this);
|
||
includeComicsCheckBox->setChecked(true);
|
||
searchLayout->addWidget(includeComicsCheckBox);
|
||
|
||
l->addLayout(searchLayout);
|
||
l->setSpacing(1);
|
||
left->setLayout(l);
|
||
//-------------------------------------------------------------------------
|
||
|
||
//FINAL LAYOUT-------------------------------------------------------------
|
||
sVertical->addWidget(comicFlow);
|
||
QWidget *comics = new QWidget;
|
||
QVBoxLayout * comicsLayout = new QVBoxLayout;
|
||
comicsLayout->setContentsMargins(2,2,0,0);
|
||
comicsLayout->addWidget(editInfoToolBar = new QToolBar(comics));
|
||
comicsLayout->addWidget(comicView);
|
||
comics->setLayout(comicsLayout);
|
||
sVertical->addWidget(comics);
|
||
sHorizontal->addWidget(left);
|
||
sHorizontal->addWidget(sVertical);
|
||
sHorizontal->setStretchFactor(0,0);
|
||
sHorizontal->setStretchFactor(1,1);
|
||
setCentralWidget(sHorizontal);
|
||
//FINAL LAYOUT-------------------------------------------------------------
|
||
|
||
fullScreenToolTip = new QLabel(this);
|
||
fullScreenToolTip->setText(tr("<font color='white'> press 'F' to close fullscreen mode </font>"));
|
||
fullScreenToolTip->setPalette(QPalette(QColor(0,0,0)));
|
||
fullScreenToolTip->setFont(QFont("courier new",15,234));
|
||
fullScreenToolTip->setAutoFillBackground(true);
|
||
fullScreenToolTip->hide();
|
||
fullScreenToolTip->adjustSize();
|
||
|
||
comicFlow->setFocus(Qt::OtherFocusReason);
|
||
}
|
||
|
||
void LibraryWindow::doDialogs()
|
||
{
|
||
createLibraryDialog = new CreateLibraryDialog(this);
|
||
updateLibraryDialog = new UpdateLibraryDialog(this);
|
||
renameLibraryDialog = new RenameLibraryDialog(this);
|
||
propertiesDialog = new PropertiesDialog(this);
|
||
exportLibraryDialog = new ExportLibraryDialog(this);
|
||
importLibraryDialog = new ImportLibraryDialog(this);
|
||
addLibraryDialog = new AddLibraryDialog(this);
|
||
optionsDialog = new OptionsDialog(this);
|
||
optionsDialog->restoreOptions();
|
||
had = new HelpAboutDialog(this); //TODO load data.
|
||
QString sufix = QLocale::system().name();
|
||
if(QFile(":/files/about_"+sufix+".html").exists())
|
||
had->loadAboutInformation(":/files/about_"+sufix+".html");
|
||
else
|
||
had->loadAboutInformation(":/files/about.html");
|
||
|
||
if(QFile(":/files/helpYACReaderLibrary_"+sufix+".html").exists())
|
||
had->loadHelp(":/files/helpYACReaderLibrary_"+sufix+".html");
|
||
else
|
||
had->loadHelp(":/files/helpYACReaderLibrary.html");
|
||
}
|
||
|
||
void LibraryWindow::doModels()
|
||
{
|
||
//dirmodels
|
||
dm = new TreeModel();
|
||
dmCV = new TableModel();
|
||
sm = new QItemSelectionModel(dm);
|
||
|
||
|
||
/*proxyFilter = new YACReaderTreeSearch();
|
||
proxyFilter->setSourceModel(dm);
|
||
proxyFilter->setFilterRole(Qt::DisplayRole);*/
|
||
|
||
/*proxySort = new YACReaderSortComics();
|
||
proxySort->setSourceModel(dmCV);
|
||
proxySort->setFilterRole(Qt::DisplayRole);*/
|
||
setFoldersFilter("");
|
||
}
|
||
|
||
void LibraryWindow::createActions()
|
||
{
|
||
createLibraryAction = new QAction(this);
|
||
createLibraryAction->setToolTip(tr("Create a new library"));
|
||
createLibraryAction->setShortcut(Qt::Key_C);
|
||
createLibraryAction->setIcon(QIcon(":/images/new.png"));
|
||
|
||
openLibraryAction = new QAction(this);
|
||
openLibraryAction->setToolTip(tr("Open an existing library"));
|
||
openLibraryAction->setShortcut(Qt::Key_O);
|
||
openLibraryAction->setIcon(QIcon(":/images/openLibrary.png"));
|
||
|
||
exportLibraryAction = new QAction(this);
|
||
exportLibraryAction->setToolTip(tr("Pack the covers of the selected library"));
|
||
exportLibraryAction->setIcon(QIcon(":/images/exportLibrary.png"));
|
||
|
||
importLibraryAction = new QAction(this);
|
||
importLibraryAction->setToolTip(tr("Unpack a catalog"));
|
||
importLibraryAction->setIcon(QIcon(":/images/importLibrary.png"));
|
||
|
||
updateLibraryAction = new QAction(this);
|
||
updateLibraryAction->setToolTip(tr("Update current library"));
|
||
updateLibraryAction->setShortcut(Qt::Key_U);
|
||
updateLibraryAction->setIcon(QIcon(":/images/updateLibrary.png"));
|
||
|
||
renameLibraryAction = new QAction(this);
|
||
renameLibraryAction->setToolTip(tr("Rename current library"));
|
||
renameLibraryAction->setShortcut(Qt::Key_R);
|
||
renameLibraryAction->setIcon(QIcon(":/images/edit.png"));
|
||
|
||
deleteLibraryAction = new QAction(this);
|
||
deleteLibraryAction->setToolTip(tr("Delete current library from disk"));
|
||
deleteLibraryAction->setIcon(QIcon(":/images/deleteLibrary.png"));
|
||
|
||
removeLibraryAction = new QAction(this);
|
||
removeLibraryAction->setToolTip(tr("Remove current library from your collection"));
|
||
removeLibraryAction->setIcon(QIcon(":/images/removeLibrary.png"));
|
||
|
||
openComicAction = new QAction(this);
|
||
openComicAction->setToolTip(tr("Open current comic on YACReader"));
|
||
openComicAction->setShortcut(Qt::Key_Return);
|
||
openComicAction->setIcon(QIcon(":/images/icon.png"));
|
||
|
||
setAsReadAction = new QAction(tr("Set as read"),this);
|
||
setAsReadAction->setToolTip(tr("Set comic as read"));
|
||
setAsReadAction->setIcon(QIcon(":/images/setRead.png"));
|
||
|
||
setAsNonReadAction = new QAction(tr("Set as unread"),this);
|
||
setAsNonReadAction->setToolTip(tr("Set comic as unread"));
|
||
setAsNonReadAction->setIcon(QIcon(":/images/setUnread.png"));
|
||
|
||
setAllAsReadAction = new QAction(tr("Set all as read"),this);
|
||
setAllAsReadAction->setToolTip(tr("Set all comics as read"));
|
||
setAllAsReadAction->setIcon(QIcon(":/images/setAllRead.png"));
|
||
|
||
setAllAsNonReadAction = new QAction(tr("Set all as unread"),this);
|
||
setAllAsNonReadAction->setToolTip(tr("Set all comics as unread"));
|
||
setAllAsNonReadAction->setIcon(QIcon(":/images/setAllUnread.png"));
|
||
|
||
showHideMarksAction = new QAction(tr("Show/Hide marks"),this);
|
||
showHideMarksAction->setToolTip(tr("Show or hide readed marks"));
|
||
showHideMarksAction->setShortcut(Qt::Key_M);
|
||
showHideMarksAction->setCheckable(true);
|
||
showHideMarksAction->setIcon(QIcon(":/images/showMarks.png"));
|
||
showHideMarksAction->setChecked(true);
|
||
|
||
|
||
showPropertiesAction = new QAction(this);
|
||
showPropertiesAction->setToolTip(tr("Show properties of current comic"));
|
||
showPropertiesAction->setShortcut(Qt::Key_P);
|
||
showPropertiesAction->setIcon(QIcon(":/images/properties.png"));
|
||
|
||
toggleFullScreenAction = new QAction(this);
|
||
toggleFullScreenAction->setToolTip(tr("Fullscreen mode on/off (F)"));
|
||
toggleFullScreenAction->setShortcut(Qt::Key_F);
|
||
toggleFullScreenAction->setIcon(QIcon(":/images/fit.png"));
|
||
|
||
helpAboutAction = new QAction(this);
|
||
helpAboutAction->setToolTip(tr("Help, About YACReader"));
|
||
helpAboutAction->setShortcut(Qt::Key_F1);
|
||
helpAboutAction->setIcon(QIcon(":/images/help.png"));
|
||
|
||
setRootIndexAction = new QAction(this);
|
||
setRootIndexAction->setToolTip(tr("Select root node"));
|
||
setRootIndexAction->setIcon(QIcon(":/images/setRoot.png"));
|
||
|
||
expandAllNodesAction = new QAction(this);
|
||
expandAllNodesAction->setToolTip(tr("Expand all nodes"));
|
||
expandAllNodesAction->setIcon(QIcon(":/images/expand.png"));
|
||
|
||
colapseAllNodesAction = new QAction(this);
|
||
colapseAllNodesAction->setToolTip(tr("Colapse all nodes"));
|
||
colapseAllNodesAction->setIcon(QIcon(":/images/colapse.png"));
|
||
|
||
optionsAction = new QAction(this);
|
||
optionsAction->setToolTip(tr("Show options dialog"));
|
||
optionsAction->setIcon(QIcon(":/images/options.png"));
|
||
|
||
//disable actions
|
||
updateLibraryAction->setEnabled(false);
|
||
renameLibraryAction->setEnabled(false);
|
||
deleteLibraryAction->setEnabled(false);
|
||
removeLibraryAction->setEnabled(false);
|
||
openComicAction->setEnabled(false);
|
||
showPropertiesAction->setEnabled(false);
|
||
setAsReadAction->setEnabled(false);
|
||
setAsNonReadAction->setEnabled(false);
|
||
setAllAsReadAction->setEnabled(false);
|
||
setAllAsNonReadAction->setEnabled(false);
|
||
|
||
openContainingFolderAction = new QAction(this);
|
||
openContainingFolderAction->setText(tr("Open folder..."));
|
||
openContainingFolderAction->setIcon(QIcon(":/images/open.png"));
|
||
|
||
openContainingFolderComicAction = new QAction(this);
|
||
openContainingFolderComicAction->setText(tr("Open containing folder..."));
|
||
openContainingFolderComicAction->setIcon(QIcon(":/images/open.png"));
|
||
|
||
//Edit comics actions------------------------------------------------------
|
||
selectAllComicsAction = new QAction(this);
|
||
selectAllComicsAction->setText(tr("Select all comics"));
|
||
selectAllComicsAction->setIcon(QIcon(":/images/selectAll.png"));
|
||
|
||
editSelectedComicsAction = new QAction(this);
|
||
editSelectedComicsAction->setText(tr("Edit"));
|
||
editSelectedComicsAction->setIcon(QIcon(":/images/editComic.png"));
|
||
|
||
asignOrderActions = new QAction(this);
|
||
asignOrderActions->setText(tr("Asign current order to comics"));
|
||
asignOrderActions->setIcon(QIcon(":/images/fit.png"));
|
||
|
||
forceConverExtractedAction = new QAction(this);
|
||
forceConverExtractedAction->setText(tr("Update cover"));
|
||
forceConverExtractedAction->setIcon(QIcon(":/images/importCover.png"));
|
||
|
||
hideComicViewAction = new QAction(this);
|
||
hideComicViewAction->setText(tr("Hide comic flow"));
|
||
hideComicViewAction->setIcon(QIcon(":/images/hideComicFlow.png"));
|
||
hideComicViewAction->setCheckable(true);
|
||
hideComicViewAction->setChecked(false);
|
||
//-------------------------------------------------------------------------
|
||
}
|
||
|
||
//TODO unificar con disableActions
|
||
void LibraryWindow::disableAllActions()
|
||
{
|
||
updateLibraryAction->setEnabled(false);
|
||
renameLibraryAction->setEnabled(false);
|
||
deleteLibraryAction->setEnabled(false);
|
||
removeLibraryAction->setEnabled(false);
|
||
foldersFilter->setEnabled(false);
|
||
clearFoldersFilter->setEnabled(false);
|
||
setAsReadAction->setEnabled(false);
|
||
setAsNonReadAction->setEnabled(false);
|
||
setAllAsReadAction->setEnabled(false);
|
||
setAllAsNonReadAction->setEnabled(false);
|
||
}
|
||
|
||
//librer<65>a de s<>lo lectura
|
||
void LibraryWindow::disableActions()
|
||
{
|
||
updateLibraryAction->setEnabled(false);
|
||
openComicAction->setEnabled(false);
|
||
showPropertiesAction->setEnabled(false);
|
||
openContainingFolderAction->setEnabled(false);
|
||
openContainingFolderComicAction->setEnabled(false);
|
||
setAsReadAction->setEnabled(false);
|
||
setAsNonReadAction->setEnabled(false);
|
||
setAllAsReadAction->setEnabled(false);
|
||
setAllAsNonReadAction->setEnabled(false);
|
||
}
|
||
//librer<65>a abierta
|
||
void LibraryWindow::enableActions()
|
||
{
|
||
updateLibraryAction->setEnabled(true);
|
||
openComicAction->setEnabled(true);
|
||
showPropertiesAction->setEnabled(true);
|
||
openContainingFolderAction->setEnabled(true);
|
||
openContainingFolderComicAction->setEnabled(true);
|
||
setAsReadAction->setEnabled(true);
|
||
setAsNonReadAction->setEnabled(true);
|
||
setAllAsReadAction->setEnabled(true);
|
||
setAllAsNonReadAction->setEnabled(true);
|
||
}
|
||
void LibraryWindow::enableLibraryActions()
|
||
{
|
||
renameLibraryAction->setEnabled(true);
|
||
deleteLibraryAction->setEnabled(true);
|
||
removeLibraryAction->setEnabled(true);
|
||
foldersFilter->setEnabled(true);
|
||
clearFoldersFilter->setEnabled(true);
|
||
}
|
||
|
||
void LibraryWindow::createToolBars()
|
||
{
|
||
libraryToolBar = addToolBar(tr("Library"));
|
||
libraryToolBar->setIconSize(QSize(32,32)); //TODO make icon size dynamic
|
||
libraryToolBar->addAction(createLibraryAction);
|
||
libraryToolBar->addAction(openLibraryAction);
|
||
libraryToolBar->addAction(exportLibraryAction);
|
||
libraryToolBar->addAction(importLibraryAction);
|
||
|
||
libraryToolBar->addSeparator();
|
||
libraryToolBar->addAction(updateLibraryAction);
|
||
libraryToolBar->addAction(renameLibraryAction);
|
||
libraryToolBar->addAction(removeLibraryAction);
|
||
libraryToolBar->addAction(deleteLibraryAction);
|
||
|
||
libraryToolBar->addSeparator();
|
||
libraryToolBar->addAction(openComicAction);
|
||
libraryToolBar->addAction(showPropertiesAction);
|
||
|
||
QToolButton * tb = new QToolButton();
|
||
tb->addAction(setAsReadAction);
|
||
tb->addAction(setAllAsReadAction);
|
||
tb->setPopupMode(QToolButton::MenuButtonPopup);
|
||
tb->setDefaultAction(setAsReadAction);
|
||
|
||
QToolButton * tb2 = new QToolButton();
|
||
tb2->addAction(setAsNonReadAction);
|
||
tb2->addAction(setAllAsNonReadAction);
|
||
tb2->setPopupMode(QToolButton::MenuButtonPopup);
|
||
tb2->setDefaultAction(setAsNonReadAction);
|
||
|
||
libraryToolBar->addWidget(tb);
|
||
libraryToolBar->addWidget(tb2);
|
||
|
||
libraryToolBar->addAction(showHideMarksAction);
|
||
|
||
libraryToolBar->addSeparator();
|
||
libraryToolBar->addAction(toggleFullScreenAction);
|
||
|
||
libraryToolBar->addWidget(new QToolBarStretch());
|
||
libraryToolBar->addAction(optionsAction);
|
||
libraryToolBar->addAction(helpAboutAction);
|
||
|
||
|
||
libraryToolBar->setMovable(false);
|
||
|
||
treeActions->addAction(setRootIndexAction);
|
||
treeActions->addAction(expandAllNodesAction);
|
||
treeActions->addAction(colapseAllNodesAction);
|
||
|
||
comicFlow->addAction(toggleFullScreenAction);
|
||
comicFlow->addAction(openComicAction);
|
||
|
||
editInfoToolBar->addAction(openComicAction);
|
||
editInfoToolBar->addSeparator();
|
||
editInfoToolBar->addAction(editSelectedComicsAction);
|
||
editInfoToolBar->addAction(selectAllComicsAction);
|
||
editInfoToolBar->addSeparator();
|
||
editInfoToolBar->addAction(forceConverExtractedAction);
|
||
editInfoToolBar->addWidget(new QToolBarStretch());
|
||
editInfoToolBar->addAction(hideComicViewAction);
|
||
}
|
||
|
||
void LibraryWindow::createMenus()
|
||
{
|
||
comicView->addAction(openContainingFolderComicAction);
|
||
foldersView->addAction(openContainingFolderAction);
|
||
}
|
||
|
||
void LibraryWindow::createConnections()
|
||
{
|
||
//libraryCreator connections
|
||
connect(createLibraryDialog,SIGNAL(createLibrary(QString,QString,QString)),this,SLOT(create(QString,QString,QString)));
|
||
connect(libraryCreator,SIGNAL(coverExtracted(QString)),createLibraryDialog,SLOT(showCurrentFile(QString)));
|
||
connect(libraryCreator,SIGNAL(finished()),createLibraryDialog,SLOT(close()));
|
||
connect(libraryCreator,SIGNAL(coverExtracted(QString)),updateLibraryDialog,SLOT(showCurrentFile(QString)));
|
||
connect(libraryCreator,SIGNAL(finished()),updateLibraryDialog,SLOT(close()));
|
||
connect(libraryCreator,SIGNAL(finished()),this,SLOT(openLastCreated()));
|
||
|
||
//packageManager connections
|
||
connect(exportLibraryDialog,SIGNAL(exportPath(QString)),this,SLOT(exportLibrary(QString)));
|
||
connect(exportLibraryDialog,SIGNAL(rejected()),packageManager,SLOT(cancel()));
|
||
connect(packageManager,SIGNAL(exported()),exportLibraryDialog,SLOT(close()));
|
||
connect(importLibraryDialog,SIGNAL(unpackCLC(QString,QString,QString)),this,SLOT(importLibrary(QString,QString,QString)));
|
||
connect(importLibraryDialog,SIGNAL(rejected()),packageManager,SLOT(cancel()));
|
||
connect(importLibraryDialog,SIGNAL(rejected()),this,SLOT(deleteCurrentLibrary()));
|
||
connect(packageManager,SIGNAL(imported()),importLibraryDialog,SLOT(hide()));
|
||
connect(packageManager,SIGNAL(imported()),this,SLOT(openLastCreated()));
|
||
|
||
|
||
//create and update dialogs
|
||
connect(createLibraryDialog,SIGNAL(cancelCreate()),this,SLOT(cancelCreating()));
|
||
connect(updateLibraryDialog,SIGNAL(cancelUpdate()),this,SLOT(stopLibraryCreator()));
|
||
|
||
//open existing library from dialog.
|
||
connect(addLibraryDialog,SIGNAL(addLibrary(QString,QString)),this,SLOT(openLibrary(QString,QString)));
|
||
|
||
//load library when selected library changes
|
||
connect(selectedLibrary,SIGNAL(currentIndexChanged(QString)),this,SLOT(loadLibrary(QString)));
|
||
|
||
//rename library dialog
|
||
connect(renameLibraryDialog,SIGNAL(renameLibrary(QString)),this,SLOT(rename(QString)));
|
||
|
||
//navigations between view modes (tree,list and flow)
|
||
connect(foldersView, SIGNAL(pressed(QModelIndex)), this, SLOT(loadCovers(QModelIndex)));
|
||
connect(comicView, SIGNAL(pressed(QModelIndex)), this, SLOT(centerComicFlow(QModelIndex)));
|
||
connect(comicFlow, SIGNAL(centerIndexChanged(int)), this, SLOT(updateComicView(int)));
|
||
|
||
//actions
|
||
connect(createLibraryAction,SIGNAL(triggered()),this,SLOT(createLibrary()));
|
||
connect(exportLibraryAction,SIGNAL(triggered()),exportLibraryDialog,SLOT(show()));
|
||
connect(importLibraryAction,SIGNAL(triggered()),importLibraryDialog,SLOT(show()));
|
||
|
||
connect(openLibraryAction,SIGNAL(triggered()),this,SLOT(showAddLibrary()));
|
||
connect(showPropertiesAction,SIGNAL(triggered()),this,SLOT(showProperties()));
|
||
connect(setAsReadAction,SIGNAL(triggered()),this,SLOT(setCurrentComicReaded()));
|
||
connect(setAsNonReadAction,SIGNAL(triggered()),this,SLOT(setCurrentComicUnreaded()));
|
||
connect(setAllAsReadAction,SIGNAL(triggered()),this,SLOT(setComicsReaded()));
|
||
connect(setAllAsNonReadAction,SIGNAL(triggered()),this,SLOT(setComicsUnreaded()));
|
||
|
||
connect(showHideMarksAction,SIGNAL(toggled(bool)),comicFlow,SLOT(setShowMarks(bool)));
|
||
|
||
|
||
connect(updateLibraryAction,SIGNAL(triggered()),this,SLOT(updateLibrary()));
|
||
connect(renameLibraryAction,SIGNAL(triggered()),this,SLOT(renameLibrary()));
|
||
connect(deleteLibraryAction,SIGNAL(triggered()),this,SLOT(deleteLibrary()));
|
||
connect(removeLibraryAction,SIGNAL(triggered()),this,SLOT(removeLibrary()));
|
||
connect(openComicAction,SIGNAL(triggered()),this,SLOT(openComic()));
|
||
connect(helpAboutAction,SIGNAL(triggered()),had,SLOT(show()));
|
||
connect(setRootIndexAction,SIGNAL(triggered()),this,SLOT(setRootIndex()));
|
||
connect(expandAllNodesAction,SIGNAL(triggered()),foldersView,SLOT(expandAll()));
|
||
connect(colapseAllNodesAction,SIGNAL(triggered()),foldersView,SLOT(collapseAll()));
|
||
connect(toggleFullScreenAction,SIGNAL(triggered()),this,SLOT(toggleFullScreen()));
|
||
connect(optionsAction, SIGNAL(triggered()),optionsDialog,SLOT(show()));
|
||
connect(optionsDialog, SIGNAL(optionsChanged()),this,SLOT(reloadOptions()));
|
||
//ComicFlow
|
||
connect(comicFlow,SIGNAL(selected(unsigned int)),this,SLOT(openComic()));
|
||
connect(comicView,SIGNAL(doubleClicked(QModelIndex)),this,SLOT(openComic()));
|
||
//Folders filter
|
||
connect(clearFoldersFilter,SIGNAL(clicked()),foldersFilter,SLOT(clear()));
|
||
connect(foldersFilter,SIGNAL(textChanged(QString)),this,SLOT(setFoldersFilter(QString)));
|
||
connect(includeComicsCheckBox,SIGNAL(stateChanged(int)),this,SLOT(searchInFiles(int)));
|
||
|
||
//ContextMenus
|
||
connect(openContainingFolderComicAction,SIGNAL(triggered()),this,SLOT(openContainingFolderComic()));
|
||
connect(openContainingFolderAction,SIGNAL(triggered()),this,SLOT(openContainingFolder()));
|
||
|
||
//connect(dm,SIGNAL(directoryLoaded(QString)),foldersView,SLOT(expandAll()));
|
||
//connect(dm,SIGNAL(directoryLoaded(QString)),this,SLOT(updateFoldersView(QString)));
|
||
//Comicts edition
|
||
connect(selectAllComicsAction,SIGNAL(triggered()),comicView,SLOT(selectAll()));
|
||
|
||
connect(hideComicViewAction, SIGNAL(toggled(bool)),this, SLOT(hideComicFlow(bool)));
|
||
|
||
}
|
||
|
||
void LibraryWindow::loadLibrary(const QString & name)
|
||
{
|
||
if(libraries.size()>0)
|
||
{
|
||
QString path=libraries.value(name)+"/.yacreaderlibrary";
|
||
QDir d; //TODO change this by static methods (utils class?? with delTree for example)
|
||
if(d.exists(path))
|
||
{
|
||
index = 0;
|
||
sm->clear();
|
||
foldersView->setModel(NULL); //TODO comprobar pq no sirve con usar simplemente las se<73>ales beforeReset y reset
|
||
comicView->setModel(NULL);
|
||
|
||
dm->setupModelData(path);
|
||
foldersView->setModel(dm);
|
||
|
||
loadCovers(QModelIndex());
|
||
|
||
//includeComicsCheckBox->setCheckState(Qt::Unchecked);
|
||
foldersFilter->clear();
|
||
}
|
||
else
|
||
{
|
||
comicView->setModel(NULL);
|
||
foldersView->setModel(NULL);
|
||
comicFlow->clear();
|
||
}
|
||
d.setCurrent(libraries.value(name));
|
||
d.setFilter(QDir::AllDirs | QDir::Files | QDir::Hidden | QDir::NoSymLinks | QDir::NoDotAndDotDot);
|
||
if(d.count()<=1) //librer<65>a de s<>lo lectura
|
||
{
|
||
//QMessageBox::critical(NULL,QString::number(d.count()),QString::number(d.count()));
|
||
disableActions();
|
||
importedCovers = true;
|
||
}
|
||
else //librer<65>a normal abierta
|
||
{
|
||
enableActions();
|
||
importedCovers = false;
|
||
}
|
||
enableLibraryActions();
|
||
}
|
||
else
|
||
{
|
||
disableAllActions();
|
||
}
|
||
}
|
||
|
||
void LibraryWindow::loadCovers(const QModelIndex & mi)
|
||
{
|
||
if(foldersFilter->text()!="")
|
||
{
|
||
//setFoldersFilter("");
|
||
if(mi.isValid())
|
||
{
|
||
index = static_cast<TreeItem *>(mi.internalPointer())->originalItem;
|
||
column = mi.column();
|
||
foldersFilter->clear();
|
||
}
|
||
}
|
||
else
|
||
{
|
||
index = static_cast<TreeItem *>(mi.internalPointer());
|
||
column = mi.column();
|
||
}
|
||
|
||
unsigned long long int folderId = 0;
|
||
if(mi.isValid())
|
||
{
|
||
TreeItem *item = static_cast<TreeItem*>(mi.internalPointer());
|
||
folderId = item->id;
|
||
}
|
||
comicView->setModel(NULL);
|
||
dmCV->setupModelData(folderId,dm->getDatabase());
|
||
comicView->setModel(dmCV);
|
||
//TODO automatizar (valorar si se deja al modelo)
|
||
comicView->horizontalHeader()->hideSection(1);
|
||
comicView->horizontalHeader()->hideSection(4);
|
||
comicView->horizontalHeader()->hideSection(3);
|
||
//TODO
|
||
|
||
QStringList paths = dmCV->getPaths(currentPath());
|
||
comicFlow->setImagePaths(paths);
|
||
comicFlow->setMarks(dmCV->getReadList());
|
||
comicFlow->setFocus(Qt::OtherFocusReason);
|
||
|
||
if(paths.size()>0 && !importedCovers)
|
||
{
|
||
openComicAction->setEnabled(true);
|
||
showPropertiesAction->setEnabled(true);
|
||
setAsReadAction->setEnabled(true);
|
||
setAsNonReadAction->setEnabled(true);
|
||
setAllAsReadAction->setEnabled(true);
|
||
setAllAsNonReadAction->setEnabled(true);
|
||
}
|
||
else
|
||
{
|
||
openComicAction->setEnabled(false);
|
||
showPropertiesAction->setEnabled(false);
|
||
setAsReadAction->setEnabled(false);
|
||
setAsNonReadAction->setEnabled(false);
|
||
setAllAsReadAction->setEnabled(false);
|
||
setAllAsNonReadAction->setEnabled(false);
|
||
}
|
||
if(paths.size()>0)
|
||
comicView->setCurrentIndex(dmCV->index(0,0));
|
||
}
|
||
|
||
void LibraryWindow::centerComicFlow(const QModelIndex & mi)
|
||
{
|
||
int distance = comicFlow->centerIndex()-mi.row();
|
||
if(abs(distance)>10)
|
||
{
|
||
if(distance<0)
|
||
comicFlow->setCenterIndex(comicFlow->centerIndex()+(-distance)-10);
|
||
else
|
||
comicFlow->setCenterIndex(comicFlow->centerIndex()-distance+10);
|
||
skip = 10;
|
||
}
|
||
else
|
||
skip = abs(comicFlow->centerIndex()-mi.row());
|
||
comicFlow->showSlide(mi.row());
|
||
comicFlow->setFocus(Qt::OtherFocusReason);
|
||
}
|
||
|
||
void LibraryWindow::updateComicView(int i)
|
||
{
|
||
|
||
if(skip==0)
|
||
{
|
||
QModelIndex mi = dmCV->index(i,2);
|
||
comicView->setCurrentIndex(mi);
|
||
comicView->scrollTo(mi,QAbstractItemView::EnsureVisible);
|
||
}
|
||
skip?(--skip):0;
|
||
}
|
||
|
||
void LibraryWindow::openComic()
|
||
{
|
||
if(!importedCovers)
|
||
{
|
||
QString path = currentPath() + dmCV->getComicPath(comicView->currentIndex());
|
||
|
||
QProcess::startDetached(QDir::cleanPath(QCoreApplication::applicationDirPath())+"/YACReader",QStringList() << path);
|
||
//Comic is readed
|
||
setCurrentComicReaded();
|
||
}
|
||
}
|
||
|
||
void LibraryWindow::setCurrentComicReaded()
|
||
{
|
||
comicFlow->markSlide(comicFlow->centerIndex());
|
||
comicFlow->updateMarks();
|
||
|
||
Comic c = dmCV->getComic(comicView->currentIndex());
|
||
c.info.read = true;
|
||
QSqlDatabase db = dm->getDatabase();
|
||
db.open();
|
||
c.info.update(db);
|
||
db.close();
|
||
}
|
||
|
||
void LibraryWindow::setComicsReaded()
|
||
{
|
||
comicFlow->setMarks(dmCV->setAllComicsRead(true));
|
||
comicFlow->updateMarks();
|
||
}
|
||
|
||
void LibraryWindow::setCurrentComicUnreaded()
|
||
{
|
||
comicFlow->unmarkSlide(comicFlow->centerIndex());
|
||
comicFlow->updateMarks();
|
||
|
||
Comic c = dmCV->getComic(comicView->currentIndex());
|
||
c.info.read = false;
|
||
QSqlDatabase db = dm->getDatabase();
|
||
db.open();
|
||
c.info.update(db);
|
||
db.close();
|
||
|
||
}
|
||
|
||
void LibraryWindow::setComicsUnreaded()
|
||
{
|
||
comicFlow->setMarks(dmCV->setAllComicsRead(false));
|
||
comicFlow->updateMarks();
|
||
}
|
||
|
||
void LibraryWindow::createLibrary()
|
||
{
|
||
createLibraryDialog->show();
|
||
}
|
||
|
||
void LibraryWindow::create(QString source, QString dest, QString name)
|
||
{
|
||
_lastAdded = name;
|
||
libraries.insert(name,source);
|
||
selectedLibrary->addItem(name,source);
|
||
libraryCreator->createLibrary(source,dest);
|
||
libraryCreator->start();
|
||
saveLibraries();
|
||
}
|
||
|
||
void LibraryWindow::openLastCreated()
|
||
{
|
||
loadLibrary(_lastAdded);
|
||
selectedLibrary->setCurrentIndex(selectedLibrary->findText(_lastAdded));
|
||
}
|
||
|
||
void LibraryWindow::showAddLibrary()
|
||
{
|
||
addLibraryDialog->show();
|
||
}
|
||
|
||
void LibraryWindow::openLibrary(QString path, QString name)
|
||
{
|
||
_lastAdded = name;
|
||
libraries.insert(name,path);
|
||
selectedLibrary->addItem(name,path);
|
||
openLastCreated();
|
||
saveLibraries();
|
||
}
|
||
|
||
void LibraryWindow::loadLibraries()
|
||
{
|
||
QFile f(QCoreApplication::applicationDirPath()+"/libraries.yacr");
|
||
f.open(QIODevice::ReadOnly);
|
||
QTextStream txtS(&f);
|
||
QString content = txtS.readAll();
|
||
QStringList lines = content.split('\n');
|
||
QString line,name;
|
||
int i=0;
|
||
foreach(line,lines)
|
||
{
|
||
if((i%2)==0)
|
||
{
|
||
name = line;
|
||
}
|
||
else
|
||
{
|
||
libraries.insert(name.trimmed(),line.trimmed());
|
||
selectedLibrary->addItem(name.trimmed(),line.trimmed());
|
||
}
|
||
i++;
|
||
}
|
||
}
|
||
|
||
void LibraryWindow::saveLibraries()
|
||
{
|
||
QFile f(QCoreApplication::applicationDirPath()+"/libraries.yacr");
|
||
if(!f.open(QIODevice::WriteOnly))
|
||
{
|
||
QMessageBox::critical(NULL,tr("Saving libraries file...."),tr("There was a problem saving YACReaderLibrary libraries file. Please, check if you have enough permissions in the YACReader root folder."));
|
||
}
|
||
else
|
||
{
|
||
QTextStream txtS(&f);
|
||
for(QMap<QString,QString>::iterator i = libraries.begin();i!=libraries.end();i++)
|
||
{
|
||
txtS << i.key() << "\n";
|
||
txtS << i.value() << "\n";
|
||
}
|
||
}
|
||
}
|
||
|
||
void LibraryWindow::updateLibrary()
|
||
{
|
||
QString currentLibrary = selectedLibrary->currentText();
|
||
QString path = libraries.value(currentLibrary);
|
||
_lastAdded = currentLibrary;
|
||
updateLibraryDialog->show();
|
||
libraryCreator->updateLibrary(path,path+"/.yacreaderlibrary");
|
||
libraryCreator->start();
|
||
|
||
}
|
||
|
||
void LibraryWindow::deleteLibrary()
|
||
{
|
||
QString currentLibrary = selectedLibrary->currentText();
|
||
if(QMessageBox::question(this,tr("Are you sure?"),tr("Do you want delete ")+currentLibrary+" library?",QMessageBox::Yes,QMessageBox::No)==QMessageBox::Yes)
|
||
{
|
||
deleteCurrentLibrary();
|
||
}
|
||
}
|
||
|
||
void LibraryWindow::deleteCurrentLibrary()
|
||
{
|
||
QString path = libraries.value(selectedLibrary->currentText());
|
||
libraries.remove(selectedLibrary->currentText());
|
||
selectedLibrary->removeItem(selectedLibrary->currentIndex());
|
||
selectedLibrary->setCurrentIndex(0);
|
||
path = path+"/.yacreaderlibrary";
|
||
dm->getDatabase().close();
|
||
QDir d(path);
|
||
delTree(d);
|
||
d.rmdir(path);
|
||
if(libraries.size()==0)//no more libraries avaliable.
|
||
{
|
||
comicView->setModel(NULL);
|
||
foldersView->setModel(NULL);
|
||
comicFlow->clear();
|
||
}
|
||
saveLibraries();
|
||
}
|
||
|
||
void LibraryWindow::removeLibrary()
|
||
{
|
||
QString currentLibrary = selectedLibrary->currentText();
|
||
if(QMessageBox::question(this,tr("Are you sure?"),tr("Do you want remove ")+currentLibrary+tr(" library?\nFiles won't be erased from disk."),QMessageBox::Yes,QMessageBox::No)==QMessageBox::Yes)
|
||
{
|
||
libraries.remove(currentLibrary);
|
||
selectedLibrary->removeItem(selectedLibrary->currentIndex());
|
||
selectedLibrary->setCurrentIndex(0);
|
||
if(libraries.size()==0)//no more libraries avaliable.
|
||
{
|
||
comicView->setModel(NULL);
|
||
foldersView->setModel(NULL);
|
||
comicFlow->clear();
|
||
}
|
||
saveLibraries();
|
||
}
|
||
}
|
||
|
||
void LibraryWindow::renameLibrary()
|
||
{
|
||
renameLibraryDialog->show();
|
||
}
|
||
|
||
void LibraryWindow::rename(QString newName)
|
||
{
|
||
QString currentLibrary = selectedLibrary->currentText();
|
||
QString path = libraries.value(currentLibrary);
|
||
libraries.remove(currentLibrary);
|
||
selectedLibrary->removeItem(selectedLibrary->currentIndex());
|
||
libraries.insert(newName,path);
|
||
selectedLibrary->addItem(newName,path);
|
||
saveLibraries();
|
||
selectedLibrary->setCurrentIndex(selectedLibrary->findText(newName));
|
||
}
|
||
|
||
void LibraryWindow::cancelCreating()
|
||
{
|
||
stopLibraryCreator();
|
||
//TODO delete library.
|
||
}
|
||
|
||
void LibraryWindow::stopLibraryCreator()
|
||
{
|
||
libraryCreator->stop();
|
||
libraryCreator->wait();
|
||
}
|
||
|
||
void LibraryWindow::setRootIndex()
|
||
{
|
||
if(libraries.size()>0)
|
||
{
|
||
QString path=libraries.value(selectedLibrary->currentText())+"/.yacreaderlibrary";
|
||
QDir d; //TODO change this by static methods (utils class?? with delTree for example)
|
||
if(d.exists(path))
|
||
{
|
||
loadCovers(QModelIndex());
|
||
}
|
||
else
|
||
{
|
||
comicView->setModel(NULL);
|
||
comicFlow->clear();
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
void LibraryWindow::toggleFullScreen()
|
||
{
|
||
fullscreen?toNormal():toFullScreen();
|
||
fullscreen = !fullscreen;
|
||
}
|
||
|
||
void LibraryWindow::toFullScreen()
|
||
{
|
||
comicFlow->hide();
|
||
comicFlow->setSlideSize(slideSizeF);
|
||
comicFlow->setCenterIndex(comicFlow->centerIndex());
|
||
comicView->hide();
|
||
left->hide();
|
||
libraryToolBar->hide();
|
||
|
||
showFullScreen();
|
||
|
||
comicFlow->show();
|
||
comicFlow->setFocus(Qt::OtherFocusReason);
|
||
fullScreenToolTip->move((width()-fullScreenToolTip->width())/2,0);
|
||
fullScreenToolTip->adjustSize();
|
||
fullScreenToolTip->show();
|
||
}
|
||
|
||
void LibraryWindow::toNormal()
|
||
{
|
||
comicFlow->hide();
|
||
comicFlow->setSlideSize(slideSizeW);
|
||
comicFlow->setCenterIndex(comicFlow->centerIndex());
|
||
comicFlow->render();
|
||
comicView->show();
|
||
left->show();
|
||
fullScreenToolTip->hide();
|
||
libraryToolBar->show();
|
||
comicFlow->show();
|
||
|
||
showMaximized();
|
||
}
|
||
|
||
void LibraryWindow::setFoldersFilter(QString filter)
|
||
{
|
||
if(filter.isEmpty() && dm->isFilterEnabled())
|
||
{
|
||
dm->resetFilter();
|
||
//foldersView->collapseAll();
|
||
if(index != 0)
|
||
{
|
||
QModelIndex mi = dm->indexFromItem(index,column);
|
||
foldersView->scrollTo(mi,QAbstractItemView::PositionAtTop);
|
||
sm->select(mi,QItemSelectionModel::Select);
|
||
foldersView->setSelectionModel(sm);
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if(!filter.isEmpty())
|
||
{
|
||
dm->setFilter(filter, includeComicsCheckBox->isChecked());
|
||
foldersView->expandAll();
|
||
}
|
||
}
|
||
}
|
||
|
||
void LibraryWindow::showProperties()
|
||
{
|
||
QModelIndex mi = comicView->currentIndex();
|
||
QString path = QDir::cleanPath(currentPath()+dmCV->getComicPath(mi));
|
||
|
||
ThumbnailCreator tc(path,"");
|
||
tc.create();
|
||
propertiesDialog->setCover(tc.getCover());
|
||
propertiesDialog->setFilename(path.split("/").last());
|
||
propertiesDialog->setNumpages(tc.getNumPages());
|
||
QFile file(path);
|
||
propertiesDialog->setSize(file.size()/(1024.0*1024));
|
||
file.close();
|
||
propertiesDialog->show();
|
||
}
|
||
|
||
void LibraryWindow::openContainingFolderComic()
|
||
{
|
||
QModelIndex modelIndex = comicView->currentIndex();
|
||
QFileInfo file = QDir::cleanPath(currentPath() + dmCV->getComicPath(modelIndex));
|
||
QString path = file.absolutePath();
|
||
QDesktopServices::openUrl(QUrl("file:///"+path, QUrl::TolerantMode));
|
||
}
|
||
|
||
void LibraryWindow::openContainingFolder()
|
||
{
|
||
QModelIndex modelIndex = foldersView->currentIndex();
|
||
QString path = QDir::cleanPath(currentPath() + dm->getFolderPath(modelIndex));
|
||
QDesktopServices::openUrl(QUrl("file:///"+path, QUrl::TolerantMode));
|
||
}
|
||
|
||
void LibraryWindow::exportLibrary(QString destPath)
|
||
{
|
||
QString currentLibrary = selectedLibrary->currentText();
|
||
QString path = libraries.value(currentLibrary)+"/.yacreaderlibrary";
|
||
packageManager->createPackage(path,destPath+"/"+currentLibrary);
|
||
}
|
||
|
||
void LibraryWindow::importLibrary(QString clc,QString destPath,QString name)
|
||
{
|
||
packageManager->extractPackage(clc,destPath+"/"+name);
|
||
openLibrary(destPath+"/"+name,name);
|
||
}
|
||
|
||
void LibraryWindow::reloadOptions()
|
||
{
|
||
comicFlow->setFlowType(flowType);
|
||
}
|
||
|
||
//TODO esto sobra
|
||
void LibraryWindow::updateFoldersView(QString path)
|
||
{
|
||
//QModelIndex mi = dm->index(path);
|
||
//int rowCount = dm->rowCount(mi);
|
||
//if(!fetching)
|
||
//{
|
||
// //fetching = true;
|
||
// for(int i=0;i<rowCount;i++)
|
||
// {
|
||
// dm->fetchMore(dm->index(i,0,mi));
|
||
// //int childCount = dm->rowCount(dm->index(i,0,mi));
|
||
// //if(childCount>0)
|
||
// // QMessageBox::critical(NULL,tr("..."),tr("-----"));
|
||
// fetching = false;
|
||
// }
|
||
//}
|
||
|
||
}
|
||
|
||
void LibraryWindow::searchInFiles(int state)
|
||
{
|
||
|
||
if(state == Qt::Checked)
|
||
{
|
||
if(!foldersFilter->text().isEmpty())
|
||
{
|
||
dm->setFilter(foldersFilter->text(), true);
|
||
foldersView->expandAll();
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if(!foldersFilter->text().isEmpty())
|
||
{
|
||
dm->setFilter(foldersFilter->text(), false);
|
||
foldersView->expandAll();
|
||
}
|
||
}
|
||
}
|
||
|
||
QString LibraryWindow::currentPath()
|
||
{
|
||
return libraries.value(selectedLibrary->currentText());
|
||
}
|
||
|
||
void LibraryWindow::hideComicFlow(bool hide)
|
||
{
|
||
if(hide)
|
||
{
|
||
QList<int> sizes;
|
||
sizes.append(0);
|
||
int total = sVertical->sizes().at(0) + sVertical->sizes().at(1);
|
||
sizes.append(total);
|
||
sVertical->setSizes(sizes);
|
||
}
|
||
else
|
||
{
|
||
QList<int> sizes;
|
||
int total = sVertical->sizes().at(0) + sVertical->sizes().at(1);
|
||
sizes.append(2*total/3);
|
||
sizes.append(total/3);
|
||
sVertical->setSizes(sizes);
|
||
}
|
||
|
||
} |