Files
libreoffice/svx/source/dialog/optjsearch.cxx
Rüdiger Timm 7322d07a85 INTEGRATION: CWS ooo19126 (1.3.430); FILE MERGED
2005/09/05 14:21:35 rt 1.3.430.1: #i54170# Change license header: remove SISSL
2005-09-08 20:46:49 +00:00

410 lines
15 KiB
C++

/*************************************************************************
*
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: optjsearch.cxx,v $
*
* $Revision: 1.4 $
*
* last change: $Author: rt $ $Date: 2005-09-08 21:46:49 $
*
* The Contents of this file are made available subject to
* the terms of GNU Lesser General Public License Version 2.1.
*
*
* GNU Lesser General Public License Version 2.1
* =============================================
* Copyright 2005 by Sun Microsystems, Inc.
* 901 San Antonio Road, Palo Alto, CA 94303, USA
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License version 2.1, as published by the Free Software Foundation.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA
*
************************************************************************/
#ifdef SVX_DLLIMPLEMENTATION
#undef SVX_DLLIMPLEMENTATION
#endif
#ifndef _SHL_HXX
#include <tools/shl.hxx>
#endif
#ifndef _SVT_SEARCHOPT_HXX_
#include <svtools/searchopt.hxx>
#endif
#ifndef _COM_SUN_STAR_I18N_TRANSLITERATIONMODULES_HPP_
#include <com/sun/star/i18n/TransliterationModules.hpp>
#endif
#pragma hdrstop
#ifndef _SVX_DIALOGS_HRC
#include <dialogs.hrc>
#endif
#ifndef _SVX_DIALMGR_HXX
#include <dialmgr.hxx>
#endif
#ifndef _SVX_OPTJSEARCH_HXX_
#include <optjsearch.hxx>
#endif
#include "optjsearch.hrc"
using namespace com::sun::star::i18n;
//////////////////////////////////////////////////////////////////////
SvxJSearchOptionsPage::SvxJSearchOptionsPage( Window* pParent, const SfxItemSet& rSet ) :
SfxTabPage( pParent, SVX_RES( RID_SVXPAGE_JSEARCH_OPTIONS ), rSet ),
aTreatAsEqual ( this, ResId( FL_TREAT_AS_EQUAL ) ),
aMatchCase ( this, ResId( CB_MATCH_CASE ) ),
aMatchFullHalfWidth ( this, ResId( CB_MATCH_FULL_HALF_WIDTH ) ),
aMatchHiraganaKatakana ( this, ResId( CB_MATCH_HIRAGANA_KATAKANA ) ),
aMatchContractions ( this, ResId( CB_MATCH_CONTRACTIONS ) ),
aMatchMinusDashChoon ( this, ResId( CB_MATCH_MINUS_DASH_CHOON ) ),
aMatchRepeatCharMarks ( this, ResId( CB_MATCH_REPEAT_CHAR_MARKS ) ),
aMatchVariantFormKanji ( this, ResId( CB_MATCH_VARIANT_FORM_KANJI ) ),
aMatchOldKanaForms ( this, ResId( CB_MATCH_OLD_KANA_FORMS ) ),
aMatchDiziDuzu ( this, ResId( CB_MATCH_DIZI_DUZU ) ),
aMatchBavaHafa ( this, ResId( CB_MATCH_BAVA_HAFA ) ),
aMatchTsithichiDhizi ( this, ResId( CB_MATCH_TSITHICHI_DHIZI ) ),
aMatchHyuiyuByuvyu ( this, ResId( CB_MATCH_HYUFYU_BYUVYU ) ),
aMatchSesheZeje ( this, ResId( CB_MATCH_SESHE_ZEJE ) ),
aMatchIaiya ( this, ResId( CB_MATCH_IAIYA ) ),
aMatchKiku ( this, ResId( CB_MATCH_KIKU ) ),
aIgnore ( this, ResId( FL_IGNORE ) ),
aIgnorePunctuation ( this, ResId( CB_IGNORE_PUNCTUATION ) ),
aIgnoreWhitespace ( this, ResId( CB_IGNORE_WHITESPACES ) ),
aMatchProlongedSoundMark ( this, ResId( CB_MATCH_PROLONGED_SOUNDMARK ) ),
aIgnoreMiddleDot ( this, ResId( CB_IGNORE_MIDDLE_DOT ) )
{
FreeResource();
bSaveOptions = TRUE;
nTransliterationFlags = 0x00000000;
}
SvxJSearchOptionsPage::~SvxJSearchOptionsPage()
{
}
SfxTabPage* SvxJSearchOptionsPage::Create( Window* pParent, const SfxItemSet& rSet )
{
return new SvxJSearchOptionsPage( pParent, rSet );
}
void SvxJSearchOptionsPage::SetTransliterationFlags( INT32 nSettings )
{
BOOL bVal = 0 != (nSettings & TransliterationModules_IGNORE_CASE);
aMatchCase .Check( bVal ); //! treat as equal uppercase/lowercase
bVal = 0 != (nSettings & TransliterationModules_IGNORE_WIDTH);
aMatchFullHalfWidth .Check( bVal );
bVal = 0 != (nSettings & TransliterationModules_IGNORE_KANA);
aMatchHiraganaKatakana .Check( bVal );
bVal = 0 != (nSettings & TransliterationModules_ignoreSize_ja_JP);
aMatchContractions .Check( bVal );
bVal = 0 != (nSettings & TransliterationModules_ignoreMinusSign_ja_JP);
aMatchMinusDashChoon .Check( bVal );
bVal = 0 != (nSettings & TransliterationModules_ignoreIterationMark_ja_JP);
aMatchRepeatCharMarks .Check( bVal );
bVal = 0 != (nSettings & TransliterationModules_ignoreTraditionalKanji_ja_JP);
aMatchVariantFormKanji .Check( bVal );
bVal = 0 != (nSettings & TransliterationModules_ignoreTraditionalKana_ja_JP);
aMatchOldKanaForms .Check( bVal );
bVal = 0 != (nSettings & TransliterationModules_ignoreZiZu_ja_JP);
aMatchDiziDuzu .Check( bVal );
bVal = 0 != (nSettings & TransliterationModules_ignoreBaFa_ja_JP);
aMatchBavaHafa .Check( bVal );
bVal = 0 != (nSettings & TransliterationModules_ignoreTiJi_ja_JP);
aMatchTsithichiDhizi .Check( bVal );
bVal = 0 != (nSettings & TransliterationModules_ignoreHyuByu_ja_JP);
aMatchHyuiyuByuvyu .Check( bVal );
bVal = 0 != (nSettings & TransliterationModules_ignoreSeZe_ja_JP);
aMatchSesheZeje .Check( bVal );
bVal = 0 != (nSettings & TransliterationModules_ignoreIandEfollowedByYa_ja_JP);
aMatchIaiya .Check( bVal );
bVal = 0 != (nSettings & TransliterationModules_ignoreKiKuFollowedBySa_ja_JP);
aMatchKiku .Check( bVal );
bVal = 0 != (nSettings & TransliterationModules_ignoreSeparator_ja_JP);
aIgnorePunctuation .Check( bVal );
bVal = 0 != (nSettings & TransliterationModules_ignoreSpace_ja_JP);
aIgnoreWhitespace .Check( bVal );
bVal = 0 != (nSettings & TransliterationModules_ignoreProlongedSoundMark_ja_JP);
aMatchProlongedSoundMark.Check( bVal );
bVal = 0 != (nSettings & TransliterationModules_ignoreMiddleDot_ja_JP);
aIgnoreMiddleDot .Check( bVal );
nTransliterationFlags = nSettings;
}
INT32 SvxJSearchOptionsPage::GetTransliterationFlags_Impl()
{
INT32 nTmp = 0;
if (aMatchCase.IsChecked()) //! treat as equal uppercase/lowercase
nTmp |= TransliterationModules_IGNORE_CASE;
if (aMatchFullHalfWidth.IsChecked())
nTmp |= TransliterationModules_IGNORE_WIDTH;
if (aMatchHiraganaKatakana.IsChecked())
nTmp |= TransliterationModules_IGNORE_KANA;
if (aMatchContractions.IsChecked())
nTmp |= TransliterationModules_ignoreSize_ja_JP;
if (aMatchMinusDashChoon.IsChecked())
nTmp |= TransliterationModules_ignoreMinusSign_ja_JP;
if (aMatchRepeatCharMarks.IsChecked())
nTmp |= TransliterationModules_ignoreIterationMark_ja_JP;
if (aMatchVariantFormKanji.IsChecked())
nTmp |= TransliterationModules_ignoreTraditionalKanji_ja_JP;
if (aMatchOldKanaForms.IsChecked())
nTmp |= TransliterationModules_ignoreTraditionalKana_ja_JP;
if (aMatchDiziDuzu.IsChecked())
nTmp |= TransliterationModules_ignoreZiZu_ja_JP;
if (aMatchBavaHafa.IsChecked())
nTmp |= TransliterationModules_ignoreBaFa_ja_JP;
if (aMatchTsithichiDhizi.IsChecked())
nTmp |= TransliterationModules_ignoreTiJi_ja_JP;
if (aMatchHyuiyuByuvyu.IsChecked())
nTmp |= TransliterationModules_ignoreHyuByu_ja_JP;
if (aMatchSesheZeje.IsChecked())
nTmp |= TransliterationModules_ignoreSeZe_ja_JP;
if (aMatchIaiya.IsChecked())
nTmp |= TransliterationModules_ignoreIandEfollowedByYa_ja_JP;
if (aMatchKiku.IsChecked())
nTmp |= TransliterationModules_ignoreKiKuFollowedBySa_ja_JP;
if (aIgnorePunctuation.IsChecked())
nTmp |= TransliterationModules_ignoreSeparator_ja_JP;
if (aIgnoreWhitespace.IsChecked())
nTmp |= TransliterationModules_ignoreSpace_ja_JP;
if (aMatchProlongedSoundMark.IsChecked())
nTmp |= TransliterationModules_ignoreProlongedSoundMark_ja_JP;
if (aIgnoreMiddleDot.IsChecked())
nTmp |= TransliterationModules_ignoreMiddleDot_ja_JP;
nTransliterationFlags = nTmp;
return nTransliterationFlags;
}
void SvxJSearchOptionsPage::Reset( const SfxItemSet& rSet )
{
SvtSearchOptions aOpt;
// read settings from configuration
aMatchCase .Check(!aOpt.IsMatchCase() ); //! treat as equal uppercase/lowercase
aMatchFullHalfWidth .Check( aOpt.IsMatchFullHalfWidthForms() );
aMatchHiraganaKatakana .Check( aOpt.IsMatchHiraganaKatakana() );
aMatchContractions .Check( aOpt.IsMatchContractions() );
aMatchMinusDashChoon .Check( aOpt.IsMatchMinusDashChoon() );
aMatchRepeatCharMarks .Check( aOpt.IsMatchRepeatCharMarks() );
aMatchVariantFormKanji .Check( aOpt.IsMatchVariantFormKanji() );
aMatchOldKanaForms .Check( aOpt.IsMatchOldKanaForms() );
aMatchDiziDuzu .Check( aOpt.IsMatchDiziDuzu() );
aMatchBavaHafa .Check( aOpt.IsMatchBavaHafa() );
aMatchTsithichiDhizi .Check( aOpt.IsMatchTsithichiDhizi() );
aMatchHyuiyuByuvyu .Check( aOpt.IsMatchHyuiyuByuvyu() );
aMatchSesheZeje .Check( aOpt.IsMatchSesheZeje() );
aMatchIaiya .Check( aOpt.IsMatchIaiya() );
aMatchKiku .Check( aOpt.IsMatchKiku() );
aIgnorePunctuation .Check( aOpt.IsIgnorePunctuation() );
aIgnoreWhitespace .Check( aOpt.IsIgnoreWhitespace() );
aMatchProlongedSoundMark .Check( aOpt.IsIgnoreProlongedSoundMark() );
aIgnoreMiddleDot .Check( aOpt.IsIgnoreMiddleDot() );
nTransliterationFlags = GetTransliterationFlags_Impl();
DBG_ASSERT( nTransliterationFlags == aOpt.GetTransliterationFlags(),
"Transliteration settings different" );
aMatchCase .SaveValue();
aMatchFullHalfWidth .SaveValue();
aMatchHiraganaKatakana .SaveValue();
aMatchContractions .SaveValue();
aMatchMinusDashChoon .SaveValue();
aMatchRepeatCharMarks .SaveValue();
aMatchVariantFormKanji .SaveValue();
aMatchOldKanaForms .SaveValue();
aMatchDiziDuzu .SaveValue();
aMatchBavaHafa .SaveValue();
aMatchTsithichiDhizi .SaveValue();
aMatchHyuiyuByuvyu .SaveValue();
aMatchSesheZeje .SaveValue();
aMatchIaiya .SaveValue();
aMatchKiku .SaveValue();
aIgnorePunctuation .SaveValue();
aIgnoreWhitespace .SaveValue();
aMatchProlongedSoundMark .SaveValue();
aIgnoreMiddleDot .SaveValue();
}
BOOL SvxJSearchOptionsPage::FillItemSet( SfxItemSet& rSet )
{
BOOL bModified = FALSE;
INT32 nOldVal = nTransliterationFlags;
nTransliterationFlags = GetTransliterationFlags_Impl();
bModified = nOldVal != nTransliterationFlags;
if (!IsSaveOptions())
return bModified;
bModified = FALSE;
SvtSearchOptions aOpt;
BOOL bNewVal, bChanged;
bNewVal = aMatchCase.IsChecked(); //! treat as equal uppercase/lowercase
bChanged = bNewVal != aMatchCase.GetSavedValue();
if (bChanged)
{
aOpt.SetMatchCase(!bNewVal );
bModified = TRUE;
}
bNewVal = aMatchFullHalfWidth.IsChecked();
bChanged = bNewVal != aMatchFullHalfWidth.GetSavedValue();
if (bChanged)
{
aOpt.SetMatchFullHalfWidthForms( bNewVal );
bModified = TRUE;
}
bNewVal = aMatchHiraganaKatakana.IsChecked();
bChanged = bNewVal != aMatchHiraganaKatakana.GetSavedValue();
if (bChanged)
{
aOpt.SetMatchHiraganaKatakana( bNewVal );
bModified = TRUE;
}
bNewVal = aMatchContractions.IsChecked();
bChanged = bNewVal != aMatchContractions.GetSavedValue();
if (bChanged)
{
aOpt.SetMatchContractions( bNewVal );
bModified = TRUE;
}
bNewVal = aMatchMinusDashChoon.IsChecked();
bChanged = bNewVal != aMatchMinusDashChoon.GetSavedValue();
if (bChanged)
{
aOpt.SetMatchMinusDashChoon( bNewVal );
bModified = TRUE;
}
bNewVal = aMatchRepeatCharMarks.IsChecked();
bChanged = bNewVal != aMatchRepeatCharMarks.GetSavedValue();
if (bChanged)
{
aOpt.SetMatchRepeatCharMarks( bNewVal );
bModified = TRUE;
}
bNewVal = aMatchVariantFormKanji.IsChecked();
bChanged = bNewVal != aMatchVariantFormKanji.GetSavedValue();
if (bChanged)
{
aOpt.SetMatchVariantFormKanji( bNewVal );
bModified = TRUE;
}
bNewVal = aMatchOldKanaForms.IsChecked();
bChanged = bNewVal != aMatchOldKanaForms.GetSavedValue();
if (bChanged)
{
aOpt.SetMatchOldKanaForms( bNewVal );
bModified = TRUE;
}
bNewVal = aMatchDiziDuzu.IsChecked();
bChanged = bNewVal != aMatchDiziDuzu.GetSavedValue();
if (bChanged)
{
aOpt.SetMatchDiziDuzu( bNewVal );
bModified = TRUE;
}
bNewVal = aMatchBavaHafa.IsChecked();
bChanged = bNewVal != aMatchBavaHafa.GetSavedValue();
if (bChanged)
{
aOpt.SetMatchBavaHafa( bNewVal );
bModified = TRUE;
}
bNewVal = aMatchTsithichiDhizi.IsChecked();
bChanged = bNewVal != aMatchTsithichiDhizi.GetSavedValue();
if (bChanged)
{
aOpt.SetMatchTsithichiDhizi( bNewVal );
bModified = TRUE;
}
bNewVal = aMatchHyuiyuByuvyu.IsChecked();
bChanged = bNewVal != aMatchHyuiyuByuvyu.GetSavedValue();
if (bChanged)
{
aOpt.SetMatchHyuiyuByuvyu( bNewVal );
bModified = TRUE;
}
bNewVal = aMatchSesheZeje.IsChecked();
bChanged = bNewVal != aMatchSesheZeje.GetSavedValue();
if (bChanged)
{
aOpt.SetMatchSesheZeje( bNewVal );
bModified = TRUE;
}
bNewVal = aMatchIaiya.IsChecked();
bChanged = bNewVal != aMatchIaiya.GetSavedValue();
if (bChanged)
{
aOpt.SetMatchIaiya( bNewVal );
bModified = TRUE;
}
bNewVal = aMatchKiku.IsChecked();
bChanged = bNewVal != aMatchKiku.GetSavedValue();
if (bChanged)
{
aOpt.SetMatchKiku( bNewVal );
bModified = TRUE;
}
bNewVal = aIgnorePunctuation.IsChecked();
bChanged = bNewVal != aIgnorePunctuation.GetSavedValue();
if (bChanged)
{
aOpt.SetIgnorePunctuation( bNewVal );
bModified = TRUE;
}
bNewVal = aIgnoreWhitespace.IsChecked();
bChanged = bNewVal != aIgnoreWhitespace.GetSavedValue();
if (bChanged)
{
aOpt.SetIgnoreWhitespace( bNewVal );
bModified = TRUE;
}
bNewVal = aMatchProlongedSoundMark.IsChecked();
bChanged = bNewVal != aMatchProlongedSoundMark.GetSavedValue();
if (bChanged)
{
aOpt.SetIgnoreProlongedSoundMark( bNewVal );
bModified = TRUE;
}
bNewVal = aIgnoreMiddleDot.IsChecked();
bChanged = bNewVal != aIgnoreMiddleDot.GetSavedValue();
if (bChanged)
{
aOpt.SetIgnoreMiddleDot( bNewVal );
bModified = TRUE;
}
return bModified;
}
//////////////////////////////////////////////////////////////////////