diff options
author | Michael Meeks <michael.meeks@suse.com> | 2013-04-10 15:53:49 +0100 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@collabora.co.uk> | 2014-06-24 00:27:21 +0200 |
commit | b8ef43dd5e2a7fec3fe43e206f9e24af46e59afb (patch) | |
tree | dc14cd1e2590120322b27f3263b14caedb2727f7 | |
parent | 87205cd6f20b69027ca23181f1f7ee42df0b3fa3 (diff) |
tag each slide with it's origin.
Change-Id: I71e47cb5bbbbdbca8e70d846ff5e504c6edb01bd
-rw-r--r-- | sd/inc/sdpage.hxx | 9 | ||||
-rw-r--r-- | sd/inc/slidehack.hxx | 45 |
2 files changed, 49 insertions, 5 deletions
diff --git a/sd/inc/sdpage.hxx b/sd/inc/sdpage.hxx index dc53ce4a33fc..ca08fc336714 100644 --- a/sd/inc/sdpage.hxx +++ b/sd/inc/sdpage.hxx @@ -96,6 +96,11 @@ namespace sd { class UndoAttrObject; } +namespace SlideHack { + class OriginDetails; + typedef boost::shared_ptr< class OriginDetails > OriginDetailsPtr; +} + class SD_DLLPUBLIC SdPage : public FmFormPage, public SdrObjUserCall { friend class SdGenericDrawPage; @@ -382,8 +387,12 @@ public: OString stringify() const; + SlideHack::OriginDetailsPtr getOrigin() { return mpOrigin; } + void setOrigin(SlideHack::OriginDetailsPtr pOrigin) { mpOrigin = pOrigin; } + private: bool mbIsPrecious; + SlideHack::OriginDetailsPtr mpOrigin; /** clone the animations from this and set them to rTargetPage */ diff --git a/sd/inc/slidehack.hxx b/sd/inc/slidehack.hxx index 822e160e3e51..6ff52b4a266f 100644 --- a/sd/inc/slidehack.hxx +++ b/sd/inc/slidehack.hxx @@ -41,6 +41,7 @@ namespace SlideHack { typedef boost::shared_ptr< class Store > StorePtr; typedef boost::shared_ptr< class Group > GroupPtr; +typedef boost::shared_ptr< class Origin > OriginPtr; typedef boost::shared_ptr< class GroupMeta > GroupMetaPtr; typedef boost::shared_ptr< class VersionData > VersionDataPtr; typedef boost::shared_ptr< class Alternatives > AlternativesPtr; @@ -56,18 +57,52 @@ public: virtual OUString getCheckinComment() = 0; }; +/// Tracking where a single slide came from +class Origin +{ + friend class Store; +private: + Origin( const OUString &rURL ); +public: + virtual ~Origin() {} + /// get a URL for our origin, which encodes version, alternative, etc. + OUString getURL(); +}; + +/// Tracking where a single slide came from and some policy around that +class OriginDetails : Origin +{ +public: + /// how should we set about updating data from this origin ? + enum UpdateType { ORIGIN_UPDATE_NEVER, ORIGIN_UPDATE_AUTO, ORIGIN_UPDATE_MANUAL }; + + OriginDetails( const Origin &rOrigin, UpdateType eUpdateType ); + virtual ~OriginDetails() {} + + UpdateType getUpdateType() { return meUpdateType; } + void setUpdateType( UpdateType eUpdateType) { meUpdateType = eUpdateType; } + + /// for save + OUString toString(); + /// for load + OUString fromString(); +private: + UpdateType meUpdateType; +}; + /// Defines information about a group of slides class GroupMeta : public boost::enable_shared_from_this< GroupMeta >, private boost::noncopyable { public: virtual ~GroupMeta() {} - virtual OUString getName() = 0; - virtual OUString getUserName() = 0; - virtual OUString getTopic() = 0; + virtual OUString getName() = 0; + virtual OUString getUserName() = 0; + virtual OUString getTopic() = 0; /// number of slides - virtual int getLength() = 0; + virtual int getLength() = 0; + virtual OriginPtr getOriginForSlide( sal_uInt32 nSlide ) = 0; // Cedric: can this be easily fetched in one chunk ? virtual VersionDataPtr getVersionData() = 0; @@ -120,7 +155,7 @@ public: /// used to create a group handle from a stored slide, so we can /// check for updated versions etc. - virtual GroupPtr createGroup( OUString aName, OUString aVersion ) = 0; + virtual GroupPtr createGroup( OriginPtr pOrigin ) = 0; /// factory function: to get the root static StorePtr getStore(); |