#include "width_slider.h" #include #include #include #include #include "configuration.h" YACReaderSliderAction::YACReaderSliderAction (QWidget * parent) :QWidgetAction (parent) { 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(); 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)); }