114 lines
3.1 KiB
C++
114 lines
3.1 KiB
C++
/**
|
|
* @file llsidetray.cpp
|
|
* @brief SideBartray definition, broken out from llsidebar.cpp - Arrehn
|
|
*
|
|
* $LicenseInfo:firstyear=2011&license=viewerlgpl$
|
|
*
|
|
* 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 LLSIDETRAYTAB
|
|
#define LLSIDETRAYTAB
|
|
|
|
#include "llpanel.h"
|
|
#include "llbadge.h"
|
|
|
|
#include "llfloater.h"
|
|
|
|
|
|
class LLSideTray;
|
|
class LLSideTrayButton;
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
// LLSideTrayTab
|
|
// Represents a single tab in the side tray, only used by LLSideTray
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
|
|
class LLSideTrayTab: public LLPanel
|
|
{
|
|
LOG_CLASS(LLSideTrayTab);
|
|
friend class LLUICtrlFactory;
|
|
friend class LLSideTray;
|
|
public:
|
|
|
|
struct Params
|
|
: public LLInitParam::Block<Params, LLPanel::Params>
|
|
{
|
|
// image name
|
|
Optional<std::string> image;
|
|
Optional<std::string> image_selected;
|
|
Optional<std::string> tab_title;
|
|
Optional<std::string> description;
|
|
Optional<LLBadge::Params> badge;
|
|
Params()
|
|
: image("image"),
|
|
image_selected("image_selected"),
|
|
tab_title("tab_title","no title"),
|
|
description("description","no description"),
|
|
badge("badge")
|
|
{};
|
|
};
|
|
protected:
|
|
LLSideTrayTab(const Params& params);
|
|
|
|
void dock(LLFloater* floater_tab);
|
|
void undock(LLFloater* floater_tab);
|
|
|
|
LLSideTray* getSideTray();
|
|
|
|
public:
|
|
virtual ~LLSideTrayTab();
|
|
|
|
/*virtual*/ BOOL postBuild ();
|
|
/*virtual*/ bool addChild (LLView* view, S32 tab_group);
|
|
|
|
//-TT Toggle sidebar panels with buttons
|
|
static void toggleSidebarTabInstance(std::string sdname);
|
|
//-TT
|
|
void reshape (S32 width, S32 height, BOOL called_from_parent = TRUE);
|
|
static LLSideTrayTab* createInstance ();
|
|
const std::string& getDescription () const { return mDescription;}
|
|
|
|
const std::string& getTabTitle() const { return mTabTitle;}
|
|
|
|
void onOpen (const LLSD& key);
|
|
void toggleTabDocked(bool toggle_floater = true);
|
|
void setDocked(bool dock);
|
|
bool isDocked() const;
|
|
void minimizeTab();
|
|
|
|
BOOL handleScrollWheel(S32 x, S32 y, S32 clicks);
|
|
|
|
LLPanel* getPanel();
|
|
|
|
LLButton* createButton(bool allowTearOff, LLUICtrl::commit_callback_t callback);
|
|
|
|
private:
|
|
std::string mTabTitle;
|
|
std::string mImage;
|
|
std::string mImageSelected;
|
|
std::string mDescription;
|
|
|
|
LLView* mMainPanel;
|
|
|
|
bool mHasBadge;
|
|
LLBadge::Params mBadgeParams;
|
|
LLSideTrayButton* mSideTrayButton;
|
|
};
|
|
#endif
|