-#ifndef __DALI_TOOLKIT_INTERNAL_TEXT_SELECTION_POPUP_H__
-#define __DALI_TOOLKIT_INTERNAL_TEXT_SELECTION_POPUP_H__
+#ifndef DALI_TOOLKIT_INTERNAL_TEXT_SELECTION_POPUP_H
+#define DALI_TOOLKIT_INTERNAL_TEXT_SELECTION_POPUP_H
/*
- * Copyright (c) 2015 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2020 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*
*/
+// EXTERNAL INCLUDES
+#include <string>
+#include <dali/public-api/actors/layer.h>
+#include <dali/public-api/object/property-map.h>
+
// INTERNAL INCLUDES
#include <dali-toolkit/public-api/controls/control-impl.h>
#include <dali-toolkit/public-api/controls/buttons/push-button.h>
-#include <dali-toolkit/public-api/controls/table-view/table-view.h>
+#include <dali-toolkit/public-api/controls/image-view/image-view.h>
+#include <dali-toolkit/devel-api/controls/table-view/table-view.h>
#include <dali-toolkit/devel-api/controls/text-controls/text-selection-popup.h>
#include <dali-toolkit/devel-api/controls/text-controls/text-selection-toolbar.h>
-// EXTERNAL INCLUDES
-#include <dali/public-api/actors/image-actor.h>
-#include <dali/public-api/actors/layer.h>
-
namespace Dali
{
namespace Internal
{
-namespace
-{
-
enum PopupCustomisations
{
POPUP_MAXIMUM_SIZE,
- POPUP_MINIMUM_SIZE,
OPTION_MAXIMUM_SIZE,
OPTION_MINIMUM_SIZE,
OPTION_DIVIDER_SIZE
};
-} // namespace
-
class TextSelectionPopup : public Control
{
public:
priority( 0u ),
name(),
caption(),
- icon(),
enabled( false )
{}
std::size_t buttonPriority,
const std::string& buttonName,
const std::string& buttonCaption,
- Dali::Image& buttonIcon,
bool buttonEnabled )
: id( buttonId ),
priority( buttonPriority ),
name( buttonName ),
caption( buttonCaption ),
- icon( buttonIcon ),
enabled( buttonEnabled )
{}
std::size_t priority;
std::string name;
std::string caption;
- Dali::Image icon;
bool enabled;
};
/**
* @brief New constructor with provided buttons to enable.
- * @param[in] buttonsToEnable bit mask of buttons to enable
* @param[in] callbackInterface The text popup callback interface which receives the button click callbacks.
* @return A handle to the TextSelectionPopup control.
*/
- static Toolkit::TextSelectionPopup New( Toolkit::TextSelectionPopup::Buttons buttonsToEnable,
- TextSelectionPopupCallbackInterface* callbackInterface );
+ static Toolkit::TextSelectionPopup New( TextSelectionPopupCallbackInterface* callbackInterface );
// Properties
*/
static Property::Value GetProperty( BaseObject* object, Property::Index index );
+ /**
+ * @copydoc Toolkit::EnableButtons
+ */
+ void EnableButtons( Toolkit::TextSelectionPopup::Buttons buttonsToEnable );
+
+ /**
+ * @copydoc Toolkit::TextSelectionPopup::RaiseAbove()
+ */
+ void RaiseAbove( Actor target );
+
+ /**
+ * @copydoc Toolkit::TextSelectionPopup::ShowPopup()
+ */
+ void ShowPopup();
+
+ /**
+ * @copydoc Toolkiut::TextSelectionPopup::HidePopup()
+ */
+ void HidePopup();
+
private: // From Control
/**
* @copydoc Control::OnInitialize()
*/
- virtual void OnInitialize();
+ void OnInitialize() override;
private: // Implementation
+ void HideAnimationFinished( Animation& animation );
+
/**
* @brief When the cut button is pressed.
* @param[in] button the button pressed
*
* @param[in] setting The setting from the PopupCustomisations enum
*/
- Size GetDimensionToCustomise( const PopupCustomisations& setting );
+ Size GetDimensionToCustomise( const PopupCustomisations& setting ) const;
/**
* @brief Sets the image for the given button of the Popup.
* @param[in] button The button the image should be used for from the Buttons Enum.
* @param[in] image The image to use.
*/
- void SetButtonImage( Toolkit::TextSelectionPopup::Buttons button, Dali::Image image );
+ void SetButtonImage( Toolkit::TextSelectionPopup::Buttons button, const std::string& image );
/**
* @brief Retrieves the image of the given button used by the popup
* @param[in] button The button to get the image from
* @return The image used for that button.
*/
- Dali::Image GetButtonImage( Toolkit::TextSelectionPopup::Buttons button );
+ const std::string& GetButtonImage( Toolkit::TextSelectionPopup::Buttons button ) const;
+
+ /**
+ * @brief Sets the image for the pressed state of a popup option.
+ *
+ * @param[in] filename The image filename to use.
+ */
+ void SetPressedImage( const std::string& filename);
+
+ /**
+ * @brief Gets the image used for the pressed state of a popup option.
+ *
+ * @return The image filename used.
+ */
+ std::string GetPressedImage() const;
void CreateOrderedListOfPopupOptions();
void AddOption( const ButtonRequirement& button, bool showDivider, bool showIcons, bool showCaption );
- std::size_t GetNumberOfEnabledOptions();
+ std::size_t GetNumberOfEnabledOptions() const;
void AddPopupOptionsToToolbar( bool showIcons, bool showCaptions );
- void CreatePopup();
+ /**
+ * Creates the background-border image
+ *
+ * @param[in] propertyMap The properties describing the background-border
+ */
+ void CreateBackgroundBorder( Property::Map& propertyMap );
/**
* Construct a new TextField.
Dali::Toolkit::TableView mTableOfButtons; // Actor which holds all the buttons, sensitivity can be set on buttons via this actor
- // Images to be used by the Popup buttons
- Image mCutIconImage;
- Image mCopyIconImage;
- Image mPasteIconImage;
- Image mClipboardIconImage;
- Image mSelectIconImage;
- Image mSelectAllIconImage;
-
- Size mMaxSize; // Maximum size of the Popup
- Size mMinSize; // Minimum size of the Popup
+ // Images paths to be used by the Popup buttons
+ std::string mCutIconImage;
+ std::string mCopyIconImage;
+ std::string mPasteIconImage;
+ std::string mClipboardIconImage;
+ std::string mSelectIconImage;
+ std::string mSelectAllIconImage;
- Size mOptionMaxSize; // Maximum size of an Option button
- Size mOptionMinSize; // Minimum size of an Option button
- Size mOptionDividerSize; // Size of divider line
+ Size mPopupMaxSize; // Maximum size of the Popup
+ Size mOptionMaxSize; // Maximum size of an Option button
+ Size mOptionMinSize; // Minimum size of an Option button
+ Size mOptionDividerSize; // Size of divider line
std::vector<ButtonRequirement> mOrderListOfButtons; // List of buttons in the order to be displayed and a flag to indicate if needed.
Toolkit::TextSelectionPopup::Buttons mEnabledButtons; // stores enabled buttons
Toolkit::TextSelectionPopupCallbackInterface* mCallbackInterface;
- Vector4 mLineColor; // Color of the line around the text input popup
- Vector4 mIconColor; // Color of the popup icon.
+ std::string mPressedImage; // Image used for the popup option when pressed.
Vector4 mPressedColor; // Color of the popup option when pressed.
+ Vector4 mDividerColor; // Color of the divider between buttons
+ Vector4 mIconColor; // Color of the popup icon.
// Priority of Options/Buttons in the Cut and Paste pop-up, higher priority buttons are displayed first, left to right.
std::size_t mSelectOptionPriority; // Position of Select Button
std::size_t mCopyOptionPriority; // Position of Copy button
std::size_t mPasteOptionPriority; // Position of Paste button
std::size_t mClipboardOptionPriority; // Position of Clipboard button
+ float mFadeInDuration; // Duration of the animation to fade in the Popup
+ float mFadeOutDuration; // Duration of the animation to fade out the Popup
bool mShowIcons:1; // Flag to show icons
bool mShowCaptions:1; // Flag to show text captions
+ bool mPopupShowing:1; // Flag to indicate Popup showing
+ bool mButtonsChanged:1; // Flag to indicate the Popup Buttons have changed
};
} // namespace Dali
-#endif // __DALI_TOOLKIT_INTERNAL_TEXT_SELECTION_POPUP_H__
+#endif // DALI_TOOLKIT_INTERNAL_TEXT_SELECTION_POPUP_H