aboutsummaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'plugins')
-rw-r--r--plugins/FileManager.hpp19
-rw-r--r--plugins/Page.hpp2
2 files changed, 17 insertions, 4 deletions
diff --git a/plugins/FileManager.hpp b/plugins/FileManager.hpp
index 72ac75d..20ed49c 100644
--- a/plugins/FileManager.hpp
+++ b/plugins/FileManager.hpp
@@ -4,6 +4,8 @@
#include <filesystem>
namespace QuickMedia {
+ class FileManagerPage;
+
enum FileManagerMimeType {
FILE_MANAGER_MIME_TYPE_IMAGE = (1 << 0),
FILE_MANAGER_MIME_TYPE_VIDEO = (1 << 1),
@@ -12,20 +14,31 @@ namespace QuickMedia {
static const FileManagerMimeType FILE_MANAGER_MIME_TYPE_ALL = (FileManagerMimeType)(FILE_MANAGER_MIME_TYPE_IMAGE|FILE_MANAGER_MIME_TYPE_VIDEO|FILE_MANAGER_MIME_TYPE_OTHER);
// Return the tags to go to after selecting a file, or return an empty array to exit the program
- using FileSelectionHandler = std::function<std::vector<Tab>()>;
+ using FileSelectionHandler = std::function<std::vector<Tab>(FileManagerPage*, const std::filesystem::path&)>;
class FileManagerPage : public Page {
public:
- FileManagerPage(Program *program, FileManagerMimeType mime_type = FILE_MANAGER_MIME_TYPE_ALL, FileSelectionHandler selection_handler = nullptr) : Page(program), current_dir("/"), mime_type(mime_type), selection_handler(selection_handler) {}
- const char* get_title() const override { return current_dir.c_str(); }
+ FileManagerPage(Program *program, FileManagerMimeType mime_type = FILE_MANAGER_MIME_TYPE_ALL, FileSelectionHandler selection_handler = nullptr, bool allow_empty_match_submit = false, const std::string &title_prefix = "") :
+ Page(program), current_dir("/"), mime_type(mime_type), selection_handler(selection_handler), allow_empty_match_submit(allow_empty_match_submit), title_prefix(title_prefix)
+ {
+ title = title_prefix + current_dir.string();
+ }
+ const char* get_title() const override { return title.c_str(); }
PluginResult submit(const std::string &title, const std::string &url, std::vector<Tab> &result_tabs) override;
bool is_single_page() const override { return true; }
+ bool allow_submit_no_selection() const override { return allow_empty_match_submit; }
+ void on_navigate_to_page(Body*) override;
bool set_current_directory(const std::string &path);
PluginResult get_files_in_directory(BodyItems &result_items);
+
+ bool close = false;
private:
std::filesystem::path current_dir;
FileManagerMimeType mime_type;
FileSelectionHandler selection_handler;
+ bool allow_empty_match_submit;
+ std::string title;
+ std::string title_prefix;
};
} \ No newline at end of file
diff --git a/plugins/Page.hpp b/plugins/Page.hpp
index 426469a..78eb3c4 100644
--- a/plugins/Page.hpp
+++ b/plugins/Page.hpp
@@ -47,7 +47,7 @@ namespace QuickMedia {
virtual bool is_single_page() const { return false; }
virtual bool is_trackable() const { return false; }
virtual bool is_lazy_fetch_page() const { return false; }
- // Note: If submit is done without any selection, then the search term is sent as the |title|, not |url|
+ // Note: If submit is done without any selection, then the search term is sent as the |title|, not |url|. Submit will only be sent if the input text is not empty or if an item is selected
virtual bool allow_submit_no_selection() const { return false; }
// This is called both when first navigating to page and when going back to page