merge current develop branch

This commit is contained in:
Felix Kauselmann
2016-11-06 16:01:29 +01:00
parent 1732d24f71
commit 46d06f441a
30 changed files with 993 additions and 404 deletions

39
YACReader/Info.plist.mac Normal file
View File

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
<key>CFBundleIconFile</key>
<string>@ICON@</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleGetInfoString</key>
<string>Created by Qt/QMake</string>
<key>CFBundleSignature</key>
<string>@TYPEINFO@</string>
<key>CFBundleExecutable</key>
<string>@EXECUTABLE@</string>
<key>CFBundleIdentifier</key>
<string>@BUNDLEIDENTIFIER@</string>
<key>NOTE</key>
<string>This file was generated by Qt/QMake.</string>
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeName</key>
<string></string>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>LSHandlerRank</key>
<string>Alternate</string>
<key>LSItemContentTypes</key>
<array>
<string>public.item</string>
</array>
</dict>
</array>
</dict>
</plist>

View File

@ -231,6 +231,7 @@ RC_FILE = icon.rc
macx {
ICON = YACReader.icns
QMAKE_INFO_PLIST = Info.plist.mac
}
TRANSLATIONS = yacreader_es.ts \

View File

@ -15,6 +15,11 @@ Configuration::Configuration()
//load("/YACReader.conf");
}
QSettings *Configuration::getSettings()
{
return settings;
}
/*Configuration::Configuration(const Configuration & conf)
{
//nothing
@ -49,6 +54,8 @@ void Configuration::load(QSettings * settings)
settings->setValue(ALWAYS_ON_TOP,false);
if(!settings->contains(SHOW_TOOLBARS))
settings->setValue(SHOW_TOOLBARS, true);
if(!settings->contains(QUICK_NAVI_MODE))
settings->setValue(QUICK_NAVI_MODE, false);
//old fit stuff
/*if(!settings->contains(FIT))
settings->setValue(FIT,false);

View File

@ -51,6 +51,7 @@ using namespace YACReader;
static Configuration configuration;
return configuration;
};
QSettings *getSettings();
void load(QSettings * settings);
QString getDefaultPath() { return settings->value(PATH).toString(); }
void setDefaultPath(QString defaultPath){settings->setValue(PATH,defaultPath);}
@ -108,6 +109,7 @@ using namespace YACReader;
void setLastVersionCheck(const QDate & date){ settings->setValue(LAST_VERSION_CHECK,date);}
int getNumDaysBetweenVersionChecks() {return settings->value(NUM_DAYS_BETWEEN_VERSION_CHECKS,1).toInt();}
void setNumDaysBetweenVersionChecks(int days) {return settings->setValue(NUM_DAYS_BETWEEN_VERSION_CHECKS,days);}
bool getQuickNaviMode(){return settings->value(QUICK_NAVI_MODE).toBool();}
};
#endif

View File

@ -214,17 +214,21 @@ void GoToFlow::setFlowType(FlowType flowType)
flow->setFlowType(flowType);
}
void GoToFlow::updateSize() //TODO : fix. it doesn't work.
{
imageSize = Configuration::getConfiguration().getGotoSlideSize();
flow->setSlideSize(imageSize);
resize(static_cast<int>(5*imageSize.width()),static_cast<int>(imageSize.height()*1.7));
}
void GoToFlow::updateConfig(QSettings * settings)
{
Q_UNUSED(settings)
GoToFlowWidget::updateConfig(settings);
imageSize = Configuration::getConfiguration().getGotoSlideSize();
flow->setFlowType(Configuration::getConfiguration().getFlowType());
resize(5*imageSize.width(), toolBar->height() + imageSize.height()*1.7);
updateSize();
}
void GoToFlow::setFlowRightToLeft(bool b)
{
flow->setFlowRightToLeft(b);
}
//-----------------------------------------------------------------------------
//SlideInitializer
//-----------------------------------------------------------------------------

View File

@ -61,8 +61,9 @@ private slots:
void setNumSlides(unsigned int slides);
void setImageReady(int index,const QByteArray & image);
void setFlowType(FlowType flowType);
void updateSize();
void updateConfig(QSettings * settings);
void setFlowRightToLeft(bool b);
signals:
void goToPage(unsigned int page);

View File

@ -77,15 +77,11 @@ void GoToFlowGL::setImageReady(int index,const QByteArray & imageData)
flow->imagesReady[index] = true;
}
void GoToFlowGL::updateSize()
{
}
void GoToFlowGL::updateConfig(QSettings * settings)
{
Performance performance = medium;
GoToFlowWidget::updateConfig(settings);
Performance performance = medium;
switch (settings->value(PERFORMANCE).toInt())
{
case 0:
@ -102,30 +98,30 @@ void GoToFlowGL::updateConfig(QSettings * settings)
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 0:
case FlowType::CoverFlowLike:
flow->setPreset(presetYACReaderFlowClassicConfig);
return;
case 1:
break;
case FlowType::Strip:
flow->setPreset(presetYACReaderFlowStripeConfig);
return;
case 2:
break;
case FlowType::StripOverlapped:
flow->setPreset(presetYACReaderFlowOverlappedStripeConfig);
return;
case 3:
break;
case FlowType::Modern:
flow->setPreset(defaultYACReaderFlowConfig);
return;
case 4:
break;
case FlowType::Roulette:
flow->setPreset(pressetYACReaderFlowDownConfig);
return;
}
//custom config
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());
@ -137,10 +133,10 @@ void GoToFlowGL::updateConfig(QSettings * settings)
flow->setFadeOutDist(settings->value(FADE_OUT_DIST).toInt());
flow->setLightStrenght(settings->value(LIGHT_STRENGTH).toInt());
flow->setMaxAngle(settings->value(MAX_ANGLE).toInt());
/* flow->setVisibility(settings->value("visibilityDistance").toInt());
flow->setLightStrenght(settings->value("lightStrength").toInt())*/;
break;
}
if (Configuration::getConfiguration().getQuickNaviMode())
flow->setFadeOutDist(20);
}
void GoToFlowGL::keyPressEvent(QKeyEvent* event)
@ -164,3 +160,8 @@ void GoToFlowGL::resizeEvent(QResizeEvent *event)
toolBar->move(0, event->size().height() - toolBar->height());
toolBar->setFixedWidth(width());
}
void GoToFlowGL::setFlowRightToLeft(bool b)
{
flow->setFlowRightToLeft(b);
}

View File

@ -23,9 +23,9 @@ public:
void setFlowType(FlowType flowType);
void setNumSlides(unsigned int slides);
void setImageReady(int index,const QByteArray & image);
void updateSize();
void updateConfig(QSettings * settings);
void setFlowRightToLeft(bool b);
signals:
void goToPage(unsigned int page);

View File

