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


Hello,

I would like to inform everyone that I attached my purposed patch that fixes the bug 39168 in our bug report page, since it causes an already mentioned problem in the overwriting dialog's popup I don't consider it as something stable, but as in the recent days there were arguments about the patch I wouldn't like to improve it anymore, or maybe in case if you could put it finally into the main branch and could consider it as a commit. Here I also attach the purposed patch and I am waiting for your reviews.

Thanks,

Gabor
From 9949add108630b613ec36bf3185bf293ebc7940b Mon Sep 17 00:00:00 2001
From: Gabor Jenei <jengab@elte.hu>
Date: Mon, 8 Aug 2011 11:30:51 +0200
Subject: [PATCH] purposed patch for bug 39168

---
 desktop/source/deployment/gui/dp_gui_dialog.src |    2 +-
 sfx2/source/dialog/filedlghelper.cxx            |   11 +--
 sfx2/source/doc/guisaveas.cxx                   |  102 +++++++++++++++++++---
 3 files changed, 94 insertions(+), 21 deletions(-)

diff --git a/desktop/source/deployment/gui/dp_gui_dialog.src 
b/desktop/source/deployment/gui/dp_gui_dialog.src
index 12b6acb..28962fc 100644
--- a/desktop/source/deployment/gui/dp_gui_dialog.src
+++ b/desktop/source/deployment/gui/dp_gui_dialog.src
@@ -1,4 +1,4 @@
-/*************************************************************************
+/*************************************************************************
  *
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
diff --git a/sfx2/source/dialog/filedlghelper.cxx b/sfx2/source/dialog/filedlghelper.cxx
index 996e181..32cf0a1 100644
--- a/sfx2/source/dialog/filedlghelper.cxx
+++ b/sfx2/source/dialog/filedlghelper.cxx
@@ -1655,12 +1655,12 @@ OUString FileDialogHelper_Impl::getPath() const
 {
     OUString aPath;
 
-    if ( mxFileDlg.is() )
+    if ( mxFileDlg.is() ){
         aPath = mxFileDlg->getDisplayDirectory();
-
-    if ( !aPath.getLength() )
+    }
+    if ( !aPath.getLength() ){
         aPath = maPath;
-
+    }
     return aPath;
 }
 
@@ -2496,9 +2496,8 @@ void FileDialogHelper::SetTitle( const String& rNewTitle )
 String FileDialogHelper::GetPath() const
 {
     OUString aPath;
-
     if ( mpImp->mlLastURLs.size() > 0)
-        return mpImp->mlLastURLs[0];
+        aPath=mpImp->mlLastURLs[0];
 
     if ( mpImp->mxFileDlg.is() )
     {
diff --git a/sfx2/source/doc/guisaveas.cxx b/sfx2/source/doc/guisaveas.cxx
index 783d623..f09c2a4 100644
--- a/sfx2/source/doc/guisaveas.cxx
+++ b/sfx2/source/doc/guisaveas.cxx
@@ -77,6 +77,7 @@
 #include <vcl/msgbox.hxx>
 #include <vcl/window.hxx>
 #include <toolkit/awt/vclxwindow.hxx>
+#include <svtools/FilterConfigItem.hxx>
 
 #include <sfx2/sfxsids.hrc>
 #include <doc.hrc>
@@ -95,18 +96,18 @@
 #define DOCPROPSNUM 17
 
 // flags that specify requested operation
-#define EXPORT_REQUESTED                       1
-#define PDFEXPORT_REQUESTED                    2
-#define PDFDIRECTEXPORT_REQUESTED      4
-#define WIDEEXPORT_REQUESTED           8
-#define SAVE_REQUESTED                         16
-#define SAVEAS_REQUESTED                       32
+#define EXPORT_REQUESTED                        1
+#define PDFEXPORT_REQUESTED                     2
+#define PDFDIRECTEXPORT_REQUESTED       4
+#define WIDEEXPORT_REQUESTED            8
+#define SAVE_REQUESTED                          16
+#define SAVEAS_REQUESTED                        32
 
 // possible statuses of save operation
-#define STATUS_NO_ACTION                       0
-#define STATUS_SAVE                                    1
-#define STATUS_SAVEAS                          2
-#define STATUS_SAVEAS_STANDARDNAME     3
+#define STATUS_NO_ACTION                        0
+#define STATUS_SAVE                                     1
+#define STATUS_SAVEAS                           2
+#define STATUS_SAVEAS_STANDARDNAME      3
 
 const ::rtl::OUString aFilterNameString(RTL_CONSTASCII_USTRINGPARAM("FilterName"));
 const ::rtl::OUString aFilterOptionsString(RTL_CONSTASCII_USTRINGPARAM("FilterOptions"));
@@ -1013,7 +1014,37 @@ sal_Bool ModelData_Impl::OutputFileDialog( sal_Int8 nStoreMode,
     GetMediaDescr() << aPropsFromDialog;
 
     // get the path from the dialog
-    INetURLObject aURL( pFileDlg->GetPath() );
+    String aPath(pFileDlg->GetPath());
+    //we need to convert extension in case of PDFExport and IsAddStream is true
+    FilterConfigItem 
aCfgItem(String(RTL_CONSTASCII_USTRINGPARAM("Office.Common/Filter/PDF/Export/")));
+    sal_Bool 
bAddStream=aCfgItem.ReadBool(String(RTL_CONSTASCII_USTRINGPARAM("IsAddStream")),sal_False);
+    if(bAddStream==sal_True){
+        //get the begining of extension: len-3
+        xub_StrLen nIndex=aPath.Len()-3;
+        //modify extension to od*.pdf according to the filter type
+        if(aFilterName==::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("writer_pdf_Export"))){
+            aPath.Replace(nIndex,3,String::CreateFromAscii("odt"));
+            aPath+=String::CreateFromAscii(".pdf");
+        }
+        if(aFilterName==::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("calc_pdf_Export"))){
+            aPath.Replace(nIndex,3,String::CreateFromAscii("ods"));
+            aPath+=String::CreateFromAscii(".pdf");
+        }
+        if(aFilterName==::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("impress_pdf_Export"))){
+            aPath.Replace(nIndex,3,String::CreateFromAscii("odp"));
+            aPath+=String::CreateFromAscii(".pdf");
+        }
+        if(aFilterName==::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("draw_pdf_Export"))){
+            aPath.Replace(nIndex,3,String::CreateFromAscii("odg"));
+            aPath+=String::CreateFromAscii(".pdf");
+        }
+        if(aFilterName==::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("math_pdf_Export"))){
+            aPath.Replace(nIndex,3,String::CreateFromAscii("odf"));
+            aPath+=String::CreateFromAscii(".pdf");
+        }
+    }
+
+    INetURLObject aURL( aPath );
     // the path should be provided outside since it might be used for further calls to the dialog
     aSuggestedName = aURL.GetName( INetURLObject::DECODE_WITH_CHARSET );
        aSuggestedDir = pFileDlg->GetDisplayDirectory();
@@ -1492,7 +1523,7 @@ sal_Bool SfxStoringHelper::GUIStoreModel( const uno::Reference< frame::XModel 
&
         if ( aStdDirIter != aModelData.GetMediaDescr().end() )
             aStdDirIter->second >>= sStandardDir;
 
-        ::com::sun::star::uno::Sequence< ::rtl::OUString >     aBlackList;
+        ::com::sun::star::uno::Sequence< ::rtl::OUString >      aBlackList;
 
         ::comphelper::SequenceAsHashMap::const_iterator aBlackListIter =
             aModelData.GetMediaDescr().find( 
::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("BlackList")) );
@@ -1580,11 +1611,54 @@ sal_Bool SfxStoringHelper::GUIStoreModel( const uno::Reference< 
frame::XModel >&
     if( !( nStoreMode & PDFEXPORT_REQUESTED ) && !bFilterFlagsSet
         && ( ( nStoreMode & EXPORT_REQUESTED ) || bUseFilterOptions ) )
     {
+        FilterConfigItem 
aCfgItem(String(RTL_CONSTASCII_USTRINGPARAM("Office.Common/Filter/PDF/Export/")));
         // execute filter options dialog
-        if ( aModelData.ExecuteFilterDialog_Impl( aFilterName ) )
+
+        sal_Bool 
bOldAddStream=aCfgItem.ReadBool(String(RTL_CONSTASCII_USTRINGPARAM("IsAddStream")),sal_False);
+        if ( aModelData.ExecuteFilterDialog_Impl( aFilterName ) ){
             bDialogUsed = sal_True;
+        }
+        //has bAddStream just changed?
+        FilterConfigItem 
aCfgItem2(String(RTL_CONSTASCII_USTRINGPARAM("Office.Common/Filter/PDF/Export/")));
+        sal_Bool 
bAddStream=aCfgItem2.ReadBool(String(RTL_CONSTASCII_USTRINGPARAM("IsAddStream")),sal_False);
+        if(bAddStream==sal_True && bOldAddStream!=sal_True){ //AddStream has just been set
+            ::rtl::OUString aPath(aURL.GetURLPath());
+            //the index of .pdf extension
+            sal_Int32 nIndex=aPath.getLength()-3;
+            ::rtl::OUString aNewPath;
+            if(aFilterName==::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("writer_pdf_Export"))){
+                
aNewPath=aPath.replaceAt(nIndex,3,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("odt")));
+                aNewPath+=::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".pdf"));
+            }
+            if(aFilterName==::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("calc_pdf_Export"))){
+                
aNewPath=aPath.replaceAt(nIndex,3,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ods")));
+                aNewPath+=::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".pdf"));
+            }
+            if(aFilterName==::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("impress_pdf_Export"))){
+                
aNewPath=aPath.replaceAt(nIndex,3,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("odp")));
+                aNewPath+=::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".pdf"));
+            }
+            if(aFilterName==::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("draw_pdf_Export"))){
+                
aNewPath=aPath.replaceAt(nIndex,3,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("odg")));
+                aNewPath+=::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".pdf"));
+            }
+            if(aFilterName==::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("math_pdf_Export"))){
+                
aNewPath=aPath.replaceAt(nIndex,3,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("odf")));
+                aNewPath+=::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".pdf"));
+            }
+            //is it an existing path?
+            bool bExists=false;
+            aURL.SetURLPath(aNewPath);
+        }
+        if(bAddStream==sal_False && bOldAddStream==sal_True){ //need to remove the added .od*
+            ::rtl::OUString aPath(aURL.GetURLPath());
+            //the index of the begining of .od*.pdf 7 chars were inserted
+            sal_Int32 nIndex=aPath.getLength()-7;
+            ::rtl::OUString aNewPath=aPath.copy(0,nIndex);
+            aNewPath+=::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("pdf"));
+            aURL.SetURLPath(aNewPath);
+        }
     }
-
     // so the arguments will not change any more and can be stored to the main location
     aArgsSequence = aModelData.GetMediaDescr().getAsConstPropertyValueList();
 
-- 
1.7.2.5


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.