• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdegraphics API Reference
  • KDE Home
  • Contact Us
 

libs/libksane/libksane

  • sources
  • kde-4.14
  • kdegraphics
  • libs
  • libksane
  • libksane
  • widgets
labeled_slider.cpp
Go to the documentation of this file.
1 /* ============================================================
2  *
3  * This file is part of the KDE project
4  *
5  * Date : 2007-09-13
6  * Description : Sane interface for KDE
7  *
8  * Copyright (C) 2007-2011 by Kare Sars <kare.sars@iki .fi>
9  *
10  * This library is free software; you can redistribute it and/or
11  * modify it under the terms of the GNU Lesser General Public
12  * License as published by the Free Software Foundation; either
13  * version 2.1 of the License, or (at your option) version 3, or any
14  * later version accepted by the membership of KDE e.V. (or its
15  * successor approved by the membership of KDE e.V.), which shall
16  * act as a proxy defined in Section 6 of version 3 of the license.
17  *
18  * This library is distributed in the hope that it will be useful,
19  * but WITHOUT ANY WARRANTY; without even the implied warranty of
20  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21  * Lesser General Public License for more details.
22  *
23  * You should have received a copy of the GNU Lesser General Public
24  * License along with this program. If not, see <http://www.gnu.org/licenses/>.
25  *
26  * ============================================================ */
27 
28 // Local includes
29 #include "labeled_slider.h"
30 #include "labeled_slider.moc"
31 
32 // KDE includes
33 #include <KNumInput>
34 
35 // Qt includes
36 #include <QLabel>
37 #include <QSlider>
38 
39 namespace KSaneIface
40 {
41 
42 LabeledSlider::LabeledSlider(QWidget *parent, const QString& ltext,
43  int min, int max, int ste)
44 : KSaneOptionWidget(parent, ltext)
45 {
46  m_step = ste;
47  if (m_step == 0) m_step = 1;
48 
49  m_slider = new QSlider(this);
50  m_slider->setOrientation(Qt::Horizontal);
51  m_slider->setMinimum(min);
52  m_slider->setMaximum(max);
53  m_slider->setSingleStep(m_step);
54 
55  m_spinb = new KIntSpinBox(this);
56  m_spinb->setMinimum(min);
57  m_spinb->setMaximum(max);
58  m_slider->setSingleStep(m_step);
59  m_spinb->setValue(max);
60  //m_spinb->setMinimumWidth(m_spinb->sizeHint().width()+35);
61  m_spinb->setAlignment(Qt::AlignRight);
62  m_spinb->setValue(min);
63 
64  m_spinb->setValue(min);
65  m_label->setBuddy(m_spinb);
66 
67  connect(m_spinb, SIGNAL(valueChanged(int)), this, SLOT(syncValues(int)));
68  connect(m_slider, SIGNAL(valueChanged(int)), this, SLOT(syncValues(int)));
69  connect(m_slider, SIGNAL(sliderReleased()), this, SLOT(fixValue()));
70 
71  m_layout->addWidget(m_slider, 0, 2);
72  m_layout->addWidget(m_spinb, 0, 1);
73  m_layout->setColumnStretch(1, 0);
74  m_layout->setColumnStretch(2, 50);
75 
76 }
77 
78 LabeledSlider::~LabeledSlider()
79 {
80 }
81 
82 void LabeledSlider::setSuffix(const KLocalizedString &text)
83 {
84  m_spinb->setSuffix(text);
85 }
86 
87 void LabeledSlider::setValue(int value)
88 {
89  if (value != m_slider->value()) m_slider->setValue(value);
90  else if (value != m_spinb->value()) m_spinb->setValue(value);
91 }
92 
93 void LabeledSlider::setRange(int min, int max)
94 {
95  //std::cout << "min=" << min << ", max=" << max << std::endl;
96  m_slider->setRange(min, max);
97  m_spinb->setRange(min, max);
98 }
99 
100 void LabeledSlider::setStep(int st)
101 {
102  m_step = st;
103  if (m_step == 0) m_step = 1;
104  m_slider->setSingleStep(m_step);
105  m_spinb->setSingleStep(m_step);
106 }
107 
108 void LabeledSlider::syncValues(int value)
109 {
110  if (value != m_spinb->value()) m_spinb->setValue(value);
111  else if (value != m_slider->value()) {
112  //ensure that the value m_step is followed also for the m_slider
113  if ((value - m_slider->minimum())%m_step != 0) {
114  if (value > m_spinb->value()) {
115  m_slider->setValue(m_slider->value()+(m_step-(value - m_spinb->value())));
116  }
117  else {
118  m_slider->setValue(m_slider->value()-(m_step-(m_spinb->value() - value)));
119  }
120  // this function will be reentered with the signal fom the m_slider
121  }
122  else {
123  m_slider->setValue(value);
124  }
125  }
126  else emit valueChanged(value);
127 }
128 
129 void LabeledSlider::fixValue()
130 {
131  //ensure that the value m_step is followed also for the m_slider
132  int rest = (m_slider->value() - m_slider->minimum())%m_step;
133 
134  if (rest != 0) {
135  if (rest > (m_step/2)) m_slider->setValue(m_slider->value()+(m_step-rest));
136  else m_slider->setValue(m_slider->value()-rest);
137  m_spinb->setValue(m_slider->value());
138  }
139 }
140 
141 } // NameSpace KSaneIface
KSaneIface::LabeledSlider::setSuffix
void setSuffix(const KLocalizedString &text)
Set the unit.
Definition: labeled_slider.cpp:82
QWidget
QGridLayout::addWidget
void addWidget(QWidget *widget, int row, int column, QFlags< Qt::AlignmentFlag > alignment)
QAbstractSlider::setRange
void setRange(int min, int max)
KSaneIface::LabeledSlider::setStep
void setStep(int)
Definition: labeled_slider.cpp:100
KSaneIface::LabeledSlider::setValue
void setValue(int)
Set the slider value.
Definition: labeled_slider.cpp:87
QSlider
KSaneIface::KSaneOptionWidget::m_label
QLabel * m_label
Definition: ksane_option_widget.h:64
QLabel::setBuddy
void setBuddy(QWidget *buddy)
KSaneIface::LabeledSlider::LabeledSlider
LabeledSlider(QWidget *parent, const QString &text, int min, int max, int st)
Create the slider.
Definition: labeled_slider.cpp:42
KSaneIface::KSaneOptionWidget::m_layout
QGridLayout * m_layout
Definition: ksane_option_widget.h:65
QAbstractSlider::setOrientation
void setOrientation(Qt::Orientation)
KSaneIface::KSaneOptionWidget
A wrapper for a checkbox.
Definition: ksane_option_widget.h:45
KSaneIface::LabeledSlider::setRange
void setRange(int min, int max)
Definition: labeled_slider.cpp:93
QString
QAbstractSlider::setMinimum
void setMinimum(int)
QAbstractSlider::value
value
QAbstractSlider::setSingleStep
void setSingleStep(int)
QGridLayout::setColumnStretch
void setColumnStretch(int column, int stretch)
KSaneIface::LabeledSlider::value
int value() const
Definition: labeled_slider.h:70
KSaneIface::LabeledSlider::valueChanged
void valueChanged(int)
Emit the slider value changes.
KSaneIface::LabeledSlider::~LabeledSlider
~LabeledSlider()
Definition: labeled_slider.cpp:78
QAbstractSlider::setMaximum
void setMaximum(int)
QObject::connect
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
labeled_slider.h
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:19:47 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

libs/libksane/libksane

Skip menu "libs/libksane/libksane"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdegraphics API Reference

Skip menu "kdegraphics API Reference"
  •     libkdcraw
  •     libkexiv2
  •     libkipi
  •     libksane
  • okular

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal