Пример #1
0
QT_BEGIN_NAMESPACE

void QCollatorPrivate::init()
{
    cleanup();
    LocaleRef localeRef;
    int rc = LocaleRefFromLocaleString(locale.bcp47Name().toLocal8Bit(), &localeRef);
    if (rc != 0)
        qWarning() << "couldn't initialize the locale";

    UInt32 options = 0;

    if (caseSensitivity == Qt::CaseInsensitive)
        options |= kUCCollateCaseInsensitiveMask;
    if (numericMode)
        options |= kUCCollateDigitsAsNumberMask | kUCCollateDigitsOverrideMask;
    if (ignorePunctuation)
        options |= kUCCollatePunctuationSignificantMask;

    OSStatus status = UCCreateCollator(
        localeRef,
        0,
        options,
        &collator
    );
    if (status != 0)
        qWarning() << "Couldn't initialize the collator";

    dirty = false;
}
// ---------------------------------------------------------------------------
//  MacOSUnicodeConverter: Constructors and Destructor
// ---------------------------------------------------------------------------
MacOSUnicodeConverter::MacOSUnicodeConverter(MemoryManager* manager)
  : fCollator(NULL)
{
	//	Test for presense of unicode collation functions
	fHasUnicodeCollation = (UCCompareText != NULL);
    
    //  Create a unicode collator for doing string comparisons
    if (fHasUnicodeCollation)
    {
		//  Configure collation options
        UCCollateOptions collateOptions =
								kUCCollateComposeInsensitiveMask
								| kUCCollateWidthInsensitiveMask
								| kUCCollateCaseInsensitiveMask
								| kUCCollatePunctuationSignificantMask
								;
						
        OSStatus status = UCCreateCollator(NULL, 0, collateOptions, &fCollator);
    }
}