Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
PIM
Kleopatra
Commits
9994a362
Commit
9994a362
authored
Aug 05, 2022
by
Ingo Klöcker
Browse files
Add/use common helper for persisting the last used export directory
GnuPG-bug-id: 6121
parent
e8c91dbd
Changes
7
Hide whitespace changes
Inline
Side-by-side
src/CMakeLists.txt
View file @
9994a362
...
...
@@ -413,6 +413,8 @@ set(_kleopatra_SRCS
utils/accessibility.h
utils/action_data.cpp
utils/action_data.h
utils/applicationstate.cpp
utils/applicationstate.h
utils/archivedefinition.cpp
utils/archivedefinition.h
utils/auditlog.cpp
...
...
src/commands/exportcertificatecommand.cpp
View file @
9994a362
...
...
@@ -15,6 +15,7 @@
#include
"command_p.h"
#include
<utils/applicationstate.h>
#include
<utils/filedialog.h>
#include
<Libkleo/Classify>
...
...
@@ -178,8 +179,7 @@ bool ExportCertificateCommand::Private::requestFileNames(GpgME::Protocol protoco
return
true
;
}
KConfigGroup
config
(
KSharedConfig
::
openConfig
(),
"ExportDialog"
);
const
auto
lastDir
=
config
.
readEntry
(
"LastDirectory"
,
QStandardPaths
::
writableLocation
(
QStandardPaths
::
DocumentsLocation
));
const
auto
lastDir
=
ApplicationState
::
lastUsedExportDirectory
();
QString
proposedFileName
=
lastDir
+
QLatin1Char
(
'/'
);
if
(
keys
().
size
()
==
1
)
{
...
...
@@ -237,7 +237,7 @@ bool ExportCertificateCommand::Private::requestFileNames(GpgME::Protocol protoco
}
fileNames
[
protocol
]
=
fname
;
config
.
writeEntry
(
"Las
tDirectory
"
,
fi
.
absolutePath
());
ApplicationState
::
setLastUsedExpor
tDirectory
(
fi
.
absolutePath
());
return
!
fname
.
isEmpty
();
}
...
...
src/commands/exportgroupscommand.cpp
View file @
9994a362
...
...
@@ -13,6 +13,7 @@
#include
"exportgroupscommand.h"
#include
"command_p.h"
#include
<utils/applicationstate.h>
#include
"utils/filedialog.h"
#include
<Libkleo/Algorithm>
...
...
@@ -42,23 +43,11 @@ namespace
static
const
QString
certificateGroupFileExtension
{
QLatin1String
{
".kgrp"
}};
QString
getLastUsedExportDirectory
()
{
KConfigGroup
config
{
KSharedConfig
::
openConfig
(),
"ExportDialog"
};
return
config
.
readEntry
(
"LastDirectory"
,
QStandardPaths
::
writableLocation
(
QStandardPaths
::
DocumentsLocation
));
}
void
updateLastUsedExportDirectory
(
const
QString
&
path
)
{
KConfigGroup
config
{
KSharedConfig
::
openConfig
(),
"ExportDialog"
};
config
.
writeEntry
(
"LastDirectory"
,
QFileInfo
{
path
}.
absolutePath
());
}
QString
proposeFilename
(
const
std
::
vector
<
KeyGroup
>
&
groups
)
{
QString
filename
;
filename
=
getL
astUsedExportDirectory
()
+
QLatin1Char
{
'/'
};
filename
=
ApplicationState
::
l
astUsedExportDirectory
()
+
QLatin1Char
{
'/'
};
if
(
groups
.
size
()
==
1
)
{
filename
+=
groups
.
front
().
name
().
replace
(
QLatin1Char
{
'/'
},
QLatin1Char
{
'_'
});
}
else
{
...
...
@@ -83,7 +72,7 @@ QString requestFilename(QWidget *parent, const std::vector<KeyGroup> &groups)
if
(
fi
.
suffix
().
isEmpty
())
{
filename
+=
certificateGroupFileExtension
;
}
update
LastUsedExportDirectory
(
filename
);
ApplicationState
::
set
LastUsedExportDirectory
(
filename
);
}
return
filename
;
...
...
src/commands/exportsecretkeycommand.cpp
View file @
9994a362
...
...
@@ -14,6 +14,7 @@
#include
"command_p.h"
#include
"fileoperationspreferences.h"
#include
<utils/applicationstate.h>
#include
"utils/filedialog.h"
#include
<Libkleo/Classify>
...
...
@@ -42,18 +43,6 @@ using namespace GpgME;
namespace
{
QString
getLastUsedExportDirectory
()
{
KConfigGroup
config
{
KSharedConfig
::
openConfig
(),
"ExportDialog"
};
return
config
.
readEntry
(
"LastDirectory"
,
QStandardPaths
::
writableLocation
(
QStandardPaths
::
DocumentsLocation
));
}
void
updateLastUsedExportDirectory
(
const
QString
&
path
)
{
KConfigGroup
config
{
KSharedConfig
::
openConfig
(),
"ExportDialog"
};
config
.
writeEntry
(
"LastDirectory"
,
QFileInfo
{
path
}.
absolutePath
());
}
QString
openPGPCertificateFileExtension
()
{
return
QLatin1String
{
outputFileExtension
(
Class
::
OpenPGP
|
Class
::
Ascii
|
Class
::
Certificate
,
...
...
@@ -92,7 +81,7 @@ QString proposeFilename(const Key &key)
filename
=
QStringView
{
u"%1_%2_SECRET"
}.
arg
(
name
,
shortKeyID
);
filename
.
replace
(
u'/'
,
u'_'
);
return
getL
astUsedExportDirectory
()
+
u'/'
+
filename
+
u'.'
+
certificateFileExtension
(
key
.
protocol
());
return
ApplicationState
::
l
astUsedExportDirectory
()
+
u'/'
+
filename
+
u'.'
+
certificateFileExtension
(
key
.
protocol
());
}
QString
secretKeyFileFilters
(
GpgME
::
Protocol
protocol
)
...
...
@@ -122,7 +111,7 @@ QString requestFilename(const Key &key, const QString &proposedFilename, QWidget
if
(
fi
.
suffix
().
isEmpty
())
{
filename
+=
u'.'
+
certificateFileExtension
(
key
.
protocol
());
}
update
LastUsedExportDirectory
(
filename
);
ApplicationState
::
set
LastUsedExportDirectory
(
filename
);
}
return
filename
;
...
...
src/commands/exportsecretsubkeycommand.cpp
View file @
9994a362
...
...
@@ -14,6 +14,7 @@
#include
"command_p.h"
#include
"fileoperationspreferences.h"
#include
<utils/applicationstate.h>
#include
"utils/filedialog.h"
#include
<Libkleo/Classify>
...
...
@@ -40,18 +41,6 @@ namespace
{
#ifdef QGPGME_SUPPORTS_SECRET_SUBKEY_EXPORT
QString
getLastUsedExportDirectory
()
{
KConfigGroup
config
{
KSharedConfig
::
openConfig
(),
"ExportDialog"
};
return
config
.
readEntry
(
"LastDirectory"
,
QStandardPaths
::
writableLocation
(
QStandardPaths
::
DocumentsLocation
));
}
void
updateLastUsedExportDirectory
(
const
QString
&
path
)
{
KConfigGroup
config
{
KSharedConfig
::
openConfig
(),
"ExportDialog"
};
config
.
writeEntry
(
"LastDirectory"
,
QFileInfo
{
path
}.
absolutePath
());
}
QString
openPGPCertificateFileExtension
()
{
return
QLatin1String
{
outputFileExtension
(
Class
::
OpenPGP
|
Class
::
Ascii
|
Class
::
Certificate
,
...
...
@@ -80,7 +69,7 @@ QString proposeFilename(const std::vector<Subkey> &subkeys)
}
filename
.
replace
(
u'/'
,
u'_'
);
return
getL
astUsedExportDirectory
()
+
u'/'
+
filename
+
u'.'
+
openPGPCertificateFileExtension
();
return
ApplicationState
::
l
astUsedExportDirectory
()
+
u'/'
+
filename
+
u'.'
+
openPGPCertificateFileExtension
();
}
QString
requestFilename
(
const
std
::
vector
<
Subkey
>
&
subkeys
,
const
QString
&
proposedFilename
,
QWidget
*
parent
)
...
...
@@ -97,7 +86,7 @@ QString requestFilename(const std::vector<Subkey> &subkeys, const QString &propo
if
(
fi
.
suffix
().
isEmpty
())
{
filename
+=
u'.'
+
openPGPCertificateFileExtension
();
}
update
LastUsedExportDirectory
(
filename
);
ApplicationState
::
set
LastUsedExportDirectory
(
filename
);
}
return
filename
;
...
...
src/utils/applicationstate.cpp
0 → 100644
View file @
9994a362
/* utils/applicationstate.cpp
This file is part of Kleopatra, the KDE keymanager
SPDX-FileCopyrightText: 2022 g10 Code GmbH
SPDX-FileContributor: Ingo Klöcker <dev@ingo-kloecker.de>
SPDX-License-Identifier: GPL-2.0-or-later
*/
#include
<config-kleopatra.h>
#include
"applicationstate.h"
#include
<KConfigGroup>
#include
<KSharedConfig>
#include
<QFileInfo>
#include
<QStandardPaths>
QString
ApplicationState
::
lastUsedExportDirectory
()
{
const
KConfigGroup
config
{
KSharedConfig
::
openConfig
(),
"ExportDialog"
};
return
config
.
readEntry
(
"LastDirectory"
,
QStandardPaths
::
writableLocation
(
QStandardPaths
::
DocumentsLocation
));
}
void
ApplicationState
::
setLastUsedExportDirectory
(
const
QString
&
path
)
{
KConfigGroup
config
{
KSharedConfig
::
openConfig
(),
"ExportDialog"
};
config
.
writeEntry
(
"LastDirectory"
,
QFileInfo
{
path
}.
absolutePath
());
}
src/utils/applicationstate.h
0 → 100644
View file @
9994a362
/* utils/applicationstate.h
This file is part of Kleopatra, the KDE keymanager
SPDX-FileCopyrightText: 2022 g10 Code GmbH
SPDX-FileContributor: Ingo Klöcker <dev@ingo-kloecker.de>
SPDX-License-Identifier: GPL-2.0-or-later
*/
#pragma once
class
QString
;
namespace
ApplicationState
{
QString
lastUsedExportDirectory
();
void
setLastUsedExportDirectory
(
const
QString
&
path
);
};
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment