Added a new action for showing, hiding QML ComicInfo view into the GridView.

This commit is contained in:
Luis Ángel San Martín 2016-04-16 22:40:42 +02:00
parent ba5dfc0807
commit 28b5a29da9
7 changed files with 51 additions and 30 deletions

View File

@ -88,8 +88,6 @@ ClassicComicsView::ClassicComicsView(QWidget *parent)
sVertical->restoreState(settings->value(COMICS_VIEW_FLOW_SPLITTER_STATUS).toByteArray());
//hide flow widgets
toolBarStretch = new YACReaderToolBarStretch(this);
hideFlowViewAction = new QAction(this);
hideFlowViewAction->setText(tr("Hide comic flow"));
hideFlowViewAction->setData(HIDE_COMIC_VIEW_ACTION_YL);
@ -127,6 +125,8 @@ void ClassicComicsView::setToolBar(QToolBar *toolBar)
static_cast<QVBoxLayout *>(comics->layout())->insertWidget(0,toolBar);
this->toolbar = toolBar;
toolBarStretch = new YACReaderToolBarStretch(this);
toolBarStretchAction = toolBar->addWidget(toolBarStretch);
toolBar->addAction(hideFlowViewAction);
}

View File

@ -1,11 +1,14 @@
#include "comics_view.h"
#include "comic.h"
#include "comic_files_manager.h"
#include "comic_db.h"
#include "QsLog.h"
#include <QtQuick>
ComicsView::ComicsView(QWidget *parent) :
QWidget(parent),model(NULL)
QWidget(parent),model(NULL),comicDB(nullptr)
{
setAcceptDrops(true);
}
@ -15,6 +18,18 @@ void ComicsView::setModel(ComicModel *m)
model = m;
}
void ComicsView::updateInfoForIndex(int index)
{
QQmlContext *ctxt = view->rootContext();
if(comicDB != nullptr) delete comicDB;
comicDB = new ComicDB(model->getComic(this->model->index(index, 0)));
ComicInfo *comicInfo = &(comicDB->info);
ctxt->setContextProperty("comic", comicDB);
ctxt->setContextProperty("comicInfo", comicInfo);
}
void ComicsView::dragEnterEvent(QDragEnterEvent *event)
{
if(model->canDropMimeData(event->mimeData(),event->proposedAction(),0,0,QModelIndex()))

View File

@ -10,6 +10,8 @@ class QSplitter;
class ComicFlowWidget;
class QToolBar;
class ComicModel;
class QQuickView;
class ComicsView : public QWidget
{
Q_OBJECT
@ -28,6 +30,7 @@ public:
virtual void selectIndex(int index) = 0;
public slots:
virtual void updateInfoForIndex(int index);
virtual void setShowMarks(bool show) = 0;
virtual void selectAll() = 0;
@ -50,6 +53,11 @@ protected:
void dragEnterEvent(QDragEnterEvent *event);
void dropEvent(QDropEvent *event);
QQuickView *view;
QWidget *container;
ComicDB *comicDB;
private:
};

View File

@ -43,13 +43,6 @@ GridComicsView::GridComicsView(QWidget *parent) :
container->setMinimumSize(200, 200);
container->setFocusPolicy(Qt::TabFocus);
createCoverSizeSliderWidget();
int coverSize = settings->value(COMICS_GRID_COVER_SIZES, YACREADER_MIN_COVER_WIDTH).toInt();
coverSizeSlider->setValue(coverSize);
setCoversSize(coverSize);
QQmlContext *ctxt = view->rootContext();
#ifdef Q_OS_MAC
@ -99,8 +92,13 @@ GridComicsView::GridComicsView(QWidget *parent) :
ctxt->setContextProperty("dragManager", this);
ctxt->setContextProperty("dropManager", this);
ctxt->setContextProperty("showInfo", false);
view->setSource(QUrl("qrc:/qml/GridComicsView.qml"));
showInfoAction = new QAction("Show info",this);
showInfoAction->setCheckable(true);
connect(showInfoAction, &QAction::toggled, this, &GridComicsView::showInfo);
setShowMarks(true);//TODO save this in settings
@ -144,6 +142,11 @@ void GridComicsView::createCoverSizeSliderWidget()
//TODO add shortcuts (ctrl-+ and ctrl-- for zooming in out, + ctrl-0 for reseting the zoom)
connect(coverSizeSlider, SIGNAL(valueChanged(int)), this, SLOT(setCoversSize(int)));
int coverSize = settings->value(COMICS_GRID_COVER_SIZES, YACREADER_MIN_COVER_WIDTH).toInt();
coverSizeSlider->setValue(coverSize);
setCoversSize(coverSize);
}
void GridComicsView::setToolBar(QToolBar *toolBar)
@ -151,8 +154,11 @@ void GridComicsView::setToolBar(QToolBar *toolBar)
static_cast<QVBoxLayout *>(this->layout())->insertWidget(1,toolBar);
this->toolbar = toolBar;
toolBarStretchAction = toolBar->addWidget(toolBarStretch);
coverSizeSliderAction = toolBar->addWidget(coverSizeSliderWidget);
createCoverSizeSliderWidget();
toolBarStretchAction = toolBar->addWidget(toolBarStretch);
toolBar->addAction(showInfoAction);
coverSizeSliderAction = toolBar->addWidget(coverSizeSliderWidget);
}
void GridComicsView::setModel(ComicModel *model)
@ -223,6 +229,12 @@ void GridComicsView::updateBackgroundConfig()
#endif
}
void GridComicsView::showInfo()
{
QQmlContext *ctxt = view->rootContext();
ctxt->setContextProperty("showInfo", showInfoAction->isChecked());
}
void GridComicsView::setCurrentIndex(const QModelIndex &index)
{
_selectionModel->clear();

View File

@ -38,6 +38,8 @@ public slots:
void updateBackgroundConfig();
void showInfo();
protected slots:
//QML - selection helper
void selectIndex(int index);
@ -71,6 +73,7 @@ private:
QWidget * coverSizeSliderWidget;
QSlider * coverSizeSlider;
QAction * coverSizeSliderAction;
QAction * showInfoAction;
QItemSelectionModel * _selectionModel;
QQuickView *view;
QWidget *container;

View File

@ -8,7 +8,7 @@
#include "QsLog.h"
InfoComicsView::InfoComicsView(QWidget *parent)
:ComicsView(parent), comicDB(0)
:ComicsView(parent)
{
qmlRegisterType<ComicModel>("com.yacreader.ComicModel",1,0,"ComicModel");
qmlRegisterType<ComicDB>("com.yacreader.ComicDB",1,0,"ComicDB");
@ -94,19 +94,6 @@ void InfoComicsView::setCurrentIndex(const QModelIndex &index)
QQmlProperty(list, "currentIndex").write(index.row());
}
void InfoComicsView::updateInfoForIndex(int index)
{
QQmlContext *ctxt = view->rootContext();
if(comicDB) delete comicDB;
comicDB = new ComicDB(model->getComic(this->model->index(index, 0)));
ComicInfo *comicInfo = &(comicDB->info);
ctxt->setContextProperty("comic", comicDB);
ctxt->setContextProperty("comicInfo", comicInfo);
}
QModelIndex InfoComicsView::currentIndex()
{
int FIXME;

View File

@ -28,17 +28,13 @@ public:
void selectIndex(int index);
public slots:
void updateInfoForIndex(int index);
void setShowMarks(bool show);
void selectAll();
protected:
QToolBar * toolbar;
QQuickView *view;
QWidget *container;
QObject *flow;
QObject *list;
ComicDB *comicDB;
};
#endif // INFOCOMICSVIEW_H