1 #ifndef NEWSBOAT_FILEBROWSERFORMACTION_H_ 2 #define NEWSBOAT_FILEBROWSERFORMACTION_H_ 3 4 #include <sys/stat.h> 5 #include <grp.h> 6 7 #include "configcontainer.h" 8 #include "listformatter.h" 9 #include "listwidget.h" 10 #include "formaction.h" 11 12 namespace newsboat { 13 14 class FileBrowserFormAction : public FormAction { 15 public: 16 FileBrowserFormAction(View*, std::string formstr, ConfigContainer* cfg); 17 ~FileBrowserFormAction() override; 18 void prepare() override; 19 void init() override; 20 KeyMapHintEntry* get_keymap_hint() override; 21 set_dir(const std::string & d)22 void set_dir(const std::string& d) 23 { 24 dir = d; 25 } set_default_filename(const std::string & fn)26 void set_default_filename(const std::string& fn) 27 { 28 default_filename = fn; 29 } 30 id()31 std::string id() const override 32 { 33 return "filebrowser"; 34 } 35 std::string title() override; 36 37 private: 38 bool process_operation(Operation op, 39 bool automatic = false, 40 std::vector<std::string>* args = nullptr) override; 41 void update_title(const std::string& working_directory); 42 43 void add_file(ListFormatter& listfmt, 44 std::vector<std::string>& id_at_position, 45 std::string filename); 46 std::string get_filename_suggestion(const std::string& s); 47 std::string get_rwx(unsigned short val); 48 std::vector<std::string> id_at_position; 49 50 char get_filetype(mode_t mode); 51 std::string get_owner(uid_t uid); 52 std::string get_group(gid_t gid); 53 std::string get_formatted_filename(std::string filename, char ftype, 54 mode_t mode); 55 56 bool quit; 57 std::string cwd; 58 std::string dir; 59 std::string default_filename; 60 61 ListWidget files_list; 62 }; 63 64 } // namespace newsboat 65 66 #endif /* NEWSBOAT_FILEBROWSERFORMACTION_H_ */ 67