1 #ifndef FILEZILLA_INTERFACE_OPTIONS_HEADER 2 #define FILEZILLA_INTERFACE_OPTIONS_HEADER 3 4 #include "../include/local_path.h" 5 #include "../include/engine_options.h" 6 7 #include <libfilezilla/mutex.hpp> 8 9 #include <wx/timer.h> 10 11 enum interfaceOptions 12 { 13 // Default/internal options 14 OPTION_DEFAULT_SETTINGSDIR, // guaranteed to be (back)slash-terminated 15 OPTION_DEFAULT_KIOSKMODE, 16 OPTION_DEFAULT_CACHE_DIR, 17 18 OPTION_NUMTRANSFERS, 19 OPTION_ASCIIBINARY, 20 OPTION_ASCIIFILES, 21 OPTION_ASCIINOEXT, 22 OPTION_ASCIIDOTFILE, 23 OPTION_LANGUAGE, 24 OPTION_CONCURRENTDOWNLOADLIMIT, 25 OPTION_CONCURRENTUPLOADLIMIT, 26 OPTION_DEBUG_MENU, 27 OPTION_FILEEXISTS_DOWNLOAD, 28 OPTION_FILEEXISTS_UPLOAD, 29 OPTION_ASCIIRESUME, 30 OPTION_GREETINGVERSION, 31 OPTION_GREETINGRESOURCES, 32 OPTION_ONETIME_DIALOGS, 33 OPTION_SHOW_TREE_LOCAL, 34 OPTION_SHOW_TREE_REMOTE, 35 OPTION_FILEPANE_LAYOUT, 36 OPTION_FILEPANE_SWAP, 37 OPTION_FILELIST_DIRSORT, 38 OPTION_FILELIST_NAMESORT, 39 OPTION_QUEUE_SUCCESSFUL_AUTOCLEAR, 40 OPTION_QUEUE_COLUMN_WIDTHS, 41 OPTION_LOCALFILELIST_COLUMN_WIDTHS, 42 OPTION_REMOTEFILELIST_COLUMN_WIDTHS, 43 OPTION_MAINWINDOW_POSITION, 44 OPTION_MAINWINDOW_SPLITTER_POSITION, 45 OPTION_LOCALFILELIST_SORTORDER, 46 OPTION_REMOTEFILELIST_SORTORDER, 47 OPTION_TIME_FORMAT, 48 OPTION_DATE_FORMAT, 49 OPTION_SHOW_MESSAGELOG, 50 OPTION_SHOW_QUEUE, 51 OPTION_EDIT_DEFAULTEDITOR, 52 OPTION_EDIT_ALWAYSDEFAULT, 53 OPTION_EDIT_CUSTOMASSOCIATIONS, 54 OPTION_COMPARISONMODE, 55 OPTION_COMPARISON_THRESHOLD, 56 OPTION_SITEMANAGER_POSITION, 57 OPTION_ICONS_THEME, 58 OPTION_ICONS_SCALE, 59 OPTION_MESSAGELOG_TIMESTAMP, 60 OPTION_SITEMANAGER_LASTSELECTED, 61 OPTION_LOCALFILELIST_COLUMN_SHOWN, 62 OPTION_REMOTEFILELIST_COLUMN_SHOWN, 63 OPTION_LOCALFILELIST_COLUMN_ORDER, 64 OPTION_REMOTEFILELIST_COLUMN_ORDER, 65 OPTION_FILELIST_STATUSBAR, 66 OPTION_FILTERTOGGLESTATE, 67 OPTION_SHOW_QUICKCONNECT, 68 OPTION_MESSAGELOG_POSITION, 69 OPTION_DOUBLECLICK_ACTION_FILE, 70 OPTION_DOUBLECLICK_ACTION_DIRECTORY, 71 OPTION_MINIMIZE_TRAY, 72 OPTION_SEARCH_COLUMN_WIDTHS, 73 OPTION_SEARCH_COLUMN_SHOWN, 74 OPTION_SEARCH_COLUMN_ORDER, 75 OPTION_SEARCH_SIZE, 76 OPTION_COMPARE_HIDEIDENTICAL, 77 OPTION_SEARCH_SORTORDER, 78 OPTION_EDIT_TRACK_LOCAL, 79 OPTION_PREVENT_IDLESLEEP, 80 OPTION_FILTEREDIT_SIZE, 81 OPTION_INVALID_CHAR_REPLACE_ENABLE, 82 OPTION_INVALID_CHAR_REPLACE, 83 OPTION_ALREADYCONNECTED_CHOICE, 84 OPTION_EDITSTATUSDIALOG_SIZE, 85 OPTION_SPEED_DISPLAY, 86 OPTION_TOOLBAR_HIDDEN, 87 OPTION_STRIP_VMS_REVISION, 88 OPTION_STARTUP_ACTION, 89 OPTION_PROMPTPASSWORDSAVE, 90 OPTION_PERSISTENT_CHOICES, 91 OPTION_QUEUE_COMPLETION_ACTION, 92 OPTION_QUEUE_COMPLETION_COMMAND, 93 OPTION_DND_DISABLED, 94 OPTION_DISABLE_UPDATE_FOOTER, 95 OPTION_MASTERPASSWORDENCRYPTOR, 96 OPTION_TAB_DATA, 97 OPTION_SHOWN_OVERLAY, 98 99 // Has to be last element 100 OPTIONS_NUM 101 }; 102 103 unsigned int register_interface_options(); 104 105 optionsIndex mapOption(interfaceOptions opt); 106 107 class CXmlFile; 108 class COptions final : public wxEvtHandler, public COptionsBase 109 { 110 public: 111 static COptions* Get(); 112 static void Init(); 113 static void Destroy(); 114 115 void Import(pugi::xml_node & element); 116 117 void Save(bool processChanged = true); 118 119 static CLocalPath GetUnadjustedSettingsDir(); 120 CLocalPath GetCacheDirectory(); 121 122 bool Cleanup(); // Removes all unknown elements from the XML 123 124 protected: 125 COptions(); 126 virtual ~COptions(); 127 128 void Load(pugi::xml_node & settings, bool predefined, bool importing); 129 130 pugi::xml_node CreateSettingsXmlElement(); 131 132 void LoadGlobalDefaultOptions(); 133 CLocalPath InitSettingsDir(); 134 135 virtual void process_changed(watched_options const& changed) override; 136 void set_xml_value(pugi::xml_node & settings, size_t opt, bool clean); 137 138 virtual void notify_changed() override; 139 140 bool dirty_{}; 141 std::unique_ptr<CXmlFile> xmlFile_; 142 143 static COptions* m_theOptions; 144 145 wxTimer m_save_timer; 146 147 DECLARE_EVENT_TABLE() 148 void OnTimer(wxTimerEvent& event); 149 }; 150 151 #endif 152