diff options
author | Caolán McNamara <caolanm@redhat.com> | 2015-04-29 16:06:20 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2015-04-29 16:15:48 +0100 |
commit | 74706c4057e027898022ac42de210302cdc92d99 (patch) | |
tree | 373d4bbf472cc5de2cff20d0e9feaae3896b5ed8 | |
parent | 7368b6ca3f61e750765f42e97d0a00e10fcac516 (diff) |
on using 'add' color button, don't frighten with an error
that the name already exists if the user didn't use the
edit entry yet. Just always, like the gradient one, put
up the dialog to enter a name, use the entry text if
that name isn't taken, and generate a new one if its is.
Change-Id: Ibd3d37db73ecdbae7998884d3397cbc2bc6b7c3f
-rw-r--r-- | cui/source/tabpages/tpcolor.cxx | 84 | ||||
-rw-r--r-- | cui/source/tabpages/tpgradnt.cxx | 12 |
2 files changed, 55 insertions, 41 deletions
diff --git a/cui/source/tabpages/tpcolor.cxx b/cui/source/tabpages/tpcolor.cxx index 4347ab3d623a..3c3ecf215de1 100644 --- a/cui/source/tabpages/tpcolor.cxx +++ b/cui/source/tabpages/tpcolor.cxx @@ -685,55 +685,68 @@ IMPL_LINK_NOARG(SvxColorTabPage, ModifiedHdl_Impl) IMPL_LINK_NOARG(SvxColorTabPage, ClickAddHdl_Impl) { - vcl::Window *pWindow = this; - while( pWindow ) - { - pWindow = pWindow->GetParent(); - } - - ResMgr& rMgr = CUI_MGR(); - OUString aDesc( ResId( RID_SVXSTR_DESC_COLOR, rMgr ) ); + OUString aNewName( SVX_RES( RID_SVXSTR_COLOR ) ); + OUString aDesc( CUI_RES( RID_SVXSTR_DESC_COLOR ) ); OUString aName( m_pEdtName->GetText() ); + long nCount = pColorList->Count(); - bool bDifferent = true; + long j = 1; // check if name is already existing - for ( long i = 0; i < nCount && bDifferent; i++ ) - if ( aName == pColorList->GetColor( i )->GetName() ) - bDifferent = false; + while (1) + { + bool bDifferent = true; + + for( long i = 0; i < nCount && bDifferent; i++ ) + if ( aName == pColorList->GetColor( i )->GetName() ) + bDifferent = false; + + if (bDifferent) + break; - // if yes, it is repeated and a new name is demanded - if ( !bDifferent ) + aName = aNewName; + aName += " "; + aName += OUString::number( j++ ); + } + + SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); + boost::scoped_ptr<AbstractSvxNameDialog> pDlg(pFact->CreateSvxNameDialog( GetParentDialog(), aName, aDesc )); + ScopedVclPtr<MessageDialog> pWarnBox; + sal_uInt16 nError = 1; + + while (pDlg->Execute() == RET_OK) { - ScopedVclPtrInstance<MessageDialog> aWarningBox( GetParentDialog() - ,"DuplicateNameDialog" - ,"cui/ui/queryduplicatedialog.ui"); - aWarningBox->Execute(); + pDlg->GetName( aName ); - SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); - boost::scoped_ptr<AbstractSvxNameDialog> pDlg(pFact->CreateSvxNameDialog( GetParentDialog(), aName, aDesc )); - bool bLoop = true; + bool bDifferent = true; - while ( !bDifferent && bLoop && pDlg->Execute() == RET_OK ) + for (long i = 0; i < nCount && bDifferent; ++i) { - pDlg->GetName( aName ); - bDifferent = true; + if( aName == pColorList->GetColor( i )->GetName() ) + bDifferent = false; + } - for( long i = 0; i < nCount && bDifferent; i++ ) - { - if( aName == pColorList->GetColor( i )->GetName() ) - bDifferent = false; - } + if (bDifferent) + { + nError = 0; + break; + } - if( bDifferent ) - bLoop = false; - else - aWarningBox->Execute(); + if( !pWarnBox ) + { + pWarnBox.reset(new MessageDialog( GetParentDialog() + ,"DuplicateNameDialog" + ,"cui/ui/queryduplicatedialog.ui")); } + + if( pWarnBox->Execute() != RET_OK ) + break; } - // if not existing the entry is entered - if( bDifferent ) + pDlg.reset(); + pWarnBox.reset(); + + if (!nError) { XColorEntry* pEntry = new XColorEntry( aCurrentColor, aName ); @@ -749,6 +762,7 @@ IMPL_LINK_NOARG(SvxColorTabPage, ClickAddHdl_Impl) SelectColorLBHdl_Impl( this ); } + UpdateModified(); return 0; diff --git a/cui/source/tabpages/tpgradnt.cxx b/cui/source/tabpages/tpgradnt.cxx index 6b832a263057..81ce6469117e 100644 --- a/cui/source/tabpages/tpgradnt.cxx +++ b/cui/source/tabpages/tpgradnt.cxx @@ -454,23 +454,23 @@ IMPL_LINK_NOARG(SvxGradientTabPage, ClickAddHdl_Impl) } SvxAbstractDialogFactory* pFact = SvxAbstractDialogFactory::Create(); - DBG_ASSERT(pFact, "Dialog creation failed!"); boost::scoped_ptr<AbstractSvxNameDialog> pDlg(pFact->CreateSvxNameDialog( GetParentDialog(), aName, aDesc )); - DBG_ASSERT(pDlg, "Dialog creation failed!"); ScopedVclPtr<MessageDialog> pWarnBox; - sal_uInt16 nError = 1; + sal_uInt16 nError = 1; - while( pDlg->Execute() == RET_OK ) + while (pDlg->Execute() == RET_OK) { pDlg->GetName( aName ); bDifferent = true; - for( long i = 0; i < nCount && bDifferent; i++ ) + for (long i = 0; i < nCount && bDifferent; ++i) + { if( aName == pGradientList->GetGradient( i )->GetName() ) bDifferent = false; + } - if( bDifferent ) + if (bDifferent) { nError = 0; break; |