#include "goto_flow_gl.h" #include #include #include #include #include #include #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(5*imageSize.width()),toolBar->height() + static_cast(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); }