diff options
Diffstat (limited to 'vmime')
-rw-r--r-- | vmime/contentHandler.hpp | 9 | ||||
-rw-r--r-- | vmime/emptyContentHandler.hpp | 4 | ||||
-rw-r--r-- | vmime/encoder.hpp | 9 | ||||
-rw-r--r-- | vmime/encoderB64.hpp | 4 | ||||
-rw-r--r-- | vmime/encoderDefault.hpp | 4 | ||||
-rw-r--r-- | vmime/encoderQP.hpp | 4 | ||||
-rw-r--r-- | vmime/encoderUUE.hpp | 4 | ||||
-rw-r--r-- | vmime/streamContentHandler.hpp | 4 | ||||
-rw-r--r-- | vmime/stringContentHandler.hpp | 4 | ||||
-rw-r--r-- | vmime/utility/progressionListener.hpp | 29 | ||||
-rw-r--r-- | vmime/utility/stringProxy.hpp | 3 |
11 files changed, 59 insertions, 19 deletions
diff --git a/vmime/contentHandler.hpp b/vmime/contentHandler.hpp index bdc2fde0..e680fce3 100644 --- a/vmime/contentHandler.hpp +++ b/vmime/contentHandler.hpp @@ -26,6 +26,7 @@ #include "vmime/base.hpp" #include "vmime/utility/stringProxy.hpp" #include "vmime/utility/smartPtr.hpp" +#include "vmime/utility/progressionListener.hpp" #include "vmime/encoding.hpp" @@ -66,16 +67,20 @@ public: * @throw exceptions::no_encoder_available if the encoding is * not supported * @param os output stream + * @param progress progression listener, or NULL if you do not + * want to receive progression notifications */ - virtual void extract(utility::outputStream& os) const = 0; + virtual void extract(utility::outputStream& os, utility::progressionListener* progress = NULL) const = 0; /** Extract the contents into the specified stream, without * decoding it. It may be useful in case the encoding is not * supported and you want to extract raw data. * * @param os output stream + * @param progress progression listener, or NULL if you do not + * want to receive progression notifications */ - virtual void extractRaw(utility::outputStream& os) const = 0; + virtual void extractRaw(utility::outputStream& os, utility::progressionListener* progress = NULL) const = 0; /** Returns the actual length of data. WARNING: this can return 0 if no * length was specified when setting data of this object. diff --git a/vmime/emptyContentHandler.hpp b/vmime/emptyContentHandler.hpp index 636bb691..00c1b97e 100644 --- a/vmime/emptyContentHandler.hpp +++ b/vmime/emptyContentHandler.hpp @@ -38,8 +38,8 @@ public: void generate(utility::outputStream& os, const vmime::encoding& enc, const string::size_type maxLineLength = lineLengthLimits::infinite) const; - void extract(utility::outputStream& os) const; - void extractRaw(utility::outputStream& os) const; + void extract(utility::outputStream& os, utility::progressionListener* progress = NULL) const; + void extractRaw(utility::outputStream& os, utility::progressionListener* progress = NULL) const; const string::size_type getLength() const; diff --git a/vmime/encoder.hpp b/vmime/encoder.hpp index a093b48d..689d1ce8 100644 --- a/vmime/encoder.hpp +++ b/vmime/encoder.hpp @@ -24,6 +24,7 @@ #include "vmime/base.hpp" #include "vmime/propertySet.hpp" #include "vmime/exception.hpp" +#include "vmime/utility/progressionListener.hpp" namespace vmime @@ -44,17 +45,21 @@ public: * * @param in input data (decoded) * @param out output stream for encoded data + * @param progress progression listener, or NULL if you do not + * want to receive progression notifications * @return number of bytes written into output stream */ - virtual const utility::stream::size_type encode(utility::inputStream& in, utility::outputStream& out) = 0; + virtual const utility::stream::size_type encode(utility::inputStream& in, utility::outputStream& out, utility::progressionListener* progress = NULL) = 0; /** Decode data. * * @param in input data (encoded) * @param out output stream for decoded data + * @param progress progression listener, or NULL if you do not + * want to receive progression notifications * @return number of bytes written into output stream */ - virtual const utility::stream::size_type decode(utility::inputStream& in, utility::outputStream& out) = 0; + virtual const utility::stream::size_type decode(utility::inputStream& in, utility::outputStream& out, utility::progressionListener* progress = NULL) = 0; /** Return the properties of the encoder. * diff --git a/vmime/encoderB64.hpp b/vmime/encoderB64.hpp index 5643b9c2..4ee45589 100644 --- a/vmime/encoderB64.hpp +++ b/vmime/encoderB64.hpp @@ -37,8 +37,8 @@ public: encoderB64(); - const utility::stream::size_type encode(utility::inputStream& in, utility::outputStream& out); - const utility::stream::size_type decode(utility::inputStream& in, utility::outputStream& out); + const utility::stream::size_type encode(utility::inputStream& in, utility::outputStream& out, utility::progressionListener* progress = NULL); + const utility::stream::size_type decode(utility::inputStream& in, utility::outputStream& out, utility::progressionListener* progress = NULL); const std::vector <string> getAvailableProperties() const; diff --git a/vmime/encoderDefault.hpp b/vmime/encoderDefault.hpp index ae37eaf2..feb576da 100644 --- a/vmime/encoderDefault.hpp +++ b/vmime/encoderDefault.hpp @@ -37,8 +37,8 @@ public: encoderDefault(); - const utility::stream::size_type encode(utility::inputStream& in, utility::outputStream& out); - const utility::stream::size_type decode(utility::inputStream& in, utility::outputStream& out); + const utility::stream::size_type encode(utility::inputStream& in, utility::outputStream& out, utility::progressionListener* progress = NULL); + const utility::stream::size_type decode(utility::inputStream& in, utility::outputStream& out, utility::progressionListener* progress = NULL); }; diff --git a/vmime/encoderQP.hpp b/vmime/encoderQP.hpp index b1ce2327..1461c533 100644 --- a/vmime/encoderQP.hpp +++ b/vmime/encoderQP.hpp @@ -37,8 +37,8 @@ public: encoderQP(); - const utility::stream::size_type encode(utility::inputStream& in, utility::outputStream& out); - const utility::stream::size_type decode(utility::inputStream& in, utility::outputStream& out); + const utility::stream::size_type encode(utility::inputStream& in, utility::outputStream& out, utility::progressionListener* progress = NULL); + const utility::stream::size_type decode(utility::inputStream& in, utility::outputStream& out, utility::progressionListener* progress = NULL); const std::vector <string> getAvailableProperties() const; diff --git a/vmime/encoderUUE.hpp b/vmime/encoderUUE.hpp index e54c1ce1..18747b7b 100644 --- a/vmime/encoderUUE.hpp +++ b/vmime/encoderUUE.hpp @@ -37,8 +37,8 @@ public: encoderUUE(); - const utility::stream::size_type encode(utility::inputStream& in, utility::outputStream& out); - const utility::stream::size_type decode(utility::inputStream& in, utility::outputStream& out); + const utility::stream::size_type encode(utility::inputStream& in, utility::outputStream& out, utility::progressionListener* progress = NULL); + const utility::stream::size_type decode(utility::inputStream& in, utility::outputStream& out, utility::progressionListener* progress = NULL); const std::vector <string> getAvailableProperties() const; }; diff --git a/vmime/streamContentHandler.hpp b/vmime/streamContentHandler.hpp index 3e668703..d7e39076 100644 --- a/vmime/streamContentHandler.hpp +++ b/vmime/streamContentHandler.hpp @@ -47,8 +47,8 @@ public: void generate(utility::outputStream& os, const vmime::encoding& enc, const string::size_type maxLineLength = lineLengthLimits::infinite) const; - void extract(utility::outputStream& os) const; - void extractRaw(utility::outputStream& os) const; + void extract(utility::outputStream& os, utility::progressionListener* progress = NULL) const; + void extractRaw(utility::outputStream& os, utility::progressionListener* progress = NULL) const; const string::size_type getLength() const; diff --git a/vmime/stringContentHandler.hpp b/vmime/stringContentHandler.hpp index f66a4b41..c2b4a718 100644 --- a/vmime/stringContentHandler.hpp +++ b/vmime/stringContentHandler.hpp @@ -65,8 +65,8 @@ public: void generate(utility::outputStream& os, const vmime::encoding& enc, const string::size_type maxLineLength = lineLengthLimits::infinite) const; - void extract(utility::outputStream& os) const; - void extractRaw(utility::outputStream& os) const; + void extract(utility::outputStream& os, utility::progressionListener* progress = NULL) const; + void extractRaw(utility::outputStream& os, utility::progressionListener* progress = NULL) const; const string::size_type getLength() const; diff --git a/vmime/utility/progressionListener.hpp b/vmime/utility/progressionListener.hpp index 24c2f35c..f5b50469 100644 --- a/vmime/utility/progressionListener.hpp +++ b/vmime/utility/progressionListener.hpp @@ -68,6 +68,35 @@ public: }; + +/** A progression listener used when total size is known by the + * receiver, but not by the notifier. + */ + +class progressionListenerSizeAdapter : public progressionListener +{ +public: + + /** Construct a new progressionListenerSizeAdapter object. + * + * @param list wrapped progression listener (can be NULL) + * @param total predicted total + */ + progressionListenerSizeAdapter(progressionListener* list, const int total); + + const bool cancel() const; + + void start(const int predictedTotal); + void progress(const int current, const int currentTotal); + void stop(const int total); + +private: + + progressionListener* m_wrapped; + int m_total; +}; + + } // utility } // vmime diff --git a/vmime/utility/stringProxy.hpp b/vmime/utility/stringProxy.hpp index 614468f1..8f334b31 100644 --- a/vmime/utility/stringProxy.hpp +++ b/vmime/utility/stringProxy.hpp @@ -25,6 +25,7 @@ #include "vmime/types.hpp" #include "vmime/utility/stream.hpp" +#include "vmime/utility/progressionListener.hpp" namespace vmime { @@ -58,7 +59,7 @@ public: // Extract some portion (or whole) of the string // and output it into a stream. - void extract(outputStream& os, const size_type start = 0, const size_type end = std::numeric_limits <size_type>::max()) const; + void extract(outputStream& os, const size_type start = 0, const size_type end = std::numeric_limits <size_type>::max(), utility::progressionListener* progress = NULL) const; // Return the "virtual" length of the string const size_type length() const; |