diff options
Diffstat (limited to 'ios/shared/ios_sharedlo/cxx/mlo_uno.mm')
-rw-r--r-- | ios/shared/ios_sharedlo/cxx/mlo_uno.mm | 513 |
1 files changed, 0 insertions, 513 deletions
diff --git a/ios/shared/ios_sharedlo/cxx/mlo_uno.mm b/ios/shared/ios_sharedlo/cxx/mlo_uno.mm deleted file mode 100644 index 210732457dfc..000000000000 --- a/ios/shared/ios_sharedlo/cxx/mlo_uno.mm +++ /dev/null @@ -1,513 +0,0 @@ -// -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -// -// This file is part of the LibreOffice project. -// -// This Source Code Form is subject to the terms of the Mozilla Public -// License, v. 2.0. If a copy of the MPL was not distributed with this -// file, You can obtain one at http://mozilla.org/MPL/2.0/. - -#include "mlo_uno.h" -#import "MLOCommon.h" -//#include <stdlib.h> - -#include <premac.h> -#import <UIKit/UIKit.h> -#include <postmac.h> - -#undef TimeValue -#include <osl/process.h> - -#include "cppuhelper/bootstrap.hxx" -#include "com/sun/star/lang/XMultiServiceFactory.hpp" -#include "com/sun/star/lang/XComponent.hpp" -#include "com/sun/star/frame/Desktop.hpp" -#include "com/sun/star/frame/XFrame.hpp" -#include "com/sun/star/frame/XDispatchProvider.hpp" -#include "com/sun/star/frame/XDispatchHelper.hpp" -#include <com/sun/star/frame/DispatchHelper.hpp> -#include "com/sun/star/frame/XComponentLoader.hpp" -#include "com/sun/star/frame/XStorable.hpp" -#include "com/sun/star/awt/XScrollBar.hpp" -#include <com/sun/star/container/XContentEnumerationAccess.hpp> -#include <com/sun/star/frame/Desktop.hpp> -#include <com/sun/star/style/XStyleFamiliesSupplier.hpp> -#include <com/sun/star/text/XPageCursor.hpp> -#include <com/sun/star/text/XTextDocument.hpp> -#include <com/sun/star/text/XTextRange.hpp> -#include <com/sun/star/text/XTextTable.hpp> -#include <com/sun/star/text/XText.hpp> -#include <com/sun/star/container/XIndexAccess.hpp> -#include <com/sun/star/text/XTextViewCursorSupplier.hpp> -#include <com/sun/star/table/XCell.hpp> -#include <com/sun/star/beans/PropertyAttribute.hpp> -#include <com/sun/star/beans/XPropertySet.hpp> -#include <com/sun/star/document/XDocumentPropertiesSupplier.hpp> -#include <com/sun/star/document/XViewDataSupplier.hpp> -#include <com/sun/star/util/XSearchable.hpp> -#include <com/sun/star/util/XSearchDescriptor.hpp> -#include <com/sun/star/view/XSelectionSupplier.hpp> -#include <com/sun/star/uno/XInterface.hpp> - -using namespace com::sun::star::uno; -using namespace com::sun::star::awt; -using namespace com::sun::star::view; -using namespace com::sun::star::util; -using namespace com::sun::star::container; -using namespace com::sun::star::document; -using namespace com::sun::star::text; -using namespace com::sun::star::lang; -using namespace com::sun::star::frame; -using namespace com::sun::star::beans; -using namespace cppu; - - -#define OU(C_STRING) OUString::createFromAscii(C_STRING) - -#define LOG_EVAL(REF,NS_STRING) REF.get() ? NSLog(@"%@ created",NS_STRING) : NSLog(@"%@ is null",NS_STRING) - -// singletons - -Reference<XComponentContext> openedComponentContext; -Reference<XMultiComponentFactory> openedXComponentFactory; -Reference<XInterface> openedXDesktop; -Reference < XComponentLoader > openedXComponentLoader; - -// document singletons - -Reference<XComponent> openedXComponent; -Reference<XModel> openedXModel; -Reference<XTextViewCursorSupplier> openedXTextViewCursorSupplier; -Reference<XController> openedXController; -Reference<XPageCursor> openedXPageCursor; -Reference<XViewDataSupplier> openedXViewDataSupplier; -Reference<XSearchable> openedXSearchable; -Reference<XSelectionSupplier> openedXSelectionSupplier; -Reference<XFrame> openedXFrame; -Reference<XDispatchProvider> openedXDispatchProvider; -Reference<XStorable> openedXStorable; - -Reference<XIndexAccess> currentFindAll; -rtl::OUString lastSearch; -::sal_Int32 lastSearchIndex =-1; - -/// functions - -Reference< XComponentContext > getXComponentContext() -{ - if(!openedComponentContext.get()) - { - openedComponentContext.set(cppu::defaultBootstrap_InitialComponentContext()); - LOG_EVAL(openedComponentContext,@"XComponentContext"); - } - return openedComponentContext; -} - -Reference<XMultiComponentFactory> getXComponentFactory() -{ - if(!openedXComponentFactory.get()) - { - openedXComponentFactory.set(getXComponentContext()->getServiceManager()); - LOG_EVAL(openedXComponentFactory,@"XMultiComponentContext"); - } - return openedXComponentFactory; -} - -Reference<XInterface> getXDesktop() -{ - if(!openedXDesktop.get()) - { - openedXDesktop.set(getXComponentFactory()->createInstanceWithContext ( OU("com.sun.star.frame.Desktop"), getXComponentContext())); - LOG_EVAL(openedXDesktop, @"XDesktop"); - } - return openedXDesktop; -} - -Reference <XComponentLoader> getXComponentLoader() -{ - if(!openedXComponentLoader.get()) - { - openedXComponentLoader.set(Reference < XComponentLoader >( Desktop::create(getXComponentContext()))); - LOG_EVAL(openedXComponentLoader, @"XComponentLoader"); - } - return openedXComponentLoader; -} - -Reference<XModel> getXModel() -{ - if(!openedXModel.get()) - { - Reference<XModel> model(openedXComponent.get(), UNO_QUERY); - openedXModel.set(model); - LOG_EVAL(openedXModel, @"XModel"); - } - return openedXModel; -} - -Reference<XController> getXController() -{ - if(!openedXController.get()) - { - openedXController.set(getXModel()->getCurrentController()); - LOG_EVAL(openedXController, @"XController"); - } - return openedXController; -} - -Reference<XTextViewCursorSupplier> getXTextViewCursorSupplier() -{ - if(!openedXTextViewCursorSupplier.get()) - { - Reference<XTextViewCursorSupplier> supplier(getXController(), UNO_QUERY); - openedXTextViewCursorSupplier.set(supplier); - LOG_EVAL(openedXTextViewCursorSupplier, @"XTextViewCursorSupplier"); - } - return openedXTextViewCursorSupplier; -} - -Reference<XPageCursor> getXPageCursor() -{ - if(!openedXPageCursor.get()) - { - Reference<XPageCursor> cursor(getXTextViewCursorSupplier()->getViewCursor(), UNO_QUERY); - openedXPageCursor.set(cursor); - LOG_EVAL(openedXPageCursor, @"XPageCursor"); - } - return openedXPageCursor; -} - -Reference<XViewDataSupplier> getXViewDataSupplier() -{ - //if(!openedXViewDataSupplier.get()) - //{ - Reference<XViewDataSupplier> supplier(getXController(),UNO_QUERY); - openedXViewDataSupplier.set(supplier); - LOG_EVAL(openedXViewDataSupplier,@"XViewDataSupplier"); - //} - return openedXViewDataSupplier; -} - -Reference<XSearchable> getXSearchable() -{ - if(!openedXSearchable.get()) - { - Reference<XSearchable> xSearchable(getXModel(),UNO_QUERY); - openedXSearchable.set(xSearchable); - LOG_EVAL(openedXSearchable,@"XSearchable"); - } - return openedXSearchable; -} - -Reference<XSelectionSupplier> getXSelectionSupplier() -{ - if(!openedXSelectionSupplier.get()) - { - Reference<XSelectionSupplier> supplier(getXController(),UNO_QUERY); - openedXSelectionSupplier.set(supplier); - LOG_EVAL(openedXSelectionSupplier, @"XSelectionSupplier"); - } - return openedXSelectionSupplier; -} - -Reference<XFrame> getXFrame() -{ - if(!openedXFrame.get()) - { - openedXFrame.set(getXController()->getFrame()); - LOG_EVAL(openedXFrame, @"XFrame"); - } - return openedXFrame; -} - -Reference<XDispatchProvider> getXDispatchProvider() -{ - if(!openedXDispatchProvider.get()) - { - Reference<XDispatchProvider> provider(getXFrame(),UNO_QUERY); - openedXDispatchProvider.set(provider); - LOG_EVAL(openedXDispatchProvider, @"XDispatchProvider"); - } - return openedXDispatchProvider; -} - -Reference<XDispatchHelper> getXDispatchHelper() -{ - Reference<XDispatchHelper> helper = DispatchHelper::create(getXComponentContext()); - LOG_EVAL(helper, @"XDispatchHelper"); - return helper; -} - -Reference<XStorable> getXStorable() -{ - if(!openedXStorable.get()) - { - Reference<XStorable> stroable(getXModel(),UNO_QUERY); - openedXStorable.set(stroable); - LOG_EVAL(openedXStorable, @"XDispatchProvider"); - } - return openedXStorable; -} - -NSString * createFileUri(NSString * file) -{ - if(file==nil) - { - NSString * app_root_escaped = [[[NSBundle mainBundle] bundlePath] stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding]; - file = [app_root_escaped stringByAppendingPathComponent:@"test1.odt"]; - } - else - { - file = [file stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; - } - static NSString * prefix = @"file://"; - if(![file hasPrefix:prefix]) - { - return [prefix stringByAppendingString:file]; - } - return file; -} - -void postOpenUnoInitialization() -{ - getXController(); - getXSearchable(); -} - - -extern "C" -BOOL mlo_open_file(NSString* filepath) -{ - static const OUString TARGET = OU("_default"); - static const Sequence<PropertyValue> PROPS (0); - filepath = createFileUri(filepath); - NSLog(@"LO : Opening the file : %@",filepath ); - NSDate * loadStart = [NSDate date]; - getXDesktop(); - openedXComponent.set(getXComponentLoader()->loadComponentFromURL(OU([filepath UTF8String]),TARGET,0,PROPS)); - if(openedXComponent.get()) - { - NSLog(@"LO : XComponent opened succesffully. Duration: %f",[[NSDate date] timeIntervalSinceDate:loadStart]); - postOpenUnoInitialization(); - NSLog(@"LO : created document singletons"); - return YES; - } - return NO; -} - -void setLastSearch(OUString string) -{ - lastSearch = string; - lastSearchIndex = -1; - currentFindAll.clear(); -} - -void resetLastSearch() -{ - setLastSearch(OUString()); -} - -void convert(const OUString & source,NSMutableString * target) -{ - OString asOString = OUStringToOString( source, RTL_TEXTENCODING_ASCII_US ); - [target setString:[NSString stringWithUTF8String:asOString.getStr()]]; -} - -BOOL isResetSearch(NSString * toSearch) -{ - if(!toSearch || ([toSearch length] ==0)) - { - resetLastSearch(); - return YES; - } - return NO; -} - -void markFind(int searchIndex) -{ - Any currentFind= currentFindAll.get()->getByIndex(searchIndex); - getXSelectionSupplier()->select(currentFind); -} - -void markDeltaFind(int findCount,int delta) -{ - lastSearchIndex += delta; - if(lastSearchIndex == findCount) - { - lastSearchIndex=0; - } - else if(lastSearchIndex < 0) - { - lastSearchIndex = findCount-1; - } - markFind(lastSearchIndex); -} - -void markAllFinds(int findCount) -{ - for (int i = 0; i<findCount; i++) - { - markFind(i); - } -} - -void setCurrentFindAll(NSString * toSearch) -{ - const OUString current = OU([toSearch UTF8String]); - if(!lastSearch.equals(current)) - { - setLastSearch(current); - Reference<XSearchDescriptor> descriptor = getXSearchable()->createSearchDescriptor(); - descriptor->setSearchString(current); - currentFindAll.set(getXSearchable()->findAll(descriptor)); - } -} - -extern "C" -void mlo_close(void) -{ - if(openedXComponent.get()) - { - NSLog(@"Disposing of the XComponent for the opened document"); - openedXComponent->dispose(); - openedXComponent.clear(); - openedXModel.clear(); - openedXTextViewCursorSupplier.clear(); - openedXController.clear(); - openedXPageCursor.clear(); - openedXViewDataSupplier.clear(); - openedXSearchable.clear(); - openedXSelectionSupplier.clear(); - openedXFrame.clear(); - openedXDispatchProvider.clear(); - openedXStorable.clear(); - resetLastSearch(); - NSLog(@"XComponent disposed successfully"); - } -} - -long getLong(Reference<XPropertySet> & set,const OUString & name) -{ - if(set.get()) - { - return set->getPropertyValue(name).get<long>(); - } - return -666; -} - -int getInt(Reference<XPropertySet> & set,const OUString & name) -{ - return getLong(set, name); -} - -extern "C" -void mlo_fetch_view_data(NSMutableString * mutableString) -{ - Any any = getXController()->getViewData(); - OUString ou = any.get<OUString>(); - convert(ou, mutableString); -} - -extern "C" -long mlo_get_page_count() -{ - static const OUString PAGE_COUNT = OU("PageCount"); - Reference< XPropertySet > set( getXController(), UNO_QUERY ); - return getLong(set,PAGE_COUNT); -} - -extern "C" -long mlo_get_current_page() -{ - return getXPageCursor()->getPage(); -} - - -extern "C" -int mlo_find(NSString * toSearch,MLOFindSelectionType type) -{ - if(!isResetSearch(toSearch)) - { - setCurrentFindAll(toSearch); - if(currentFindAll.get()) - { - sal_Int32 count =currentFindAll.get()->getCount(); - if(count>0) - { - switch (type) - { - case MARK_ALL: - // mark all returns total count; - markAllFinds(count); - return count; - case MARK_FIRST: - // mark first returns total count - // index will be zero - markDeltaFind(count,1); - return count; - case MARK_NEXT: - // mark next returns the index - markDeltaFind(count, 1); - return lastSearchIndex; - case MARK_PREVIOUS: - // mark previous returns the last index - markDeltaFind(count, -1); - return lastSearchIndex; - } - } - } - } - return -1; -} - -extern "C" -void mlo_get_selection(NSMutableString * mutableString) -{ - OUString asOuString; - Reference<XInterface> currentSelection = getXModel()->getCurrentSelection(); - if(currentSelection.get()) - { - Reference< XIndexAccess > xIndexAccess( currentSelection, UNO_QUERY ); - if(xIndexAccess.get() && (xIndexAccess->getCount()>0)) - { - Reference< XTextRange > xTextRange(xIndexAccess->getByIndex(0),UNO_QUERY); - if(xTextRange.get()) - { - asOuString=xTextRange->getString(); - } - } - } - convert(asOuString, mutableString); -} - -extern "C" -BOOL mlo_is_document_open(void) -{ - return openedXComponent.is() ? YES : NO; -} - -extern "C" -void mlo_select_all(void) -{ - getXDispatchHelper()->executeDispatch(getXDispatchProvider(), - OUString(".uno:SelectAll"), - OUString("_self"), - 0, - Sequence<PropertyValue >()); -} - -extern "C" -void mlo_save(void) -{ - if(mlo_is_document_open()) - { - Reference<XStorable> storable =getXStorable(); - if(storable->isReadonly()) - { - NSLog(@"Cannot save changes. File is read only"); - } - else - { - storable->store(); - NSLog(@"saved changes"); - } - } -}
\ No newline at end of file |