summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indra/newview/llpanelpeople.cpp93
-rw-r--r--indra/newview/llpanelpeople.h5
-rw-r--r--indra/newview/skins/default/xui/en/panel_people.xml19
3 files changed, 104 insertions, 13 deletions
diff --git a/indra/newview/llpanelpeople.cpp b/indra/newview/llpanelpeople.cpp
index 85f54b06eb..491b8dd7c5 100644
--- a/indra/newview/llpanelpeople.cpp
+++ b/indra/newview/llpanelpeople.cpp
@@ -64,9 +64,11 @@
#include "llvoiceclient.h"
#include "llworld.h"
#include "llspeakers.h"
+#include "llfloaterwebcontent.h"
#define FRIEND_LIST_UPDATE_TIMEOUT 0.5
#define NEARBY_LIST_UPDATE_INTERVAL 1
+#define FBCTEST_LIST_UPDATE_INTERVAL 0.25
static const std::string NEARBY_TAB_NAME = "nearby_panel";
static const std::string FRIENDS_TAB_NAME = "friends_panel";
@@ -489,6 +491,45 @@ public:
}
};
+/**
+ * Periodically updates the FBC test list after a login is initiated.
+ *
+ * The period is defined by FBCTEST_LIST_UPDATE_INTERVAL constant.
+ */
+class LLFbcTestListUpdater : public LLAvatarListUpdater
+{
+ LOG_CLASS(LLFbcTestListUpdater);
+
+public:
+ LLFbcTestListUpdater(callback_t cb)
+ : LLAvatarListUpdater(cb, FBCTEST_LIST_UPDATE_INTERVAL)
+ {
+ setActive(false);
+ }
+
+ /*virtual*/ void setActive(bool val)
+ {
+ if (val)
+ {
+ // update immediately and start regular updates
+ update();
+ mEventTimer.start();
+ }
+ else
+ {
+ // stop regular updates
+ mEventTimer.stop();
+ }
+ }
+
+ /*virtual*/ BOOL tick()
+ {
+ update();
+ return FALSE;
+ }
+private:
+};
+
//=============================================================================
LLPanelPeople::LLPanelPeople()
@@ -502,6 +543,7 @@ LLPanelPeople::LLPanelPeople()
mNearbyList(NULL),
mRecentList(NULL),
mGroupList(NULL),
+ mFbcTestText(NULL),
mNearbyGearButton(NULL),
mFriendsGearButton(NULL),
mGroupsGearButton(NULL),
@@ -511,6 +553,7 @@ LLPanelPeople::LLPanelPeople()
mFriendListUpdater = new LLFriendListUpdater(boost::bind(&LLPanelPeople::updateFriendList, this));
mNearbyListUpdater = new LLNearbyListUpdater(boost::bind(&LLPanelPeople::updateNearbyList, this));
mRecentListUpdater = new LLRecentListUpdater(boost::bind(&LLPanelPeople::updateRecentList, this));
+ mFbcTestListUpdater = new LLFbcTestListUpdater(boost::bind(&LLPanelPeople::updateFbcTestList, this));
mButtonsUpdater = new LLButtonsUpdater(boost::bind(&LLPanelPeople::updateButtons, this));
mCommitCallbackRegistrar.add("People.addFriend", boost::bind(&LLPanelPeople::onAddFriendButtonClicked, this));
mCommitCallbackRegistrar.add("People.loginFBC", boost::bind(&LLPanelPeople::onLoginFbcButtonClicked, this));
@@ -522,6 +565,7 @@ LLPanelPeople::~LLPanelPeople()
delete mNearbyListUpdater;
delete mFriendListUpdater;
delete mRecentListUpdater;
+ delete mFbcTestListUpdater;
if(LLVoiceClient::instanceExists())
{
@@ -533,7 +577,7 @@ LLPanelPeople::~LLPanelPeople()
if (mNearbyViewSortMenuHandle.get()) mNearbyViewSortMenuHandle.get()->die();
if (mGroupsViewSortMenuHandle.get()) mGroupsViewSortMenuHandle.get()->die();
if (mRecentViewSortMenuHandle.get()) mRecentViewSortMenuHandle.get()->die();
-
+ if (mFbcTestBrowserHandle.get()) mFbcTestBrowserHandle.get()->die();
}
void LLPanelPeople::onFriendsAccordionExpandedCollapsed(LLUICtrl* ctrl, const LLSD& param, LLAvatarList* avatar_list)
@@ -598,6 +642,8 @@ BOOL LLPanelPeople::postBuild()
mRecentList->setContextMenu(&LLPanelPeopleMenus::gNearbyMenu);
mAllFriendList->setContextMenu(&LLPanelPeopleMenus::gNearbyMenu);
mOnlineFriendList->setContextMenu(&LLPanelPeopleMenus::gNearbyMenu);
+
+ mFbcTestText = getChild<LLPanel>(FBCTEST_TAB_NAME)->getChild<LLTextBox>("fbctest_label");
setSortOrder(mRecentList, (ESortOrder)gSavedSettings.getU32("RecentPeopleSortOrder"), false);
setSortOrder(mAllFriendList, (ESortOrder)gSavedSettings.getU32("FriendsSortOrder"), false);
@@ -823,6 +869,40 @@ void LLPanelPeople::updateRecentList()
mRecentList->setDirty();
}
+void LLPanelPeople::updateFbcTestList()
+{
+ if (!mFbcTestText)
+ return;
+
+ if (mFbcTestBrowserHandle.get())
+ {
+ // get the browser data (from the title bar, of course!)
+ std::string title = mFbcTestBrowserHandle.get()->getTitle();
+
+ // if the data is ready (if it says the magic word)
+ if (title.length() > 8 && title.substr(0, 8) == "FBCTEST ")
+ {
+ // get the list of friends' names from the title bar
+ std::vector<std::string> names = LLStringUtil::getTokens(title.substr(8), ",");
+
+ // display the names in the list
+ std::string label;
+ for (std::vector<std::string>::const_iterator i = names.begin() + 1; i != names.end(); ++i)
+ {
+ label += *i;
+ label += "\n";
+ }
+ mFbcTestText->setText(label);
+
+ // close the browser window
+ mFbcTestBrowserHandle.get()->die();
+
+ // stop updating
+ mFbcTestListUpdater->setActive(false);
+ }
+ }
+}
+
void LLPanelPeople::buttonSetVisible(std::string btn_name, BOOL visible)
{
// To make sure we're referencing the right widget (a child of the button bar).
@@ -1564,7 +1644,16 @@ bool LLPanelPeople::isAccordionCollapsedByUser(const std::string& name)
void LLPanelPeople::onLoginFbcButtonClicked()
{
- LLWeb::loadURLInternal("https://cryptic-ridge-1632.herokuapp.com/");
+ LLFloaterWebContent::Params p;
+ p.url("https://cryptic-ridge-1632.herokuapp.com/");
+ LLFloater* browser = LLFloaterReg::showInstance("web_content", p);
+
+ if (browser)
+ {
+ // start checking the browser to see if the data is available yet
+ mFbcTestBrowserHandle = browser->getHandle();
+ mFbcTestListUpdater->setActive(true);
+ }
}
// EOF
diff --git a/indra/newview/llpanelpeople.h b/indra/newview/llpanelpeople.h
index 4df5df2574..010fb5ca77 100644
--- a/indra/newview/llpanelpeople.h
+++ b/indra/newview/llpanelpeople.h
@@ -73,6 +73,7 @@ private:
void updateFriendList();
void updateNearbyList();
void updateRecentList();
+ void updateFbcTestList();
bool isItemsFreeOfFriends(const uuid_vec_t& uuids);
@@ -145,16 +146,20 @@ private:
LLAvatarList* mRecentList;
LLGroupList* mGroupList;
LLNetMap* mMiniMap;
+
+ LLTextBox* mFbcTestText;
LLHandle<LLView> mGroupPlusMenuHandle;
LLHandle<LLView> mNearbyViewSortMenuHandle;
LLHandle<LLView> mFriendsViewSortMenuHandle;
LLHandle<LLView> mGroupsViewSortMenuHandle;
LLHandle<LLView> mRecentViewSortMenuHandle;
+ LLHandle<LLFloater> mFbcTestBrowserHandle;
Updater* mFriendListUpdater;
Updater* mNearbyListUpdater;
Updater* mRecentListUpdater;
+ Updater* mFbcTestListUpdater;
Updater* mButtonsUpdater;
LLMenuButton* mNearbyGearButton;
diff --git a/indra/newview/skins/default/xui/en/panel_people.xml b/indra/newview/skins/default/xui/en/panel_people.xml
index 781a1d773f..cbb6aff4ea 100644
--- a/indra/newview/skins/default/xui/en/panel_people.xml
+++ b/indra/newview/skins/default/xui/en/panel_people.xml
@@ -585,17 +585,14 @@ Looking for people to hang out with? Try the [secondlife:///app/worldmap World M
name="fbctest_panel"
top="0"
width="313">
- <avatar_list
- allow_select="true"
- follows="all"
- height="356"
- layout="topleft"
- left="3"
- multi_select="true"
- name="avatar_list"
- show_last_interaction_time="true"
- top="0"
- width="307" />
+ <text
+ follows="all"
+ height="356"
+ layout="topleft"
+ left="3"
+ name="fbctest_label"
+ top="0"
+ width="307"/>
<panel
background_visible="true"
follows="left|right|bottom"