@ -2,18 +2,43 @@
#include <QtWidgets>
#include "configuration.h"
GoToFlowToolBar::GoToFlowToolBar(QWidget * parent)
:QWidget(parent)
:QStackedWidget(parent)
{
//elementos interactivos
QVBoxLayout * mainLayout = new QVBoxLayout;
bar = new QWidget(this);
QHBoxLayout * bottom = new QHBoxLayout(bar);
bottom->addStretch();
bottom->addWidget(new QLabel("<b>" + tr("Page : ") + "</b>",bar));
bottom->addWidget(edit = new QLineEdit(bar));
v = new QIntValidator(bar);
QWidget * normal = new QWidget(this); // container widget
QWidget * quickNavi = new QWidget(this); // container widget
addWidget(normal);
addWidget(quickNavi);
QHBoxLayout * normalLayout = new QHBoxLayout(normal);
QHBoxLayout * naviLayout = new QHBoxLayout(quickNavi);
normal->setLayout(normalLayout);
quickNavi->setLayout(naviLayout);
slider = new QSlider(Qt::Horizontal,this);
slider->setStyleSheet(
"QSlider::groove:horizontal {"
" border: 1px solid #22FFFFFF;"
" border-radius: 1px;"
" background: #77000000;"
" margin: 2px 0;"
" padding: 1px;"
"}"
"QSlider::handle:horizontal {"
" background: #55FFFFFF;"
" width: 48px;"
" border-radius: 1px;"
"}"
);
connect(slider, &QSlider::valueChanged, this, [&](int v) { emit(setCenter(v)); });
pageHint = new QLabel("<b>" + tr("Page : ") + "</b>",this);
v = new QIntValidator(this);
v->setBottom(1);
edit = new QLineEdit(this);
edit->setValidator(v);
edit->setAlignment(Qt::AlignRight|Qt::AlignVCenter);
edit->setStyleSheet("QLineEdit {border: 1px solid #77000000; background: #55000000; color: white; padding: 3px 5px 5px 5px; margin: 13px 5px 12px 5px; font-weight:bold}");
@ -29,37 +54,39 @@ GoToFlowToolBar::GoToFlowToolBar(QWidget * parent)
QString centerButtonCSS = "QPushButton {background-image: url(:/images/imgCenterSlide.png); width: 100%; height:100%; background-repeat: none; border: none;} "
"QPushButton:focus { border: none; outline: none;}"
"QPushButton:pressed {background-image: url(:/images/imgCenterSlidePressed.png); width: 100%; height:100%; background-repeat: none; border: none;} ";
centerButton = new QPushButton(bar);
centerButton = new QPushButton(this);
//centerButton->setIcon(QIcon(":/images/center.png"));
centerButton->setStyleSheet(centerButtonCSS);
centerButton->setFixedSize(26,50);
centerButton->setAttribute(Qt::WA_LayoutUsesWidgetRect,true);
connect(centerButton,SIGNAL(clicked()),this,SLOT(centerSlide()));
bottom->addWidget(centerButton);
QString goToButtonCSS = "QPushButton {background-image: url(:/images/imgGoToSlide.png); width: 100%; height:100%; background-repeat: none; border: none;} "
"QPushButton:focus { border: none; outline: none;}"
"QPushButton:pressed {background-image: url(:/images/imgGoToSlidePressed.png); width: 100%; height:100%; background-repeat: none; border: none;} ";
goToButton = new QPushButton(bar);
goToButton = new QPushButton(this);
//goToButton->setIcon(QIcon(":/images/goto.png"));
goToButton->setStyleSheet(goToButtonCSS);
goToButton->setFixedSize(32,50);
goToButton->setAttribute(Qt::WA_LayoutUsesWidgetRect,true);
connect(goToButton,SIGNAL(clicked()),this,SLOT(goTo()));
bottom->addWidget(goToButton);
bottom->addStretch();
bottom->setMargin(0);
bottom->setSpacing(0);
normalLayout->setMargin(0);
normalLayout->setSpacing(0);
normalLayout->addStretch();
normalLayout->addWidget(pageHint);
normalLayout->addWidget(edit);
normalLayout->addWidget(centerButton);
normalLayout->addWidget(goToButton);
normalLayout->addStretch();
bar->setLayout(bottom);
naviLayout->setContentsMargins(5, 0, 0, 0);
naviLayout->setSpacing(2);
naviLayout->addWidget(slider);
naviLayout->addWidget(goToButton);
mainLayout->setMargin(0);
mainLayout->setSpacing(0);
mainLayout->addWidget(bar);
setLayout(mainLayout);
updateOptions();
setFixedHeight(50);
}
@ -78,11 +105,13 @@ void GoToFlowToolBar::paintEvent(QPaintEvent *)
void GoToFlowToolBar::setPage(int pageNumber)
{
edit->setText(QString::number(pageNumber+1));
slider->setValue(pageNumber);
}
void GoToFlowToolBar::setTop(int numPages)
{
v->setTop(numPages);
slider->setMaximum(numPages-1); // min is 0
}
void GoToFlowToolBar::goTo()
@ -96,3 +125,13 @@ void GoToFlowToolBar::centerSlide()
if(edit->text().toInt()!=0)
emit(setCenter(edit->text().toInt()-1));
}
void GoToFlowToolBar::updateOptions()
{
if (Configuration::getConfiguration().getQuickNaviMode())
setCurrentIndex(1);
else
setCurrentIndex(0);
slider->setInvertedAppearance(Configuration::getConfiguration().getDoubleMangaPage());
}

View File

