Pull merge from viewer-fbc
commit
4de0dbccfd
|
|
@ -452,6 +452,7 @@ set(viewer_SOURCE_FILES
|
|||
llpathfindingobjectlist.cpp
|
||||
llpathfindingpathtool.cpp
|
||||
llpersistentnotificationstorage.cpp
|
||||
llpersonfolderview.cpp
|
||||
llpersonmodelcommon.cpp
|
||||
llpersontabview.cpp
|
||||
llphysicsmotion.cpp
|
||||
|
|
@ -1031,6 +1032,7 @@ set(viewer_HEADER_FILES
|
|||
llpathfindingobjectlist.h
|
||||
llpathfindingpathtool.h
|
||||
llpersistentnotificationstorage.h
|
||||
llpersonfolderview.h
|
||||
llpersonmodelcommon.h
|
||||
llpersontabview.h
|
||||
llphysicsmotion.h
|
||||
|
|
|
|||
|
|
@ -63,6 +63,7 @@
|
|||
#include "llnetmap.h"
|
||||
#include "llpanelpeoplemenus.h"
|
||||
#include "llparticipantlist.h"
|
||||
#include "llpersonfolderview.h"
|
||||
#include "llpersonmodelcommon.h"
|
||||
#include "llpersontabview.h"
|
||||
#include "llsidetraypanelcontainer.h"
|
||||
|
|
@ -549,7 +550,6 @@ LLPanelPeople::LLPanelPeople()
|
|||
: LLPanel(),
|
||||
mConnectedToFbc(false),
|
||||
mConversationsRoot(NULL),
|
||||
mConversationsEventStream("ConversationsEventsTwo"),
|
||||
mTryToConnectToFbc(true),
|
||||
mTabContainer(NULL),
|
||||
mOnlineFriendList(NULL),
|
||||
|
|
@ -605,8 +605,6 @@ LLPanelPeople::~LLPanelPeople()
|
|||
}
|
||||
|
||||
if (mFbcTestBrowserHandle.get()) mFbcTestBrowserHandle.get()->die();
|
||||
|
||||
mConversationsEventStream.stopListening("ConversationsRefresh");
|
||||
}
|
||||
|
||||
void LLPanelPeople::onFriendsAccordionExpandedCollapsed(LLUICtrl* ctrl, const LLSD& param, LLAvatarList* avatar_list)
|
||||
|
|
@ -697,7 +695,7 @@ BOOL LLPanelPeople::postBuild()
|
|||
//Create folder view
|
||||
LLPersonModelCommon* base_item = new LLPersonModelCommon(mPersonFolderViewModel);
|
||||
|
||||
LLFolderView::Params folder_view_params(LLUICtrlFactory::getDefaultParams<LLFolderView>());
|
||||
LLPersonFolderView::Params folder_view_params(LLUICtrlFactory::getDefaultParams<LLPersonFolderView>());
|
||||
folder_view_params.parent_panel = friends_tab;
|
||||
folder_view_params.listener = base_item;
|
||||
folder_view_params.view_model = &mPersonFolderViewModel;
|
||||
|
|
@ -705,8 +703,7 @@ BOOL LLPanelPeople::postBuild()
|
|||
folder_view_params.use_ellipses = false;
|
||||
folder_view_params.options_menu = "menu_conversation.xml";
|
||||
folder_view_params.name = "fbcfolderview";
|
||||
mConversationsRoot = LLUICtrlFactory::create<LLFolderView>(folder_view_params);
|
||||
mConversationsEventStream.listen("ConversationsRefresh", boost::bind(&LLPanelPeople::onConversationModelEvent, this, _1));
|
||||
mConversationsRoot = LLUICtrlFactory::create<LLPersonFolderView>(folder_view_params);
|
||||
|
||||
//Create scroller
|
||||
LLRect scroller_view_rect = socialtwo_tab->getRect();
|
||||
|
|
@ -734,8 +731,8 @@ BOOL LLPanelPeople::postBuild()
|
|||
LLPersonTabView * widget = LLUICtrlFactory::create<LLPersonTabView>(params);
|
||||
widget->addToFolder(mConversationsRoot);
|
||||
|
||||
mPersonFolderModelMap[item->getID()] = item;
|
||||
mPersonFolderViewMap[item->getID()] = widget;
|
||||
mConversationsRoot->mPersonFolderModelMap[item->getID()] = item;
|
||||
mConversationsRoot->mPersonFolderViewMap[item->getID()] = widget;
|
||||
|
||||
gIdleCallbacks.addFunction(idle, this);
|
||||
|
||||
|
|
@ -1653,49 +1650,6 @@ bool LLPanelPeople::isAccordionCollapsedByUser(const std::string& name)
|
|||
return isAccordionCollapsedByUser(getChild<LLUICtrl>(name));
|
||||
}
|
||||
|
||||
bool LLPanelPeople::onConversationModelEvent(const LLSD& event)
|
||||
{
|
||||
std::string type = event.get("type").asString();
|
||||
LLUUID folder_id = event.get("folder_id").asUUID();
|
||||
LLUUID person_id = event.get("person_id").asUUID();
|
||||
|
||||
if(type == "add_participant")
|
||||
{
|
||||
LLPersonTabModel * person_folder_model = dynamic_cast<LLPersonTabModel *>(mPersonFolderModelMap[folder_id]);
|
||||
LLPersonTabView * person_folder_view = dynamic_cast<LLPersonTabView *>(mPersonFolderViewMap[person_id]);
|
||||
|
||||
if(person_folder_model)
|
||||
{
|
||||
LLPersonModel * person_model = person_folder_model->findParticipant(person_id);
|
||||
|
||||
if(person_model)
|
||||
{
|
||||
LLPersonView * participant_view = createConversationViewParticipant(person_model);
|
||||
participant_view->addToFolder(person_folder_view);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
LLPersonView * LLPanelPeople::createConversationViewParticipant(LLPersonModel * item)
|
||||
{
|
||||
LLPersonView::Params params;
|
||||
LLRect panel_rect = getChild<LLPanel>(FBCTESTTWO_TAB_NAME)->getRect();
|
||||
|
||||
params.name = item->getDisplayName();
|
||||
params.root = mConversationsRoot;
|
||||
params.listener = item;
|
||||
|
||||
//24 is the the current hight of an item (itemHeight) loaded from conversation_view_participant.xml.
|
||||
params.rect = LLRect (0, 24, panel_rect.getWidth(), 0);
|
||||
params.tool_tip = params.name;
|
||||
params.folder_indentation = 2;
|
||||
|
||||
return LLUICtrlFactory::create<LLPersonView>(params);
|
||||
}
|
||||
|
||||
void LLPanelPeople::openFacebookWeb(LLFloaterWebContent::Params& p)
|
||||
{
|
||||
LLFloater* browser = LLFloaterReg::showInstance("web_content", p);
|
||||
|
|
@ -1733,7 +1687,7 @@ void LLPanelPeople::addTestParticipant()
|
|||
{
|
||||
for(int i = 0; i < 300; ++i)
|
||||
{
|
||||
LLPersonTabModel * person_folder_model = dynamic_cast<LLPersonTabModel *>(mPersonFolderModelMap.begin()->second);
|
||||
LLPersonTabModel * person_folder_model = dynamic_cast<LLPersonTabModel *>(mConversationsRoot->mPersonFolderModelMap.begin()->second);
|
||||
addParticipantToModel(person_folder_model, LLUUID().generateNewID(), "EastBayGuy");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -31,7 +31,6 @@
|
|||
|
||||
#include "llcallingcard.h" // for avatar tracker
|
||||
#include "llpersonmodelcommon.h"
|
||||
#include "llevents.h"
|
||||
#include "llfloaterwebcontent.h"
|
||||
#include "llvoiceclient.h"
|
||||
|
||||
|
|
@ -40,18 +39,10 @@ class LLAvatarListSocial;
|
|||
class LLAvatarName;
|
||||
class LLFilterEditor;
|
||||
class LLGroupList;
|
||||
class LLPersonFolderView;
|
||||
class LLSocialList;
|
||||
class LLMenuButton;
|
||||
class LLTabContainer;
|
||||
class LLFolderView;
|
||||
|
||||
class LLPersonTabModel;
|
||||
class LLPersonTabView;
|
||||
class LLPersonView;
|
||||
class LLPersonModel;
|
||||
|
||||
typedef std::map<LLUUID, LLPersonTabModel *> person_folder_model_map;
|
||||
typedef std::map<LLUUID, LLPersonTabView *> person_folder_view_map;
|
||||
|
||||
class LLPanelPeople
|
||||
: public LLPanel
|
||||
|
|
@ -164,9 +155,6 @@ private:
|
|||
bool isAccordionCollapsedByUser(LLUICtrl* acc_tab);
|
||||
bool isAccordionCollapsedByUser(const std::string& name);
|
||||
|
||||
bool onConversationModelEvent(const LLSD& event);
|
||||
LLPersonView * createConversationViewParticipant(LLPersonModel * item);
|
||||
|
||||
LLTabContainer* mTabContainer;
|
||||
LLAvatarList* mOnlineFriendList;
|
||||
LLAvatarList* mAllFriendList;
|
||||
|
|
@ -189,11 +177,8 @@ private:
|
|||
LLMenuButton* mFBCGearButton;
|
||||
LLHandle< LLFloater > mPicker;
|
||||
|
||||
person_folder_model_map mPersonFolderModelMap;
|
||||
person_folder_view_map mPersonFolderViewMap;
|
||||
LLPersonFolderViewModel mPersonFolderViewModel;
|
||||
LLFolderView* mConversationsRoot;
|
||||
LLEventStream mConversationsEventStream;
|
||||
LLPersonFolderView* mConversationsRoot;
|
||||
};
|
||||
|
||||
#endif //LL_LLPANELPEOPLE_H
|
||||
|
|
|
|||
|
|
@ -0,0 +1,88 @@
|
|||
/**
|
||||
* @file llpersonfolderview.cpp
|
||||
* @brief Implementation of llpersonfolderview
|
||||
* @author Gilbert@lindenlab.com
|
||||
*
|
||||
* $LicenseInfo:firstyear=2013&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2013, 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$
|
||||
*/
|
||||
|
||||
#include "llviewerprecompiledheaders.h"
|
||||
|
||||
#include "llpersonfolderview.h"
|
||||
|
||||
#include "llpersontabview.h"
|
||||
#include "llpersonmodelcommon.h"
|
||||
|
||||
|
||||
LLPersonFolderView::LLPersonFolderView(const Params &p) :
|
||||
LLFolderView(p),
|
||||
mConversationsEventStream("ConversationsEventsTwo")
|
||||
{
|
||||
mConversationsEventStream.listen("ConversationsRefresh", boost::bind(&LLPersonFolderView::onConversationModelEvent, this, _1));
|
||||
}
|
||||
|
||||
LLPersonFolderView::~LLPersonFolderView()
|
||||
{
|
||||
mConversationsEventStream.stopListening("ConversationsRefresh");
|
||||
}
|
||||
|
||||
bool LLPersonFolderView::onConversationModelEvent(const LLSD &event)
|
||||
{
|
||||
std::string type = event.get("type").asString();
|
||||
LLUUID folder_id = event.get("folder_id").asUUID();
|
||||
LLUUID person_id = event.get("person_id").asUUID();
|
||||
|
||||
if(type == "add_participant")
|
||||
{
|
||||
LLPersonTabModel * person_folder_model = dynamic_cast<LLPersonTabModel *>(mPersonFolderModelMap[folder_id]);
|
||||
LLPersonTabView * person_folder_view = dynamic_cast<LLPersonTabView *>(mPersonFolderViewMap[person_id]);
|
||||
|
||||
if(person_folder_model)
|
||||
{
|
||||
LLPersonModel * person_model = person_folder_model->findParticipant(person_id);
|
||||
|
||||
if(person_model)
|
||||
{
|
||||
LLPersonView * participant_view = createConversationViewParticipant(person_model);
|
||||
participant_view->addToFolder(person_folder_view);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
LLPersonView * LLPersonFolderView::createConversationViewParticipant(LLPersonModel * item)
|
||||
{
|
||||
LLPersonView::Params params;
|
||||
|
||||
params.name = item->getDisplayName();
|
||||
params.root = this;
|
||||
params.listener = item;
|
||||
|
||||
//24 should be loaded from .xml somehow
|
||||
params.rect = LLRect (0, 24, getRect().getWidth(), 0);
|
||||
params.tool_tip = params.name;
|
||||
params.folder_indentation = 2;
|
||||
|
||||
return LLUICtrlFactory::create<LLPersonView>(params);
|
||||
}
|
||||
|
|
@ -0,0 +1,63 @@
|
|||
/**
|
||||
* @file llpersonfolderview.h
|
||||
* @brief Header file for llpersonfolderview
|
||||
* @author Gilbert@lindenlab.com
|
||||
*
|
||||
* $LicenseInfo:firstyear=2013&license=viewerlgpl$
|
||||
* Second Life Viewer Source Code
|
||||
* Copyright (C) 2013, 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_LLPERSONFOLDERVIEW_H
|
||||
#define LL_LLPERSONFOLDERVIEW_H
|
||||
|
||||
class LLPersonTabModel;
|
||||
class LLPersonTabView;
|
||||
class LLPersonView;
|
||||
class LLPersonModel;
|
||||
|
||||
typedef std::map<LLUUID, LLPersonTabModel *> person_folder_model_map;
|
||||
typedef std::map<LLUUID, LLPersonTabView *> person_folder_view_map;
|
||||
|
||||
#include "llevents.h"
|
||||
#include "llfolderview.h"
|
||||
|
||||
class LLPersonFolderView : public LLFolderView
|
||||
{
|
||||
public:
|
||||
struct Params : public LLInitParam::Block<Params, LLFolderView::Params>
|
||||
{
|
||||
Params()
|
||||
{}
|
||||
};
|
||||
|
||||
LLPersonFolderView(const Params &p);
|
||||
~LLPersonFolderView();
|
||||
|
||||
bool onConversationModelEvent(const LLSD &event);
|
||||
|
||||
LLPersonView * createConversationViewParticipant(LLPersonModel * item);
|
||||
|
||||
person_folder_model_map mPersonFolderModelMap;
|
||||
person_folder_view_map mPersonFolderViewMap;
|
||||
LLEventStream mConversationsEventStream;
|
||||
};
|
||||
|
||||
#endif // LL_LLPERSONFOLDERVIEW_H
|
||||
|
||||
Loading…
Reference in New Issue