sbFileSystemTreeState.h
Go to the documentation of this file.
1 /*
2 //
3 // BEGIN SONGBIRD GPL
4 //
5 // This file is part of the Songbird web player.
6 //
7 // Copyright(c) 2005-2009 POTI, Inc.
8 // http://songbirdnest.com
9 //
10 // This file may be licensed under the terms of of the
11 // GNU General Public License Version 2 (the "GPL").
12 //
13 // Software distributed under the License is distributed
14 // on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either
15 // express or implied. See the GPL for the specific language
16 // governing rights and limitations.
17 //
18 // You should have received a copy of the GPL along with this
19 // program. If not, go to http://www.gnu.org/licenses/gpl.html
20 // or write to the Free Software Foundation, Inc.,
21 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
22 //
23 // END SONGBIRD GPL
24 //
25 */
26 
27 #ifndef sbFileSystemTreeState_h_
28 #define sbFileSystemTreeState_h_
29 
30 #include "sbFileSystemNode.h"
31 #include <sbFileObjectStreams.h>
32 #include <nsCOMPtr.h>
33 #include <nsIFile.h>
34 #include <nsIUUIDGenerator.h>
35 #include <nsStringAPI.h>
36 
37 class sbFileSystemNode;
39 
40 typedef std::map<PRUint32, nsRefPtr<sbFileSystemNode> > sbNodeIDMap;
41 typedef sbNodeIDMap::value_type sbNodeIDMapPair;
42 typedef sbNodeIDMap::const_iterator sbNodeIDMapIter;
43 
44 
46 {
47 public:
49  virtual ~sbFileSystemTreeState();
50 
52 
53  nsresult SaveTreeState(sbFileSystemTree *aFileSystemTree,
54  const nsID & aSessionID);
55 
56  nsresult LoadTreeState(nsID & aSessionID,
57  nsString & aSessionAbsolutePath,
58  PRBool *aIsRecursiveWatch,
59  sbFileSystemNode **aOutRootNode);
60 
61  static nsresult DeleteSavedTreeState(const nsID & aSessionID);
62 
63 protected:
64  nsresult WriteNode(sbFileObjectOutputStream *aOutputStream,
65  sbFileSystemNode *aOutNode);
66 
67  nsresult ReadNode(sbFileObjectInputStream *aInputStream,
68  sbFileSystemNode **aOutNode);
69 
70  nsresult AssignRelationships(sbFileSystemNode *aChildNode,
71  sbNodeIDMap & aParentGuidMap);
72 
73  static nsresult GetTreeSessionFile(const nsID & aSessionID,
74  PRBool aShouldCreate,
75  nsIFile **aOutFile);
76 
77  nsresult GetTreeNodeCount(sbFileSystemNode *aRootNode,
78  PRUint32 *aNodeCount);
79 
80 private:
81  nsCOMPtr<nsIUUIDGenerator> mUuidGen;
82 };
83 
84 #endif // sbFileSystemTreeState_h_
85 
nsresult LoadTreeState(nsID &aSessionID, nsString &aSessionAbsolutePath, PRBool *aIsRecursiveWatch, sbFileSystemNode **aOutRootNode)
nsresult GetTreeNodeCount(sbFileSystemNode *aRootNode, PRUint32 *aNodeCount)
static nsresult DeleteSavedTreeState(const nsID &aSessionID)
nsresult AssignRelationships(sbFileSystemNode *aChildNode, sbNodeIDMap &aParentGuidMap)
NS_DECL_ISUPPORTS nsresult SaveTreeState(sbFileSystemTree *aFileSystemTree, const nsID &aSessionID)
static nsresult GetTreeSessionFile(const nsID &aSessionID, PRBool aShouldCreate, nsIFile **aOutFile)
sbNodeIDMap::const_iterator sbNodeIDMapIter
std::map< PRUint32, nsRefPtr< sbFileSystemNode > > sbNodeIDMap
nsresult WriteNode(sbFileObjectOutputStream *aOutputStream, sbFileSystemNode *aOutNode)
sbNodeIDMap::value_type sbNodeIDMapPair
nsresult ReadNode(sbFileObjectInputStream *aInputStream, sbFileSystemNode **aOutNode)