diff options
author | Ansariel <ansariel.hiller@phoenixviewer.com> | 2024-05-22 19:04:52 +0200 |
---|---|---|
committer | Ansariel <ansariel.hiller@phoenixviewer.com> | 2024-05-22 19:04:52 +0200 |
commit | 1b67dd855c41f5a0cda7ec2a68d98071986ca703 (patch) | |
tree | ab243607f74f78200787bba5b9b88f07ef1b966f /indra/newview/lltoast.h | |
parent | 6d6eabca44d08d5b97bfe3e941d2b9687c2246ea (diff) | |
parent | e1623bb276f83a43ce7a197e388720c05bdefe61 (diff) |
Merge remote-tracking branch 'origin/main' into DRTVWR-600-maint-A
# Conflicts:
# autobuild.xml
# indra/cmake/CMakeLists.txt
# indra/cmake/GoogleMock.cmake
# indra/llaudio/llaudioengine_fmodstudio.cpp
# indra/llaudio/llaudioengine_fmodstudio.h
# indra/llaudio/lllistener_fmodstudio.cpp
# indra/llaudio/lllistener_fmodstudio.h
# indra/llaudio/llstreamingaudio_fmodstudio.cpp
# indra/llaudio/llstreamingaudio_fmodstudio.h
# indra/llcharacter/llmultigesture.cpp
# indra/llcharacter/llmultigesture.h
# indra/llimage/llimage.cpp
# indra/llimage/llimagepng.cpp
# indra/llimage/llimageworker.cpp
# indra/llimage/tests/llimageworker_test.cpp
# indra/llmessage/tests/llmockhttpclient.h
# indra/llprimitive/llgltfmaterial.h
# indra/llrender/llfontfreetype.cpp
# indra/llui/llcombobox.cpp
# indra/llui/llfolderview.cpp
# indra/llui/llfolderviewmodel.h
# indra/llui/lllineeditor.cpp
# indra/llui/lllineeditor.h
# indra/llui/lltextbase.cpp
# indra/llui/lltextbase.h
# indra/llui/lltexteditor.cpp
# indra/llui/lltextvalidate.cpp
# indra/llui/lltextvalidate.h
# indra/llui/lluictrl.h
# indra/llui/llview.cpp
# indra/llwindow/llwindowmacosx.cpp
# indra/newview/app_settings/settings.xml
# indra/newview/llappearancemgr.cpp
# indra/newview/llappearancemgr.h
# indra/newview/llavatarpropertiesprocessor.cpp
# indra/newview/llavatarpropertiesprocessor.h
# indra/newview/llbreadcrumbview.cpp
# indra/newview/llbreadcrumbview.h
# indra/newview/llbreastmotion.cpp
# indra/newview/llbreastmotion.h
# indra/newview/llconversationmodel.h
# indra/newview/lldensityctrl.cpp
# indra/newview/lldensityctrl.h
# indra/newview/llface.inl
# indra/newview/llfloatereditsky.cpp
# indra/newview/llfloatereditwater.cpp
# indra/newview/llfloateremojipicker.h
# indra/newview/llfloaterimsessiontab.cpp
# indra/newview/llfloaterprofiletexture.cpp
# indra/newview/llfloaterprofiletexture.h
# indra/newview/llgesturemgr.cpp
# indra/newview/llgesturemgr.h
# indra/newview/llimpanel.cpp
# indra/newview/llimpanel.h
# indra/newview/llinventorybridge.cpp
# indra/newview/llinventorybridge.h
# indra/newview/llinventoryclipboard.cpp
# indra/newview/llinventoryclipboard.h
# indra/newview/llinventoryfunctions.cpp
# indra/newview/llinventoryfunctions.h
# indra/newview/llinventorygallery.cpp
# indra/newview/lllistbrowser.cpp
# indra/newview/lllistbrowser.h
# indra/newview/llpanelobjectinventory.cpp
# indra/newview/llpanelprofile.cpp
# indra/newview/llpanelprofile.h
# indra/newview/llpreviewgesture.cpp
# indra/newview/llsavedsettingsglue.cpp
# indra/newview/llsavedsettingsglue.h
# indra/newview/lltooldraganddrop.cpp
# indra/newview/llurllineeditorctrl.cpp
# indra/newview/llvectorperfoptions.cpp
# indra/newview/llvectorperfoptions.h
# indra/newview/llviewerparceloverlay.cpp
# indra/newview/llviewertexlayer.cpp
# indra/newview/llviewertexturelist.cpp
# indra/newview/macmain.h
# indra/test/test.cpp
Diffstat (limited to 'indra/newview/lltoast.h')
-rw-r--r-- | indra/newview/lltoast.h | 512 |
1 files changed, 256 insertions, 256 deletions
diff --git a/indra/newview/lltoast.h b/indra/newview/lltoast.h index 9c9b623faa..46aac3859e 100644 --- a/indra/newview/lltoast.h +++ b/indra/newview/lltoast.h @@ -1,256 +1,256 @@ -/** - * @file lltoast.h - * @brief This class implements a placeholder for any notification panel. - * - * $LicenseInfo:firstyear=2003&license=viewerlgpl$ - * Second Life Viewer Source Code - * Copyright (C) 2010, Linden Research, Inc. - * - * This library 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; - * version 2.1 of the License only. - * - * This library 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 this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * - * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA - * $/LicenseInfo$ - */ - -#ifndef LL_LLTOAST_H -#define LL_LLTOAST_H - -#include "llinstancetracker.h" -#include "llpanel.h" -#include "llmodaldialog.h" -#include "lleventtimer.h" -#include "llnotificationptr.h" - -#include "llviewercontrol.h" -#include "lltexteditor.h" -#include <memory> - -#define MOUSE_LEAVE false -#define MOUSE_ENTER true - -namespace LLNotificationsUI -{ - -class LLToast; -/** - * Timer for toasts. - */ -class LLToastLifeTimer: public LLEventTimer -{ -public: - LLToastLifeTimer(LLToast* toast, F32 period); - - /*virtual*/ - bool tick(); - void stop(); - void start(); - void restart(); - bool getStarted(); - void setPeriod(F32 period); - F32 getRemainingTimeF32(); - - LLTimer& getEventTimer() { return mEventTimer;} -private : - LLToast* mToast; -}; - -/** - * Represents toast pop-up. - * This is a parent view for all toast panels. - */ -class LLToast : public LLModalDialog, public LLInstanceTracker<LLToast> -{ - friend class LLToastLifeTimer; -public: - - typedef boost::function<void (LLToast* toast)> toast_callback_t; - typedef boost::signals2::signal<void (LLToast* toast)> toast_signal_t; - typedef boost::signals2::signal<void (LLToast* toast, bool mouse_enter)> toast_hover_check_signal_t; - - struct Params : public LLInitParam::Block<Params> - { - Mandatory<LLPanel*> panel; - Optional<LLUUID> notif_id, //notification ID - session_id; //im session ID - Optional<LLNotificationPtr> notification; - - //NOTE: Life time of a toast (i.e. period of time from the moment toast was shown - //till the moment when toast was hidden) is the sum of lifetime_secs and fading_time_secs. - - Optional<F32> lifetime_secs, // Number of seconds while a toast is non-transparent - fading_time_secs; // Number of seconds while a toast is transparent - - - Optional<toast_callback_t> on_delete_toast; - Optional<bool> can_fade, - can_be_stored, - enable_hide_btn, - is_modal, - is_tip, - force_show, - force_store; - - - Params(); - }; - - static void updateClass(); - static void cleanupToasts(); - - static bool isAlertToastShown() { return sModalToastsList.size() > 0; } - - LLToast(const LLToast::Params& p); - virtual ~LLToast(); - bool postBuild(); - - /*virtual*/ void reshape(S32 width, S32 height, bool called_from_parent = true); - - // Toast handlers - virtual bool handleMouseDown(S32 x, S32 y, MASK mask); - - //Fading - - /** Stop lifetime/fading timer */ - virtual void stopTimer(); - - /** Start lifetime/fading timer */ - virtual void startTimer(); - - bool isHovered() { return mIsHovered; } - - // Operating with toasts - // insert a panel to a toast - void insertPanel(LLPanel* panel); - - void reshapeToPanel(); - - // get toast's panel - LLPanel* getPanel() const { return mPanel; } - // enable/disable Toast's Hide button - void setHideButtonEnabled(bool enabled); - // - F32 getTimeLeftToLive(); - // - LLToastLifeTimer* getTimer() { return mTimer.get();} - // - virtual void draw(); - // - virtual void setVisible(bool show); - - /*virtual*/ void setBackgroundOpaque(bool b); - // - virtual void hide(); - - /*virtual*/ void setFocus(bool b); - - /*virtual*/ void onFocusLost(); - - /*virtual*/ void onFocusReceived(); - - void setLifetime(S32 seconds); - - void setFadingTime(S32 seconds); - - void closeToast(); - - /** - * Returns padding between floater top and wrapper_panel top. - * This padding should be taken into account when positioning or reshaping toasts - */ - S32 getTopPad(); - - S32 getRightPad(); - - // get/set Toast's flags or states - // get information whether the notification corresponding to the toast is valid or not - bool isNotificationValid(); - - // get toast's Notification ID - const LLUUID getNotificationID() const { return mNotificationID;} - // get toast's Session ID - const LLUUID getSessionID() const { return mSessionID;} - // - void setCanFade(bool can_fade); - // - void setCanBeStored(bool can_be_stored) { mCanBeStored = can_be_stored; } - // - bool getCanBeStored() { return mCanBeStored; } - // set whether this toast considered as hidden or not - void setIsHidden( bool is_toast_hidden ) { mIsHidden = is_toast_hidden; } - - const LLNotificationPtr& getNotification() const { return mNotification;} - - // Registers signals/callbacks for events - boost::signals2::connection setOnFadeCallback(const toast_signal_t::slot_type& cb) { return mOnFadeSignal.connect(cb); } - boost::signals2::connection setOnToastDestroyedCallback(const toast_signal_t::slot_type& cb) { return mOnToastDestroyedSignal.connect(cb); } - boost::signals2::connection setOnToastHoverCallback(const toast_hover_check_signal_t::slot_type& cb) { return mOnToastHoverSignal.connect(cb); } - - boost::signals2::connection setMouseEnterCallback( const commit_signal_t::slot_type& cb ) { return mToastMouseEnterSignal.connect(cb); }; - boost::signals2::connection setMouseLeaveCallback( const commit_signal_t::slot_type& cb ) { return mToastMouseLeaveSignal.connect(cb); }; - - virtual S32 notifyParent(const LLSD& info); - - LLHandle<LLToast> getHandle() const { return getDerivedHandle<LLToast>(); } - -protected: - void updateTransparency(); - -private: - void updateHoveredState(); - - void expire(); - - void setFading(bool fading); - - LLUUID mNotificationID; - LLUUID mSessionID; - LLNotificationPtr mNotification; - - //LLRootHandle<LLToast> mHandle; - - LLPanel* mWrapperPanel; - - // timer counts a lifetime of a toast - std::unique_ptr<LLToastLifeTimer> mTimer; - - F32 mToastLifetime; // in seconds - F32 mToastFadingTime; // in seconds - - LLPanel* mPanel; - LLButton* mHideBtn; - - LLColor4 mBgColor; - bool mCanFade; - bool mCanBeStored; - bool mHideBtnEnabled; - bool mHideBtnPressed; - bool mIsHidden; // this flag is true when a toast has faded or was hidden with (x) button (EXT-1849) - bool mIsTip; - bool mIsFading; - bool mIsHovered; - - toast_signal_t mOnFadeSignal; - toast_signal_t mOnDeleteToastSignal; - toast_signal_t mOnToastDestroyedSignal; - toast_hover_check_signal_t mOnToastHoverSignal; - - commit_signal_t mToastMouseEnterSignal; - commit_signal_t mToastMouseLeaveSignal; - - static std::list<LLToast*> sModalToastsList; -}; - -} -#endif +/**
+ * @file lltoast.h
+ * @brief This class implements a placeholder for any notification panel.
+ *
+ * $LicenseInfo:firstyear=2003&license=viewerlgpl$
+ * Second Life Viewer Source Code
+ * Copyright (C) 2010, Linden Research, Inc.
+ *
+ * This library 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;
+ * version 2.1 of the License only.
+ *
+ * This library 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 this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
+ * $/LicenseInfo$
+ */
+
+#ifndef LL_LLTOAST_H
+#define LL_LLTOAST_H
+
+#include "llinstancetracker.h"
+#include "llpanel.h"
+#include "llmodaldialog.h"
+#include "lleventtimer.h"
+#include "llnotificationptr.h"
+
+#include "llviewercontrol.h"
+#include "lltexteditor.h"
+#include <memory>
+
+#define MOUSE_LEAVE false
+#define MOUSE_ENTER true
+
+namespace LLNotificationsUI
+{
+
+class LLToast;
+/**
+ * Timer for toasts.
+ */
+class LLToastLifeTimer: public LLEventTimer
+{
+public:
+ LLToastLifeTimer(LLToast* toast, F32 period);
+
+ /*virtual*/
+ bool tick();
+ void stop();
+ void start();
+ void restart();
+ bool getStarted();
+ void setPeriod(F32 period);
+ F32 getRemainingTimeF32();
+
+ LLTimer& getEventTimer() { return mEventTimer;}
+private :
+ LLToast* mToast;
+};
+
+/**
+ * Represents toast pop-up.
+ * This is a parent view for all toast panels.
+ */
+class LLToast : public LLModalDialog, public LLInstanceTracker<LLToast>
+{
+ friend class LLToastLifeTimer;
+public:
+
+ typedef boost::function<void (LLToast* toast)> toast_callback_t;
+ typedef boost::signals2::signal<void (LLToast* toast)> toast_signal_t;
+ typedef boost::signals2::signal<void (LLToast* toast, bool mouse_enter)> toast_hover_check_signal_t;
+
+ struct Params : public LLInitParam::Block<Params>
+ {
+ Mandatory<LLPanel*> panel;
+ Optional<LLUUID> notif_id, //notification ID
+ session_id; //im session ID
+ Optional<LLNotificationPtr> notification;
+
+ //NOTE: Life time of a toast (i.e. period of time from the moment toast was shown
+ //till the moment when toast was hidden) is the sum of lifetime_secs and fading_time_secs.
+
+ Optional<F32> lifetime_secs, // Number of seconds while a toast is non-transparent
+ fading_time_secs; // Number of seconds while a toast is transparent
+
+
+ Optional<toast_callback_t> on_delete_toast;
+ Optional<bool> can_fade,
+ can_be_stored,
+ enable_hide_btn,
+ is_modal,
+ is_tip,
+ force_show,
+ force_store;
+
+
+ Params();
+ };
+
+ static void updateClass();
+ static void cleanupToasts();
+
+ static bool isAlertToastShown() { return sModalToastsList.size() > 0; }
+
+ LLToast(const LLToast::Params& p);
+ virtual ~LLToast();
+ bool postBuild();
+
+ /*virtual*/ void reshape(S32 width, S32 height, bool called_from_parent = true);
+
+ // Toast handlers
+ virtual bool handleMouseDown(S32 x, S32 y, MASK mask);
+
+ //Fading
+
+ /** Stop lifetime/fading timer */
+ virtual void stopTimer();
+
+ /** Start lifetime/fading timer */
+ virtual void startTimer();
+
+ bool isHovered() { return mIsHovered; }
+
+ // Operating with toasts
+ // insert a panel to a toast
+ void insertPanel(LLPanel* panel);
+
+ void reshapeToPanel();
+
+ // get toast's panel
+ LLPanel* getPanel() const { return mPanel; }
+ // enable/disable Toast's Hide button
+ void setHideButtonEnabled(bool enabled);
+ //
+ F32 getTimeLeftToLive();
+ //
+ LLToastLifeTimer* getTimer() { return mTimer.get();}
+ //
+ virtual void draw();
+ //
+ virtual void setVisible(bool show);
+
+ /*virtual*/ void setBackgroundOpaque(bool b);
+ //
+ virtual void hide();
+
+ /*virtual*/ void setFocus(bool b);
+
+ /*virtual*/ void onFocusLost();
+
+ /*virtual*/ void onFocusReceived();
+
+ void setLifetime(S32 seconds);
+
+ void setFadingTime(S32 seconds);
+
+ void closeToast();
+
+ /**
+ * Returns padding between floater top and wrapper_panel top.
+ * This padding should be taken into account when positioning or reshaping toasts
+ */
+ S32 getTopPad();
+
+ S32 getRightPad();
+
+ // get/set Toast's flags or states
+ // get information whether the notification corresponding to the toast is valid or not
+ bool isNotificationValid();
+
+ // get toast's Notification ID
+ const LLUUID getNotificationID() const { return mNotificationID;}
+ // get toast's Session ID
+ const LLUUID getSessionID() const { return mSessionID;}
+ //
+ void setCanFade(bool can_fade);
+ //
+ void setCanBeStored(bool can_be_stored) { mCanBeStored = can_be_stored; }
+ //
+ bool getCanBeStored() { return mCanBeStored; }
+ // set whether this toast considered as hidden or not
+ void setIsHidden( bool is_toast_hidden ) { mIsHidden = is_toast_hidden; }
+
+ const LLNotificationPtr& getNotification() const { return mNotification;}
+
+ // Registers signals/callbacks for events
+ boost::signals2::connection setOnFadeCallback(const toast_signal_t::slot_type& cb) { return mOnFadeSignal.connect(cb); }
+ boost::signals2::connection setOnToastDestroyedCallback(const toast_signal_t::slot_type& cb) { return mOnToastDestroyedSignal.connect(cb); }
+ boost::signals2::connection setOnToastHoverCallback(const toast_hover_check_signal_t::slot_type& cb) { return mOnToastHoverSignal.connect(cb); }
+
+ boost::signals2::connection setMouseEnterCallback( const commit_signal_t::slot_type& cb ) { return mToastMouseEnterSignal.connect(cb); };
+ boost::signals2::connection setMouseLeaveCallback( const commit_signal_t::slot_type& cb ) { return mToastMouseLeaveSignal.connect(cb); };
+
+ virtual S32 notifyParent(const LLSD& info);
+
+ LLHandle<LLToast> getHandle() const { return getDerivedHandle<LLToast>(); }
+
+protected:
+ void updateTransparency();
+
+private:
+ void updateHoveredState();
+
+ void expire();
+
+ void setFading(bool fading);
+
+ LLUUID mNotificationID;
+ LLUUID mSessionID;
+ LLNotificationPtr mNotification;
+
+ //LLRootHandle<LLToast> mHandle;
+
+ LLPanel* mWrapperPanel;
+
+ // timer counts a lifetime of a toast
+ std::unique_ptr<LLToastLifeTimer> mTimer;
+
+ F32 mToastLifetime; // in seconds
+ F32 mToastFadingTime; // in seconds
+
+ LLPanel* mPanel;
+ LLButton* mHideBtn;
+
+ LLColor4 mBgColor;
+ bool mCanFade;
+ bool mCanBeStored;
+ bool mHideBtnEnabled;
+ bool mHideBtnPressed;
+ bool mIsHidden; // this flag is true when a toast has faded or was hidden with (x) button (EXT-1849)
+ bool mIsTip;
+ bool mIsFading;
+ bool mIsHovered;
+
+ toast_signal_t mOnFadeSignal;
+ toast_signal_t mOnDeleteToastSignal;
+ toast_signal_t mOnToastDestroyedSignal;
+ toast_hover_check_signal_t mOnToastHoverSignal;
+
+ commit_signal_t mToastMouseEnterSignal;
+ commit_signal_t mToastMouseLeaveSignal;
+
+ static std::list<LLToast*> sModalToastsList;
+};
+
+}
+#endif
|