Fix default export directory in flatpak

This commit is contained in:
Ilya Fedin 2024-08-13 03:04:06 +04:00 committed by John Preston
parent 9eb15f7b17
commit 916926bfa6
5 changed files with 14 additions and 12 deletions

View file

@ -25,7 +25,7 @@ DownloadPathBox::DownloadPathBox(
, _path(Core::App().settings().downloadPath())
, _pathBookmark(Core::App().settings().downloadPathBookmark())
, _group(std::make_shared<Ui::RadioenumGroup<Directory>>(typeFromPath(_path)))
, _default(Core::App().canReadDefaultDownloadPath(true)
, _default(Core::App().canReadDefaultDownloadPath()
? object_ptr<Ui::Radioenum<Directory>>(
this,
_group,
@ -149,7 +149,7 @@ void DownloadPathBox::setPathText(const QString &text) {
DownloadPathBox::Directory DownloadPathBox::typeFromPath(
const QString &path) {
if (path.isEmpty()) {
return Core::App().canReadDefaultDownloadPath(true)
return Core::App().canReadDefaultDownloadPath()
? Directory::Downloads
: Directory::Temp;
} else if (path == FileDialog::Tmp()) {

View file

@ -737,14 +737,12 @@ void Application::saveSettings() {
Local::writeSettings();
}
bool Application::canReadDefaultDownloadPath(bool always) const {
if (KSandbox::isInside()
&& (always || settings().downloadPath().isEmpty())) {
const auto path = QStandardPaths::writableLocation(
QStandardPaths::DownloadLocation);
return base::CanReadDirectory(path);
}
return true;
bool Application::canReadDefaultDownloadPath() const {
return KSandbox::isInside()
? base::CanReadDirectory(
QStandardPaths::writableLocation(
QStandardPaths::DownloadLocation))
: true;
}
bool Application::canSaveFileWithoutAskingForPath() const {

View file

@ -209,7 +209,7 @@ public:
void saveSettingsDelayed(crl::time delay = kDefaultSaveDelay);
void saveSettings();
[[nodiscard]] bool canReadDefaultDownloadPath(bool always = false) const;
[[nodiscard]] bool canReadDefaultDownloadPath() const;
[[nodiscard]] bool canSaveFileWithoutAskingForPath() const;
// Fallback config and proxy.

View file

@ -294,7 +294,9 @@ void SettingsWidget::addLocationLabel(
}) | rpl::distinct_until_changed(
) | rpl::map([=](const QString &path) {
const auto text = IsDefaultPath(_session, path)
? Core::App().canReadDefaultDownloadPath()
? u"Downloads/"_q + File::DefaultDownloadPathFolder(_session)
: tr::lng_download_path_temp(tr::now)
: path;
return Ui::Text::Link(
QDir::toNativeSeparators(text),
@ -341,7 +343,9 @@ void SettingsWidget::addFormatAndLocationLabel(
}) | rpl::distinct_until_changed(
) | rpl::map([=](const QString &path) {
const auto text = IsDefaultPath(_session, path)
? Core::App().canReadDefaultDownloadPath()
? u"Downloads/"_q + File::DefaultDownloadPathFolder(_session)
: tr::lng_download_path_temp(tr::now)
: path;
return Ui::Text::Link(
QDir::toNativeSeparators(text),

View file

@ -1106,7 +1106,7 @@ void SetupDataStorage(
auto pathtext = Core::App().settings().downloadPathValue(
) | rpl::map([](const QString &text) {
if (text.isEmpty()) {
return Core::App().canReadDefaultDownloadPath(true)
return Core::App().canReadDefaultDownloadPath()
? tr::lng_download_path_default(tr::now)
: tr::lng_download_path_temp(tr::now);
} else if (text == FileDialog::Tmp()) {