Haiku Book: Added GameSound, Shelf
Change-Id: I1377ab80e7128a5406bf9f0523564e5e7f9e9f1b Reviewed-on: https://review.haiku-os.org/c/haiku/+/8624 Reviewed-by: Adrien Destugues <[email protected]> Haiku-Format: Haiku-format Bot <[email protected]> Tested-by: Commit checker robot <[email protected]>
This commit is contained in:
committed by
Adrien Destugues
parent
a4d7ac5b5f
commit
102726ea26
@@ -0,0 +1,254 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2024 Haiku, Inc. All rights reserved.
|
||||||
|
* Distributed under the terms of the MIT License.
|
||||||
|
*
|
||||||
|
* Authors:
|
||||||
|
* cafeina, cafeina@world
|
||||||
|
*
|
||||||
|
* Corresponds to:
|
||||||
|
* headers/os/game/GameSound.h hrev58367
|
||||||
|
* src/kits/game/GameSound.cpp hrev58367
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\file GameSound.h
|
||||||
|
\ingroup game
|
||||||
|
\ingroup libbe
|
||||||
|
\brief Provides the BGameSound base class.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\class BGameSound
|
||||||
|
\ingroup game
|
||||||
|
\ingroup libbe
|
||||||
|
\brief BGameSound is the base class used in the other sound classes in
|
||||||
|
the kit.
|
||||||
|
|
||||||
|
This class is not meant to be used directly. Any of the derived classes
|
||||||
|
should be used instead.
|
||||||
|
|
||||||
|
\since BeOS R4.5
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn BGameSound::BGameSound(BGameSoundDevice* device = NULL)
|
||||||
|
\brief Creates a BGameSound object.
|
||||||
|
|
||||||
|
The \a device parameter is currently unused and has to be defined as \c NULL.
|
||||||
|
Currently the class itself will retrieve the default device.
|
||||||
|
|
||||||
|
\param[in] device The sound device to be used.
|
||||||
|
|
||||||
|
\since BeOS R4.5
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn virtual BGameSound::~BGameSound()
|
||||||
|
\brief Destroys the BGameSound object and frees the memory it uses.
|
||||||
|
|
||||||
|
It releases any buffer connected to the game sound device and then
|
||||||
|
releases the device itself.
|
||||||
|
|
||||||
|
\since BeOS R4.5
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn virtual BGameSound* BGameSound::Clone() = 0
|
||||||
|
\brief Pure virtual method to create a copy of the BGameSound object.
|
||||||
|
|
||||||
|
\since BeOS R4.5
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn status_t BGameSound::InitCheck() const
|
||||||
|
\brief Verifies if the BGameSound object was successfully initialized.
|
||||||
|
|
||||||
|
\since BeOS R4.5
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn BGameSoundDevice* BGameSound::Device() const
|
||||||
|
\brief Returns a pointer to the sound playback device.
|
||||||
|
|
||||||
|
\since BeOS R4.5
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn gs_id BGameSound::ID() const
|
||||||
|
\brief Returns the identifier of the sound associated with the BGameSound
|
||||||
|
object.
|
||||||
|
|
||||||
|
\since BeOS R4.5
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn const gs_audio_format& BGameSound::Format() const
|
||||||
|
\brief Returns a gs_audio_format struct instance with the format of the sound
|
||||||
|
associated with the BGameSound object.
|
||||||
|
|
||||||
|
\since BeOS R4.5
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\name Playback
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
//! @{
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn virtual status_t BGameSound::StartPlaying()
|
||||||
|
\brief Plays the sound in the playback device.
|
||||||
|
|
||||||
|
\retval B_OK Playback started successfully.
|
||||||
|
|
||||||
|
\since BeOS R4.5
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn virtual bool BGameSound::IsPlaying()
|
||||||
|
\brief Checks whether the sound is being played or not in the playback
|
||||||
|
device.
|
||||||
|
|
||||||
|
\retval true The sound is currently being played.
|
||||||
|
\retval false The sound is not being played.
|
||||||
|
|
||||||
|
\since BeOS R4.5
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn virtual status_t BGameSound::StopPlaying()
|
||||||
|
\brief Stops the playback of a sound currently playing.
|
||||||
|
|
||||||
|
\retval B_OK The sound stopped playing.
|
||||||
|
|
||||||
|
\since BeOS R4.5
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
//! @}
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\name Sound Attributes
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
//! @{
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn status_t BGameSound::SetGain(float gain, bigtime_t duration = 0)
|
||||||
|
\brief Sets the gain of the sound, that is, the amount of amplification of the
|
||||||
|
input signal.
|
||||||
|
|
||||||
|
The \a gain is represented as a proportion, from 0.0 as the lowest to 1.0 as
|
||||||
|
the highest level of gain.
|
||||||
|
|
||||||
|
A non-zero \a duration makes the transition from the current gain to the new
|
||||||
|
gain take place over time in the amount set (in microseconds). If it is \c 0,
|
||||||
|
the change occurs immediately instead.
|
||||||
|
|
||||||
|
\param[in] gain Level of sound gain.
|
||||||
|
\param[in] duration Duration of transition from the older gain level to the
|
||||||
|
newer level.
|
||||||
|
|
||||||
|
\retval B_OK The gain was applied successfully.
|
||||||
|
\retval B_BAD_VALUE An out-of-bounds value for the gain was provided
|
||||||
|
(not being 0.0 <= gain <= 1.0).
|
||||||
|
|
||||||
|
\since BeOS R4.5
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn status_t BGameSound::SetPan(float pan, bigtime_t duration = 0)
|
||||||
|
\brief Sets the panning of the sound, that is, the distribution of the audio
|
||||||
|
signal anywhere in the stereophonic sound field.
|
||||||
|
|
||||||
|
A value of \a pan of -1.0 sets the sound at the most left side, 0.0 at the
|
||||||
|
front, and 1.0 at the most right side.
|
||||||
|
|
||||||
|
A non-zero \a duration makes the transition from the current pan to the new
|
||||||
|
pan take place over time in the amount set (in microseconds). If it is \c 0,
|
||||||
|
the change occurs immediately instead.
|
||||||
|
|
||||||
|
\param[in] pan Level of panning.
|
||||||
|
\param[in] duration Duration of transition from the older panning value to
|
||||||
|
the newer value.
|
||||||
|
|
||||||
|
\retval B_OK The pan was applied successfully.
|
||||||
|
\retval B_ERROR The BGameSound's sound was not initialized.
|
||||||
|
\retval B_BAD_VALUE An out-of-bounds value for the pan was provided
|
||||||
|
(not being -1.0 <= pan <= 1.0).
|
||||||
|
|
||||||
|
\since BeOS R4.5
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn float BGameSound::Gain()
|
||||||
|
\brief Retrieves the current level of gain of the sound.
|
||||||
|
|
||||||
|
If there is no sound initialized, by default it returns 0.0.
|
||||||
|
|
||||||
|
\since BeOS R4.5
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn float BGameSound::Pan()
|
||||||
|
\brief Retrieves the current value of panning of the sound.
|
||||||
|
|
||||||
|
If there is no sound initialized, by default it returns 0.0.
|
||||||
|
|
||||||
|
\since BeOS R4.5
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn virtual status_t BGameSound::SetAttributes(gs_attribute* attributes, size_t attributeCount)
|
||||||
|
\brief Sets the attributes for the current sound.
|
||||||
|
|
||||||
|
\param[in] attributes An array of the group of attributes to be applied to the
|
||||||
|
sound.
|
||||||
|
\param[in] attributeCount The number of those attributes.
|
||||||
|
|
||||||
|
\retval B_OK The attributes were applied successfully, or no error.
|
||||||
|
\retval B_ERROR The BGameSound's sound was not initialized.
|
||||||
|
\retval others Depending on the type of attribute.
|
||||||
|
|
||||||
|
\since BeOS R4.5
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn virtual status_t BGameSound::GetAttributes(gs_attribute* attributes, size_t attributeCount)
|
||||||
|
\brief Retrieves the attributes of the current sound.
|
||||||
|
|
||||||
|
\a attributes is a pre-allocated array of gs_attribute structures, with the
|
||||||
|
"attribute" field of each one pre-filled with the desired attribute's
|
||||||
|
identifier, for which the information is going to be retrieved.
|
||||||
|
|
||||||
|
\param[out] attributes The gs_attribute list where to save the attributes.
|
||||||
|
\param[in] attributeCount The number of items in the \a attributes list.
|
||||||
|
|
||||||
|
\retval B_OK The attributes were retrieved successfully.
|
||||||
|
\retval B_ERROR The BGameSound's sound was not initialized.
|
||||||
|
|
||||||
|
\since BeOS R4.5
|
||||||
|
*/
|
||||||
|
|
||||||
@@ -0,0 +1,561 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2024 Haiku, Inc. All rights reserved.
|
||||||
|
* Distributed under the terms of the MIT License.
|
||||||
|
*
|
||||||
|
* Authors:
|
||||||
|
* cafeina, cafeina@world
|
||||||
|
*
|
||||||
|
* Corresponds to:
|
||||||
|
* headers/os/interface/Shelf.h hrev58367
|
||||||
|
* src/kits/interface/Shelf.cpp hrev58367
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\file Shelf.h
|
||||||
|
\ingroup interface
|
||||||
|
\ingroup libbe
|
||||||
|
\brief BShelf class definition.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\class BShelf
|
||||||
|
\ingroup interface
|
||||||
|
\ingroup libbe
|
||||||
|
\brief A container attached to a BView that accepts BDragger objects
|
||||||
|
(replicants).
|
||||||
|
|
||||||
|
A BShelf object creates a container where to store BDragger
|
||||||
|
objects, also known as "replicants". When the user drops a replicant
|
||||||
|
on the shelf, or a shelf is loaded from an archived message, it will
|
||||||
|
load and display it as a child object. Once created, it could
|
||||||
|
either save the replicant's data in a filesystem entry or in a
|
||||||
|
BDataIO data stream and retrieve the data from either source to display the
|
||||||
|
replicant.
|
||||||
|
|
||||||
|
During the construction, or afterwards with SetAllowsDragging(), it
|
||||||
|
can be configured to allow or disallow to accept the replicants
|
||||||
|
dropped by the user onto the shelf. This behavior can be queried by
|
||||||
|
calling the method AllowsDragging().
|
||||||
|
|
||||||
|
The \a shelfType parameter from the constructors allows the shelf to
|
||||||
|
have a filter-like system. This is reflected in the archived field
|
||||||
|
\c shelf_type. In this way, the shelf could reject any replicant
|
||||||
|
whose shelf type does not match shelf's type, or the other way around.
|
||||||
|
But the shelf accepts by default the replicants without a type (and
|
||||||
|
a shelf without a type could also accept any kind of replicants, as
|
||||||
|
long as they do not reject it). However, this behavior can be disabled
|
||||||
|
by using the type enforcement with SetTypeEnforced(), allowing the
|
||||||
|
shelf to reject any replicant strictly without the same type of the shelf.
|
||||||
|
The state of this behavior can be queried with IsTypeEnforced().
|
||||||
|
|
||||||
|
When a replicant was unable to be loaded, a "zombie view" could be
|
||||||
|
deployed instead. "Zombie views" are placeholder views that are deployed
|
||||||
|
in place of a replicant whose application of origin cannot be found.
|
||||||
|
This behavior can be modified to disable the generation of zombie views
|
||||||
|
with SetAllowsZombies(), or to hide them with SetDisplayZombies().
|
||||||
|
AllowsZombies() and DisplaysZombies() queries the state of any of those
|
||||||
|
behaviors.
|
||||||
|
|
||||||
|
This class supports the standard scripting protocol.
|
||||||
|
|
||||||
|
\since BeOS R3
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn BShelf::BShelf(BView* view, bool allowDrags = true,
|
||||||
|
const char* shelfType = NULL)
|
||||||
|
\brief Creates a BShelf object that is attached to a view.
|
||||||
|
|
||||||
|
\param[in] view The container BView.
|
||||||
|
\param[in] allowDrags Specifies if the shelf accepts replicants dragged
|
||||||
|
to it by the user or not.
|
||||||
|
\param[in] shelfType Specifies a filter-like name for the object's
|
||||||
|
underlying BHandler. This can be used to reject BDragger objects
|
||||||
|
whose names does not match shelfType.
|
||||||
|
|
||||||
|
\since BeOS R3
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn BShelf::BShelf(const entry_ref* ref, BView* view,
|
||||||
|
bool allowDrags = true,
|
||||||
|
const char* shelfType = NULL)
|
||||||
|
\brief Creates a BShelf object that is attached to a view, and sets
|
||||||
|
\a ref as the source from where to load the archived BDragger objects
|
||||||
|
and where to save them.
|
||||||
|
|
||||||
|
\param[in] ref The filesystem entry from where the archived BDragger objects
|
||||||
|
will be loaded during the initialization and saved.
|
||||||
|
\param[in] view The container BView.
|
||||||
|
\param[in] allowDrags Specifies if the shelf accepts replicants dragged
|
||||||
|
to it by the user or not.
|
||||||
|
\param[in] shelfType Specifies a filter-like name for the object's
|
||||||
|
underlying BHandler. This can be used to reject BDragger objects
|
||||||
|
whose names does not match shelfType.
|
||||||
|
|
||||||
|
\since BeOS R3
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn BShelf::BShelf(BDataIO* stream, BView* view,
|
||||||
|
bool allowDrags = true,
|
||||||
|
const char* shelfType = NULL)
|
||||||
|
\brief Creates a BShelf object that is attached to a view, and sets
|
||||||
|
\a stream as the data stream source from where to load the archived
|
||||||
|
BDragger objects and where to save them.
|
||||||
|
|
||||||
|
\param[in] stream The data stream from where the archived BDragger objects
|
||||||
|
will be loaded during the initialization and saved.
|
||||||
|
\param[in] view The container BView.
|
||||||
|
\param[in] allowDrags Specifies if the shelf accepts replicants dragged
|
||||||
|
to it by the user or not.
|
||||||
|
\param[in] shelfType Specifies a filter-like name for the object's
|
||||||
|
underlying BHandler. This can be used to reject BDragger objects
|
||||||
|
whose names does not match shelfType.
|
||||||
|
|
||||||
|
\since BeOS R3
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn BShelf::BShelf(BMessage* archive)
|
||||||
|
\brief Unimplemented.
|
||||||
|
|
||||||
|
\since BeOS R3
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn virtual BShelf::~BShelf()
|
||||||
|
\brief The destructor calls Save(), frees the data sources and replicant
|
||||||
|
data of the replicants and detaches itself from the container BView.
|
||||||
|
|
||||||
|
\since BeOS R3
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\name Archiving
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
//! @{
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn BArchivable* BShelf::Instantiate(BMessage* archive)
|
||||||
|
\brief Unimplemented.
|
||||||
|
|
||||||
|
\since BeOS R3
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn status_t BShelf::Archive(BMessage* archive, bool deep = true) const
|
||||||
|
\brief Unimplemented.
|
||||||
|
|
||||||
|
\since BeOS R3
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
//! @}
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn void BShelf::MessageReceived(BMessage* message)
|
||||||
|
\brief Handle \a message received by the associated looper.
|
||||||
|
|
||||||
|
\param message The \a message received by the associated looper.
|
||||||
|
|
||||||
|
\sa BHandler::MessageReceived()
|
||||||
|
|
||||||
|
\since BeOS R3
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn status_t BShelf::Save()
|
||||||
|
\brief Saves the BShelf contents as an archived BMessage into a filesystem
|
||||||
|
entry or BDataIO stream if any of them were specified with the
|
||||||
|
constructor.
|
||||||
|
|
||||||
|
In case there was not a data destination specified with the constructor, it
|
||||||
|
can be set with SetSaveLocation().
|
||||||
|
|
||||||
|
\return A status code.
|
||||||
|
\retval B_OK The operation was performed successfully.
|
||||||
|
\retval B_ERROR The archiving operation failed, or there was not any
|
||||||
|
data destination specified.
|
||||||
|
|
||||||
|
\since BeOS R3
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn void BShelf::SetDirty(bool state)
|
||||||
|
\brief Sets the "dirty" state flag. This flag is used by the application and
|
||||||
|
is also automatically applied when the save location is changed.
|
||||||
|
|
||||||
|
\param state \c true to set it as "dirty", or \c false to remove the flag.
|
||||||
|
|
||||||
|
\sa IsDirty()
|
||||||
|
|
||||||
|
\since BeOS R3
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn bool BShelf::IsDirty() const
|
||||||
|
\brief Retrieves the "dirty" flag status of the shelf.
|
||||||
|
|
||||||
|
\return \c true if the shelf is "dirty", or \c false otherwise.
|
||||||
|
|
||||||
|
\sa SetDirty(bool)
|
||||||
|
|
||||||
|
\since BeOS R3
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn status_t BShelf::GetSupportedSuites(BMessage* data)
|
||||||
|
\brief Report the suites of messages this control understands.
|
||||||
|
|
||||||
|
Adds the string "suite/vnd.Be-shelf" to the message.
|
||||||
|
|
||||||
|
\sa BHandler::GetSupportedSuites()
|
||||||
|
|
||||||
|
\since BeOS R3
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn bool BShelf::AllowsDragging() const
|
||||||
|
\brief Check if the user is able to drag replicants to the shelf.
|
||||||
|
|
||||||
|
\return \c true if the shelf accepts the replicants dragged into it,
|
||||||
|
or \c false otherwise.
|
||||||
|
|
||||||
|
\since BeOS R3
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn void BShelf::SetAllowsDragging(bool state)
|
||||||
|
\brief Allows or disallows the shelf to accept the replicants dragged
|
||||||
|
into it by the user.
|
||||||
|
|
||||||
|
\param[in] state \c true to allow dragging, or \c false to disallow it.
|
||||||
|
|
||||||
|
\since BeOS R3
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn bool BShelf::AllowsZombies() const
|
||||||
|
\brief Checks if zombie views are allowed in the shelf.
|
||||||
|
|
||||||
|
\return \c true if the shelf allows zombie views, or \c false otherwise.
|
||||||
|
|
||||||
|
\since BeOS R3
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn void BShelf::SetAllowsZombies(bool state)
|
||||||
|
\brief Sets the shelf to allow zombie views or not.
|
||||||
|
|
||||||
|
\param state \c true if zombie views are allowed, or \c false otherwise.
|
||||||
|
|
||||||
|
\since BeOS R3
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn bool BShelf::DisplaysZombies() const
|
||||||
|
\brief Checks if zombie views are displayed on the shelf.
|
||||||
|
|
||||||
|
\return \c true if the shelf displays zombie views, or \c false otherwise.
|
||||||
|
|
||||||
|
\since BeOS R3
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn void BShelf::SetDisplaysZombies(bool state)
|
||||||
|
\brief Sets the shelf to display zombie views or not.
|
||||||
|
|
||||||
|
\param state \c true if zombie views are displayed, or \c false otherwise.
|
||||||
|
|
||||||
|
\since BeOS R3
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn bool BShelf::IsTypeEnforced() const
|
||||||
|
\brief Checks if the shelf enforces the type or not.
|
||||||
|
|
||||||
|
\return \c true if the shelf enforces the type filtering,
|
||||||
|
or \c false otherwise.
|
||||||
|
|
||||||
|
\since BeOS R3
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn void BShelf::SetTypeEnforced(bool state)
|
||||||
|
\brief Sets the type enforcement flag.
|
||||||
|
|
||||||
|
\param state \c true to enforce the type and reject replicants
|
||||||
|
without the same type, or \c false to disable the enforcement.
|
||||||
|
|
||||||
|
\since BeOS R3
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn status_t BShelf::SetSaveLocation(BDataIO* stream)
|
||||||
|
\brief Configures the save location of the shelf data to \a stream.
|
||||||
|
|
||||||
|
It also sets the "dirty" flag.
|
||||||
|
|
||||||
|
\retval B_OK The save location was set to \a stream.
|
||||||
|
|
||||||
|
\since BeOS R3
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn status_t BShelf::SetSaveLocation(const entry_ref* ref)
|
||||||
|
\brief Configures the save location of the shelf data to \a ref.
|
||||||
|
|
||||||
|
It also sets the "dirty" flag.
|
||||||
|
|
||||||
|
\retval B_OK The save location was set to \a ref.
|
||||||
|
|
||||||
|
\since BeOS R3
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn BDataIO* BShelf::SaveLocation(entry_ref* ref) const
|
||||||
|
\brief Retrieves the save location for the shelf data.
|
||||||
|
|
||||||
|
If \a ref is not \c NULL, there it will be saved an entry_ref of the saving
|
||||||
|
location.
|
||||||
|
|
||||||
|
\return A BDataIO stream where the shelf data is saved, or \c NULL if the
|
||||||
|
saving location does not translate into a BDataIO.
|
||||||
|
|
||||||
|
\since BeOS R3
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn status_t BShelf::AddReplicant(BMessage* archive, BPoint location)
|
||||||
|
\brief Adds a replicant whose data is in \a archive to the shelf
|
||||||
|
in \a location.
|
||||||
|
|
||||||
|
This method is automatically called when a replicant is dropped on
|
||||||
|
the shelf.
|
||||||
|
|
||||||
|
If type enforcement is enabled, the replicant must have the same type,
|
||||||
|
otherwise it will be rejected.
|
||||||
|
|
||||||
|
\param archive The archive data from where the replicant information is
|
||||||
|
retrieved.
|
||||||
|
\param location The place where the replicant was dropped on the shelf.
|
||||||
|
|
||||||
|
\return A status code.
|
||||||
|
\retval B_ERROR One of these happened: \n- the replicant's type and
|
||||||
|
shelf's type does not match; \n- the replicant data was rejected by
|
||||||
|
CanAcceptReplicantMessage(); \n- the replicant only allows a unique
|
||||||
|
instance and there is already an instance of the replicant on the shelf;
|
||||||
|
\n- the object could not be instantiated and the archive did not
|
||||||
|
contain an instantiated BView; \n- the replicant could not be loaded, and
|
||||||
|
the creation of a zombie view was disabled.
|
||||||
|
\retval B_OK The replicant was added successfully.
|
||||||
|
|
||||||
|
\since BeOS R3
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn status_t BShelf::DeleteReplicant(BView* replicant)
|
||||||
|
\brief Removes the replicant referred by the \a replicant BView.
|
||||||
|
|
||||||
|
\param[in] replicant The view identified by the \a replicant BView.
|
||||||
|
|
||||||
|
\return A status code.
|
||||||
|
\retval B_OK The replicant was removed successfully.
|
||||||
|
\retval B_BAD_VALUE There is no replicant identified by such BView.
|
||||||
|
|
||||||
|
\since BeOS R3
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn status_t BShelf::DeleteReplicant(BMessage* archive)
|
||||||
|
\brief Removes the replicant identified by the \a archive
|
||||||
|
replicant message.
|
||||||
|
|
||||||
|
\param[in] archive The replicant's data archive of reference.
|
||||||
|
|
||||||
|
\return A status code.
|
||||||
|
\retval B_OK The replicant was removed successfully.
|
||||||
|
\retval B_BAD_VALUE There is no replicant identified by such message.
|
||||||
|
|
||||||
|
\since BeOS R3
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn status_t BShelf::DeleteReplicant(int32 index)
|
||||||
|
\brief Removes the replicant identified by \a index.
|
||||||
|
|
||||||
|
\param[in] index The replicant's index number.
|
||||||
|
|
||||||
|
\return A status code.
|
||||||
|
\retval B_OK The replicant was removed successfully.
|
||||||
|
\retval B_BAD_INDEX There is no replicant identified by such index.
|
||||||
|
|
||||||
|
\since BeOS R3
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn int32 BShelf::CountReplicants() const
|
||||||
|
\brief Tells the number of replicants currently contained by the shelf.
|
||||||
|
|
||||||
|
\return The number of attached replicants.
|
||||||
|
|
||||||
|
\since BeOS R3
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn BMessage* BShelf::ReplicantAt(int32 index, BView** view = NULL,
|
||||||
|
uint32* uid = NULL,
|
||||||
|
status_t* perr = NULL) const
|
||||||
|
\brief Retrieves the replicant data referenced by its \a index.
|
||||||
|
|
||||||
|
\param[in] index The replicant index.
|
||||||
|
\param[out] view If not \c NULL, returns the respective BView of
|
||||||
|
the replicant at \a index, or \c NULL otherwise.
|
||||||
|
\param[out] uid If not \c NULL, returns the unique identifier of
|
||||||
|
the replicant at \a index, or \code ~(uint32)0 \endcode
|
||||||
|
(maximum value of an unsigned integer) otherwise.
|
||||||
|
\param[out] perr If not \c NULL, returns the replicant's current
|
||||||
|
status code (usually B_OK if everything is OK), or
|
||||||
|
\c B_BAD_INDEX otherwise.
|
||||||
|
|
||||||
|
\return A replicant's data message, or NULL if there is not a
|
||||||
|
replicant at such \a index.
|
||||||
|
|
||||||
|
\since BeOS R3
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn int32 BShelf::IndexOf(const BView* replicantView) const
|
||||||
|
\brief Returns the index of a replicant identified by its
|
||||||
|
\a replicantView view.
|
||||||
|
|
||||||
|
\param[in] replicantView The replicant's BView.
|
||||||
|
|
||||||
|
\return The index of the specified replicant, or \c -1 if
|
||||||
|
it does not exist.
|
||||||
|
|
||||||
|
\since BeOS R3
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn int32 BShelf::IndexOf(const BMessage* archive) const
|
||||||
|
\brief Returns the index of a replicant identified by its
|
||||||
|
\a archive replicant message.
|
||||||
|
|
||||||
|
\param[in] archive The replicant's message archive.
|
||||||
|
|
||||||
|
\return The index of the specified replicant, or \c -1 if
|
||||||
|
it does not exist.
|
||||||
|
|
||||||
|
\since BeOS R3
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn int32 BShelf::IndexOf(uint32 id) const
|
||||||
|
\brief Returns the index of a replicant identified by its
|
||||||
|
unique identifier \a id.
|
||||||
|
|
||||||
|
\param[in] id The replicant's unique identifier.
|
||||||
|
|
||||||
|
\return The index of the specified replicant, or \c -1 if
|
||||||
|
it does not exist.
|
||||||
|
|
||||||
|
\since BeOS R3
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn bool BShelf::CanAcceptReplicantMessage(BMessage* archive) const
|
||||||
|
\brief Determines if the \a archive message where the replicant should
|
||||||
|
be contained is formatted as expected.
|
||||||
|
|
||||||
|
It is called during the execution of AddReplicant().
|
||||||
|
|
||||||
|
An undesired format of the message makes it to return to false and
|
||||||
|
discard it.
|
||||||
|
|
||||||
|
\param[in] archive The replicant's message.
|
||||||
|
|
||||||
|
\retval true The replicant was accepted.
|
||||||
|
\retval false The replicant was rejected.
|
||||||
|
|
||||||
|
\since BeOS R3
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn bool BShelf::CanAcceptReplicantView(BRect rect,
|
||||||
|
BView* view, BMessage* archive) const
|
||||||
|
\brief Determines whether the replicant's view is accepted or rejected.
|
||||||
|
|
||||||
|
It is called during the execution of AddReplicant().
|
||||||
|
|
||||||
|
If the view has not been accepted, the replicant will be rejected.
|
||||||
|
|
||||||
|
\param[in] rect The rect that the replicant will occupy on the shelf.
|
||||||
|
\param[in] view The replicant's view.
|
||||||
|
\param[in] archive The replicant's archived message.
|
||||||
|
|
||||||
|
\retval true The replicant was accepted.
|
||||||
|
\retval false The replicant was rejected.
|
||||||
|
|
||||||
|
\since BeOS R3
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn BPoint BShelf::AdjustReplicantBy(BRect rect, BMessage* archive) const
|
||||||
|
\brief Adjusts the replicant's location to fit the rect in the shelf.
|
||||||
|
|
||||||
|
Called upon a replicant was dropped on the shelf.
|
||||||
|
|
||||||
|
\since BeOS R3
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
\fn void BShelf::ReplicantDeleted(int32 index,
|
||||||
|
const BMessage* archive,
|
||||||
|
const BView *replicant)
|
||||||
|
\brief Unimplemented.
|
||||||
|
|
||||||
|
\since BeOS R3
|
||||||
|
*/
|
||||||
Reference in New Issue
Block a user