source: filezilla/trunk/fuentes/src/interface/sitemanager.h @ 130

Last change on this file since 130 was 130, checked in by jrpelegrina, 3 years ago

First release to xenial

File size: 2.8 KB
Line 
1#ifndef __SITEMANAGER_H__
2#define __SITEMANAGER_H__
3
4#include <wx/treectrl.h>
5
6#include "xmlfunctions.h"
7
8class CSiteManagerItemData : public wxTreeItemData
9{
10public:
11        enum type
12        {
13                SITE,
14                BOOKMARK
15        };
16
17        CSiteManagerItemData(enum type item_type)
18                : m_type(item_type)
19        {
20        }
21
22        virtual ~CSiteManagerItemData()
23        {
24        }
25
26        wxString m_localDir;
27        CServerPath m_remoteDir;
28
29        enum type m_type;
30
31        bool m_sync{};
32        bool m_comparison{};
33
34        wxString m_path;
35};
36
37class CSiteManagerItemData_Site : public CSiteManagerItemData
38{
39public:
40        CSiteManagerItemData_Site(const CServer& server = CServer())
41                : CSiteManagerItemData(SITE), m_server(server)
42        {
43                connected_item = -1;
44        }
45
46        CServer m_server;
47        wxString m_comments;
48
49        // Needed to keep track of currently connected sites so that
50        // bookmarks and bookmark path can be updated in response to
51        // changes done here
52        int connected_item;
53};
54
55class CSiteManagerXmlHandler
56{
57public:
58        virtual ~CSiteManagerXmlHandler() {};
59
60        // Adds a folder and descents
61        virtual bool AddFolder(const wxString& name, bool expanded) = 0;
62        virtual bool AddSite(std::unique_ptr<CSiteManagerItemData_Site> data) = 0;
63        virtual bool AddBookmark(const wxString& name, std::unique_ptr<CSiteManagerItemData> data) = 0;
64
65        // Go up a level
66        virtual bool LevelUp() { return true; } // *Ding*
67};
68
69class CSiteManagerXmlHandler;
70class CSiteManagerDialog;
71class CSiteManager
72{
73        friend class CSiteManagerDialog;
74public:
75        // This function also clears the Id map
76        static std::unique_ptr<CSiteManagerItemData_Site> GetSiteById(int id);
77        static std::unique_ptr<CSiteManagerItemData_Site> GetSiteByPath(wxString sitePath);
78
79        static bool GetBookmarks(wxString sitePath, std::list<wxString> &bookmarks);
80
81        static wxString AddServer(CServer server);
82        static bool AddBookmark(wxString sitePath, const wxString& name, const wxString &local_dir, const CServerPath &remote_dir, bool sync, bool comparison);
83        static bool ClearBookmarks(wxString sitePath);
84
85        static std::unique_ptr<wxMenu> GetSitesMenu();
86        static void ClearIdMap();
87
88        static bool UnescapeSitePath(wxString path, std::list<wxString>& result);
89        static wxString EscapeSegment( wxString segment );
90
91        static bool HasSites();
92
93protected:
94        static bool Load(CSiteManagerXmlHandler& pHandler);
95        static bool Load(pugi::xml_node element, CSiteManagerXmlHandler& pHandler);
96        static std::unique_ptr<CSiteManagerItemData_Site> ReadServerElement(pugi::xml_node element);
97
98        static pugi::xml_node GetElementByPath(pugi::xml_node node, std::list<wxString> const& segments);
99        static wxString BuildPath(wxChar root, std::list<wxString> const& segments);
100
101        static std::map<int, std::unique_ptr<CSiteManagerItemData_Site>> m_idMap;
102
103        // The map maps event id's to sites
104        static std::unique_ptr<wxMenu> GetSitesMenu_Predefined(std::map<int, std::unique_ptr<CSiteManagerItemData_Site>> &idMap);
105
106        static bool LoadPredefined(CSiteManagerXmlHandler& handler);
107};
108
109#endif //__SITEMANAGER_H__
Note: See TracBrowser for help on using the repository browser.