mirror of
https://github.com/YACReader/yacreader
synced 2025-07-19 21:44:43 -04:00
brough back to MacOSX the fit to width slider //ugly solution
This commit is contained in:
@ -488,13 +488,23 @@ void MainWindowViewer::createToolBars()
|
||||
|
||||
//comicToolBar->addAction(adjustWidth);
|
||||
|
||||
|
||||
#ifdef Q_OS_MAC
|
||||
|
||||
sliderAction = new YACReaderSlider(this);
|
||||
sliderAction->hide();
|
||||
|
||||
comicToolBar->addAction(adjustWidthAction);
|
||||
|
||||
QAction * action = comicToolBar->addFitToWidthSlider(adjustWidthAction);
|
||||
|
||||
connect(action,SIGNAL(triggered()),this,SLOT(toggleFitToWidthSlider()));
|
||||
|
||||
#else
|
||||
QMenu * menu = new QMenu();
|
||||
sliderAction = new YACReaderSliderAction(this);
|
||||
|
||||
sliderAction = new YACReaderSliderAction(this);
|
||||
|
||||
menu->setAutoFillBackground(false);
|
||||
menu->setStyleSheet(" QMenu {background:transparent; border: 0px;padding: 0px; }"
|
||||
);
|
||||
@ -503,16 +513,15 @@ void MainWindowViewer::createToolBars()
|
||||
tb2->addAction(adjustWidthAction);
|
||||
tb2->setMenu(menu);
|
||||
|
||||
connect(sliderAction,SIGNAL(fitToWidthRatioChanged(float)),viewer,SLOT(updateFitToWidthRatio(float)));
|
||||
connect(optionsDialog,SIGNAL(fitToWidthRatioChanged(float)),sliderAction,SLOT(updateFitToWidthRatio(float)));
|
||||
|
||||
|
||||
//tb2->addAction();
|
||||
tb2->setPopupMode(QToolButton::MenuButtonPopup);
|
||||
tb2->setDefaultAction(adjustWidthAction);
|
||||
comicToolBar->addWidget(tb2);
|
||||
#endif
|
||||
|
||||
connect(sliderAction,SIGNAL(fitToWidthRatioChanged(float)),viewer,SLOT(updateFitToWidthRatio(float)));
|
||||
connect(optionsDialog,SIGNAL(fitToWidthRatioChanged(float)),sliderAction,SLOT(updateFitToWidthRatio(float)));
|
||||
|
||||
comicToolBar->addAction(adjustHeightAction);
|
||||
comicToolBar->addAction(adjustToFullSizeAction);
|
||||
comicToolBar->addAction(leftRotationAction);
|
||||
@ -1129,6 +1138,20 @@ void MainWindowViewer::setUpShortcutsManagement()
|
||||
|
||||
ShortcutsManager::getShortcutsManager().registerActions(allActions);
|
||||
|
||||
}
|
||||
#include "QsLog.h"
|
||||
void MainWindowViewer::toggleFitToWidthSlider()
|
||||
{
|
||||
if(sliderAction->isVisible())
|
||||
{
|
||||
sliderAction->hide();
|
||||
}
|
||||
else
|
||||
{
|
||||
sliderAction->move(250,0);
|
||||
sliderAction->show();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void MainWindowViewer::changeFit()
|
||||
|
@ -22,6 +22,7 @@ class HelpAboutDialog;
|
||||
class HttpVersionChecker;
|
||||
class ShortcutsDialog;
|
||||
class YACReaderSliderAction;
|
||||
class YACReaderSlider;
|
||||
class EditShortcutsDialog;
|
||||
|
||||
class MainWindowViewer : public QMainWindow
|
||||
@ -58,6 +59,10 @@ class EditShortcutsDialog;
|
||||
void checkNewVersion();
|
||||
void processReset();
|
||||
void setUpShortcutsManagement();
|
||||
|
||||
#ifdef Q_OS_MAC
|
||||
void toggleFitToWidthSlider();
|
||||
#endif
|
||||
/*void viewComic();
|
||||
void prev();
|
||||
void next();
|
||||
@ -73,7 +78,7 @@ class EditShortcutsDialog;
|
||||
QString currentDirectory;
|
||||
QString currentDirectoryImgDest;
|
||||
//!Widgets
|
||||
Viewer * viewer;
|
||||
Viewer * viewer;
|
||||
//GoToDialog * goToDialog;
|
||||
OptionsDialog * optionsDialog;
|
||||
HelpAboutDialog * had;
|
||||
@ -116,8 +121,11 @@ class EditShortcutsDialog;
|
||||
QAction *showFlowAction;
|
||||
|
||||
QAction *showEditShortcutsAction;
|
||||
|
||||
YACReaderSliderAction * sliderAction;
|
||||
#ifdef Q_OS_MAC
|
||||
YACReaderSlider * sliderAction;
|
||||
#else
|
||||
YACReaderSliderAction * sliderAction;
|
||||
#endif
|
||||
|
||||
HttpVersionChecker * versionChecker;
|
||||
QString previousComicPath;
|
||||
|
@ -9,70 +9,86 @@
|
||||
YACReaderSliderAction::YACReaderSliderAction (QWidget * parent)
|
||||
:QWidgetAction (parent) {
|
||||
|
||||
QWidget* pWidget = new QWidget (NULL);
|
||||
QHBoxLayout* pLayout = new QHBoxLayout();
|
||||
widget = new YACReaderSlider();
|
||||
setDefaultWidget(widget);
|
||||
|
||||
pLayout->addStretch();
|
||||
|
||||
percentageLabel = new QLabel ("100%");
|
||||
percentageLabel->setStyleSheet("QLabel { color : white; }");
|
||||
percentageLabel->setAlignment(Qt::AlignHCenter|Qt::AlignVCenter);
|
||||
pLayout->addWidget (percentageLabel);
|
||||
slider = new QSlider(NULL);
|
||||
slider->setOrientation(Qt::Horizontal);
|
||||
pLayout->addWidget (slider);
|
||||
|
||||
QString sliderCSS =
|
||||
|
||||
"QSlider::sub-page:horizontal {background-image: url(:/images/sliderSubPage.png); border: 0px; margin-left: 18px;}"
|
||||
"QSlider::add-page:horizontal {background-image: url(:/images/sliderAddPage.png); border: 0px; margin-right: 25px;}"
|
||||
"QSlider::handle:horizontal {image: url(:/images/sliderHandle.png); width: 31px;height:45px; }"
|
||||
"QSlider::groove:horizontal {border-image:url(:/images/sliderGround.png); border-left:-2px; border-right:0;}"
|
||||
;
|
||||
slider->setStyleSheet(sliderCSS);
|
||||
slider->setFixedSize(218,45);
|
||||
|
||||
QLabel* imgLabel = new QLabel(pWidget);
|
||||
QPixmap p(":/images/sliderBackground.png");
|
||||
imgLabel->resize(p.size());
|
||||
imgLabel->setPixmap(p);
|
||||
|
||||
pLayout->setMargin(0);
|
||||
pLayout->setSpacing(0);
|
||||
|
||||
pLayout->setStretchFactor(percentageLabel,1);
|
||||
pLayout->setStretchFactor(slider,0);
|
||||
|
||||
|
||||
pWidget->setLayout (pLayout);
|
||||
pWidget->setAutoFillBackground(false);
|
||||
|
||||
pWidget->setMinimumSize(276,45);
|
||||
|
||||
setDefaultWidget(pWidget);
|
||||
|
||||
slider->setMinimum(50);
|
||||
slider->setMaximum(100);
|
||||
slider->setPageStep(5);
|
||||
|
||||
int value = Configuration::getConfiguration().getFitToWidthRatio()*100;
|
||||
slider->setValue(value);
|
||||
percentageLabel->setText(QString("%1 %").arg(value));
|
||||
connect(slider,SIGNAL(valueChanged(int)),this,SLOT(updateText(int)));
|
||||
connect(widget,SIGNAL(fitToWidthRatioChanged(float)),this,SIGNAL(fitToWidthRatioChanged(float)));
|
||||
|
||||
|
||||
}
|
||||
|
||||
void YACReaderSliderAction::updateText(int value)
|
||||
{
|
||||
percentageLabel->setText(QString("%1 %").arg(value));
|
||||
Configuration::getConfiguration().setFitToWidthRatio(value/100.0);
|
||||
emit(fitToWidthRatioChanged(value / 100.0f));
|
||||
widget->updateText(value);
|
||||
}
|
||||
|
||||
void YACReaderSliderAction::updateFitToWidthRatio(float v)
|
||||
{
|
||||
int value = v*100;
|
||||
slider->setValue(value);
|
||||
percentageLabel->setText(QString("%1 %").arg(value));
|
||||
}
|
||||
widget->updateFitToWidthRatio(v);
|
||||
}
|
||||
|
||||
YACReaderSlider::YACReaderSlider(QWidget *parent)
|
||||
:QWidget(parent)
|
||||
{
|
||||
QHBoxLayout* pLayout = new QHBoxLayout();
|
||||
|
||||
pLayout->addStretch();
|
||||
|
||||
percentageLabel = new QLabel ("100%");
|
||||
percentageLabel->setStyleSheet("QLabel { color : white; }");
|
||||
percentageLabel->setAlignment(Qt::AlignHCenter|Qt::AlignVCenter);
|
||||
pLayout->addWidget (percentageLabel);
|
||||
slider = new QSlider(NULL);
|
||||
slider->setOrientation(Qt::Horizontal);
|
||||
pLayout->addWidget (slider);
|
||||
|
||||
QString sliderCSS =
|
||||
|
||||
"QSlider::sub-page:horizontal {background-image: url(:/images/sliderSubPage.png); border: 0px; margin-left: 18px;}"
|
||||
"QSlider::add-page:horizontal {background-image: url(:/images/sliderAddPage.png); border: 0px; margin-right: 25px;}"
|
||||
"QSlider::handle:horizontal {image: url(:/images/sliderHandle.png); width: 31px;height:45px; }"
|
||||
"QSlider::groove:horizontal {border-image:url(:/images/sliderGround.png); border-left:-2px; border-right:0;}"
|
||||
;
|
||||
slider->setStyleSheet(sliderCSS);
|
||||
slider->setFixedSize(218,45);
|
||||
|
||||
QLabel* imgLabel = new QLabel(this);
|
||||
QPixmap p(":/images/sliderBackground.png");
|
||||
imgLabel->resize(p.size());
|
||||
imgLabel->setPixmap(p);
|
||||
|
||||
pLayout->setMargin(0);
|
||||
pLayout->setSpacing(0);
|
||||
|
||||
pLayout->setStretchFactor(percentageLabel,1);
|
||||
pLayout->setStretchFactor(slider,0);
|
||||
|
||||
|
||||
setLayout (pLayout);
|
||||
setAutoFillBackground(false);
|
||||
|
||||
setMinimumSize(276,45);
|
||||
|
||||
slider->setMinimum(50);
|
||||
slider->setMaximum(100);
|
||||
slider->setPageStep(5);
|
||||
|
||||
int value = Configuration::getConfiguration().getFitToWidthRatio()*100;
|
||||
slider->setValue(value);
|
||||
percentageLabel->setText(QString("%1 %").arg(value));
|
||||
connect(slider,SIGNAL(valueChanged(int)),this,SLOT(updateText(int)));
|
||||
}
|
||||
|
||||
void YACReaderSlider::updateText(int value)
|
||||
{
|
||||
percentageLabel->setText(QString("%1 %").arg(value));
|
||||
Configuration::getConfiguration().setFitToWidthRatio(value/100.0);
|
||||
emit(fitToWidthRatioChanged(value / 100.0f));
|
||||
}
|
||||
|
||||
void YACReaderSlider::updateFitToWidthRatio(float v)
|
||||
{
|
||||
int value = v*100;
|
||||
slider->setValue(value);
|
||||
percentageLabel->setText(QString("%1 %").arg(value));
|
||||
}
|
||||
|
@ -6,12 +6,31 @@
|
||||
class QLabel;
|
||||
class QSlider;
|
||||
|
||||
class YACReaderSlider : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
private:
|
||||
QLabel * percentageLabel;
|
||||
QSlider * slider;
|
||||
|
||||
public:
|
||||
|
||||
YACReaderSlider (QWidget * parent = 0);
|
||||
|
||||
public slots:
|
||||
void updateText(int value);
|
||||
void updateFitToWidthRatio(float v);
|
||||
|
||||
|
||||
signals:
|
||||
void fitToWidthRatioChanged(float value);
|
||||
};
|
||||
|
||||
class YACReaderSliderAction : public QWidgetAction
|
||||
{
|
||||
Q_OBJECT
|
||||
private:
|
||||
QLabel * percentageLabel;
|
||||
QSlider * slider;
|
||||
YACReaderSlider * widget;
|
||||
|
||||
public:
|
||||
|
||||
|
@ -64,6 +64,10 @@ public:
|
||||
//hacks everywhere
|
||||
//convenience method for YACReaderLibrary search edit
|
||||
YACReaderMacOSXSearchLineEdit *addSearchEdit();
|
||||
//convenience method for showing the fit to width slider in MacOSX
|
||||
QAction * addFitToWidthSlider(QAction * attachToAction);
|
||||
|
||||
|
||||
//convenience method for switching the icon of the view selector
|
||||
void updateViewSelectorIcon(const QIcon & icon);
|
||||
|
||||
|
@ -280,6 +280,20 @@ YACReaderMacOSXSearchLineEdit * YACReaderMacOSXToolbar::addSearchEdit()
|
||||
return searchEdit;
|
||||
}
|
||||
|
||||
QAction *YACReaderMacOSXToolbar::addFitToWidthSlider(QAction *attachToAction)
|
||||
{
|
||||
QMacToolBarItem *toolBarItem = addItem(attachToAction->icon(),"fit to width slider");
|
||||
|
||||
NSToolbarItem * nativeItem = toolBarItem->nativeToolBarItem();
|
||||
actions.insert(QString::fromNSString(nativeItem.itemIdentifier),attachToAction);
|
||||
|
||||
QAction * action = new QAction("",attachToAction->parent());
|
||||
|
||||
connect(toolBarItem,SIGNAL(activated()), action, SIGNAL(triggered()));
|
||||
|
||||
return action;
|
||||
}
|
||||
|
||||
void YACReaderMacOSXToolbar::updateViewSelectorIcon(const QIcon &icon)
|
||||
{
|
||||
if(viewSelector)
|
||||
|
Reference in New Issue
Block a user