]> git.mxchange.org Git - simgear.git/blobdiff - simgear/package/Package.hxx
Package support progress
[simgear.git] / simgear / package / Package.hxx
index 2c2ce556c350ddf45688852e20b72a4de4a75a16..606185fdddcafb6ffe0a451e5ff4af71f8022824 100644 (file)
@@ -24,6 +24,7 @@
 #include <simgear/props/props.hxx>
 #include <simgear/misc/strutils.hxx>
 
+#include <simgear/structure/function_list.hxx>
 #include <simgear/structure/SGReferenced.hxx>
 #include <simgear/structure/SGSharedPtr.hxx>
 
@@ -49,12 +50,16 @@ typedef std::vector<PackageRef> PackageList;
   class Package : public SGReferenced
 {
 public:
+
+    typedef boost::function<void(Package*, Install*)> InstallCallback;
+
     /**
      * get or create an install for the package
      */
     InstallRef install();
 
-    InstallRef existingInstall() const;
+    InstallRef
+    existingInstall(const InstallCallback& cb = InstallCallback()) const;
 
     bool isInstalled() const;
     
@@ -107,7 +112,9 @@ public:
         { return m_catalog; }
     
     bool matches(const SGPropertyNode* aFilter) const;
-    
+
+    string_set tags() const;
+
     /**
      * download URLs for the package
      */
@@ -115,16 +122,28 @@ public:
     
     string_list thumbnailUrls() const;
     
+    /**
+     * thumbnail file paths within the package on disk
+     */
+    string_list thumbnails() const;
+    
     /**
      * Packages we depend upon.
      * If the dependency list cannot be satisifed for some reason,
      * this will raise an sg_exception.
      */
     PackageList dependencies() const;
+
+    /**
+     * Name of the package directory on disk. This may or may not be the
+     * same as the primary ID, depending on the aircraft author
+     */
+    std::string dirName() const;
 private:
     SGPath pathOnDisk() const;
 
     friend class Catalog;
+    friend class Root;
     
     Package(const SGPropertyNode* aProps, CatalogRef aCatalog);
     
@@ -138,6 +157,8 @@ private:
     std::string m_id;
     string_set m_tags;
     CatalogRef m_catalog;
+
+    mutable function_list<InstallCallback> _install_cb;
 };