Date: prev next · Thread: first prev next last
2013 Archives by date, by thread · List index


Hi,

PFA the diff file...

I know that its incomplete and should have a separate handler, but as of
now I can atleast save the comment data...

This is what I have done

   - I have handled comments exactly as notes
   - In slidefragmenthandler added tokens to handle the comment attributes
   - New file: annotation_buffer.h contains a vector to save anntotation
   data of the particular slide
   - Modified fragmenthandler2.cxx: startFastElement , endFastElement to
   handle and save text characters of the comment

Regards,
Vinaya

diff --git a/oox/source/core/annotation_buffer.h b/oox/source/core/annotation_buffer.h
deleted file mode 100644
index 35ddc7e..0000000
--- a/oox/source/core/annotation_buffer.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#include <vector>
-#include <string>
-class annotation_data
-{
-public:
-std::string authorId;
-std::string dt;
-std::string idx;
-std::string x;
-std::string y;
-std::string text;
-};
-extern std::vector <annotation_data> all_comments_on_slide;
-class authors
-{
-public:
-std::string clrIdx;
-std::string id;
-std::string initials;
-std::string lastIdx;
-std::string name;
-};
-extern std::vector <authors> all_authors;



diff --git a/oox/source/core/fragmenthandler2.cxx b/oox/source/core/fragmenthandler2.cxx
index e9b9c28..bfc6834 100644
--- a/oox/source/core/fragmenthandler2.cxx
+++ b/oox/source/core/fragmenthandler2.cxx
@@ -20,10 +20,6 @@
 #include "oox/core/fragmenthandler2.hxx"
 #include "oox/core/xmlfilterbase.hxx"
 
-#include "../oox/source/core/annotation_buffer.h"
-
-int is_annotation_text;
-
 namespace oox {
 namespace core {
 
@@ -119,21 +115,12 @@ Reference< XFastContextHandler > SAL_CALL 
FragmentHandler2::createFastChildConte
 void SAL_CALL FragmentHandler2::startFastElement(
         sal_Int32 nElement, const Reference< XFastAttributeList >& rxAttribs ) throw( 
SAXException, RuntimeException )
 {
-    switch( nElement )
-    {
-        case PPT_TOKEN( text ):
-            is_annotation_text = 1; //set to 1 to handle chars
-            break;
-    }
     implStartElement( nElement, rxAttribs );
 }
 
 void SAL_CALL FragmentHandler2::characters( const OUString& rChars ) throw( SAXException, 
RuntimeException )
 {
     implCharacters( rChars );
-    if ( is_annotation_text == 1)
-    {  all_comments_on_slide.back().text += rtl::OUStringToOString( rChars , 
RTL_TEXTENCODING_UTF8).getStr();
-    }
 }
 
 void SAL_CALL FragmentHandler2::endFastElement( sal_Int32 nElement ) throw( SAXException, 
RuntimeException )
@@ -144,10 +131,8 @@ void SAL_CALL FragmentHandler2::endFastElement( sal_Int32 nElement ) throw( 
SAXE
         case MCE_TOKEN( AlternateContent ):
             aMceState.pop_back();
             break;
-        case PPT_TOKEN( text ):
-            is_annotation_text =0; // set to 0 as comment chars are handled
-            break;
     }
+
     implEndElement( nElement );
 }
 
diff --git a/oox/source/ppt/presentationfragmenthandler.cxx 
b/oox/source/ppt/presentationfragmenthandler.cxx
index 573c4db..c92cdad 100644
--- a/oox/source/ppt/presentationfragmenthandler.cxx
+++ b/oox/source/ppt/presentationfragmenthandler.cxx
@@ -41,11 +41,6 @@
 #include "oox/ppt/layoutfragmenthandler.hxx"
 #include "oox/ppt/pptimport.hxx"
 
-#include <stdio.h>
-#include "../oox/source/core/annotation_buffer.h"
-std::vector <annotation_data> all_comments_on_slide;
-std::vector <authors> all_authors;
-
 using rtl::OUString;
 using namespace ::com::sun::star;
 using namespace ::oox::core;
@@ -175,10 +170,8 @@ void PresentationFragmentHandler::finalizeImport()
 
                 FragmentHandlerRef xSlideFragmentHandler( new SlideFragmentHandler( rFilter, 
aSlideFragmentPath, pSlidePersistPtr, Slide ) );
 
-                // importing the corresponding masterpage/layout rtl::OUStringToOString(sString, 
RTL_TEXTENCODING_UTF8)
+                // importing the corresponding masterpage/layout
                 OUString aLayoutFragmentPath = 
