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

libkleo

  • sources
  • kde-4.14
  • kdepim
  • libkleo
  • ui
filenamerequester.cpp
Go to the documentation of this file.
1 /* -*- mode: c++; c-basic-offset:4 -*-
2  ui/filenamerequester.cpp
3 
4  This file is part of Kleopatra, the KDE keymanager
5  Copyright (c) 2007 Klarälvdalens Datakonsult AB
6 
7  Kleopatra is free software; you can redistribute it and/or modify
8  it under the terms of the GNU General Public License as published by
9  the Free Software Foundation; either version 2 of the License, or
10  (at your option) any later version.
11 
12  Kleopatra is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  General Public License for more details.
16 
17  You should have received a copy of the GNU General Public License
18  along with this program; if not, write to the Free Software
19  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 
21  In addition, as a special exception, the copyright holders give
22  permission to link the code of this program with any edition of
23  the Qt library by Trolltech AS, Norway (or with modified versions
24  of Qt that use the same license as Qt), and distribute linked
25  combinations including the two. You must obey the GNU General
26  Public License in all respects for all of the code used other than
27  Qt. If you modify this file, you may extend this exception to
28  your version of the file, but you are not obligated to do so. If
29  you do not wish to do so, delete this exception statement from
30  your version.
31 */
32 
33 #include "filenamerequester.h"
34 
35 #include <KIcon>
36 #include <KLocalizedString>
37 #include <KLineEdit>
38 
39 #include <QLayout>
40 #include <QToolButton>
41 #include <QLineEdit>
42 #include <QCompleter>
43 #include <QDirModel>
44 #include <QVariant>
45 #include <QString>
46 #include <QFileDialog>
47 
48 using namespace Kleo;
49 
50 class FileNameRequester::Private {
51  friend class ::Kleo::FileNameRequester;
52  FileNameRequester * const q;
53 public:
54  explicit Private( FileNameRequester * qq );
55  ~Private();
56 
57 private:
58  void slotButtonClicked();
59 
60 private:
61 #ifndef QT_NO_DIRMODEL
62  QDirModel dirmodel;
63  QCompleter completer;
64 #else
65  QDir::Filters filter;
66 #endif
67 
68  KLineEdit lineedit;
69  QToolButton button;
70  QHBoxLayout hlay;
71 
72  QString nameFilter;
73  bool existingOnly;
74 };
75 
76 FileNameRequester::Private::Private( FileNameRequester * qq )
77  : q( qq ),
78 #ifndef QT_NO_DIRMODEL
79  dirmodel(),
80  completer( &dirmodel ),
81 #else
82  filter(),
83 #endif
84  lineedit( q ),
85  button( q ),
86  hlay( q ),
87  nameFilter(),
88  existingOnly( true )
89 {
90 #ifndef QT_NO_DIRMODEL
91  dirmodel.setObjectName( QLatin1String("dirmodel") );
92  completer.setObjectName( QLatin1String("completer") );
93 #endif
94  lineedit.setObjectName( QLatin1String("lineedit") );
95  button.setObjectName( QLatin1String("button") );
96  hlay.setObjectName( QLatin1String("hlay") );
97 
98  button.setIcon( KIcon(QLatin1String("document-open")) );
99 #ifndef QT_NO_DIRMODEL
100  lineedit.setCompleter( &completer );
101 #endif
102  lineedit.setClearButtonShown(true);
103  hlay.setMargin( 0 );
104  hlay.addWidget( &lineedit );
105  hlay.addWidget( &button );
106 
107  connect( &button, SIGNAL(clicked()),
108  q, SLOT(slotButtonClicked()) );
109  connect( &lineedit, SIGNAL(textChanged(QString)),
110  q, SIGNAL(fileNameChanged(QString)) );
111 }
112 
113 FileNameRequester::Private::~Private() {}
114 
115 FileNameRequester::FileNameRequester( QWidget * p )
116  : QWidget( p ), d( new Private( this ) )
117 {
118 
119 }
120 
121 FileNameRequester::FileNameRequester( QDir::Filters f, QWidget * p )
122  : QWidget( p ), d( new Private( this ) )
123 {
124 #ifndef QT_NO_DIRMODEL
125  d->dirmodel.setFilter( f );
126 #else
127  d->filter = f;
128 #endif
129 }
130 
131 FileNameRequester::~FileNameRequester() {
132  delete d;
133 }
134 
135 void FileNameRequester::setFileName( const QString & file ) {
136  d->lineedit.setText( file );
137 }
138 
139 QString FileNameRequester::fileName() const {
140  return d->lineedit.text();
141 }
142 
143 void FileNameRequester::setExistingOnly( bool on ) {
144  d->existingOnly = on;
145 }
146 
147 bool FileNameRequester::existingOnly() const {
148  return d->existingOnly;
149 }
150 
151 void FileNameRequester::setFilter( QDir::Filters f ) {
152 #ifndef QT_NO_DIRMODEL
153  d->dirmodel.setFilter( f );
154 #else
155  d->filter = f;
156 #endif
157 }
158 
159 QDir::Filters FileNameRequester::filter() const {
160 #ifndef QT_NO_DIRMODEL
161  return d->dirmodel.filter();
162 #else
163  return d->filter;
164 #endif
165 }
166 
167 void FileNameRequester::setNameFilter( const QString & nameFilter ) {
168  d->nameFilter = nameFilter;
169 }
170 
171 QString FileNameRequester::nameFilter() const {
172  return d->nameFilter;
173 }
174 
175 void FileNameRequester::Private::slotButtonClicked() {
176  const QString fileName = q->requestFileName();
177  if ( !fileName.isEmpty() )
178  q->setFileName( fileName );
179 }
180 
181 QString FileNameRequester::requestFileName() {
182 #ifndef QT_NO_FILEDIALOG
183  const QDir::Filters filters = filter();
184  if ( (filters & QDir::Dirs) && !(filters & QDir::Files) )
185  return QFileDialog::getExistingDirectory( this );
186  else if ( d->existingOnly )
187  return QFileDialog::getOpenFileName( this, QString(), QString(), d->nameFilter );
188  else
189  return QFileDialog::getSaveFileName( this, QString(), QString(), d->nameFilter );
190 #else
191  return QString();
192 #endif
193 }
194 
195 #include "moc_filenamerequester.cpp"
QWidget
QFileDialog::getExistingDirectory
QString getExistingDirectory(QWidget *parent, const QString &caption, const QString &dir, QFlags< QFileDialog::Option > options)
Kleo::FileNameRequester::nameFilter
QString nameFilter() const
Definition: filenamerequester.cpp:171
Kleo::FileNameRequester::setExistingOnly
void setExistingOnly(bool on)
Definition: filenamerequester.cpp:143
Kleo::FileNameRequester::existingOnly
bool existingOnly() const
Kleo::FileNameRequester::fileName
QString fileName() const
filenamerequester.h
QHBoxLayout
Kleo::FileNameRequester::setFileName
void setFileName(const QString &name)
Definition: filenamerequester.cpp:135
QDir::Filters
typedef Filters
QDirModel
Kleo::FileNameRequester::setNameFilter
void setNameFilter(const QString &nameFilter)
Definition: filenamerequester.cpp:167
QString::isEmpty
bool isEmpty() const
QString
QToolButton
Kleo::FileNameRequester::~FileNameRequester
~FileNameRequester()
Definition: filenamerequester.cpp:131
Kleo::FileNameRequester::filter
QDir::Filters filter() const
Definition: filenamerequester.cpp:159
QLatin1String
Kleo::FileNameRequester::setFilter
void setFilter(QDir::Filters f)
Definition: filenamerequester.cpp:151
QFileDialog::getSaveFileName
QString getSaveFileName(QWidget *parent, const QString &caption, const QString &dir, const QString &filter, QString *selectedFilter, QFlags< QFileDialog::Option > options)
QtConcurrent::filter
QFuture< void > filter(Sequence &sequence, FilterFunction filterFunction)
QFileDialog::getOpenFileName
QString getOpenFileName(QWidget *parent, const QString &caption, const QString &dir, const QString &filter, QString *selectedFilter, QFlags< QFileDialog::Option > options)
QCompleter
Kleo::FileNameRequester
Definition: filenamerequester.h:44
QObject::connect
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
Kleo::FileNameRequester::FileNameRequester
FileNameRequester(QWidget *parent=0)
Definition: filenamerequester.cpp:115
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:33:38 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

libkleo

Skip menu "libkleo"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members

kdepim API Reference

Skip menu "kdepim API Reference"
  • akonadi_next
  • akregator
  • blogilo
  • calendarsupport
  • console
  •   kabcclient
  •   konsolekalendar
  • kaddressbook
  • kalarm
  •   lib
  • kdgantt2
  • kjots
  • kleopatra
  • kmail
  • knode
  • knotes
  • kontact
  • korgac
  • korganizer
  • ktimetracker
  • libkdepim
  • libkleo
  • libkpgp
  • mailcommon
  • messagelist
  • messageviewer
  • pimprint

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