mirror of
https://github.com/YACReader/yacreader
synced 2025-05-28 03:10:27 -04:00
168 lines
4.1 KiB
C++
168 lines
4.1 KiB
C++
#include "goto_flow_gl.h"
|
|
|
|
#include <QLineEdit>
|
|
#include <QIntValidator>
|
|
#include <QPushButton>
|
|
#include <QPushButton>
|
|
#include <QSize>
|
|
#include <QApplication>
|
|
|
|
#include "configuration.h"
|
|
|
|
#include "goto_flow_toolbar.h"
|
|
|
|
|
|
GoToFlowGL::GoToFlowGL(QWidget* parent, FlowType flowType)
|
|
:GoToFlowWidget(parent)
|
|
{
|
|
Q_UNUSED(flowType)
|
|
flow = new YACReaderPageFlowGL(this);
|
|
flow->setShowMarks(false);
|
|
|
|
imageSize = Configuration::getConfiguration().getGotoSlideSize();
|
|
|
|
flow->setSlideSize(imageSize);
|
|
connect(flow,SIGNAL(centerIndexChanged(int)),this,SLOT(setPageNumber(int)));
|
|
connect(flow,SIGNAL(selected(unsigned int)),this,SIGNAL(goToPage(unsigned int)));
|
|
|
|
connect(toolBar,SIGNAL(goTo(unsigned int)),this,SIGNAL(goToPage(unsigned int)));
|
|
connect(toolBar,SIGNAL(setCenter(unsigned int)),flow,SLOT(setCenterIndex(unsigned int)));
|
|
|
|
mainLayout->addWidget(flow);
|
|
toolBar->raise();
|
|
|
|
resize(static_cast<int>(5*imageSize.width()),toolBar->height() + static_cast<int>(imageSize.height()*1.7));
|
|
|
|
this->setCursor(QCursor(Qt::ArrowCursor));
|
|
}
|
|
|
|
GoToFlowGL::~GoToFlowGL()
|
|
{
|
|
delete flow;
|
|
}
|
|
|
|
void GoToFlowGL::reset()
|
|
{
|
|
flow->reset();
|
|
}
|
|
|
|
void GoToFlowGL::centerSlide(int slide)
|
|
{
|
|
if(flow->centerIndex()!=slide)
|
|
{
|
|
flow->setCenterIndex(slide);
|
|
}
|
|
}
|
|
|
|
void GoToFlowGL::setFlowType(FlowType flowType)
|
|
{
|
|
if(flowType == CoverFlowLike)
|
|
flow->setPreset(presetYACReaderFlowClassicConfig);
|
|
else if(flowType == Strip)
|
|
flow->setPreset(presetYACReaderFlowStripeConfig);
|
|
else if(flowType == StripOverlapped)
|
|
flow->setPreset(presetYACReaderFlowOverlappedStripeConfig);
|
|
else
|
|
flow->setPreset(defaultYACReaderFlowConfig);
|
|
}
|
|
|
|
void GoToFlowGL::setNumSlides(unsigned int slides)
|
|
{
|
|
flow->populate(slides);
|
|
toolBar->setTop(slides);
|
|
}
|
|
void GoToFlowGL::setImageReady(int index,const QByteArray & imageData)
|
|
{
|
|
flow->rawImages[index] = imageData;
|
|
flow->imagesReady[index] = true;
|
|
}
|
|
|
|
void GoToFlowGL::updateConfig(QSettings * settings)
|
|
{
|
|
GoToFlowWidget::updateConfig(settings);
|
|
|
|
Performance performance = medium;
|
|
switch (settings->value(PERFORMANCE).toInt())
|
|
{
|
|
case 0:
|
|
performance = low;
|
|
break;
|
|
case 1:
|
|
performance = medium;
|
|
break;
|
|
case 2:
|
|
performance = high;
|
|
break;
|
|
case 3:
|
|
performance = ultraHigh;
|
|
break;
|
|
}
|
|
|
|
imageSize = Configuration::getConfiguration().getGotoSlideSize();
|
|
resize(5*imageSize.width(), toolBar->height() + imageSize.height()*1.7);
|
|
updateSize();
|
|
|
|
flow->setPerformance(performance);
|
|
|
|
switch (settings->value(FLOW_TYPE_GL).toInt())
|
|
{
|
|
case FlowType::CoverFlowLike:
|
|
flow->setPreset(presetYACReaderFlowClassicConfig);
|
|
break;
|
|
case FlowType::Strip:
|
|
flow->setPreset(presetYACReaderFlowStripeConfig);
|
|
break;
|
|
case FlowType::StripOverlapped:
|
|
flow->setPreset(presetYACReaderFlowOverlappedStripeConfig);
|
|
break;
|
|
case FlowType::Modern:
|
|
flow->setPreset(defaultYACReaderFlowConfig);
|
|
break;
|
|
case FlowType::Roulette:
|
|
flow->setPreset(pressetYACReaderFlowDownConfig);
|
|
break;
|
|
case FlowType::Custom:
|
|
flow->setCF_RX(settings->value(X_ROTATION).toInt());
|
|
flow->setCF_Y(settings->value(Y_POSITION).toInt());
|
|
flow->setX_Distance(settings->value(COVER_DISTANCE).toInt());
|
|
flow->setCenter_Distance(settings->value(CENTRAL_DISTANCE).toInt());
|
|
flow->setCF_Z(settings->value(ZOOM_LEVEL).toInt());
|
|
flow->setY_Distance(settings->value(Y_COVER_OFFSET).toInt());
|
|
flow->setZ_Distance(settings->value(Z_COVER_OFFSET).toInt());
|
|
flow->setRotation(settings->value(COVER_ROTATION).toInt());
|
|
flow->setFadeOutDist(settings->value(FADE_OUT_DIST).toInt());
|
|
flow->setLightStrenght(settings->value(LIGHT_STRENGTH).toInt());
|
|
flow->setMaxAngle(settings->value(MAX_ANGLE).toInt());
|
|
break;
|
|
}
|
|
if (Configuration::getConfiguration().getQuickNaviMode())
|
|
flow->setFadeOutDist(20);
|
|
}
|
|
|
|
void GoToFlowGL::keyPressEvent(QKeyEvent* event)
|
|
{
|
|
switch (event->key())
|
|
{
|
|
case Qt::Key_Left: case Qt::Key_Right: case Qt::Key_Up:
|
|
QApplication::sendEvent(flow,event);
|
|
return;
|
|
default:
|
|
break;
|
|
}
|
|
|
|
GoToFlowWidget::keyPressEvent(event);
|
|
}
|
|
|
|
void GoToFlowGL::resizeEvent(QResizeEvent *event)
|
|
{
|
|
QWidget::resizeEvent(event);
|
|
|
|
toolBar->move(0, event->size().height() - toolBar->height());
|
|
toolBar->setFixedWidth(width());
|
|
}
|
|
|
|
void GoToFlowGL::setFlowRightToLeft(bool b)
|
|
{
|
|
flow->setFlowRightToLeft(b);
|
|
}
|