diff options
author | Gökçen Eraslan <gokcen.eraslan@gmail.com> | 2012-08-20 00:54:08 +0200 |
---|---|---|
committer | Jan Holesovsky <kendy@suse.cz> | 2012-08-20 13:13:03 +0000 |
commit | 74ae4c44627068192eb0bda6c22367dd33cb0316 (patch) | |
tree | aa279f06d9f3c7a2d40f46eb779e5b19f31e3b03 /filter | |
parent | b44a402d5a05dd32aa2e1ab80c9ea75b560dc3b9 (diff) |
Use Thunderbird-like certificate selection GUI in pdf signing.
Change-Id: Ibe834f1aecc60ba09a2c19d75b094881b82c248a
Reviewed-on: https://gerrit.libreoffice.org/431
Reviewed-by: Jan Holesovsky <kendy@suse.cz>
Tested-by: Jan Holesovsky <kendy@suse.cz>
Diffstat (limited to 'filter')
-rw-r--r-- | filter/source/pdf/impdialog.cxx | 56 | ||||
-rw-r--r-- | filter/source/pdf/impdialog.hrc | 22 | ||||
-rw-r--r-- | filter/source/pdf/impdialog.hxx | 10 | ||||
-rw-r--r-- | filter/source/pdf/impdialog.src | 41 |
4 files changed, 80 insertions, 49 deletions
diff --git a/filter/source/pdf/impdialog.cxx b/filter/source/pdf/impdialog.cxx index 9f1bb2c38078..833073002425 100644 --- a/filter/source/pdf/impdialog.cxx +++ b/filter/source/pdf/impdialog.cxx @@ -44,6 +44,7 @@ #include "com/sun/star/frame/XController.hpp" #include "com/sun/star/view/XSelectionSupplier.hpp" #include "com/sun/star/security/XDocumentDigitalSignatures.hpp" +#include "com/sun/star/security/XCertificate.hpp" #include <boost/shared_ptr.hpp> @@ -1683,7 +1684,10 @@ ImpPDFTabSigningPage::ImpPDFTabSigningPage( Window* pParent, const SfxItemSet& rCoreSet ) : SfxTabPage( pParent, PDFFilterResId( RID_PDF_TAB_SIGNING ), rCoreSet ), - maCbSignPDF( this, PDFFilterResId( CB_SIGN_PDF ) ), + maFtSignCert( this, PDFFilterResId( FT_SIGN_CERT_TEXT ) ), + maEdSignCert( this, PDFFilterResId( ED_SIGN_CERT ) ), + maPbSignCertSelect( this, PDFFilterResId( BTN_SIGN_CERT_SELECT ) ), + maPbSignCertClear( this, PDFFilterResId( BTN_SIGN_CERT_CLEAR ) ), maFtSignPassword( this, PDFFilterResId( FT_SIGN_PASSWORD ) ), maEdSignPassword( this, PDFFilterResId( ED_SIGN_PASSWORD ) ), maFtSignLocation( this, PDFFilterResId( FT_SIGN_LOCATION ) ), @@ -1692,12 +1696,13 @@ ImpPDFTabSigningPage::ImpPDFTabSigningPage( Window* pParent, maEdSignContactInfo( this, PDFFilterResId( ED_SIGN_CONTACT ) ), maFtSignReason( this, PDFFilterResId( FT_SIGN_REASON ) ), maEdSignReason( this, PDFFilterResId( ED_SIGN_REASON ) ), - maPbSignSelectCert( this, PDFFilterResId( BTN_SIGN_SELECT_CERT ) ), maSignCertificate() { FreeResource(); - maPbSignSelectCert.SetClickHdl( LINK( this, ImpPDFTabSigningPage, ClickmaPbSignSelectCert ) ); + maPbSignCertSelect.Enable( true ); + maPbSignCertSelect.SetClickHdl( LINK( this, ImpPDFTabSigningPage, ClickmaPbSignCertSelect ) ); + maPbSignCertClear.SetClickHdl( LINK( this, ImpPDFTabSigningPage, ClickmaPbSignCertClear ) ); } // ----------------------------------------------------------------------------- @@ -1705,7 +1710,7 @@ ImpPDFTabSigningPage::~ImpPDFTabSigningPage() { } -IMPL_LINK_NOARG( ImpPDFTabSigningPage, ClickmaPbSignSelectCert ) +IMPL_LINK_NOARG( ImpPDFTabSigningPage, ClickmaPbSignCertSelect ) { uno::Sequence< uno::Any > aArgs( 2 ); @@ -1722,6 +1727,29 @@ IMPL_LINK_NOARG( ImpPDFTabSigningPage, ClickmaPbSignSelectCert ) maSignCertificate = xSigner->chooseCertificate(); + if (maSignCertificate.is()) + { + maEdSignCert.SetText(maSignCertificate->getSubjectName()); + maPbSignCertClear.Enable( true ); + maEdSignLocation.Enable( true ); + maEdSignPassword.Enable( true ); + maEdSignContactInfo.Enable( true ); + maEdSignReason.Enable( true ); + } + + return 0; +} + +IMPL_LINK_NOARG( ImpPDFTabSigningPage, ClickmaPbSignCertClear ) +{ + maEdSignCert.SetText(OUString("")); + maSignCertificate.clear(); + maPbSignCertClear.Enable( false ); + maEdSignLocation.Enable( false ); + maEdSignPassword.Enable( false ); + maEdSignContactInfo.Enable( false ); + maEdSignReason.Enable( false ); + return 0; } @@ -1735,12 +1763,12 @@ SfxTabPage* ImpPDFTabSigningPage::Create( Window* pParent, // ----------------------------------------------------------------------------- void ImpPDFTabSigningPage::GetFilterConfigItem( ImpPDFTabDialog* paParent ) { - paParent->mbSignPDF = maCbSignPDF.IsChecked(); + paParent->mbSignPDF = maSignCertificate.is(); + paParent->maSignCertificate = maSignCertificate; paParent->msSignLocation = maEdSignLocation.GetText(); paParent->msSignPassword = maEdSignPassword.GetText(); paParent->msSignContact = maEdSignContactInfo.GetText(); paParent->msSignReason = maEdSignReason.GetText(); - paParent->maSignCertificate = maSignCertificate; } @@ -1748,16 +1776,14 @@ void ImpPDFTabSigningPage::GetFilterConfigItem( ImpPDFTabDialog* paParent ) void ImpPDFTabSigningPage::SetFilterConfigItem( const ImpPDFTabDialog* paParent ) { - maCbSignPDF.SetToggleHdl( LINK( this, ImpPDFTabSigningPage, ToggleSignPDFHdl ) ); maEdSignLocation.Enable( false ); maEdSignPassword.Enable( false ); maEdSignContactInfo.Enable( false ); maEdSignReason.Enable( false ); - maPbSignSelectCert.Enable( false ); + maPbSignCertClear.Enable( false ); if (paParent->mbSignPDF) { - maCbSignPDF.Check(); maEdSignPassword.SetText(paParent->msSignPassword); maEdSignLocation.SetText(paParent->msSignLocation); maEdSignContactInfo.SetText(paParent->msSignContact); @@ -1766,16 +1792,4 @@ void ImpPDFTabSigningPage::SetFilterConfigItem( const ImpPDFTabDialog* paParent } } -// ----------------------------------------------------------------------------- -IMPL_LINK_NOARG(ImpPDFTabSigningPage, ToggleSignPDFHdl) -{ - maEdSignPassword.Enable( maCbSignPDF.IsChecked() ); - maEdSignLocation.Enable( maCbSignPDF.IsChecked() ); - maEdSignContactInfo.Enable( maCbSignPDF.IsChecked() ); - maEdSignReason.Enable( maCbSignPDF.IsChecked() ); - maPbSignSelectCert.Enable( maCbSignPDF.IsChecked() ); - - return 0; -} - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/filter/source/pdf/impdialog.hrc b/filter/source/pdf/impdialog.hrc index 110bae0e94bd..4303e1335890 100644 --- a/filter/source/pdf/impdialog.hrc +++ b/filter/source/pdf/impdialog.hrc @@ -180,13 +180,15 @@ #define FL_SECURITY_VERTICAL 160 //controls for digital signatures tab page -#define CB_SIGN_PDF 170 -#define FT_SIGN_PASSWORD 171 -#define ED_SIGN_PASSWORD 172 -#define FT_SIGN_LOCATION 173 -#define ED_SIGN_LOCATION 174 -#define FT_SIGN_CONTACT 175 -#define ED_SIGN_CONTACT 176 -#define FT_SIGN_REASON 177 -#define ED_SIGN_REASON 178 -#define BTN_SIGN_SELECT_CERT 179 +#define FT_SIGN_CERT_TEXT 170 +#define ED_SIGN_CERT 171 +#define BTN_SIGN_CERT_SELECT 172 +#define BTN_SIGN_CERT_CLEAR 173 +#define FT_SIGN_PASSWORD 174 +#define ED_SIGN_PASSWORD 175 +#define FT_SIGN_LOCATION 176 +#define ED_SIGN_LOCATION 177 +#define FT_SIGN_CONTACT 178 +#define ED_SIGN_CONTACT 179 +#define FT_SIGN_REASON 180 +#define ED_SIGN_REASON 181 diff --git a/filter/source/pdf/impdialog.hxx b/filter/source/pdf/impdialog.hxx index 8c468b148e0e..0a42cc917ed8 100644 --- a/filter/source/pdf/impdialog.hxx +++ b/filter/source/pdf/impdialog.hxx @@ -441,7 +441,10 @@ public: //class to implement the digital signing class ImpPDFTabSigningPage : public SfxTabPage { - CheckBox maCbSignPDF; + FixedText maFtSignCert; + Edit maEdSignCert; + PushButton maPbSignCertSelect; + PushButton maPbSignCertClear; FixedText maFtSignPassword; Edit maEdSignPassword; FixedText maFtSignLocation; @@ -450,11 +453,10 @@ class ImpPDFTabSigningPage : public SfxTabPage Edit maEdSignContactInfo; FixedText maFtSignReason; Edit maEdSignReason; - PushButton maPbSignSelectCert; com::sun::star::uno::Reference< com::sun::star::security::XCertificate > maSignCertificate; - DECL_LINK( ToggleSignPDFHdl, void* ); - DECL_LINK( ClickmaPbSignSelectCert, void* ); + DECL_LINK( ClickmaPbSignCertSelect, void* ); + DECL_LINK( ClickmaPbSignCertClear, void* ); public: ImpPDFTabSigningPage( Window* pParent, diff --git a/filter/source/pdf/impdialog.src b/filter/source/pdf/impdialog.src index afae67e7eab1..cf6cfa18348c 100644 --- a/filter/source/pdf/impdialog.src +++ b/filter/source/pdf/impdialog.src @@ -825,27 +825,40 @@ TabPage RID_PDF_TAB_SIGNING TAB_PDF_SIZE; Hide = TRUE; - CheckBox CB_SIGN_PDF + FixedText FT_SIGN_CERT_TEXT { - Pos = MAP_APPFONT ( 6 , 3 ) ; - Size = MAP_APPFONT ( 164 , 16 ) ; - TabStop = TRUE ; - WordBreak = TRUE ; - Text[ en-US ] = "Sign PDF file" ; + Pos = MAP_APPFONT( 6, 3 ); + Size = MAP_APPFONT( 200, 10 ); + Text[ en-US ] = "Use this certificate to digitally sign PDF documents:"; }; - PushButton BTN_SIGN_SELECT_CERT + Edit ED_SIGN_CERT { - TabStop = TRUE ; + Border = TRUE ; Disable = TRUE ; - Pos = MAP_APPFONT ( 12, 17 ) ; + Pos = MAP_APPFONT ( 6, 17 ) ; Size = MAP_APPFONT ( 120 , 13 ) ; - Text[ en-US ] = "Select c~ertificate..."; + }; + + PushButton BTN_SIGN_CERT_SELECT + { + TabStop = TRUE ; + Pos = MAP_APPFONT ( 130, 17 ) ; + Size = MAP_APPFONT ( 30 , 13 ) ; + Text[ en-US ] = "~Select..."; + }; + + PushButton BTN_SIGN_CERT_CLEAR + { + TabStop = TRUE ; + Pos = MAP_APPFONT ( 165, 17 ) ; + Size = MAP_APPFONT ( 30 , 13 ) ; + Text[ en-US ] = "Clear"; }; FixedText FT_SIGN_PASSWORD { - Pos = MAP_APPFONT( 12, 35 ); + Pos = MAP_APPFONT( 6, 35 ); Size = MAP_APPFONT( 109, 10 ); Text[ en-US ] = "Certificate Password"; }; @@ -859,7 +872,7 @@ TabPage RID_PDF_TAB_SIGNING FixedText FT_SIGN_LOCATION { - Pos = MAP_APPFONT( 12, 48 ); + Pos = MAP_APPFONT( 6, 48 ); Size = MAP_APPFONT( 109, 10 ); Text[ en-US ] = "Location"; }; @@ -873,7 +886,7 @@ TabPage RID_PDF_TAB_SIGNING FixedText FT_SIGN_CONTACT { - Pos = MAP_APPFONT( 12, 61 ); + Pos = MAP_APPFONT( 6, 61 ); Size = MAP_APPFONT( 109, 10 ); Text[ en-US ] = "Contact Information"; }; @@ -887,7 +900,7 @@ TabPage RID_PDF_TAB_SIGNING FixedText FT_SIGN_REASON { - Pos = MAP_APPFONT( 12, 74 ); + Pos = MAP_APPFONT( 6, 74 ); Size = MAP_APPFONT( 109, 10 ); Text[ en-US ] = "Reason"; }; |