96 lines
4.5 KiB
Text
96 lines
4.5 KiB
Text
/* -*- 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 .
|
|
*/
|
|
|
|
|
|
|
|
module com { module sun { module star { module form { module component {
|
|
|
|
|
|
/** specifies the model of a control used for displaying images stored in a database.
|
|
|
|
<p>As every com::sun::star::form::DataAwareControlModel, an image control
|
|
can be bound to a database field. This means that for instance with every record change, the content
|
|
of the database field is taken, interpreted as image, and displayed in the control.<br>
|
|
Unlike other more text-based controls, it does not interpret the content of the field as text or double,
|
|
but as binary stream (see com::sun::star::sdb::XColumn::getBinaryStream()).</p>
|
|
|
|
<p>Usually, an image control model can be bound to binary columns only, namely
|
|
com::sun::star::sdbc::DataType::BINARY,
|
|
com::sun::star::sdbc::DataType::VARBINARY,
|
|
com::sun::star::sdbc::DataType::LONGVARBINARY,
|
|
com::sun::star::sdbc::DataType::OTHER,
|
|
com::sun::star::sdbc::DataType::LONGVARCHAR</p>
|
|
|
|
</p>
|
|
|
|
<p>Note that besides taking the image to be displayed from the bound field, there is another option. The
|
|
com::sun::star::awt::UnoControlImageControlModel::ImageURL property specifies
|
|
the URL of an image to be displayed. If this property is changed from outside, the respective file
|
|
is loaded and set as image source.</p>
|
|
|
|
<p>In a usual data form, the scenario will be as follows:
|
|
<ul><li>There is a DatabaseImageControl as part of the document model, which acts as
|
|
control model for a com::sun::star::form::control::ImageControl.</li>
|
|
|
|
<li>The control is a com::sun::star::awt::XImageConsumer for the
|
|
com::sun::star::awt::XImageProducer supplied by the model.</li>
|
|
|
|
<li>Whenever the form's cursor is positioned on a new record, the column the control
|
|
model is bound to is examined for a binary data stream. This stream is set as source
|
|
at the image producer, which notifies it's consumers, which leads to the control
|
|
displaying the image.</li>
|
|
|
|
<li>When the user by some interaction tells the control to contain a new image, this is
|
|
exchanged by URL. For example, implementations of the control service may allow the user
|
|
to browse for image. After this, the URL of the image is set as
|
|
com::sun::star::awt::UnoControlImageControlModel::ImageURL
|
|
property at the model.<br>
|
|
Now the control loads the image determined by the property value, and starts producing
|
|
a new data stream, which is displayed by the control (which is a consumer for this stream).<br>
|
|
From now on, the control and thus the database record counts as modified. If the cursor of the
|
|
form is moved further, the modified record is saved, means the content of the image pointed to
|
|
by com::sun::star::awt::UnoControlImageControlModel::ImageURL
|
|
is saved into the column.</li>
|
|
</ul>
|
|
</p>
|
|
*/
|
|
published service DatabaseImageControl
|
|
{
|
|
service com::sun::star::awt::UnoControlImageControlModel;
|
|
|
|
service com::sun::star::form::DataAwareControlModel;
|
|
|
|
/** supplies the caller with a com::sun::star::awt::XImageProducer.
|
|
|
|
<p>Other components can register as com::sun::star::awt::XImageConsumer
|
|
at this producer. Then they will be notified of any change in the image to be displayed.</p>
|
|
*/
|
|
interface com::sun::star::form::XImageProducerSupplier;
|
|
|
|
|
|
/** indicates if it is possible to change the image being displayed.
|
|
*/
|
|
[property] boolean ReadOnly;
|
|
|
|
};
|
|
|
|
|
|
}; }; }; }; };
|
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|