| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| |
| // MARKER(update_precomp.py): autogen include statement, do not remove |
| #include "precompiled_cui.hxx" |
| |
| // include --------------------------------------------------------------- |
| #include <tools/shl.hxx> |
| #include <tools/date.hxx> |
| #include <tools/time.hxx> |
| #include <vcl/svapp.hxx> |
| #include <vcl/msgbox.hxx> |
| #include <svl/itempool.hxx> |
| #include <svl/itemset.hxx> |
| #include <unotools/useroptions.hxx> |
| #include <unotools/localedatawrapper.hxx> |
| #include <comphelper/processfactory.hxx> |
| #include <svx/svxids.hrc> // SID_ATTR_... |
| #include <svx/dialogs.hrc> // RID_SVXDLG_POSTIT |
| |
| #define _SVX_POSTDLG_CXX |
| |
| #include <cuires.hrc> |
| #include "postdlg.hrc" |
| #include <svx/postattr.hxx> |
| #include "postdlg.hxx" |
| #include <dialmgr.hxx> |
| |
| #include "helpid.hrc" |
| |
| // static ---------------------------------------------------------------- |
| |
| static sal_uInt16 pRanges[] = |
| { |
| SID_ATTR_POSTIT_AUTHOR, |
| SID_ATTR_POSTIT_TEXT, |
| 0 |
| }; |
| |
| // class SvxPostItDialog ------------------------------------------------- |
| |
| SvxPostItDialog::SvxPostItDialog( Window* pParent, |
| const SfxItemSet& rCoreSet, |
| sal_Bool bPrevNext, |
| sal_Bool bRedline ) : |
| |
| SfxModalDialog( pParent, CUI_RES( RID_SVXDLG_POSTIT ) ), |
| |
| aPostItFL ( this, CUI_RES( FL_POSTIT ) ), |
| aLastEditLabelFT( this, CUI_RES( FT_LASTEDITLABEL ) ), |
| aLastEditFT ( this, CUI_RES( FT_LASTEDIT ) ), |
| aEditFT ( this, CUI_RES( FT_EDIT ) ), |
| aEditED ( this, CUI_RES( ED_EDIT ) ), |
| aAuthorFT ( this, CUI_RES( FT_AUTHOR) ), |
| aAuthorBtn ( this, CUI_RES( BTN_AUTHOR ) ), |
| aOKBtn ( this, CUI_RES( BTN_POST_OK ) ), |
| aCancelBtn ( this, CUI_RES( BTN_POST_CANCEL ) ), |
| aHelpBtn ( this, CUI_RES( BTN_POST_HELP ) ), |
| aPrevBtn ( this, CUI_RES( BTN_PREV ) ), |
| aNextBtn ( this, CUI_RES( BTN_NEXT ) ), |
| |
| rSet ( rCoreSet ), |
| pOutSet ( 0 ) |
| |
| { |
| if (bRedline) // HelpIDs fuer Redlining |
| { |
| SetHelpId(HID_REDLINING_DLG); |
| aEditED.SetHelpId(HID_REDLINING_EDIT); |
| aPrevBtn.SetHelpId(HID_REDLINING_PREV); |
| aNextBtn.SetHelpId(HID_REDLINING_NEXT); |
| } |
| |
| aPrevBtn.SetClickHdl( LINK( this, SvxPostItDialog, PrevHdl ) ); |
| aNextBtn.SetClickHdl( LINK( this, SvxPostItDialog, NextHdl ) ); |
| aAuthorBtn.SetClickHdl( LINK( this, SvxPostItDialog, Stamp ) ); |
| aOKBtn.SetClickHdl( LINK( this, SvxPostItDialog, OKHdl ) ); |
| |
| Font aFont( aEditED.GetFont() ); |
| aFont.SetWeight( WEIGHT_LIGHT ); |
| aEditED.SetFont( aFont ); |
| |
| sal_Bool bNew = sal_True; |
| sal_uInt16 nWhich = 0; |
| |
| if ( !bPrevNext ) |
| { |
| aPrevBtn.Hide(); |
| aNextBtn.Hide(); |
| } |
| |
| nWhich = rSet.GetPool()->GetWhich( SID_ATTR_POSTIT_AUTHOR ); |
| String aAuthorStr, aDateStr, aTextStr; |
| |
| if ( rSet.GetItemState( nWhich, sal_True ) >= SFX_ITEM_AVAILABLE ) |
| { |
| bNew = sal_False; |
| const SvxPostItAuthorItem& rAuthor = |
| (const SvxPostItAuthorItem&)rSet.Get( nWhich ); |
| aAuthorStr = rAuthor.GetValue(); |
| } |
| else |
| aAuthorStr = SvtUserOptions().GetID(); |
| |
| nWhich = rSet.GetPool()->GetWhich( SID_ATTR_POSTIT_DATE ); |
| |
| if ( rSet.GetItemState( nWhich, sal_True ) >= SFX_ITEM_AVAILABLE ) |
| { |
| const SvxPostItDateItem& rDate = |
| (const SvxPostItDateItem&)rSet.Get( nWhich ); |
| aDateStr = rDate.GetValue(); |
| } |
| else |
| { |
| LocaleDataWrapper aLocaleWrapper( ::comphelper::getProcessServiceFactory(), Application::GetSettings().GetLocale() ); |
| aDateStr = aLocaleWrapper.getDate( Date() ); |
| } |
| |
| nWhich = rSet.GetPool()->GetWhich( SID_ATTR_POSTIT_TEXT ); |
| |
| if ( rSet.GetItemState( nWhich, sal_True ) >= SFX_ITEM_AVAILABLE ) |
| { |
| const SvxPostItTextItem& rText = |
| (const SvxPostItTextItem&)rSet.Get( nWhich ); |
| aTextStr = rText.GetValue(); |
| } |
| |
| ShowLastAuthor(aAuthorStr, aDateStr); |
| aEditED.SetText( aTextStr.ConvertLineEnd() ); |
| |
| if ( !bNew ) |
| SetText( CUI_RESSTR( STR_NOTIZ_EDIT ) ); |
| else |
| // neu anlegen |
| SetText( CUI_RESSTR( STR_NOTIZ_INSERT ) ); |
| |
| FreeResource(); |
| |
| aEditED.SetAccessibleRelationLabeledBy(&aEditFT); |
| aEditED.SetAccessibleRelationMemberOf(&aPostItFL); |
| aAuthorBtn.SetAccessibleRelationMemberOf(&aPostItFL); |
| } |
| |
| // ----------------------------------------------------------------------- |
| |
| SvxPostItDialog::~SvxPostItDialog() |
| { |
| delete pOutSet; |
| pOutSet = 0; |
| } |
| |
| // ----------------------------------------------------------------------- |
| |
| void SvxPostItDialog::ShowLastAuthor(const String& rAuthor, const String& rDate) |
| { |
| String sTxt( rAuthor ); |
| sTxt.AppendAscii( RTL_CONSTASCII_STRINGPARAM( ", " ) ); |
| sTxt += rDate; |
| aLastEditFT.SetText( sTxt ); |
| } |
| |
| // ----------------------------------------------------------------------- |
| |
| sal_uInt16* SvxPostItDialog::GetRanges() |
| { |
| return pRanges; |
| } |
| |
| // ----------------------------------------------------------------------- |
| |
| void SvxPostItDialog::EnableTravel(sal_Bool bNext, sal_Bool bPrev) |
| { |
| aPrevBtn.Enable(bPrev); |
| aNextBtn.Enable(bNext); |
| } |
| |
| // ----------------------------------------------------------------------- |
| |
| IMPL_LINK_INLINE_START( SvxPostItDialog, PrevHdl, Button *, EMPTYARG ) |
| { |
| aPrevHdlLink.Call( this ); |
| return 0; |
| } |
| IMPL_LINK_INLINE_END( SvxPostItDialog, PrevHdl, Button *, EMPTYARG ) |
| |
| // ----------------------------------------------------------------------- |
| |
| IMPL_LINK_INLINE_START( SvxPostItDialog, NextHdl, Button *, EMPTYARG ) |
| { |
| aNextHdlLink.Call( this ); |
| return 0; |
| } |
| IMPL_LINK_INLINE_END( SvxPostItDialog, NextHdl, Button *, EMPTYARG ) |
| |
| // ----------------------------------------------------------------------- |
| |
| IMPL_LINK( SvxPostItDialog, Stamp, Button *, EMPTYARG ) |
| { |
| Date aDate; |
| Time aTime; |
| String aTmp( SvtUserOptions().GetID() ); |
| LocaleDataWrapper aLocaleWrapper( ::comphelper::getProcessServiceFactory(), Application::GetSettings().GetLocale() ); |
| String aStr( aEditED.GetText() ); |
| aStr.AppendAscii( RTL_CONSTASCII_STRINGPARAM( "\n---- " ) ); |
| |
| if ( aTmp.Len() > 0 ) |
| { |
| aStr += aTmp; |
| aStr.AppendAscii( RTL_CONSTASCII_STRINGPARAM( ", " ) ); |
| } |
| aStr += aLocaleWrapper.getDate(aDate); |
| aStr.AppendAscii( RTL_CONSTASCII_STRINGPARAM( ", " ) ); |
| aStr += aLocaleWrapper.getTime(aTime, sal_False, sal_False); |
| aStr.AppendAscii( RTL_CONSTASCII_STRINGPARAM( " ----\n" ) ); |
| |
| |
| aEditED.SetText( aStr.ConvertLineEnd() ); |
| xub_StrLen nLen = aStr.Len(); |
| aEditED.GrabFocus(); |
| aEditED.SetSelection( Selection( nLen, nLen ) ); |
| return 0; |
| } |
| |
| // ----------------------------------------------------------------------- |
| |
| IMPL_LINK( SvxPostItDialog, OKHdl, Button *, EMPTYARG ) |
| { |
| LocaleDataWrapper aLocaleWrapper( ::comphelper::getProcessServiceFactory(), Application::GetSettings().GetLocale() ); |
| pOutSet = new SfxItemSet( rSet ); |
| pOutSet->Put( SvxPostItAuthorItem( SvtUserOptions().GetID(), |
| rSet.GetPool()->GetWhich( SID_ATTR_POSTIT_AUTHOR ) ) ); |
| pOutSet->Put( SvxPostItDateItem( aLocaleWrapper.getDate( Date() ), |
| rSet.GetPool()->GetWhich( SID_ATTR_POSTIT_DATE ) ) ); |
| pOutSet->Put( SvxPostItTextItem( aEditED.GetText(), |
| rSet.GetPool()->GetWhich( SID_ATTR_POSTIT_TEXT ) ) ); |
| EndDialog( RET_OK ); |
| return 0; |
| } |
| |