]> git.mxchange.org Git - simgear.git/blobdiff - simgear/package/Install.hxx
Expand package-system unit-tests.
[simgear.git] / simgear / package / Install.hxx
index 81cf580adee46d82e87f30f6aac878e39a453d92..4e198eba01d53eef35743b05fe807b5a0054f94f 100644 (file)
 #include <vector>
 
 #include <simgear/misc/sg_path.hxx>
+#include <simgear/misc/sg_dir.hxx>
 #include <simgear/package/Delegate.hxx>
 
+#include <simgear/structure/function_list.hxx>
 #include <simgear/structure/SGReferenced.hxx>
 #include <simgear/structure/SGSharedPtr.hxx>
+#include <simgear/io/HTTPRequest.hxx>
 
 #include <boost/bind.hpp>
-#include <boost/function.hpp>
 
 namespace simgear
 {
@@ -73,9 +75,36 @@ public:
     bool hasUpdate() const;
     
     void startUpdate();
-    
-    void uninstall();
 
+    bool uninstall();
+
+    bool isDownloading() const;
+    
+    bool isQueued() const;
+    
+    int downloadedPercent() const;
+    
+    size_t downloadedBytes() const;
+    
+    /**
+     * full path to the primary -set.xml file for this install
+     */
+    SGPath primarySetPath() const;
+    
+    /**
+     * if a download is in progress, cancel it. If this is the first install
+     * of the package (as opposed to an update), the install will be cleaned
+     * up once the last reference is gone.
+     */
+    void cancelDownload();
+    
+    /**
+     * return the thumbnails associated with this install, but as locations
+     * on the file system, not URLs. It is assumed the order of thumbnails
+     * is consistent with the URLs returned from Package::thumbnailUrls()
+     */
+    PathList thumbnailPaths() const;
+    
     /**
      * Set the handler to be called when the installation successfully
      * completes.
@@ -145,22 +174,21 @@ private:
     void parseRevision();
     void writeRevisionFile();
     
-    void installResult(Delegate::FailureCode aReason);
+    void installResult(Delegate::StatusCode aReason);
     void installProgress(unsigned int aBytes, unsigned int aTotal);
     
     PackageRef m_package;
     unsigned int m_revision; ///< revision on disk
     SGPath m_path; ///< installation point on disk
     
-    PackageArchiveDownloader* m_download;
-
-    Delegate::FailureCode _status;
+    HTTP::Request_ptr m_download;
 
-    Callback          _cb_done,
-                      _cb_fail,
-                      _cb_always;
-    ProgressCallback  _cb_progress;
+    Delegate::StatusCode m_status;
 
+    function_list<Callback>         _cb_done,
+                                    _cb_fail,
+                                    _cb_always;
+    function_list<ProgressCallback> _cb_progress;
 };