/** * @file lltoastalertpanel.h * @brief Panel for alert toasts. * * $LicenseInfo:firstyear=2001&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_TOASTALERTPANEL_H #define LL_TOASTALERTPANEL_H #include "lltoastpanel.h" #include "llfloater.h" #include "llui.h" #include "llnotificationptr.h" #include "llerror.h" class LLButton; class LLCheckBoxCtrl; class LLLineEditor; /** * Toast panel for alert notification. * Alerts notifications doesn't require user interaction. * * Replaces class LLAlertDialog. * https://wiki.lindenlab.com/mediawiki/index.php?title=LLAlertDialog&oldid=81388 */ class LLToastAlertPanel : public LLToastPanel { LOG_CLASS(LLToastAlertPanel); public: typedef bool (*display_callback_t)(S32 modal); class URLLoader { public: virtual void load(const std::string& url, bool force_open_externally = 0) = 0; virtual ~URLLoader() { } }; static void setURLLoader(URLLoader* loader) { sURLLoader = loader; } public: // User's responsibility to call show() after creating these. LLToastAlertPanel( LLNotificationPtr notep, bool is_modal ); virtual BOOL handleKeyHere(KEY key, MASK mask ); virtual void draw(); virtual void setVisible( BOOL visible ); bool setCheckBox( const std::string&, const std::string& ); void setCaution(BOOL val = TRUE) { mCaution = val; } // If mUnique==TRUE only one copy of this message should exist void setUnique(BOOL val = TRUE) { mUnique = val; } void setEditTextArgs(const LLSD& edit_args); void onClickIgnore(LLUICtrl* ctrl); void onButtonPressed(const LLSD& data, S32 button); private: static std::map<std::string, LLToastAlertPanel*> sUniqueActiveMap; virtual ~LLToastAlertPanel(); // No you can't kill it. It can only kill itself. // Does it have a readable title label, or minimize or close buttons? BOOL hasTitleBar() const; private: static URLLoader* sURLLoader; static LLControlGroup* sSettings; struct ButtonData { LLButton* mButton; std::string mURL; U32 mURLExternal; }; std::vector<ButtonData> mButtonData; S32 mDefaultOption; LLCheckBoxCtrl* mCheck; BOOL mCaution; BOOL mUnique; LLUIString mLabel; LLFrameTimer mDefaultBtnTimer; // For Dialogs that take a line as text as input: LLLineEditor* mLineEditor; LLHandle<LLView> mPreviouslyFocusedView; }; #endif // LL_TOASTALERTPANEL_H