xSlideFragmentHandler->getFragmentPathFromFirstType( CREATE_OFFICEDOC_RELATION_TYPE( "slideLayout" 
) );
-                OUString aCommentFragmentPath = 
xSlideFragmentHandler->getFragmentPathFromFirstType( CREATE_OFFICEDOC_RELATION_TYPE( "comments" ) );
-                printf("\n Comment Present at :- 
%s\n",rtl::OUStringToOString(aCommentFragmentPath, RTL_TEXTENCODING_UTF8).getStr());
                 if ( !aLayoutFragmentPath.isEmpty() )
                 {
                     // importing layout
@@ -287,27 +280,6 @@ void PresentationFragmentHandler::finalizeImport()
                         }
                     }
                 }
-                if( !aCommentFragmentPath.isEmpty() )
-                {
-                    printf("\n Comment Present!!! \n");
-                    Reference< XPresentationPage > xPresentationPage( xSlide, UNO_QUERY );
-                    Reference< XDrawPage > xNotesPage( xPresentationPage->getNotesPage() );
-                    SlidePersistPtr pNotesPersistPtr( new SlidePersist( rFilter, sal_False, 
sal_True, xNotesPage,
-                                ShapePtr( new PPTShape( Slide, "com.sun.star.drawing.GroupShape" ) 
), mpTextListStyle ) );
-                    FragmentHandlerRef xNotesFragmentHandler( new SlideFragmentHandler( 
getFilter(), aCommentFragmentPath, pNotesPersistPtr, Slide ) );
-                    all_comments_on_slide.clear();
-                    rFilter.getNotesPages().push_back( pNotesPersistPtr );
-                    rFilter.setActualSlidePersist( pNotesPersistPtr );
-                    importSlide( xNotesFragmentHandler, pNotesPersistPtr );
-                    //print the comments on console
-                    std::vector<annotation_data>::iterator it;
-                    for(it=all_comments_on_slide.begin();it!=all_comments_on_slide.end();it++)     
               {
-                        printf("\nComment:-\n");
-                        printf("AutorId: %s , DT %s, IDX: %s, x %s y 
%s",it->authorId.c_str(),it->dt.c_str(),it->idx.c_str(),it->x.c_str(),it->y.c_str());
-                        printf("\nText: %s",it->text.c_str());
-                    }
-                }
-
             }
         }
         ResolveTextFields( rFilter );
diff --git a/oox/source/ppt/slidefragmenthandler.cxx b/oox/source/ppt/slidefragmenthandler.cxx
index 1f97a98..a59f2e1 100644
--- a/oox/source/ppt/slidefragmenthandler.cxx
+++ b/oox/source/ppt/slidefragmenthandler.cxx
@@ -38,7 +38,6 @@
 #include "oox/drawingml/clrschemecontext.hxx"
 #include "oox/ppt/pptimport.hxx"
 
-#include "../oox/source/core/annotation_buffer.h"
 
 using rtl::OUString;
 using namespace ::com::sun::star;
@@ -194,24 +193,11 @@ SlideFragmentHandler::~SlideFragmentHandler() throw()
     case PPT_TOKEN( custDataLst ):      // CT_CustomerDataList
     case PPT_TOKEN( tagLst ):           // CT_TagList
         return this;
-
-    //for Comments
-    //case PPT_TOKEN( cmLst ):
-    case PPT_TOKEN( cm ):
-        all_comments_on_slide.push_back(annotation_data());
-        all_comments_on_slide.back().authorId = rtl::OUStringToOString( 
rAttribs.getString(XML_authorId, OUString()),RTL_TEXTENCODING_UTF8).getStr();
-        all_comments_on_slide.back().idx = rtl::OUStringToOString( rAttribs.getString(XML_idx, 
OUString()),RTL_TEXTENCODING_UTF8).getStr();
-        all_comments_on_slide.back().dt = rtl::OUStringToOString( rAttribs.getString(XML_dt, 
OUString()),RTL_TEXTENCODING_UTF8).getStr();
-        all_comments_on_slide.back().text = "";
-        break;
-    case PPT_TOKEN( pos ):
-        all_comments_on_slide.back().x = rtl::OUStringToOString( rAttribs.getString(XML_x, 
OUString()),RTL_TEXTENCODING_UTF8).getStr();
-        all_comments_on_slide.back().y = rtl::OUStringToOString( rAttribs.getString(XML_y, 
OUString()),RTL_TEXTENCODING_UTF8).getStr();
-        break;
-   // case PPT_TOKEN( text ):
     }
+
     return this;
 }
+
 void SlideFragmentHandler::finalizeImport()
 {
     try

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.