/* -*- 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 .
*/
/** abstract base class for implementing UNO objects representing asynchronous dialogs
Contrary to StartExecuteAsync in VclAbstractDialog from include/vcl/abstdlg.hxx, the different methods are used in a special case when an import or export action wants to show a dialog, as part of a synchronous filter() API call.
In this case it's not possible to move the "rest of the code" to an async callback, so that needs special handling. Luckily these dialogs are rather rare.
*/ template <typename T> class OGenericUnoAsyncDialog : public OGenericUnoAsyncDialogBase
{ class UnoAsyncDialogEntryGuard
{ public:
UnoAsyncDialogEntryGuard(OGenericUnoAsyncDialog<T>& _rDialog)
: m_aGuard(_rDialog.GetMutex())
{
}
if (m_bExecuting) throw RuntimeException("already executing the dialog (recursive call)", *this);
if (!m_xAsyncDialog)
{
m_xAsyncDialog = createAsyncDialog(m_xParent);
OSL_ENSURE(m_xAsyncDialog, "OGenericUnoAsyncDialog::startExecuteModal: " "createAsyncDialog returned nonsense!"); if (!m_xAsyncDialog) return;
// do some initialisations if (!m_bTitleAmbiguous)
m_xAsyncDialog->set_title(m_sTitle);
}
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.