Page Menu
Home
GnuPG
Search
Configure Global Search
Log In
Files
F33432176
filenamerequester.cpp
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Size
4 KB
Subscribers
None
filenamerequester.cpp
View Options
/* -*- mode: c++; c-basic-offset:4 -*-
ui/filenamerequester.cpp
This file is part of Kleopatra, the KDE keymanager
SPDX-FileCopyrightText: 2007 Klarälvdalens Datakonsult AB
SPDX-License-Identifier: GPL-2.0-or-later
*/
#include
"filenamerequester.h"
#include
<KLocalizedString>
#include
<QCompleter>
#include
<QEvent>
#include
<QFileDialog>
#include
<QFileSystemModel>
#include
<QHBoxLayout>
#include
<QLineEdit>
#include
<QString>
#include
<QToolButton>
using
namespace
Kleo
;
class
Q_DECL_HIDDEN
FileNameRequester
::
FileNameRequesterPrivate
{
friend
class
::
Kleo
::
FileNameRequester
;
FileNameRequester
*
const
q
;
public
:
explicit
FileNameRequesterPrivate
(
FileNameRequester
*
qq
);
~
FileNameRequesterPrivate
();
private
:
void
slotButtonClicked
();
private
:
#ifndef QT_NO_DIRMODEL
QFileSystemModel
dirmodel
;
QCompleter
completer
;
#else
QDir
::
Filters
filter
;
#endif
QLineEdit
lineedit
;
QToolButton
button
;
QHBoxLayout
hlay
;
QString
nameFilter
;
bool
existingOnly
;
};
FileNameRequester
::
FileNameRequesterPrivate
::
FileNameRequesterPrivate
(
FileNameRequester
*
qq
)
:
q
(
qq
)
,
#ifndef QT_NO_DIRMODEL
dirmodel
()
,
completer
(
&
dirmodel
)
,
#else
filter
()
,
#endif
lineedit
(
q
)
,
button
(
q
)
,
hlay
(
q
)
,
nameFilter
()
,
existingOnly
(
true
)
{
#ifndef QT_NO_DIRMODEL
dirmodel
.
setObjectName
(
QStringLiteral
(
"dirmodel"
));
completer
.
setObjectName
(
QStringLiteral
(
"completer"
));
#endif
lineedit
.
setObjectName
(
QStringLiteral
(
"lineedit"
));
button
.
setObjectName
(
QStringLiteral
(
"button"
));
hlay
.
setObjectName
(
QStringLiteral
(
"hlay"
));
button
.
setIcon
(
QIcon
::
fromTheme
(
QStringLiteral
(
"document-open"
)));
button
.
setToolTip
(
i18n
(
"Open file dialog"
));
button
.
setAccessibleName
(
i18n
(
"Open file dialog"
));
#ifndef QT_NO_DIRMODEL
lineedit
.
setCompleter
(
&
completer
);
#endif
lineedit
.
setClearButtonEnabled
(
true
);
hlay
.
setContentsMargins
(
0
,
0
,
0
,
0
);
hlay
.
addWidget
(
&
lineedit
);
hlay
.
addWidget
(
&
button
);
q
->
setFocusPolicy
(
lineedit
.
focusPolicy
());
q
->
setFocusProxy
(
&
lineedit
);
connect
(
&
button
,
&
QToolButton
::
clicked
,
q
,
[
this
]()
{
slotButtonClicked
();
});
connect
(
&
lineedit
,
&
QLineEdit
::
textChanged
,
q
,
&
FileNameRequester
::
fileNameChanged
);
}
FileNameRequester
::
FileNameRequesterPrivate
::~
FileNameRequesterPrivate
()
{
}
FileNameRequester
::
FileNameRequester
(
QWidget
*
p
)
:
QWidget
(
p
)
,
d
(
new
FileNameRequesterPrivate
(
this
))
{
}
FileNameRequester
::
FileNameRequester
(
QDir
::
Filters
f
,
QWidget
*
p
)
:
QWidget
(
p
)
,
d
(
new
FileNameRequesterPrivate
(
this
))
{
#ifndef QT_NO_DIRMODEL
d
->
dirmodel
.
setFilter
(
f
);
#else
d
->
filter
=
f
;
#endif
}
FileNameRequester
::~
FileNameRequester
()
=
default
;
void
FileNameRequester
::
setFileName
(
const
QString
&
file
)
{
d
->
lineedit
.
setText
(
file
);
}
QString
FileNameRequester
::
fileName
()
const
{
return
d
->
lineedit
.
text
();
}
void
FileNameRequester
::
setExistingOnly
(
bool
on
)
{
d
->
existingOnly
=
on
;
}
bool
FileNameRequester
::
existingOnly
()
const
{
return
d
->
existingOnly
;
}
void
FileNameRequester
::
setFilter
(
QDir
::
Filters
f
)
{
#ifndef QT_NO_DIRMODEL
d
->
dirmodel
.
setFilter
(
f
);
#else
d
->
filter
=
f
;
#endif
}
QDir
::
Filters
FileNameRequester
::
filter
()
const
{
#ifndef QT_NO_DIRMODEL
return
d
->
dirmodel
.
filter
();
#else
return
d
->
filter
;
#endif
}
void
FileNameRequester
::
setNameFilter
(
const
QString
&
nameFilter
)
{
d
->
nameFilter
=
nameFilter
;
}
QString
FileNameRequester
::
nameFilter
()
const
{
return
d
->
nameFilter
;
}
void
FileNameRequester
::
setAccessibleNameOfLineEdit
(
const
QString
&
name
)
{
d
->
lineedit
.
setAccessibleName
(
name
);
}
void
FileNameRequester
::
FileNameRequesterPrivate
::
slotButtonClicked
()
{
const
QString
fileName
=
q
->
requestFileName
();
if
(
!
fileName
.
isEmpty
())
{
q
->
setFileName
(
fileName
);
}
}
bool
FileNameRequester
::
event
(
QEvent
*
e
)
{
if
(
e
->
type
()
==
QEvent
::
ToolTipChange
)
{
d
->
lineedit
.
setToolTip
(
toolTip
());
}
return
QWidget
::
event
(
e
);
}
QString
FileNameRequester
::
requestFileName
()
{
#ifndef QT_NO_FILEDIALOG
const
QDir
::
Filters
filters
=
filter
();
if
((
filters
&
QDir
::
Dirs
)
&&
!
(
filters
&
QDir
::
Files
))
{
return
QFileDialog
::
getExistingDirectory
(
this
);
}
else
if
(
d
->
existingOnly
)
{
return
QFileDialog
::
getOpenFileName
(
this
,
QString
(),
QString
(),
d
->
nameFilter
);
}
else
{
return
QFileDialog
::
getSaveFileName
(
this
,
QString
(),
fileName
(),
d
->
nameFilter
);
}
#else
return
QString
();
#endif
}
#include
"moc_filenamerequester.cpp"
File Metadata
Details
Attached
Mime Type
text/x-c++
Expires
Sat, Nov 22, 1:26 PM (1 d, 12 h)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
7a/46/39a84a9ebe01131b8810c0c54317
Attached To
rLIBKLEO Libkleo
Event Timeline
Log In to Comment