@ -2,29 +2,36 @@
#define GOTO_FLOW_TOOLBAR_H
#include <QWidget>
#include <QStackedWidget.h>
class QLineEdit;
class QIntValidator;
class QPushButton;
class QSlider;
class QLabel;
class GoToFlowToolBar : public QWidget
class GoToFlowToolBar : public QStackedWidget
{
Q_OBJECT
private:
QLineEdit * edit;
QSlider * slider;
QIntValidator * v;
QPushButton * centerButton;
QPushButton * goToButton;
QLabel * pageHint;
QWidget * bar;
void paintEvent(QPaintEvent *);
public:
GoToFlowToolBar(QWidget * parent = 0);
public slots:
void setPage(int pageNumber);
void setTop(int numPages);
void goTo();
void centerSlide();
void updateOptions();
signals:
void setCenter(unsigned int);
void goTo(unsigned int);

View File

@ -6,20 +6,17 @@
#include <QCoreApplication>
#include "goto_flow_toolbar.h"
#include "configuration.h"
GoToFlowWidget::GoToFlowWidget(QWidget * parent)
:QWidget(parent)
{
mainLayout = new QVBoxLayout;
mainLayout->setMargin(0);
mainLayout->setSpacing(0);
toolBar = new GoToFlowToolBar(this);
mainLayout->setMargin(0);
mainLayout->setSpacing(0);
setLayout(mainLayout);
//toolBar->installEventFilter(this);
@ -54,6 +51,21 @@ void GoToFlowWidget::keyPressEvent(QKeyEvent* event)
event->accept();
}
void GoToFlowWidget::updateConfig(QSettings * settings)
{
Q_UNUSED(settings)
toolBar->updateOptions();
}
void GoToFlowWidget::updateSize()
{
// called by parent in resizeEvent
// no need to update width when QuickNaviMode disabled
// height is set in updateConfig
if (Configuration::getConfiguration().getQuickNaviMode() && parentWidget() != nullptr)
resize(parentWidget()->width(),height());
}
/*bool GoToFlowWidget::eventFilter(QObject * target, QEvent * event)
{
if(event->type() == QEvent::KeyPress)

View File

@ -27,8 +27,9 @@ public slots:
virtual void setFlowType(FlowType flowType) = 0;
virtual void setNumSlides(unsigned int slides) = 0;
virtual void setImageReady(int index,const QByteArray & image) = 0;
virtual void updateSize() = 0;
virtual void updateConfig(QSettings * settings) = 0;
virtual void updateSize();
virtual void updateConfig(QSettings * settings);
virtual void setFlowRightToLeft(bool b) = 0;
protected:
void keyPressEvent(QKeyEvent* event);

View File

@ -169,5 +169,13 @@ int main(int argc, char * argv[])
YACReader::exitCheck(ret);
#ifdef Q_OS_MAC
// ugly workaround to avoid crash when app exit on MacOS Sierra due to Qt's QColorDialog bug.
// cf. https://bugreports.qt.io/browse/QTBUG-56448
QColorDialog colorDlg(0);
colorDlg.setOption(QColorDialog::NoButtons);
colorDlg.setCurrentColor(Qt::white);
#endif
return ret;
}

View File

@ -189,6 +189,10 @@ void MainWindowViewer::setupUI()
// setWindowFlags(this->windowFlags() | Qt::CustomizeWindowHint | Qt::WindowStaysOnTopHint);
//}
previousWindowFlags = windowFlags();
previousPos = pos();
previousSize = size();
if(fullscreen)
toFullScreen();
if(conf.getMaximized())
@ -651,13 +655,68 @@ void MainWindowViewer::createToolBars()
fileMenu->addAction(openFolderAction);
fileMenu->addSeparator();
fileMenu->addAction(saveImageAction);
fileMenu->addSeparator();
QMenu * recentmenu = new QMenu(tr("Open recent"));
recentmenu->addActions(recentFilesActionList);
recentmenu->addSeparator();
recentmenu->addAction(clearRecentFilesAction);
refreshRecentFilesActionList();
fileMenu->addMenu(recentmenu);
fileMenu->addSeparator();
fileMenu->addAction(closeAction);
QMenu * editMenu = new QMenu(tr("Edit"));
editMenu->addAction(leftRotationAction);
editMenu->addAction(rightRotationAction);
QMenu * viewMenu = new QMenu(tr("View"));
viewMenu->addAction(adjustHeightAction);
viewMenu->addAction(adjustWidthAction);
viewMenu->addAction(fitToPageAction);
viewMenu->addAction(adjustToFullSizeAction);
viewMenu->addSeparator();
viewMenu->addAction(increasePageZoomAction);
viewMenu->addAction(decreasePageZoomAction);
viewMenu->addAction(resetZoomAction);
viewMenu->addAction(showZoomSliderlAction);
viewMenu->addSeparator();
viewMenu->addAction(doublePageAction);
viewMenu->addAction(doubleMangaPageAction);
viewMenu->addSeparator();
viewMenu->addAction(showMagnifyingGlassAction);
QMenu * goMenu = new QMenu(tr("Go"));
goMenu->addAction(prevAction);
goMenu->addAction(nextAction);
goMenu->addAction(goToPageAction);
goMenu->addSeparator();
goMenu->addAction(setBookmarkAction);
goMenu->addAction(showBookmarksAction);
QMenu * windowMenu = new QMenu(tr("Window"));
windowMenu->addAction(optionsAction); // this action goes to MacOS's Preference menu by Qt
windowMenu->addAction(showShorcutsAction);
windowMenu->addAction(showFlowAction);
windowMenu->addAction(showInfoAction);
windowMenu->addAction(showDictionaryAction);
QMenu * helpMenu = new QMenu(tr("Help"));
helpMenu->addAction(helpAboutAction);
menuBar->addMenu(fileMenu);
menuBar->addMenu(editMenu);
menuBar->addMenu(viewMenu);
menuBar->addMenu(goMenu);
menuBar->addMenu(windowMenu);
menuBar->addMenu(helpMenu);
//tool bar
//QMenu * toolbarMenu = new QMenu(tr("Toolbar"));
//toolbarMenu->addAction();
//TODO
menuBar->addMenu(fileMenu);
//menu->addMenu(toolbarMenu);
//attach toolbar
@ -922,6 +981,11 @@ void MainWindowViewer::enableActions()
showInfoAction->setDisabled(false); //TODO enable goTo and showInfo (or update) when numPages emited
showDictionaryAction->setDisabled(false);
showFlowAction->setDisabled(false);
#ifdef Q_OS_MAC
activateWindow();
raise();
#endif
}
void MainWindowViewer::disableActions()
{
@ -1000,6 +1064,57 @@ void MainWindowViewer::toggleFullScreen()
Configuration::getConfiguration().setFullScreen(fullscreen = !fullscreen);
}
#ifdef Q_OS_WIN //fullscreen mode in Windows for preventing this bug: QTBUG-41309 https://bugreports.qt.io/browse/QTBUG-41309
void MainWindowViewer::toFullScreen()
{
fromMaximized = this->isMaximized();
hideToolBars();
viewer->hide();
viewer->fullscreen = true;//TODO, change by the right use of windowState();
previousWindowFlags = windowFlags();
previousPos = pos();
previousSize = size();
showNormal();
setWindowFlags(previousWindowFlags | Qt::FramelessWindowHint);
const QRect r = windowHandle()->screen()->geometry();
move(r.x(), r.y());
resize(r.width(),r.height()+1);
show();
viewer->show();
if(viewer->magnifyingGlassIsVisible())
viewer->showMagnifyingGlass();
}
void MainWindowViewer::toNormal()
{
//show all
viewer->hide();
viewer->fullscreen = false;//TODO, change by the right use of windowState();
//viewer->hideMagnifyingGlass();
setWindowFlags(previousWindowFlags);
move(previousPos);
resize(previousSize);
show();
if(fromMaximized)
showMaximized();
if(Configuration::getConfiguration().getShowToolbars())
showToolBars();
viewer->show();
if(viewer->magnifyingGlassIsVisible())
viewer->showMagnifyingGlass();
}
#else
void MainWindowViewer::toFullScreen()
{
fromMaximized = this->isMaximized();
@ -1030,6 +1145,7 @@ void MainWindowViewer::toNormal()
if(viewer->magnifyingGlassIsVisible())
viewer->showMagnifyingGlass();
}
#endif
void MainWindowViewer::toggleToolBars()
{
@ -1218,6 +1334,22 @@ void MainWindowViewer::setUpShortcutsManagement()
autoScrollBackwardAction->setData(AUTO_SCROLL_BACKWARD_ACTION_Y);
autoScrollBackwardAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(AUTO_SCROLL_BACKWARD_ACTION_Y));
QAction * autoScrollForwardHorizontalFirstAction = new QAction(tr("Autoscroll forward, horizontal first"),orphanActions);
autoScrollForwardHorizontalFirstAction->setData(AUTO_SCROLL_FORWARD_HORIZONTAL_FIRST_ACTION_Y);
autoScrollForwardHorizontalFirstAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(AUTO_SCROLL_FORWARD_HORIZONTAL_FIRST_ACTION_Y));
QAction * autoScrollBackwardHorizontalFirstAction = new QAction(tr("Autoscroll backward, horizontal first"),orphanActions);
autoScrollBackwardHorizontalFirstAction->setData(AUTO_SCROLL_BACKWARD_HORIZONTAL_FIRST_ACTION_Y);
autoScrollBackwardHorizontalFirstAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(AUTO_SCROLL_BACKWARD_HORIZONTAL_FIRST_ACTION_Y));
QAction * autoScrollForwardVerticalFirstAction = new QAction(tr("Autoscroll forward, vertical first"),orphanActions);
autoScrollForwardVerticalFirstAction->setData(AUTO_SCROLL_FORWARD_VERTICAL_FIRST_ACTION_Y);
autoScrollForwardVerticalFirstAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(AUTO_SCROLL_FORWARD_VERTICAL_FIRST_ACTION_Y));
QAction * autoScrollBackwardVerticalFirstAction = new QAction(tr("Autoscroll backward, vertical first"),orphanActions);
autoScrollBackwardVerticalFirstAction->setData(AUTO_SCROLL_BACKWARD_VERTICAL_FIRST_ACTION_Y);
autoScrollBackwardVerticalFirstAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(AUTO_SCROLL_BACKWARD_VERTICAL_FIRST_ACTION_Y));
QAction * moveDownAction = new QAction(tr("Move down"),orphanActions);
moveDownAction->setData(MOVE_DOWN_ACTION_Y);
moveDownAction->setShortcut(ShortcutsManager::getShortcutsManager().getShortcut(MOVE_DOWN_ACTION_Y));
@ -1250,6 +1382,10 @@ void MainWindowViewer::setUpShortcutsManagement()
<< showBookmarksAction
<< autoScrollForwardAction
<< autoScrollBackwardAction
<< autoScrollForwardHorizontalFirstAction
<< autoScrollBackwardHorizontalFirstAction
<< autoScrollForwardVerticalFirstAction
<< autoScrollBackwardVerticalFirstAction
<< moveDownAction
<< moveUpAction
<< moveLeftAction

View File

@ -167,6 +167,11 @@ class EditShortcutsDialog;
bool isClient;
QString startComicPath;
quint64 libraryId;
//fullscreen mode in Windows for preventing this bug: QTBUG-41309 https://bugreports.qt.io/browse/QTBUG-41309
Qt::WindowFlags previousWindowFlags;
QPoint previousPos;
QSize previousSize;
signals:
void closed();
protected:

View File

@ -105,6 +105,8 @@ OptionsDialog::OptionsDialog(QWidget * parent)
connect(gammaS,SIGNAL(valueChanged(int)),this,SLOT(gammaChanged(int)));
//connect(brightnessS,SIGNAL(valueChanged(int)),this,SIGNAL(changedOptions()));
quickNavi = new QCheckBox(tr("Quick Navigation Mode"));
QHBoxLayout * buttons = new QHBoxLayout();
buttons->addStretch();
buttons->addWidget(new QLabel(tr("Restart is needed")));
@ -122,6 +124,7 @@ OptionsDialog::OptionsDialog(QWidget * parent)
layoutFlow->addWidget(gl);
layoutFlow->addWidget(useGL);
#endif
layoutFlow->addWidget(quickNavi);
layoutFlow->addStretch();
layoutImage->addWidget(new QLabel(tr("Brightness")),0,0);
layoutImage->addWidget(new QLabel(tr("Contrast")),1,0);
@ -191,6 +194,7 @@ void OptionsDialog::saveOptions()
settings->setValue(BACKGROUND_COLOR,colorDialog->currentColor());
//settings->setValue(FIT_TO_WIDTH_RATIO,fitToWidthRatioS->sliderPosition()/100.0);
settings->setValue(QUICK_NAVI_MODE,quickNavi->isChecked());
YACReaderOptionsDialog::saveOptions();
}
@ -221,6 +225,8 @@ void OptionsDialog::restoreOptions(QSettings * settings)
updateColor(settings->value(BACKGROUND_COLOR).value<QColor>());
//fitToWidthRatioS->setSliderPosition(settings->value(FIT_TO_WIDTH_RATIO).toFloat()*100);
quickNavi->setChecked(settings->value(QUICK_NAVI_MODE).toBool());
brightnessS->setValue(settings->value(BRIGHTNESS,0).toInt());
contrastS->setValue(settings->value(CONTRAST,100).toInt());
gammaS->setValue(settings->value(GAMMA,100).toInt());

View File

@ -23,6 +23,7 @@ Q_OBJECT
//QLabel * pathLabel;
QLineEdit * pathEdit;
QPushButton * pathFindButton;
QCheckBox * quickNavi;
QLabel * magGlassSizeLabel;

View File

@ -117,6 +117,11 @@ zoom(100)
//animations
verticalScroller = new QPropertyAnimation(verticalScrollBar(), "sliderPosition");
connect(verticalScroller,SIGNAL(valueChanged (const QVariant &)),this,SIGNAL(backgroundChanges()));
horizontalScroller = new QPropertyAnimation(horizontalScrollBar(), "sliderPosition");
connect(horizontalScroller,SIGNAL(valueChanged (const QVariant &)),this,SIGNAL(backgroundChanges()));
groupScroller = new QParallelAnimationGroup();
groupScroller->addAnimation(verticalScroller);
groupScroller->addAnimation(horizontalScroller);
notificationsLabel = new NotificationsLabelWidget(this);
notificationsLabel->hide();
@ -136,6 +141,8 @@ Viewer::~Viewer()
delete hideCursorTimer;
delete informationLabel;
delete verticalScroller;
delete horizontalScroller;
delete groupScroller;
delete bd;
delete notificationsLabel;
delete mglass;
@ -455,6 +462,142 @@ void Viewer::scrollUp()
}
}
void Viewer::scrollForwardHorizontalFirst()
{
if (!doubleMangaPage)
{
scrollZigzag(RIGHT, DOWN, true); // right->right->lower left->right->...->next page
}
else
{
scrollZigzag(LEFT, DOWN, true); // left->left->lower right->left->...->next page
}
}
void Viewer::scrollBackwardHorizontalFirst()
{
if (!doubleMangaPage)
{
scrollZigzag(LEFT, UP, false); // left->left->upper right->left->...->prev page
}
else
{
scrollZigzag(RIGHT, UP, false); // right->right->upper left->right->...->prev page
}
}
void Viewer::scrollForwardVerticalFirst()
{
if (!doubleMangaPage)
{
scrollZigzag(DOWN, RIGHT, true); // down->down->upper right->down->...->next page
}
else
{
scrollZigzag(DOWN, LEFT, true); // down->down->upper left->down->...->next page
}
}
void Viewer::scrollBackwardVerticalFirst()
{
if (!doubleMangaPage)
{
scrollZigzag(UP, LEFT, false); // up->up->lower left->up->...->prev page
}
else
{
scrollZigzag(UP, RIGHT, false); // up->up->lower right->up->...->prev page
}
}
bool Viewer::isEdge(scrollDirection d)
{
if(d == UP)
return verticalScrollBar()->sliderPosition() == verticalScrollBar()->minimum();
else if(d == DOWN)
return verticalScrollBar()->sliderPosition() == verticalScrollBar()->maximum();
else if(d == LEFT)
return horizontalScrollBar()->sliderPosition() == horizontalScrollBar()->minimum();
else // d == RIGHT
return horizontalScrollBar()->sliderPosition() == horizontalScrollBar()->maximum();
}
void Viewer::scrollZigzag(scrollDirection d1, scrollDirection d2, bool forward)
{
if(!isEdge(d1))
{
if(d1 == UP)
scrollTo(horizontalScrollBar()->sliderPosition(),
verticalScrollBar()->sliderPosition()-static_cast<int>((height()*0.80)));
else if(d1 == DOWN)
scrollTo(horizontalScrollBar()->sliderPosition(),
verticalScrollBar()->sliderPosition()+static_cast<int>((height()*0.80)));
else if(d1 == LEFT)
scrollTo(horizontalScrollBar()->sliderPosition()-static_cast<int>((width()*0.80)),
verticalScrollBar()->sliderPosition());
else // d1 == RIGHT
scrollTo(horizontalScrollBar()->sliderPosition()+static_cast<int>((width()*0.80)),
verticalScrollBar()->sliderPosition());
}
else if(!isEdge(d2))
{
int x = 0;
int y = 0;
if(d1 == UP)
y = verticalScrollBar()->maximum();
else if(d1 == DOWN)
y = verticalScrollBar()->minimum();
else if(d1 == LEFT)
x = horizontalScrollBar()->maximum();
else // d1 == RIGHT
x = horizontalScrollBar()->minimum();
if(d2 == UP)
y = std::max(verticalScrollBar()->sliderPosition()-static_cast<int>((height()*0.80)), verticalScrollBar()->minimum());
else if(d2 == DOWN)
y = std::min(verticalScrollBar()->sliderPosition()+static_cast<int>((height()*0.80)), verticalScrollBar()->maximum());
else if(d2 == LEFT)
x = std::max(horizontalScrollBar()->sliderPosition()-static_cast<int>((width()*0.80)), horizontalScrollBar()->minimum());
else // d2 == RIGHT
x = std::min(horizontalScrollBar()->sliderPosition()+static_cast<int>((width()*0.80)), horizontalScrollBar()->maximum());
scrollTo(x, y);
}
else
{
// next or prev page's corner
int savedPageNumber = getCurrentPageNumber();
if(forward)
next();
else
prev();
if(savedPageNumber != getCurrentPageNumber()){
if(d1 == LEFT || d2 == LEFT)
horizontalScrollBar()->setSliderPosition(horizontalScrollBar()->maximum());
else
horizontalScrollBar()->setSliderPosition(horizontalScrollBar()->minimum());
emit backgroundChanges();
}
}
}
void Viewer::scrollTo(int x, int y)
{
if(groupScroller->state() == QAbstractAnimation::Running)
return;
horizontalScroller->setDuration(250);
horizontalScroller->setStartValue(horizontalScrollBar()->sliderPosition());
horizontalScroller->setEndValue(x);
verticalScroller->setDuration(250);
verticalScroller->setStartValue(verticalScrollBar()->sliderPosition());
verticalScroller->setEndValue(y);
groupScroller->start();
emit backgroundChanges();
}
void Viewer::keyPressEvent(QKeyEvent *event)
{
if(render->hasLoadedComic())
@ -490,6 +633,26 @@ void Viewer::keyPressEvent(QKeyEvent *event)
scrollUp();
}
else if (key == ShortcutsManager::getShortcutsManager().getShortcut(AUTO_SCROLL_FORWARD_HORIZONTAL_FIRST_ACTION_Y))
{
scrollForwardHorizontalFirst();
}
else if (key == ShortcutsManager::getShortcutsManager().getShortcut(AUTO_SCROLL_BACKWARD_HORIZONTAL_FIRST_ACTION_Y))
{
scrollBackwardHorizontalFirst();
}
else if (key == ShortcutsManager::getShortcutsManager().getShortcut(AUTO_SCROLL_FORWARD_VERTICAL_FIRST_ACTION_Y))
{
scrollForwardVerticalFirst();
}
else if (key == ShortcutsManager::getShortcutsManager().getShortcut(AUTO_SCROLL_BACKWARD_VERTICAL_FIRST_ACTION_Y))
{
scrollBackwardVerticalFirst();
}
else if (key == ShortcutsManager::getShortcutsManager().getShortcut(MOVE_DOWN_ACTION_Y) ||
key == ShortcutsManager::getShortcutsManager().getShortcut(MOVE_UP_ACTION_Y) ||
key == ShortcutsManager::getShortcutsManager().getShortcut(MOVE_LEFT_ACTION_Y) ||
@ -587,7 +750,8 @@ void Viewer::wheelEvent(QWheelEvent * event)
void Viewer::resizeEvent(QResizeEvent * event)
{
updateContentSize();
goToFlow->move(QPoint((width()-goToFlow->width())/2,height()-goToFlow->height()));
goToFlow->updateSize();
goToFlow->move((width()-goToFlow->width())/2,height()-goToFlow->height());
informationLabel->updatePosition();
QScrollArea::resizeEvent(event);
}
@ -798,7 +962,10 @@ void Viewer::doubleMangaPageSwitch()
{
doubleMangaPage = !doubleMangaPage;
render->doubleMangaPageSwitch();
Configuration::getConfiguration().setDoubleMangaPage(doubleMangaPage);
Configuration &config = Configuration::getConfiguration();
config.setDoubleMangaPage(doubleMangaPage);
goToFlow->setFlowRightToLeft(doubleMangaPage);
goToFlow->updateConfig(config.getSettings());
}
void Viewer::resetContent()
@ -865,7 +1032,6 @@ void Viewer::updateOptions()
goToFlow->setFlowType(Configuration::getConfiguration().getFlowType());
updateBackgroundColor(Configuration::getConfiguration().getBackgroundColor());
updateContentSize();
//goToFlow->updateSize();
}
void Viewer::updateBackgroundColor(const QColor & color)

View File

@ -14,6 +14,7 @@
#include <QMouseEvent>
#include <QCloseEvent>
#include <QPropertyAnimation>
#include <QParallelAnimationGroup>
#include <QSettings>
#include "scroll_management.h"
@ -55,6 +56,10 @@ class NotificationsLabelWidget;
void updateOptions();
void scrollDown();
void scrollUp();
void scrollForwardHorizontalFirst();
void scrollBackwardHorizontalFirst();
void scrollForwardVerticalFirst();
void scrollBackwardVerticalFirst();
void magnifyingGlassSwitch();
void showMagnifyingGlass();
void hideMagnifyingGlass();
@ -108,6 +113,8 @@ virtual void mouseReleaseEvent ( QMouseEvent * event );
PageLabelWidget * informationLabel;
//QTimer * scroller;
QPropertyAnimation * verticalScroller;
QPropertyAnimation * horizontalScroller;
QParallelAnimationGroup * groupScroller;
int posByStep;
int nextPos;
GoToFlowWidget * goToFlow;
@ -153,6 +160,12 @@ virtual void mouseReleaseEvent ( QMouseEvent * event );
void wheelEvent(QWheelEvent * event);
void mouseMoveEvent(QMouseEvent * event);
//!ZigzagScroll
enum scrollDirection{ UP, DOWN, LEFT, RIGHT };
bool isEdge(scrollDirection d);
void scrollZigzag(scrollDirection d1, scrollDirection d2, bool forward);
void scrollTo(int x, int y);
public:
Viewer(QWidget * parent = 0);
~Viewer();

View File

@ -2022,6 +2022,48 @@ void LibraryWindow::toggleFullScreen()
fullscreen = !fullscreen;
}
#ifdef Q_OS_WIN //fullscreen mode in Windows for preventing this bug: QTBUG-41309 https://bugreports.qt.io/browse/QTBUG-41309
void LibraryWindow::toFullScreen()
{
fromMaximized = this->isMaximized();
sideBar->hide();
libraryToolBar->hide();
previousWindowFlags = windowFlags();
previousPos = pos();
previousSize = size();
showNormal();
setWindowFlags(previousWindowFlags | Qt::FramelessWindowHint);
const QRect r = windowHandle()->screen()->geometry();
move(r.x(), r.y());
resize(r.width(),r.height()+1);
show();
comicsViewsManager->comicsView->toFullScreen();
}
void LibraryWindow::toNormal()
{
sideBar->show();
libraryToolBar->show();
setWindowFlags(previousWindowFlags);
move(previousPos);
resize(previousSize);
show();
if(fromMaximized)
showMaximized();
comicsViewsManager->comicsView->toNormal();
}
#else
void LibraryWindow::toFullScreen()
{
fromMaximized = this->isMaximized();
@ -2057,6 +2099,8 @@ void LibraryWindow::toNormal()
}
#endif
void LibraryWindow::setSearchFilter(const YACReader::SearchModifiers modifier, QString filter)
{
if(!filter.isEmpty())

View File

@ -375,6 +375,12 @@ public slots:
void onAddComicsToLabel();
void setToolbarTitle(const QModelIndex & modelIndex);
void saveSelectedCoversTo();
private:
//fullscreen mode in Windows for preventing this bug: QTBUG-41309 https://bugreports.qt.io/browse/QTBUG-41309
Qt::WindowFlags previousWindowFlags;
QPoint previousPos;
QSize previousSize;
};
#endif

View File

@ -12,6 +12,8 @@
#include "empty_reading_list_widget.h"
#include "no_search_results_widget.h"
#include "yacreader_sidebar.h"
//--
#include "yacreader_search_line_edit.h"
#include "options_dialog.h"
@ -71,6 +73,10 @@ QWidget * YACReaderComicsViewsManager::containerWidget()
void YACReaderComicsViewsManager::showComicsView()
{
comicsViewStack->setCurrentWidget(comicsView);
//BUG, ugly workaround for glitch when QOpenGLWidget (flow) is used just after any other widget in the views stack
//Somehow QOpenGLWidget is messing with the rendering of the side bar (wrong buffer swapping)
libraryWindow->sideBar->update();
}
void YACReaderComicsViewsManager::showEmptyFolderView()

View File

@ -200,7 +200,7 @@ struct Preset pressetYACReaderFlowDownConfig = {
};
/*Constructor*/
YACReaderFlowGL::YACReaderFlowGL(QWidget *parent,struct Preset p)
:QOpenGLWidget(/*QOpenGLWidget migration QGLFormat(QGL::SampleBuffers),*/ parent),numObjects(0),lazyPopulateObjects(-1),bUseVSync(false),hasBeenInitialized(false)
:QOpenGLWidget(/*QOpenGLWidget migration QGLFormat(QGL::SampleBuffers),*/ parent),numObjects(0),lazyPopulateObjects(-1),bUseVSync(false),hasBeenInitialized(false),flowRightToLeft(false)
{
updateCount = 0;
config = p;
@ -385,6 +385,10 @@ void YACReaderFlowGL::udpatePerspective(int width, int height)
/*Private*/
void YACReaderFlowGL::calcPos(YACReader3DImage & image, int pos)
{
if(flowRightToLeft){
pos = pos * -1;
}
if(pos == 0){
image.current = centerPos;
}else{
@ -1052,6 +1056,11 @@ void YACReaderFlowGL::render()
//do nothing
}
void YACReaderFlowGL::setFlowRightToLeft(bool b)
{
flowRightToLeft = b;
}
//EVENTOS
void YACReaderFlowGL::wheelEvent(QWheelEvent * event)
@ -1073,7 +1082,7 @@ void YACReaderFlowGL::wheelEvent(QWheelEvent * event)
void YACReaderFlowGL::keyPressEvent(QKeyEvent *event)
{
if(event->key() == Qt::Key_Left)
if((event->key() == Qt::Key_Left && !flowRightToLeft) || (event->key() == Qt::Key_Right && flowRightToLeft))
{
if(event->modifiers() == Qt::ControlModifier)
setCurrentIndex((currentSelected-10<0)?0:currentSelected-10);
@ -1083,7 +1092,7 @@ void YACReaderFlowGL::keyPressEvent(QKeyEvent *event)
return;
}
if(event->key() == Qt::Key_Right)
if((event->key() == Qt::Key_Right && !flowRightToLeft) || (event->key() == Qt::Key_Left && flowRightToLeft))
{
if(event->modifiers() == Qt::ControlModifier)
setCurrentIndex((currentSelected+10>=numObjects)?numObjects-1:currentSelected+10);
@ -1128,7 +1137,7 @@ void YACReaderFlowGL::mousePressEvent(QMouseEvent *event)
gluUnProject(winX, winY, winZ, modelview, projection, viewport, &posX, &posY, &posZ);
if(posX >= 0.5)
if((posX >= 0.5 && !flowRightToLeft) || (posX <=-0.5 && flowRightToLeft))
{
//int index = currentSelected+1;
//while((cfImages[index].current.x-cfImages[index].width/(2.0*config.rotation)) < posX)
@ -1136,7 +1145,7 @@ void YACReaderFlowGL::mousePressEvent(QMouseEvent *event)
//setCurrentIndex(index-1);
showNext();
}
else if(posX <=-0.5)
else if((posX <=-0.5 && !flowRightToLeft) || (posX >= 0.5 && flowRightToLeft) )
showPrevious();
} else
QOpenGLWidget::mousePressEvent(event);

View File

@ -173,6 +173,9 @@ protected:
//sets the updateInterval in ms
static int updateInterval;
// sets flow direction right-to-left (manga mode)
bool flowRightToLeft;
void startAnimationTimer();
void stopAnimationTimer();
@ -251,6 +254,8 @@ public:
void useVSync(bool b);
void setFlowRightToLeft(bool b);
virtual void updateImageData() = 0;
void reset();

View File

@ -207,6 +207,8 @@ public:
QVector<SlideInfo> leftSlides;
QVector<SlideInfo> rightSlides;
int centerIndex;
bool flowRightToLeft;
};
class PictureFlowAnimator
@ -281,7 +283,7 @@ private:
PictureFlowState::PictureFlowState(int a, float sr):
backgroundColor(0), slideWidth(150), slideHeight(200),
reflectionEffect(PictureFlow::BlurredReflection), centerIndex(0) , rawAngle(a), spacingRatio(sr)
reflectionEffect(PictureFlow::BlurredReflection), centerIndex(0) , rawAngle(a), spacingRatio(sr), flowRightToLeft(false)
{
}
@ -327,7 +329,10 @@ void PictureFlowState::reset()
si.angle = angle;
si.cx = -(offsetX + spacing*(i)*PFREAL_ONE);
si.cy = offsetY;
if(!flowRightToLeft)
si.slideIndex = centerIndex-1-i;
else
si.slideIndex = centerIndex+1+i;
si.blend = 200;
if(i == (int)leftSlides.count()-2)
si.blend = 128;
@ -344,7 +349,10 @@ void PictureFlowState::reset()
si.angle = -angle;
si.cx = offsetX + spacing*(i)*PFREAL_ONE;
si.cy = offsetY;
if(!flowRightToLeft)
si.slideIndex = centerIndex+1+i;
else
si.slideIndex = centerIndex-1-i;
si.blend = 200;
if(i == (int)rightSlides.count()-2)
si.blend = 128;
@ -423,13 +431,31 @@ void PictureFlowAnimator::update()
frame = index << 16;
state->centerSlide.slideIndex = state->centerIndex;
for(int i = 0; i < (int)state->leftSlides.count(); i++)
{
if(!state->flowRightToLeft)
state->leftSlides[i].slideIndex = state->centerIndex-1-i;
else
state->leftSlides[i].slideIndex = state->centerIndex+1+i;
}
for(int i = 0; i < (int)state->rightSlides.count(); i++)
{
if(!state->flowRightToLeft)
state->rightSlides[i].slideIndex = state->centerIndex+1+i;
else
state->rightSlides[i].slideIndex = state->centerIndex-1-i;
}
}
if(!state->flowRightToLeft)
{
state->centerSlide.angle = (step * tick * state->angle) >> 16;
state->centerSlide.cx = -step * fmul(state->offsetX, ftick);
}
else
{
state->centerSlide.angle = (-step * tick * state->angle) >> 16;
state->centerSlide.cx = step * fmul(state->offsetX, ftick);
}
state->centerSlide.cy = fmul(state->offsetY, ftick);
if(state->centerIndex == target)
@ -443,7 +469,10 @@ void PictureFlowAnimator::update()
{
SlideInfo& si = state->leftSlides[i];
si.angle = state->angle;
if(!state->flowRightToLeft)
si.cx = -(state->offsetX + state->spacing*(i)*PFREAL_ONE + step*state->spacing*ftick);
else
si.cx = -(state->offsetX + state->spacing*(i)*PFREAL_ONE - step*state->spacing*ftick);
si.cy = state->offsetY;
}
@ -451,24 +480,41 @@ void PictureFlowAnimator::update()
{
SlideInfo& si = state->rightSlides[i];
si.angle = -state->angle;
if(!state->flowRightToLeft)
si.cx = state->offsetX + state->spacing*(i)*PFREAL_ONE - step*state->spacing*ftick;
else
si.cx = state->offsetX + state->spacing*(i)*PFREAL_ONE + step*state->spacing*ftick;
si.cy = state->offsetY;
}
if(step > 0)
if(step > 0 && !state->flowRightToLeft)
{
PFreal ftick = (neg * PFREAL_ONE) >> 16;
state->rightSlides[0].angle = -(neg * state->angle) >> 16;
state->rightSlides[0].cx = fmul(state->offsetX, ftick);
state->rightSlides[0].cy = fmul(state->offsetY, ftick);
}
else
else if(!state->flowRightToLeft)
{
PFreal ftick = (pos * PFREAL_ONE) >> 16;
state->leftSlides[0].angle = (pos * state->angle) >> 16;
state->leftSlides[0].cx = -fmul(state->offsetX, ftick);
state->leftSlides[0].cy = fmul(state->offsetY, ftick);
}
else if(step < 0)
{
PFreal ftick = (pos * PFREAL_ONE) >> 16;
state->rightSlides[0].angle = -(pos * state->angle) >> 16;
state->rightSlides[0].cx = fmul(state->offsetX, ftick);
state->rightSlides[0].cy = fmul(state->offsetY, ftick);
}
else
{
PFreal ftick = (neg * PFREAL_ONE) >> 16;
state->leftSlides[0].angle = (neg * state->angle) >> 16;
state->leftSlides[0].cx = -fmul(state->offsetX, ftick);
state->leftSlides[0].cy = fmul(state->offsetY, ftick);
}
// must change direction ?
if(target < index) if(step > 0)
@ -1053,6 +1099,13 @@ void PictureFlow::setReflectionEffect(ReflectionEffect effect)
triggerRender();
}
void PictureFlow::setFlowRightToLeft(bool b)
{
d->state->flowRightToLeft = b;
d->state->reset();
triggerRender();
}
QImage PictureFlow::slide(int index) const
{
QImage* i = 0;
@ -1225,7 +1278,8 @@ void PictureFlow::showSlide(unsigned int index)
void PictureFlow::keyPressEvent(QKeyEvent* event)
{
if(event->key() == Qt::Key_Left)
if((event->key() == Qt::Key_Left && !(d->state->flowRightToLeft))
|| (event->key() == Qt::Key_Right && d->state->flowRightToLeft))
{
/*if(event->modifiers() == Qt::ControlModifier)
showSlide(centerIndex()-10);
@ -1235,7 +1289,8 @@ void PictureFlow::keyPressEvent(QKeyEvent* event)
return;
}
if(event->key() == Qt::Key_Right)
if((event->key() == Qt::Key_Right && !(d->state->flowRightToLeft))
|| (event->key() == Qt::Key_Left && d->state->flowRightToLeft))
{
/*if(event->modifiers() == Qt::ControlModifier)
showSlide(centerIndex()+10);
@ -1256,10 +1311,19 @@ void PictureFlow::keyPressEvent(QKeyEvent* event)
void PictureFlow::mousePressEvent(QMouseEvent* event)
{
if(event->x() > width()/2)
mousePressEvent(event, 0);
}
void PictureFlow::mousePressEvent(QMouseEvent* event, int slideWidth)
{
if((event->x() > (width() + slideWidth)/2 && !(d->state->flowRightToLeft))
|| (event->x() < (width() - slideWidth)/2 && d->state->flowRightToLeft))
showNext();
else
else if((event->x() < (width() - slideWidth)/2 && !(d->state->flowRightToLeft))
|| (event->x() > (width() + slideWidth)/2 && d->state->flowRightToLeft))
showPrevious();
//else (centered slide space)
}
void PictureFlow::paintEvent(QPaintEvent* event)

View File

@ -119,6 +119,11 @@ public:
*/
void setReflectionEffect(ReflectionEffect effect);
/*!
Sets the flow direction right-to-left (manga mode)
*/
void setFlowRightToLeft(bool b);
public slots:
@ -213,6 +218,7 @@ public:
void paintEvent(QPaintEvent *event);
void keyPressEvent(QKeyEvent* event);
void mousePressEvent(QMouseEvent* event);
void mousePressEvent(QMouseEvent* event, int slideWidth);
void resizeEvent(QResizeEvent* event);
private slots:

View File

@ -27,6 +27,7 @@
#define CONTRAST "CONTRAST"
#define GAMMA "GAMMA"
#define SHOW_INFO "SHOW_INFO"
#define QUICK_NAVI_MODE "QUICK_NAVI_MODE"
#define FLOW_TYPE_GL "FLOW_TYPE_GL"
#define Y_POSITION "Y_POSITION"

View File

@ -7,12 +7,7 @@ YACReaderFlow::YACReaderFlow(QWidget * parent,FlowType flowType) : PictureFlow(p
void YACReaderFlow::mousePressEvent(QMouseEvent* event)
{
if(event->x() > (width()+slideSize().width())/2)
showNext();
else
if(event->x() < (width()-slideSize().width())/2)
showPrevious();
//else (centered cover space)
PictureFlow::mousePressEvent(event, slideSize().width());
}
void YACReaderFlow::mouseDoubleClickEvent(QMouseEvent* event)

View File

@ -356,46 +356,46 @@ void YACReaderOptionsDialog::setOverlappedStripeConfigSW()
#ifndef NO_OPENGL
void YACReaderOptionsDialog::setClassicConfig()
{
settings->setValue(FLOW_TYPE_GL,CoverFlowLike);
gl->setValues(presetYACReaderFlowClassicConfig);
saveFlowParameters();
settings->setValue(FLOW_TYPE_GL,CoverFlowLike);
}
void YACReaderOptionsDialog::setStripeConfig()
{
settings->setValue(FLOW_TYPE_GL,Strip);
gl->setValues(presetYACReaderFlowStripeConfig);
saveFlowParameters();
settings->setValue(FLOW_TYPE_GL,Strip);
}
void YACReaderOptionsDialog::setOverlappedStripeConfig()
{
settings->setValue(FLOW_TYPE_GL,StripOverlapped);
gl->setValues(presetYACReaderFlowOverlappedStripeConfig);
saveFlowParameters();
settings->setValue(FLOW_TYPE_GL,StripOverlapped);
}
void YACReaderOptionsDialog::setModernConfig()
{
settings->setValue(FLOW_TYPE_GL,Modern);
gl->setValues(defaultYACReaderFlowConfig);
saveFlowParameters();
settings->setValue(FLOW_TYPE_GL,Modern);
}
void YACReaderOptionsDialog::setRouletteConfig()
{
settings->setValue(FLOW_TYPE_GL,Roulette);
gl->setValues(pressetYACReaderFlowDownConfig);
saveFlowParameters();
settings->setValue(FLOW_TYPE_GL,Roulette);
}
#endif

View File

@ -125,6 +125,10 @@ public:
//viewer
#define AUTO_SCROLL_FORWARD_ACTION_Y "AUTO_SCROLL_FORWARD_ACTION_Y"
#define AUTO_SCROLL_BACKWARD_ACTION_Y "AUTO_SCROLL_BACKWARD_ACTION_Y"
#define AUTO_SCROLL_FORWARD_VERTICAL_FIRST_ACTION_Y "AUTO_SCROLL_FORWARD_VERTICAL_FIRST_ACTION_Y"
#define AUTO_SCROLL_BACKWARD_VERTICAL_FIRST_ACTION_Y "AUTO_SCROLL_BACKWARD_VERTICAL_FIRST_ACTION_Y"
#define AUTO_SCROLL_FORWARD_HORIZONTAL_FIRST_ACTION_Y "AUTO_SCROLL_FORWARD_HORIZONTAL_FIRST_ACTION_Y"
#define AUTO_SCROLL_BACKWARD_HORIZONTAL_FIRST_ACTION_Y "AUTO_SCROLL_BACKWARD_HORIZONTAL_FIRST_ACTION_Y"
#define MOVE_DOWN_ACTION_Y "MOVE_DOWN_ACTION_Y"
#define MOVE_UP_ACTION_Y "MOVE_UP_ACTION_Y"
#define MOVE_LEFT_ACTION_Y "MOVE_LEFT_ACTION_Y"