• 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
  • options
ksane_opt_entry.cpp
Go to the documentation of this file.
1 /* ============================================================
2  *
3  * This file is part of the KDE project
4  *
5  * Date : 2009-01-21
6  * Description : Sane interface for KDE
7  *
8  * Copyright (C) 2009 by Kare Sars <kare dot sars at iki dot 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 // Local includes
28 #include "ksane_opt_entry.h"
29 #include "ksane_opt_entry.moc"
30 
31 #include "labeled_entry.h"
32 
33 // Qt includes
34 #include <QtCore/QVarLengthArray>
35 
36 // KDE includes
37 #include <KDebug>
38 #include <KLocale>
39 
40 namespace KSaneIface
41 {
42 
43 KSaneOptEntry::KSaneOptEntry(const SANE_Handle handle, const int index)
44 : KSaneOption(handle, index), m_entry(0)
45 {
46 }
47 
48 void KSaneOptEntry::createWidget(QWidget *parent)
49 {
50  if (m_widget) return;
51 
52  readOption();
53 
54  if (!m_optDesc) {
55  kDebug() << "This is a bug";
56  m_widget = new KSaneOptionWidget(parent, "");
57  return;
58  }
59 
60  m_widget = m_entry = new LabeledEntry(parent, i18n(m_optDesc->title));
61  m_widget->setToolTip(i18n(m_optDesc->desc));
62  connect(m_entry, SIGNAL(entryEdited(QString)), this, SLOT(entryChanged(QString)));
63  updateVisibility();
64  readValue();
65 }
66 
67 void KSaneOptEntry::entryChanged(const QString& text)
68 {
69  QString tmp;
70  tmp += text.left(m_optDesc->size);
71  if (tmp != text) {
72  m_entry->setText(tmp);
73  writeData(tmp.toLatin1().data());
74  }
75 }
76 
77 void KSaneOptEntry::readValue()
78 {
79  if (state() == STATE_HIDDEN) return;
80 
81  // read that current value
82  QVarLengthArray<unsigned char> data(m_optDesc->size);
83  SANE_Status status;
84  SANE_Int res;
85  status = sane_control_option (m_handle, m_index, SANE_ACTION_GET_VALUE, data.data(), &res);
86  if (status != SANE_STATUS_GOOD) {
87  return;
88  }
89 
90  m_string = QString(reinterpret_cast<char*>(data.data()));
91  if (m_entry != 0) {
92  m_entry->setText(m_string);
93  }
94 }
95 
96 bool KSaneOptEntry::getValue(float &) {return false;}
97 bool KSaneOptEntry::setValue(float) {return false;}
98 
99 bool KSaneOptEntry::getValue(QString &val)
100 {
101  if (state() == STATE_HIDDEN) return false;
102  val = m_string;
103  return true;
104 }
105 
106 bool KSaneOptEntry::setValue(const QString &val)
107 {
108  if (state() == STATE_HIDDEN) return false;
109  entryChanged(val);
110  readValue();
111  return true;
112 }
113 
114 } // NameSpace KSaneIface
QWidget
ksane_opt_entry.h
KSaneIface::KSaneOption::m_index
int m_index
Definition: ksane_option.h:114
labeled_entry.h
QVarLengthArray
KSaneIface::KSaneOptEntry::KSaneOptEntry
KSaneOptEntry(const SANE_Handle handle, const int index)
Definition: ksane_opt_entry.cpp:43
KSaneIface::LabeledEntry::setText
void setText(const QString &text)
Definition: labeled_entry.cpp:64
KSaneIface::KSaneOptEntry::setValue
bool setValue(float val)
Definition: ksane_opt_entry.cpp:97
KSaneIface::LabeledEntry
A text entry field with a set and reset button.
Definition: labeled_entry.h:46
KSaneIface::KSaneOptEntry::getValue
bool getValue(float &val)
Definition: ksane_opt_entry.cpp:96
KSaneIface::KSaneOption::state
KSaneOptWState state()
Definition: ksane_option.cpp:92
KSaneIface::KSaneOption::m_optDesc
const SANE_Option_Descriptor * m_optDesc
This pointer is provided by sane.
Definition: ksane_option.h:115
KSaneIface::KSaneOption::m_handle
SANE_Handle m_handle
Definition: ksane_option.h:113
KSaneIface::KSaneOptionWidget
A wrapper for a checkbox.
Definition: ksane_option_widget.h:45
KSaneIface::KSaneOptEntry::createWidget
void createWidget(QWidget *parent)
Definition: ksane_opt_entry.cpp:48
QString
KSaneIface::KSaneOption
Definition: ksane_option.h:49
KSaneIface::KSaneOption::STATE_HIDDEN
Definition: ksane_option.h:69
QString::toLatin1
QByteArray toLatin1() const
KSaneIface::KSaneOption::writeData
bool writeData(void *data)
Definition: ksane_option.cpp:126
KSaneIface::KSaneOption::readOption
virtual void readOption()
Definition: ksane_option.cpp:73
KSaneIface::KSaneOption::updateVisibility
void updateVisibility()
Definition: ksane_option.cpp:79
QVarLengthArray::data
T * data()
QByteArray::data
char * data()
KSaneIface::KSaneOptEntry::readValue
void readValue()
Definition: ksane_opt_entry.cpp:77
KSaneIface::KSaneOption::m_widget
KSaneOptionWidget * m_widget
Definition: ksane_option.h:117
QString::left
QString left(int n) const
QWidget::setToolTip
void setToolTip(const QString &)
QObject::connect
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
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