1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
|
/************************************************************************
*
* Copyright (C) 2017-2024 IRCAD France
* Copyright (C) 2017-2019 IHU Strasbourg
*
* This file is part of Sight.
*
* Sight is free software: you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Sight is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with Sight. If not, see <https://www.gnu.org/licenses/>.
*
***********************************************************************/
#pragma once
#include <activity/extension/activity.hpp>
#include <app/config_manager.hpp>
#include <core/tools/failed.hpp>
#include <data/activity.hpp>
#include <ui/__/activity_view.hpp>
namespace sight::module::ui::qt::activity
{
/**
* @brief This editor displays activities in a single view (when a new activity is launched, it replaces the previous
* one).
*
* This service should receive signals containing Activity connected to the slot \b launch_activity.
*
* @section Signals Signals
* - \b activity_launched( data::activity::sptr ): signal emitted when the activity is launched
*
* @section Slots Slots
* - \b launch_activity( data::activity::sptr ): this slot allows to create a view for the given activity
*
* @section XML XML Configuration
* @code{.xml}
<service type="sight::module::ui::qt::activity::view" auto_connect="true" >
<mainActivity id="Activity" />
<parameters>
<parameter replace="activitySet" by="medicalActivity" />
<parameter replace="ICON_PATH" by="sight::module::ui::icons/app.ico" />
</parameters>
</service>
@endcode
* - \b mainActivity (optional): information about the main activity. The activity will be generated.
* This activity must not have requirement.
* - \b id : identifier of the activity
* - \b parameters (optional) : additional parameters used to launch the activities
* - \b parameter: defines a parameter
* - \b replace: name of the parameter as defined in the config
* - \b by: defines the string that will replace the parameter name.
*
* @subsection Configuration Configuration
* - \b border (optional, default="-1"): contents margins of the layout.
*/
class view : public sight::ui::activity_view
{
public:
SIGHT_DECLARE_SERVICE(view, sight::ui::activity_view);
/// Constructor. Do nothing.
view();
/// Destructor. Do nothing.
~view() override;
/**
* @name Signal API
* @{
*/
using activity_launched_signal_t = core::com::signal<void (data::activity::sptr)>;
/**
* @}
*/
protected:
/// Configures the service.
void configuring() final;
/// Install the container.
void starting() override;
/// Destroy the container.
void stopping() override;
/// Do nothing
void updating() override;
private:
/**
* @brief Slot: Launch the given activity in the current view (stop and destroy the previous one).
*/
void launch_activity(data::activity::sptr _activity) override;
/// Helper to launch activity configuration
sight::app::config_manager::sptr m_config_manager;
/// WID used to register the activity container
std::string m_wid;
activity_launched_signal_t::sptr m_sig_activity_launched;
/// Contents margins of the layout.
int m_border {-1};
};
} // namespace sight::module::ui::qt::activity
|