diff options
| author | Mike Skec <skec@protonmail.ch> | 2020-12-30 16:38:06 +1100 |
|---|---|---|
| committer | Felix Queißner <felix@ib-queissner.de> | 2020-12-30 11:10:54 +0100 |
| commit | e5814f2bae65e9b757a26e8b263d5e868dbb2f41 (patch) | |
| tree | 0d6963b254b7ad8bd2bf4f1e5210104d0fb92dfc /src | |
| parent | 3854701237560d1655bcf713bdd5a3f91f3a075b (diff) | |
| download | kristall-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.cpp | 16 | ||||
| -rw-r--r-- | src/dialogs/settingsdialog.hpp | 4 | ||||
| -rw-r--r-- | src/dialogs/settingsdialog.ui | 47 | ||||
| -rw-r--r-- | src/kristall.hpp | 1 | ||||
| -rw-r--r-- | src/main.cpp | 3 | ||||
| -rw-r--r-- | src/protocols/filehandler.cpp | 13 |
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"); |
