diff options
author | Caolán McNamara <caolanm@redhat.com> | 2012-10-04 23:02:48 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2012-10-05 14:37:49 +0100 |
commit | 3479c1fb010df54ef675413d8b3659a8d619388d (patch) | |
tree | 19c7be40cfd210f78fe3344ed14d46251b3fddb2 /cui/source/dialogs | |
parent | d559ffe0513ec9f4ffc3ba8d857f8644fd9b1ada (diff) |
de-pimpl Hyphenation Dialog for simplicity
Change-Id: Icba94fdd75d5e09fd81744d2f5ce55886b8777b4
Diffstat (limited to 'cui/source/dialogs')
-rw-r--r-- | cui/source/dialogs/hyphen.cxx | 258 |
1 files changed, 75 insertions, 183 deletions
diff --git a/cui/source/dialogs/hyphen.cxx b/cui/source/dialogs/hyphen.cxx index 4b33b04f061e..36a5b3447a71 100644 --- a/cui/source/dialogs/hyphen.cxx +++ b/cui/source/dialogs/hyphen.cxx @@ -31,36 +31,19 @@ #include <tools/shl.hxx> #include <vcl/msgbox.hxx> -#include <com/sun/star/linguistic2/XPossibleHyphens.hpp> - -using namespace ::com::sun::star; - - #define HYPH_POS_CHAR '=' #define CONTINUE_HYPH USHRT_MAX #define CUR_HYPH_POS_CHAR '-' -// class HyphenEdit_Impl ------------------------------------------------------- - -class HyphenEdit_Impl : public Edit -{ -public: - HyphenEdit_Impl( Window* pParent, const ResId& rResId ); - -protected: - virtual void KeyInput( const KeyEvent &rKEvt ); -}; - - -HyphenEdit_Impl::HyphenEdit_Impl( Window* pParent, const ResId& rResId ) : +HyphenEdit::HyphenEdit( Window* pParent, const ResId& rResId ) : Edit( pParent, rResId ) { } -void HyphenEdit_Impl::KeyInput( const KeyEvent& rKEvt ) +void HyphenEdit::KeyInput( const KeyEvent& rKEvt ) { sal_uInt16 nCode = rKEvt.GetKeyCode().GetCode(); @@ -86,132 +69,7 @@ void HyphenEdit_Impl::KeyInput( const KeyEvent& rKEvt ) } -// struct SvxHyphenWordDialog_Impl --------------------------------------------- - -struct SvxHyphenWordDialog_Impl -{ - SvxHyphenWordDialog * m_pDialog; - - FixedText aWordFT; - HyphenEdit_Impl aWordEdit; - ImageButton aLeftBtn; - ImageButton aRightBtn; - OKButton aOkBtn; - PushButton aContBtn; - PushButton aDelBtn; - FixedLine aFLBottom; - HelpButton aHelpBtn; - PushButton aHyphAll; - CancelButton aCancelBtn; - String aLabel; - SvxSpellWrapper* pHyphWrapper; - uno::Reference< linguistic2::XHyphenator > xHyphenator; - uno::Reference< linguistic2::XPossibleHyphens > xPossHyph; - String aEditWord; // aEditWord and aWordEdit.GetText() differ only by the character for the current selected hyphenation position - String aActWord; // actual word to be hyphenated - LanguageType nActLanguage; // and its language - sal_uInt16 nMaxHyphenationPos; // right most valid hyphenation pos - sal_uInt16 nHyphPos; - sal_uInt16 nOldPos; - sal_Int32 nHyphenationPositionsOffset; - sal_Bool bBusy; - - - void EnableLRBtn_Impl(); - String EraseUnusableHyphens_Impl( ::com::sun::star::uno::Reference< ::com::sun::star::linguistic2::XPossibleHyphens > &rxPossHyph, sal_uInt16 nMaxHyphenationPos ); - - void InitControls_Impl(); - void ContinueHyph_Impl( sal_uInt16 nInsPos = 0 ); - sal_uInt16 GetHyphIndex_Impl(); - void SelLeft_Impl(); - void SelRight_Impl(); - - DECL_LINK(Left_Impl, void *); - DECL_LINK(Right_Impl, void *); - DECL_LINK(CutHdl_Impl, void *); - DECL_LINK(ContinueHdl_Impl, void *); - DECL_LINK(DeleteHdl_Impl, void *); - DECL_LINK( HyphenateAllHdl_Impl, Button* ); - DECL_LINK(CancelHdl_Impl, void *); - DECL_LINK(GetFocusHdl_Impl, void *); - - - SvxHyphenWordDialog_Impl( - SvxHyphenWordDialog * pDialog, - const String &rWord, - LanguageType nLang, - uno::Reference< linguistic2::XHyphenator > &xHyphen, - SvxSpellWrapper* pWrapper ); - ~SvxHyphenWordDialog_Impl(); -}; - - -SvxHyphenWordDialog_Impl::SvxHyphenWordDialog_Impl( - SvxHyphenWordDialog * pDialog, - const String &rWord, - LanguageType nLang, - uno::Reference< linguistic2::XHyphenator > &xHyphen, - SvxSpellWrapper* pWrapper ) : - - m_pDialog ( pDialog ), - aWordFT ( pDialog, CUI_RES( FT_WORD ) ), - aWordEdit ( pDialog, CUI_RES( ED_WORD ) ), - aLeftBtn ( pDialog, CUI_RES( BTN_LEFT ) ), - aRightBtn ( pDialog, CUI_RES( BTN_RIGHT ) ), - aOkBtn ( pDialog, CUI_RES( BTN_HYPH_CUT ) ), - aContBtn ( pDialog, CUI_RES( BTN_HYPH_CONTINUE ) ), - aDelBtn ( pDialog, CUI_RES( BTN_HYPH_DELETE ) ), - aFLBottom ( pDialog, CUI_RES( FL_BOTTOM ) ), - aHelpBtn ( pDialog, CUI_RES( BTN_HYPH_HELP ) ), - aHyphAll ( pDialog, CUI_RES( BTN_HYPH_ALL ) ), - aCancelBtn ( pDialog, CUI_RES( BTN_HYPH_CANCEL ) ), - aLabel ( pDialog->GetText() ), - pHyphWrapper ( NULL ), - xHyphenator ( NULL ), - xPossHyph ( NULL ), - aActWord ( ), - nActLanguage ( LANGUAGE_NONE ), - nMaxHyphenationPos ( 0 ), - nHyphPos ( 0 ), - nOldPos ( 0 ), - nHyphenationPositionsOffset( 0 ), - bBusy ( sal_False ) -{ - aActWord = rWord; - nActLanguage = nLang; - xHyphenator = xHyphen; - pHyphWrapper = pWrapper; - - uno::Reference< linguistic2::XHyphenatedWord > xHyphWord( pHyphWrapper ? - pHyphWrapper->GetLast() : NULL, uno::UNO_QUERY ); - DBG_ASSERT( xHyphWord.is(), "hyphenation result missing" ); - if (xHyphWord.is()) - { - DBG_ASSERT( aActWord == String( xHyphWord->getWord() ), "word mismatch" ); - DBG_ASSERT( nActLanguage == SvxLocaleToLanguage( xHyphWord->getLocale() ), "language mismatch" ); - nMaxHyphenationPos = xHyphWord->getHyphenationPos(); - } - - InitControls_Impl(); - aWordEdit.GrabFocus(); - - aLeftBtn.SetClickHdl( LINK( this, SvxHyphenWordDialog_Impl, Left_Impl ) ); - aRightBtn.SetClickHdl( LINK( this, SvxHyphenWordDialog_Impl, Right_Impl ) ); - aOkBtn.SetClickHdl( LINK( this, SvxHyphenWordDialog_Impl, CutHdl_Impl ) ); - aContBtn.SetClickHdl( LINK( this, SvxHyphenWordDialog_Impl, ContinueHdl_Impl ) ); - aDelBtn.SetClickHdl( LINK( this, SvxHyphenWordDialog_Impl, DeleteHdl_Impl ) ); - aHyphAll.SetClickHdl( LINK( this, SvxHyphenWordDialog_Impl, HyphenateAllHdl_Impl ) ); - aCancelBtn.SetClickHdl( LINK( this, SvxHyphenWordDialog_Impl, CancelHdl_Impl ) ); - aWordEdit.SetGetFocusHdl( LINK( this, SvxHyphenWordDialog_Impl, GetFocusHdl_Impl ) ); -} - - -SvxHyphenWordDialog_Impl::~SvxHyphenWordDialog_Impl() -{ -} - - -void SvxHyphenWordDialog_Impl::EnableLRBtn_Impl() +void SvxHyphenWordDialog::EnableLRBtn_Impl() { String aTxt( aEditWord ); xub_StrLen nLen = aTxt.Len(); @@ -242,7 +100,7 @@ void SvxHyphenWordDialog_Impl::EnableLRBtn_Impl() } -String SvxHyphenWordDialog_Impl::EraseUnusableHyphens_Impl( +String SvxHyphenWordDialog::EraseUnusableHyphens_Impl( uno::Reference< linguistic2::XPossibleHyphens > &rxPossHyph, sal_uInt16 _nMaxHyphenationPos ) { @@ -342,7 +200,7 @@ String SvxHyphenWordDialog_Impl::EraseUnusableHyphens_Impl( } -void SvxHyphenWordDialog_Impl::InitControls_Impl() +void SvxHyphenWordDialog::InitControls_Impl() { xPossHyph = NULL; if (xHyphenator.is()) @@ -356,12 +214,12 @@ void SvxHyphenWordDialog_Impl::InitControls_Impl() aWordEdit.SetText( aEditWord ); nOldPos = aEditWord.Len(); - SelLeft_Impl(); + SelLeft(); EnableLRBtn_Impl(); } -void SvxHyphenWordDialog_Impl::ContinueHyph_Impl( sal_uInt16 nInsPos ) +void SvxHyphenWordDialog::ContinueHyph_Impl( sal_uInt16 nInsPos ) { if ( nInsPos != CONTINUE_HYPH && xPossHyph.is()) { @@ -408,15 +266,15 @@ void SvxHyphenWordDialog_Impl::ContinueHyph_Impl( sal_uInt16 nInsPos ) nActLanguage = SvxLocaleToLanguage( xHyphWord->getLocale() ); nMaxHyphenationPos = xHyphWord->getHyphenationPos(); InitControls_Impl(); - m_pDialog->SetWindowTitle( nActLanguage ); + SetWindowTitle( nActLanguage ); } } else - m_pDialog->EndDialog( RET_OK ); + EndDialog( RET_OK ); } -sal_uInt16 SvxHyphenWordDialog_Impl::GetHyphIndex_Impl() +sal_uInt16 SvxHyphenWordDialog::GetHyphIndex_Impl() { sal_uInt16 nPos = 0; String aTxt( aWordEdit.GetText() ); @@ -433,7 +291,7 @@ sal_uInt16 SvxHyphenWordDialog_Impl::GetHyphIndex_Impl() } -void SvxHyphenWordDialog_Impl::SelLeft_Impl() +void SvxHyphenWordDialog::SelLeft() { DBG_ASSERT( nOldPos > 0, "invalid hyphenation position" ); if (nOldPos > 0) @@ -459,7 +317,7 @@ void SvxHyphenWordDialog_Impl::SelLeft_Impl() } -void SvxHyphenWordDialog_Impl::SelRight_Impl() +void SvxHyphenWordDialog::SelRight() { String aTxt( aEditWord ); for ( xub_StrLen i = nOldPos + 1; i < aTxt.Len(); ++i ) @@ -480,7 +338,7 @@ void SvxHyphenWordDialog_Impl::SelRight_Impl() } -IMPL_LINK_NOARG(SvxHyphenWordDialog_Impl, CutHdl_Impl) +IMPL_LINK_NOARG(SvxHyphenWordDialog, CutHdl_Impl) { if( !bBusy ) { @@ -492,7 +350,7 @@ IMPL_LINK_NOARG(SvxHyphenWordDialog_Impl, CutHdl_Impl) } -IMPL_LINK( SvxHyphenWordDialog_Impl, HyphenateAllHdl_Impl, Button *, EMPTYARG /*pButton*/ ) +IMPL_LINK( SvxHyphenWordDialog, HyphenateAllHdl_Impl, Button *, EMPTYARG /*pButton*/ ) { if( !bBusy ) { @@ -522,7 +380,7 @@ IMPL_LINK( SvxHyphenWordDialog_Impl, HyphenateAllHdl_Impl, Button *, EMPTYARG /* } -IMPL_LINK_NOARG(SvxHyphenWordDialog_Impl, DeleteHdl_Impl) +IMPL_LINK_NOARG(SvxHyphenWordDialog, DeleteHdl_Impl) { if( !bBusy ) { @@ -534,7 +392,7 @@ IMPL_LINK_NOARG(SvxHyphenWordDialog_Impl, DeleteHdl_Impl) } -IMPL_LINK_NOARG(SvxHyphenWordDialog_Impl, ContinueHdl_Impl) +IMPL_LINK_NOARG(SvxHyphenWordDialog, ContinueHdl_Impl) { if( !bBusy ) { @@ -546,44 +404,44 @@ IMPL_LINK_NOARG(SvxHyphenWordDialog_Impl, ContinueHdl_Impl) } -IMPL_LINK_NOARG(SvxHyphenWordDialog_Impl, CancelHdl_Impl) +IMPL_LINK_NOARG(SvxHyphenWordDialog, CancelHdl_Impl) { if( !bBusy ) { bBusy = sal_True; pHyphWrapper->SpellEnd(); - m_pDialog->EndDialog( RET_CANCEL ); + EndDialog( RET_CANCEL ); bBusy = sal_False; } return 0; } -IMPL_LINK_NOARG(SvxHyphenWordDialog_Impl, Left_Impl) +IMPL_LINK_NOARG(SvxHyphenWordDialog, Left_Impl) { if( !bBusy ) { bBusy = sal_True; - SelLeft_Impl(); + SelLeft(); bBusy = sal_False; } return 0; } -IMPL_LINK_NOARG(SvxHyphenWordDialog_Impl, Right_Impl) +IMPL_LINK_NOARG(SvxHyphenWordDialog, Right_Impl) { if( !bBusy ) { bBusy = sal_True; - SelRight_Impl(); + SelRight(); bBusy = sal_False; } return 0; } -IMPL_LINK_NOARG(SvxHyphenWordDialog_Impl, GetFocusHdl_Impl) +IMPL_LINK_NOARG(SvxHyphenWordDialog, GetFocusHdl_Impl) { aWordEdit.SetSelection( Selection( nOldPos, nOldPos + 1 ) ); return 0; @@ -598,17 +456,64 @@ SvxHyphenWordDialog::SvxHyphenWordDialog( uno::Reference< linguistic2::XHyphenator > &xHyphen, SvxSpellWrapper* pWrapper ) : - SfxModalDialog( pParent, CUI_RES( RID_SVXDLG_HYPHENATE ) ) + SfxModalDialog( pParent, CUI_RES( RID_SVXDLG_HYPHENATE ) ), + + aWordFT ( this, CUI_RES( FT_WORD ) ), + aWordEdit ( this, CUI_RES( ED_WORD ) ), + aLeftBtn ( this, CUI_RES( BTN_LEFT ) ), + aRightBtn ( this, CUI_RES( BTN_RIGHT ) ), + aOkBtn ( this, CUI_RES( BTN_HYPH_CUT ) ), + aContBtn ( this, CUI_RES( BTN_HYPH_CONTINUE ) ), + aDelBtn ( this, CUI_RES( BTN_HYPH_DELETE ) ), + aFLBottom ( this, CUI_RES( FL_BOTTOM ) ), + aHelpBtn ( this, CUI_RES( BTN_HYPH_HELP ) ), + aHyphAll ( this, CUI_RES( BTN_HYPH_ALL ) ), + aCancelBtn ( this, CUI_RES( BTN_HYPH_CANCEL ) ), + aLabel ( GetText() ), + pHyphWrapper ( NULL ), + xHyphenator ( NULL ), + xPossHyph ( NULL ), + aActWord ( ), + nActLanguage ( LANGUAGE_NONE ), + nMaxHyphenationPos ( 0 ), + nHyphPos ( 0 ), + nOldPos ( 0 ), + nHyphenationPositionsOffset( 0 ), + bBusy ( sal_False ) { - m_pImpl = std::auto_ptr< SvxHyphenWordDialog_Impl >( - new SvxHyphenWordDialog_Impl( this, rWord, nLang, xHyphen, pWrapper ) ); + aActWord = rWord; + nActLanguage = nLang; + xHyphenator = xHyphen; + pHyphWrapper = pWrapper; + + uno::Reference< linguistic2::XHyphenatedWord > xHyphWord( pHyphWrapper ? + pHyphWrapper->GetLast() : NULL, uno::UNO_QUERY ); + DBG_ASSERT( xHyphWord.is(), "hyphenation result missing" ); + if (xHyphWord.is()) + { + DBG_ASSERT( aActWord == String( xHyphWord->getWord() ), "word mismatch" ); + DBG_ASSERT( nActLanguage == SvxLocaleToLanguage( xHyphWord->getLocale() ), "language mismatch" ); + nMaxHyphenationPos = xHyphWord->getHyphenationPos(); + } + + InitControls_Impl(); + aWordEdit.GrabFocus(); + + aLeftBtn.SetClickHdl( LINK( this, SvxHyphenWordDialog, Left_Impl ) ); + aRightBtn.SetClickHdl( LINK( this, SvxHyphenWordDialog, Right_Impl ) ); + aOkBtn.SetClickHdl( LINK( this, SvxHyphenWordDialog, CutHdl_Impl ) ); + aContBtn.SetClickHdl( LINK( this, SvxHyphenWordDialog, ContinueHdl_Impl ) ); + aDelBtn.SetClickHdl( LINK( this, SvxHyphenWordDialog, DeleteHdl_Impl ) ); + aHyphAll.SetClickHdl( LINK( this, SvxHyphenWordDialog, HyphenateAllHdl_Impl ) ); + aCancelBtn.SetClickHdl( LINK( this, SvxHyphenWordDialog, CancelHdl_Impl ) ); + aWordEdit.SetGetFocusHdl( LINK( this, SvxHyphenWordDialog, GetFocusHdl_Impl ) ); FreeResource(); SetWindowTitle( nLang ); // disable controls if service is not available - if (!m_pImpl->xHyphenator.is()) + if (!xHyphenator.is()) Enable( sal_False ); } @@ -621,24 +526,11 @@ SvxHyphenWordDialog::~SvxHyphenWordDialog() void SvxHyphenWordDialog::SetWindowTitle( LanguageType nLang ) { String aLangStr( SvtLanguageTable::GetLanguageString( nLang ) ); - String aTmp( m_pImpl->aLabel ); + String aTmp( aLabel ); aTmp.AppendAscii( RTL_CONSTASCII_STRINGPARAM( " (" ) ); aTmp.Append( aLangStr ); aTmp.Append( sal_Unicode( ')' ) ); SetText( aTmp ); } - -void SvxHyphenWordDialog::SelLeft() -{ - m_pImpl->SelLeft_Impl(); -} - - -void SvxHyphenWordDialog::SelRight() -{ - m_pImpl->SelRight_Impl(); -} - - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |