tdf#124172: Use the MacOSXSpell library on iOS, too

The code needed just a small amount of ifdefs to use UITextChecker on
iOS instead of NSSpellChecker.

Change-Id: I19edfffd3cc317a79beacc0b94668a6fd5ea3b32
diff --git a/Repository.mk b/Repository.mk
index 6508d68..20ba9b0 100644
--- a/Repository.mk
+++ b/Repository.mk
@@ -484,6 +484,8 @@
		) \
		fps_aqua \
		vclplug_osx \
	) \
	$(if $(filter iOS MACOSX,$(OS)), \
		MacOSXSpell \
	) \
))
diff --git a/lingucomponent/Module_lingucomponent.mk b/lingucomponent/Module_lingucomponent.mk
index 4f3d242..2bde5d5 100644
--- a/lingucomponent/Module_lingucomponent.mk
+++ b/lingucomponent/Module_lingucomponent.mk
@@ -14,7 +14,7 @@
	Library_guesslang \
	Library_hyphen \
	Library_lnth \
	$(if $(filter MACOSX,$(OS)),Library_MacOSXSpell) \
	$(if $(filter iOS MACOSX,$(OS)),Library_MacOSXSpell) \
	Library_spell \
	StaticLibrary_ulingu \
	Library_numbertext \
diff --git a/lingucomponent/source/spellcheck/macosxspell/macspellimp.hxx b/lingucomponent/source/spellcheck/macosxspell/macspellimp.hxx
index 084b08c..fea3ba7 100644
--- a/lingucomponent/source/spellcheck/macosxspell/macspellimp.hxx
+++ b/lingucomponent/source/spellcheck/macosxspell/macspellimp.hxx
@@ -22,12 +22,14 @@

#include <cppuhelper/implbase.hxx>

#ifdef MACOSX
#include <premac.h>
#ifdef MACOSX
#include <Carbon/Carbon.h>
#import <Cocoa/Cocoa.h>
#include <postmac.h>
#else
#include <UIKit/UIKit.h>
#endif
#include <postmac.h>
#include <com/sun/star/lang/XComponent.hpp>
#include <com/sun/star/lang/XInitialization.hpp>
#include <com/sun/star/lang/XServiceDisplayName.hpp>
@@ -62,8 +64,11 @@
    Locale *                aDLocs;
    OUString *              aDNames;
    sal_Int32               numdict;
#ifdef MACOSX
    int                     macTag;   // unique tag for this doc

#else
    UITextChecker *         pChecker;
#endif
    ::comphelper::OInterfaceContainerHelper2       aEvtListeners;
    Reference< XPropertyChangeListener >    xPropHelper;
    linguistic::PropertyHelper_Spell *      pPropHelper;
@@ -79,6 +84,7 @@
    }

    sal_Int16   GetSpellFailure( const OUString &rWord, const Locale &rLocale );
    Reference< XSpellAlternatives > GetProposals( const OUString &rWord, const Locale &rLocale );

public:
    MacSpellChecker();
diff --git a/lingucomponent/source/spellcheck/macosxspell/macspellimp.mm b/lingucomponent/source/spellcheck/macosxspell/macspellimp.mm
index 9eb7e65..d66e714 100644
--- a/lingucomponent/source/spellcheck/macosxspell/macspellimp.mm
+++ b/lingucomponent/source/spellcheck/macosxspell/macspellimp.mm
@@ -54,10 +54,14 @@
    bDisposing = false;
    pPropHelper = nullptr;
    numdict = 0;
#ifndef IOS
    NSApplicationLoad();
    NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
    macTag = [NSSpellChecker uniqueSpellDocumentTag];
    [pool release];
#else
    pChecker = [[UITextChecker alloc] init];
#endif
}


@@ -109,7 +113,11 @@
        // TODO How on macOS?

        // invoke a second  dictionary manager to get the shared dictionary list
#ifdef MACOSX
        NSArray *aSpellCheckLanguages = [[NSSpellChecker sharedSpellChecker] availableLanguages];
#else
        NSArray *aSpellCheckLanguages = [UITextChecker availableLanguages];
#endif

        for (NSUInteger i = 0; i < [aSpellCheckLanguages count]; i++)
        {
@@ -332,8 +340,12 @@
            aLang = [aLang  stringByAppendingString:aTaggedCountry];
        }

#ifdef MACOSX
        NSInteger aCount;
        NSRange range = [[NSSpellChecker sharedSpellChecker] checkSpellingOfString:aNSStr startingAt:0 language:aLang wrap:false inSpellDocumentWithTag:macTag wordCount:&aCount];
#else
        NSRange range = [pChecker rangeOfMisspelledWordInString:aNSStr range:NSMakeRange(0, [aNSStr length]) startingAt:0 wrap:NO language:aLang];
#endif
        int rVal = 0;
        if(range.length>0)
        {
@@ -394,10 +406,8 @@
    return (nFailure == -1);
}

namespace {

Reference< XSpellAlternatives >
    GetProposals( const OUString &rWord, const Locale &rLocale )
    MacSpellChecker::GetProposals( const OUString &rWord, const Locale &rLocale )
{
    // Retrieves the return values for the 'spell' function call in case
    // of a misspelled word.
@@ -432,8 +442,12 @@
            NSString* aTaggedCountry = [@"_" stringByAppendingString:aCountry];
            aLang = [aLang  stringByAppendingString:aTaggedCountry];
        }
#ifdef MACOSX
        [[NSSpellChecker sharedSpellChecker] setLanguage:aLang];
        NSArray *guesses = [[NSSpellChecker sharedSpellChecker] guessesForWordRange:NSMakeRange(0, [aNSStr length]) inString:aNSStr language:aLang inSpellDocumentWithTag:0];
#else
        NSArray *guesses = [pChecker guessesForWordRange:NSMakeRange(0, [aNSStr length]) inString:aNSStr language:aLang];
#endif
        count = [guesses count];
        if (count)
        {
@@ -460,8 +474,6 @@

}

}

Reference< XSpellAlternatives > SAL_CALL
    MacSpellChecker::spell( const OUString& rWord, const Locale& rLocale,
            const css::uno::Sequence<PropertyValue>& rProperties )
diff --git a/postprocess/Rdb_services.mk b/postprocess/Rdb_services.mk
index 342f19b..6f6c8d3 100644
--- a/postprocess/Rdb_services.mk
+++ b/postprocess/Rdb_services.mk
@@ -128,11 +128,13 @@
	writerperfect/source/calc/wpftcalc \
	$(if $(filter MACOSX,$(OS)), \
		$(call gb_Helper_optional,AVMEDIA,avmedia/source/macavf/avmediaMacAVF) \
		lingucomponent/source/spellcheck/macosxspell/MacOSXSpell \
		fpicker/source/aqua/fps_aqua \
		shell/source/backends/macbe/macbe1 \
		vcl/vcl.macosx \
	) \
	$(if $(filter iOS MACOSX,$(OS)), \
		lingucomponent/source/spellcheck/macosxspell/MacOSXSpell \
	) \
	$(if $(filter WNT,$(OS)), \
		avmedia/source/win/avmediawin \
		dtrans/source/generic/dtrans \
diff --git a/solenv/bin/native-code.py b/solenv/bin/native-code.py
index 0a47b8c..1848e68 100755
--- a/solenv/bin/native-code.py
+++ b/solenv/bin/native-code.py
@@ -62,7 +62,8 @@
    ("libpdffilterlo.a", "pdffilter_component_getFactory"),
    ("libsvgiolo.a", "svgio_component_getFactory"),
    ("libsvtlo.a", "svt_component_getFactory"),
    ("libctllo.a", "ctl_component_getFactory")
    ("libctllo.a", "ctl_component_getFactory"),
    ("libMacOSXSpelllo.a", "MacOSXSpell_component_getFactory", "#ifdef IOS"),
    ]

core_constructor_list = [