aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Skec <skec@protonmail.ch>2020-12-30 16:38:06 +1100
committerFelix Queißner <felix@ib-queissner.de>2020-12-30 11:10:54 +0100
commite5814f2bae65e9b757a26e8b263d5e868dbb2f41 (patch)
tree0d6963b254b7ad8bd2bf4f1e5210104d0fb92dfc /src
parent3854701237560d1655bcf713bdd5a3f91f3a075b (diff)
downloadkristall-e5814f2bae65e9b757a26e8b263d5e868dbb2f41.tar.gz
Add preference to show hidden files in directory listings
also improved listing code so that files and dirs with spaces now display and function properly
Diffstat (limited to 'src')
-rw-r--r--src/dialogs/settingsdialog.cpp16
-rw-r--r--src/dialogs/settingsdialog.hpp4
-rw-r--r--src/dialogs/settingsdialog.ui47
-rw-r--r--src/kristall.hpp1
-rw-r--r--src/main.cpp3
-rw-r--r--src/protocols/filehandler.cpp13
6 files changed, 73 insertions, 11 deletions
diff --git a/src/dialogs/settingsdialog.cpp b/src/dialogs/settingsdialog.cpp
index 563c728..269a0bd 100644
--- a/src/dialogs/settingsdialog.cpp
+++ b/src/dialogs/settingsdialog.cpp
@@ -218,6 +218,12 @@ void SettingsDialog::setOptions(const GenericSettings &options)
this->ui->scheme_error->setChecked(true);
}
+ if(this->current_options.show_hidden_files_in_dirs) {
+ this->ui->show_hidden_files->setChecked(true);
+ } else {
+ this->ui->hide_hidden_files->setChecked(true);
+ }
+
this->ui->max_redirects->setValue(this->current_options.max_redirections);
this->ui->redirection_mode->setCurrentIndex(0);
@@ -610,6 +616,16 @@ void SettingsDialog::on_scheme_error_clicked()
this->current_options.use_os_scheme_handler = false;
}
+void SettingsDialog::on_show_hidden_files_clicked()
+{
+ this->current_options.show_hidden_files_in_dirs = true;
+}
+
+void SettingsDialog::on_hide_hidden_files_clicked()
+{
+ this->current_options.show_hidden_files_in_dirs = false;
+}
+
void SettingsDialog::on_redirection_mode_currentIndexChanged(int index)
{
this->current_options.redirection_policy = GenericSettings::RedirectionWarning(this->ui->redirection_mode->itemData(index).toInt());
diff --git a/src/dialogs/settingsdialog.hpp b/src/dialogs/settingsdialog.hpp
index 671c059..0334ecf 100644
--- a/src/dialogs/settingsdialog.hpp
+++ b/src/dialogs/settingsdialog.hpp
@@ -114,6 +114,10 @@ private slots:
void on_scheme_error_clicked();
+ void on_show_hidden_files_clicked();
+
+ void on_hide_hidden_files_clicked();
+
void on_redirection_mode_currentIndexChanged(int index);
void on_max_redirects_valueChanged(int arg1);
diff --git a/src/dialogs/settingsdialog.ui b/src/dialogs/settingsdialog.ui
index 2de52d3..8a84c5f 100644
--- a/src/dialogs/settingsdialog.ui
+++ b/src/dialogs/settingsdialog.ui
@@ -242,37 +242,68 @@
</layout>
</item>
<item row="7" column="0">
+ <widget class="QLabel" name="label_23">
+ <property name="text">
+ <string>Hidden files in file:// directories</string>
+ </property>
+ </widget>
+ </item>
+ <item row="7" column="1">
+ <layout class="QHBoxLayout" name="horizontalLayout_8">
+ <item>
+ <widget class="QRadioButton" name="show_hidden_files">
+ <property name="text">
+ <string>Show</string>
+ </property>
+ <attribute name="buttonGroup">
+ <string notr="true">hiddenFilesBtnGroup</string>
+ </attribute>
+ </widget>
+ </item>
+ <item>
+ <widget class="QRadioButton" name="hide_hidden_files">
+ <property name="text">
+ <string>Hide</string>
+ </property>
+ <attribute name="buttonGroup">
+ <string notr="true">hiddenFilesBtnGroup</string>
+ </attribute>
+ </widget>
+ </item>
+ </layout>
+ </item>
+ <item row="8" column="0">
<widget class="QLabel" name="label_26">
<property name="text">
<string>Max. Number of Redirections</string>
</property>
</widget>
</item>
- <item row="7" column="1">
+ <item row="8" column="1">
<widget class="QSpinBox" name="max_redirects">
<property name="value">
<number>5</number>
</property>
</widget>
</item>
- <item row="8" column="0">
+ <item row="9" column="0">
<widget class="QLabel" name="label_27">
<property name="text">
<string>Redirection Handling</string>
</property>
</widget>
</item>
- <item row="8" column="1">
+ <item row="9" column="1">
<widget class="QComboBox" name="redirection_mode"/>
</item>
- <item row="9" column="0">
+ <item row="10" column="0">
<widget class="QLabel" name="label_28">
<property name="text">
<string>Network Timeout</string>
</property>
</widget>
</item>
- <item row="9" column="1">
+ <item row="10" column="1">
<widget class="QSpinBox" name="network_timeout">
<property name="suffix">
<string> ms</string>
@@ -285,14 +316,14 @@
</property>
</widget>
</item>
- <item row="10" column="0">
+ <item row="11" column="0">
<widget class="QLabel" name="label_29">
<property name="text">
<string>Additional toolbar buttons</string>
</property>
</widget>
</item>
- <item row="10" column="1">
+ <item row="11" column="1">
<widget class="QCheckBox" name="enable_home_btn">
<property name="text">
<string>Home</string>
@@ -921,6 +952,8 @@
<tabstop>gophermap_text</tabstop>
<tabstop>scheme_os_default</tabstop>
<tabstop>scheme_error</tabstop>
+ <tabstop>show_hidden_files</tabstop>
+ <tabstop>hide_hidden_files</tabstop>
<tabstop>max_redirects</tabstop>
<tabstop>redirection_mode</tabstop>
<tabstop>network_timeout</tabstop>
diff --git a/src/kristall.hpp b/src/kristall.hpp
index 2fef256..343a548 100644
--- a/src/kristall.hpp
+++ b/src/kristall.hpp
@@ -38,6 +38,7 @@ struct GenericSettings
TextDisplay text_display = FormattedText;
bool enable_text_decoration = false;
bool use_os_scheme_handler = false;
+ bool show_hidden_files_in_dirs = false;
TextDisplay gophermap_display = FormattedText;
int max_redirections = 5;
RedirectionWarning redirection_policy = WarnOnHostChange;
diff --git a/src/main.cpp b/src/main.cpp
index d658567..8fe2c64 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -342,6 +342,8 @@ void GenericSettings::load(QSettings &settings)
use_os_scheme_handler = settings.value("use_os_scheme_handler", false).toBool();
+ show_hidden_files_in_dirs = settings.value("show_hidden_files_in_dirs", false).toBool();
+
max_redirections = settings.value("max_redirections", 5).toInt();
redirection_policy = RedirectionWarning(settings.value("redirection_policy ", WarnOnHostChange).toInt());
@@ -363,6 +365,7 @@ void GenericSettings::save(QSettings &settings) const
settings.setValue("theme", theme_name);
settings.setValue("gophermap_display", (gophermap_display == FormattedText) ? "rendered" : "text");
settings.setValue("use_os_scheme_handler", use_os_scheme_handler);
+ settings.setValue("show_hidden_files_in_dirs", show_hidden_files_in_dirs);
settings.setValue("max_redirections", max_redirections);
settings.setValue("redirection_policy", int(redirection_policy));
settings.setValue("network_timeout", network_timeout);
diff --git a/src/protocols/filehandler.cpp b/src/protocols/filehandler.cpp
index e31f354..c53b3e1 100644
--- a/src/protocols/filehandler.cpp
+++ b/src/protocols/filehandler.cpp
@@ -1,5 +1,7 @@
#include "filehandler.hpp"
+#include "../kristall.hpp"
+
#include <QMimeDatabase>
#include <QUrl>
#include <QFile>
@@ -49,14 +51,17 @@ bool FileHandler::startRequest(const QUrl &url, RequestOptions options)
QString page;
page += QString("# Index of %1\n").arg(url.path());
+ auto filters = QDir::Dirs | QDir::Files | QDir::NoDot;
+ if (kristall::options.show_hidden_files_in_dirs) filters |= QDir::Hidden;
+ dir.setFilter(filters);
+
// Iterate over files in the directory, and add links to each.
for (unsigned i = 0; i < dir.count(); ++i)
{
- // Skip '.' directory.
- if (dir[i] == ".") continue;
-
// Add link to page.
- page += QString("=> file://%1 %2\n").arg(dir.filePath(dir[i]), dir[i]);
+ page += QString("=> file://%1 %2\n")
+ .arg(QUrl(dir.filePath(dir[i])).toString(QUrl::FullyEncoded),
+ dir[i]);
}
emit this->requestComplete(page.toUtf8(), "text/gemini");