summaryrefslogtreecommitdiff
path: root/cui/source/dialogs
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2012-10-04 23:02:48 +0100
committerCaolán McNamara <caolanm@redhat.com>2012-10-05 14:37:49 +0100
commit3479c1fb010df54ef675413d8b3659a8d619388d (patch)
tree19c7be40cfd210f78fe3344ed14d46251b3fddb2 /cui/source/dialogs
parentd559ffe0513ec9f4ffc3ba8d857f8644fd9b1ada (diff)
de-pimpl Hyphenation Dialog for simplicity
Change-Id: Icba94fdd75d5e09fd81744d2f5ce55886b8777b4
Diffstat (limited to 'cui/source/dialogs')
-rw-r--r--cui/source/dialogs/hyphen.cxx258
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: */