brough back to MacOSX the fit to width slider //ugly solution

This commit is contained in:
Luis Ángel San Martín
2014-11-10 17:59:57 +01:00
parent 1ae1f04eb7
commit e5fe87142f
6 changed files with 150 additions and 66 deletions

View File

@ -488,13 +488,23 @@ void MainWindowViewer::createToolBars()
//comicToolBar->addAction(adjustWidth); //comicToolBar->addAction(adjustWidth);
#ifdef Q_OS_MAC #ifdef Q_OS_MAC
sliderAction = new YACReaderSlider(this);
sliderAction->hide();
comicToolBar->addAction(adjustWidthAction); comicToolBar->addAction(adjustWidthAction);
QAction * action = comicToolBar->addFitToWidthSlider(adjustWidthAction);
connect(action,SIGNAL(triggered()),this,SLOT(toggleFitToWidthSlider()));
#else #else
QMenu * menu = new QMenu(); QMenu * menu = new QMenu();
sliderAction = new YACReaderSliderAction(this); sliderAction = new YACReaderSliderAction(this);
menu->setAutoFillBackground(false); menu->setAutoFillBackground(false);
menu->setStyleSheet(" QMenu {background:transparent; border: 0px;padding: 0px; }" menu->setStyleSheet(" QMenu {background:transparent; border: 0px;padding: 0px; }"
); );
@ -503,16 +513,15 @@ void MainWindowViewer::createToolBars()
tb2->addAction(adjustWidthAction); tb2->addAction(adjustWidthAction);
tb2->setMenu(menu); tb2->setMenu(menu);
connect(sliderAction,SIGNAL(fitToWidthRatioChanged(float)),viewer,SLOT(updateFitToWidthRatio(float)));
connect(optionsDialog,SIGNAL(fitToWidthRatioChanged(float)),sliderAction,SLOT(updateFitToWidthRatio(float)));
//tb2->addAction(); //tb2->addAction();
tb2->setPopupMode(QToolButton::MenuButtonPopup); tb2->setPopupMode(QToolButton::MenuButtonPopup);
tb2->setDefaultAction(adjustWidthAction); tb2->setDefaultAction(adjustWidthAction);
comicToolBar->addWidget(tb2); comicToolBar->addWidget(tb2);
#endif #endif
connect(sliderAction,SIGNAL(fitToWidthRatioChanged(float)),viewer,SLOT(updateFitToWidthRatio(float)));
connect(optionsDialog,SIGNAL(fitToWidthRatioChanged(float)),sliderAction,SLOT(updateFitToWidthRatio(float)));
comicToolBar->addAction(adjustHeightAction); comicToolBar->addAction(adjustHeightAction);
comicToolBar->addAction(adjustToFullSizeAction); comicToolBar->addAction(adjustToFullSizeAction);
comicToolBar->addAction(leftRotationAction); comicToolBar->addAction(leftRotationAction);
@ -1129,6 +1138,20 @@ void MainWindowViewer::setUpShortcutsManagement()
ShortcutsManager::getShortcutsManager().registerActions(allActions); 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() void MainWindowViewer::changeFit()

View File

@ -22,6 +22,7 @@ class HelpAboutDialog;
class HttpVersionChecker; class HttpVersionChecker;
class ShortcutsDialog; class ShortcutsDialog;
class YACReaderSliderAction; class YACReaderSliderAction;
class YACReaderSlider;
class EditShortcutsDialog; class EditShortcutsDialog;
class MainWindowViewer : public QMainWindow class MainWindowViewer : public QMainWindow
@ -58,6 +59,10 @@ class EditShortcutsDialog;
void checkNewVersion(); void checkNewVersion();
void processReset(); void processReset();
void setUpShortcutsManagement(); void setUpShortcutsManagement();
#ifdef Q_OS_MAC
void toggleFitToWidthSlider();
#endif
/*void viewComic(); /*void viewComic();
void prev(); void prev();
void next(); void next();
@ -116,8 +121,11 @@ class EditShortcutsDialog;
QAction *showFlowAction; QAction *showFlowAction;
QAction *showEditShortcutsAction; QAction *showEditShortcutsAction;
#ifdef Q_OS_MAC
YACReaderSlider * sliderAction;
#else
YACReaderSliderAction * sliderAction; YACReaderSliderAction * sliderAction;
#endif
HttpVersionChecker * versionChecker; HttpVersionChecker * versionChecker;
QString previousComicPath; QString previousComicPath;

View File

@ -9,7 +9,27 @@
YACReaderSliderAction::YACReaderSliderAction (QWidget * parent) YACReaderSliderAction::YACReaderSliderAction (QWidget * parent)
:QWidgetAction (parent) { :QWidgetAction (parent) {
QWidget* pWidget = new QWidget (NULL); widget = new YACReaderSlider();
setDefaultWidget(widget);
connect(widget,SIGNAL(fitToWidthRatioChanged(float)),this,SIGNAL(fitToWidthRatioChanged(float)));
}
void YACReaderSliderAction::updateText(int value)
{
widget->updateText(value);
}
void YACReaderSliderAction::updateFitToWidthRatio(float v)
{
widget->updateFitToWidthRatio(v);
}
YACReaderSlider::YACReaderSlider(QWidget *parent)
:QWidget(parent)
{
QHBoxLayout* pLayout = new QHBoxLayout(); QHBoxLayout* pLayout = new QHBoxLayout();
pLayout->addStretch(); pLayout->addStretch();
@ -32,7 +52,7 @@ YACReaderSliderAction::YACReaderSliderAction (QWidget * parent)
slider->setStyleSheet(sliderCSS); slider->setStyleSheet(sliderCSS);
slider->setFixedSize(218,45); slider->setFixedSize(218,45);
QLabel* imgLabel = new QLabel(pWidget); QLabel* imgLabel = new QLabel(this);
QPixmap p(":/images/sliderBackground.png"); QPixmap p(":/images/sliderBackground.png");
imgLabel->resize(p.size()); imgLabel->resize(p.size());
imgLabel->setPixmap(p); imgLabel->setPixmap(p);
@ -44,12 +64,10 @@ YACReaderSliderAction::YACReaderSliderAction (QWidget * parent)
pLayout->setStretchFactor(slider,0); pLayout->setStretchFactor(slider,0);
pWidget->setLayout (pLayout); setLayout (pLayout);
pWidget->setAutoFillBackground(false); setAutoFillBackground(false);
pWidget->setMinimumSize(276,45); setMinimumSize(276,45);
setDefaultWidget(pWidget);
slider->setMinimum(50); slider->setMinimum(50);
slider->setMaximum(100); slider->setMaximum(100);
@ -59,18 +77,16 @@ YACReaderSliderAction::YACReaderSliderAction (QWidget * parent)
slider->setValue(value); slider->setValue(value);
percentageLabel->setText(QString("%1 %").arg(value)); percentageLabel->setText(QString("%1 %").arg(value));
connect(slider,SIGNAL(valueChanged(int)),this,SLOT(updateText(int))); connect(slider,SIGNAL(valueChanged(int)),this,SLOT(updateText(int)));
} }
void YACReaderSliderAction::updateText(int value) void YACReaderSlider::updateText(int value)
{ {
percentageLabel->setText(QString("%1 %").arg(value)); percentageLabel->setText(QString("%1 %").arg(value));
Configuration::getConfiguration().setFitToWidthRatio(value/100.0); Configuration::getConfiguration().setFitToWidthRatio(value/100.0);
emit(fitToWidthRatioChanged(value / 100.0f)); emit(fitToWidthRatioChanged(value / 100.0f));
} }
void YACReaderSliderAction::updateFitToWidthRatio(float v) void YACReaderSlider::updateFitToWidthRatio(float v)
{ {
int value = v*100; int value = v*100;
slider->setValue(value); slider->setValue(value);

View File

@ -6,13 +6,32 @@
class QLabel; class QLabel;
class QSlider; class QSlider;
class YACReaderSliderAction : public QWidgetAction class YACReaderSlider : public QWidget
{ {
Q_OBJECT Q_OBJECT
private: private:
QLabel * percentageLabel; QLabel * percentageLabel;
QSlider * slider; 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:
YACReaderSlider * widget;
public: public:
YACReaderSliderAction (QWidget * parent = 0); YACReaderSliderAction (QWidget * parent = 0);

View File

@ -64,6 +64,10 @@ public:
//hacks everywhere //hacks everywhere
//convenience method for YACReaderLibrary search edit //convenience method for YACReaderLibrary search edit
YACReaderMacOSXSearchLineEdit *addSearchEdit(); 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 //convenience method for switching the icon of the view selector
void updateViewSelectorIcon(const QIcon & icon); void updateViewSelectorIcon(const QIcon & icon);

View File

@ -280,6 +280,20 @@ YACReaderMacOSXSearchLineEdit * YACReaderMacOSXToolbar::addSearchEdit()
return searchEdit; 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) void YACReaderMacOSXToolbar::updateViewSelectorIcon(const QIcon &icon)
{ {
if(viewSelector) if(viewSelector)