Quellcode-Bibliothek asyncfilepicker.cxx
Sprache: C
/* -*- 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/. * * This file incorporates work covered by the following license notice: * * 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 .
*/
void AsyncPickerAction::cancel()
{
DBG_TESTSOLARMUTEX(); // if this asserts, we'd need to have an own mutex per instance
OSL_ENSURE( m_bRunning, "AsyncPickerAction::cancel: not running" ); if ( m_pView )
m_pView->CancelRunningAsyncAction();
}
void AsyncPickerAction::execute( const OUString& _rURL, const OUString& _rFilter,
sal_Int32 _nMinTimeout,
sal_Int32 _nMaxTimeout, const css::uno::Sequence< OUString >& rDenyList )
{
DBG_TESTSOLARMUTEX(); // if this asserts, we'd need to have an own mutex per instance
sal_Int32 nMinTimeout = _nMinTimeout;
sal_Int32 nMaxTimeout = _nMaxTimeout; // normalizations if ( nMinTimeout < 0 ) // if negative, this is considered as "do it synchronously"
nMinTimeout = 0; elseif ( nMinTimeout < 1000 )
nMinTimeout = 1000; if ( nMaxTimeout <= nMinTimeout )
nMaxTimeout = nMinTimeout + 30000;
acquire(); if ( ( eResult == eSuccess ) || ( eResult == eFailure ) )
{ // the handler is only called if the action could not be finished within // the given minimum time period. In case of success, we need to call it // explicitly
OnActionDone( reinterpret_cast< void* >( eResult ) );
} elseif ( eResult == eStillRunning )
{
m_bRunning = true;
m_pDialog->onAsyncOperationStarted();
}
}
IMPL_LINK( AsyncPickerAction, OnActionDone, void*, pEmptyArg, void )
{
DBG_TESTSOLARMUTEX(); // if this asserts, we'd need to have an own mutex per instance
// release once (since we acquired in |execute|), but keep alive until the // end of the method
::rtl::Reference< AsyncPickerAction > xKeepAlive( this );
release();
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.22Bemerkung:
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.