Contact list categories and searching
This commit is contained in:
@@ -35,8 +35,8 @@
|
|||||||
|
|
||||||
const S32 LL_VERSION_MAJOR = 1;
|
const S32 LL_VERSION_MAJOR = 1;
|
||||||
const S32 LL_VERSION_MINOR = 4;
|
const S32 LL_VERSION_MINOR = 4;
|
||||||
const S32 LL_VERSION_PATCH = 1;
|
const S32 LL_VERSION_PATCH = 2;
|
||||||
const S32 LL_VERSION_BUILD = 0;
|
const S32 LL_VERSION_BUILD = 1;
|
||||||
|
|
||||||
const char * const LL_CHANNEL = "Ascent Viewer Release";
|
const char * const LL_CHANNEL = "Ascent Viewer Release";
|
||||||
|
|
||||||
|
|||||||
@@ -64,6 +64,7 @@ include_directories(
|
|||||||
)
|
)
|
||||||
|
|
||||||
set(viewer_SOURCE_FILES
|
set(viewer_SOURCE_FILES
|
||||||
|
ascentfloatercontactgroups.cpp
|
||||||
ascentprefssys.cpp
|
ascentprefssys.cpp
|
||||||
ascentprefsvan.cpp
|
ascentprefsvan.cpp
|
||||||
ascentuploadbrowser.cpp
|
ascentuploadbrowser.cpp
|
||||||
@@ -514,6 +515,7 @@ endif (LINUX)
|
|||||||
set(viewer_HEADER_FILES
|
set(viewer_HEADER_FILES
|
||||||
CMakeLists.txt
|
CMakeLists.txt
|
||||||
ViewerInstall.cmake
|
ViewerInstall.cmake
|
||||||
|
ascentfloatercontactgroups.h
|
||||||
ascentprefssys.h
|
ascentprefssys.h
|
||||||
ascentprefsvan.h
|
ascentprefsvan.h
|
||||||
ascentuploadbrowser.h
|
ascentuploadbrowser.h
|
||||||
|
|||||||
206
indra/newview/ascentfloatercontactgroups.cpp
Normal file
206
indra/newview/ascentfloatercontactgroups.cpp
Normal file
@@ -0,0 +1,206 @@
|
|||||||
|
/**
|
||||||
|
* @file ascentfloatercontactgroups.cpp
|
||||||
|
* @Author Charley Levenque
|
||||||
|
* Allows the user to assign friends to contact groups for advanced sorting.
|
||||||
|
*
|
||||||
|
* Created Sept 6th 2010
|
||||||
|
*
|
||||||
|
* ALL SOURCE CODE IS PROVIDED "AS IS." THE CREATOR MAKES NO
|
||||||
|
* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
|
||||||
|
* COMPLETENESS OR PERFORMANCE.
|
||||||
|
*
|
||||||
|
* HACKERS CAN TURN YOUR COMPUTER INTO A BOMB.
|
||||||
|
* & BLOW YOUR FAMILY TO SMITHEREENS!
|
||||||
|
*
|
||||||
|
* \ . ./
|
||||||
|
* \ .:";'.:.." /
|
||||||
|
* (M^^.^~~:.'").
|
||||||
|
* - (/ . . . \ \) -
|
||||||
|
* ((| :. ~ ^ :. .|))
|
||||||
|
* - (\- | \ / | /) -
|
||||||
|
* T -\ \ / /-
|
||||||
|
* [_]..........................\ \ / /
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "llviewerprecompiledheaders.h"
|
||||||
|
|
||||||
|
#include "ascentfloatercontactgroups.h"
|
||||||
|
|
||||||
|
//UI Elements
|
||||||
|
#include "llbutton.h" //Buttons
|
||||||
|
#include "llcombobox.h" //Combo dropdowns
|
||||||
|
#include "llscrolllistctrl.h" //List box for filenames
|
||||||
|
#include "lluictrlfactory.h" //Loads the XUI
|
||||||
|
|
||||||
|
// project includes
|
||||||
|
#include "llviewercontrol.h"
|
||||||
|
#include "llviewerwindow.h"
|
||||||
|
#include "llsdserialize.h"
|
||||||
|
|
||||||
|
#include "llchat.h"
|
||||||
|
#include "llfloaterchat.h"
|
||||||
|
|
||||||
|
ASFloaterContactGroups* ASFloaterContactGroups::sInstance = NULL;
|
||||||
|
|
||||||
|
ASFloaterContactGroups::ASFloaterContactGroups()
|
||||||
|
: LLFloater(std::string("floater_contact_groups"), std::string("FloaterContactRect"), LLStringUtil::null)
|
||||||
|
{
|
||||||
|
LLUICtrlFactory::getInstance()->buildFloater(this, "floater_contact_groups.xml");
|
||||||
|
}
|
||||||
|
|
||||||
|
// static
|
||||||
|
void ASFloaterContactGroups::show(void*)
|
||||||
|
{
|
||||||
|
if (!sInstance)
|
||||||
|
sInstance = new ASFloaterContactGroups();
|
||||||
|
|
||||||
|
sInstance->open();
|
||||||
|
sInstance->populateGroupList();
|
||||||
|
}
|
||||||
|
|
||||||
|
ASFloaterContactGroups::~ASFloaterContactGroups()
|
||||||
|
{
|
||||||
|
sInstance=NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ASFloaterContactGroups::populateGroupList()
|
||||||
|
{
|
||||||
|
LLScrollListCtrl* scroller = getChild<LLScrollListCtrl>("group_scroll_list");
|
||||||
|
if(scroller != NULL)
|
||||||
|
{
|
||||||
|
std::string name;
|
||||||
|
|
||||||
|
gDirUtilp->getNextFileInDir(gDirUtilp->getPerAccountChatLogsDir(),"*",name,false);//stupid hack to clear last file search
|
||||||
|
scroller->clear();
|
||||||
|
|
||||||
|
std::string path_name(gDirUtilp->getPerAccountChatLogsDir());
|
||||||
|
bool found = true;
|
||||||
|
LLChat msg("Searching: " + path_name);
|
||||||
|
LLFloaterChat::addChat(msg);
|
||||||
|
while(found = gDirUtilp->getNextFileInDir(path_name, "*", name, false))
|
||||||
|
{
|
||||||
|
if ((name == ".") || (name == "..")) continue;
|
||||||
|
|
||||||
|
//llinfos << "path name " << path_name << " and name " << name << " and found " << found << llendl;
|
||||||
|
if(found)
|
||||||
|
{
|
||||||
|
LLChat msg("Found: " + name);
|
||||||
|
LLFloaterChat::addChat(msg);
|
||||||
|
scroller->addSimpleElement(name, ADD_BOTTOM);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
LLChat msg("Skipped: " + name);
|
||||||
|
LLFloaterChat::addChat(msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
LLChat msg("Null Scroller");
|
||||||
|
LLFloaterChat::addChat(msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* BATGIRL
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* .//////..... I: .
|
||||||
|
* .////....///////........IA...... //
|
||||||
|
* XYt///////./.....////......$$$$$$$$$$$./I$
|
||||||
|
* .Y/XX//?//./....////////......$$$$$$$$$$$$$$/
|
||||||
|
* XYXXXXXXX///......//////.....$$$$$$$$$$$$$$$.
|
||||||
|
* XXXXXXXX////XX/....//.///./..$$$$$$$$$$$$$$$....
|
||||||
|
* ///////......////X...//.//./$$$$$$$$$$$$$$$...../..
|
||||||
|
* ////..////////..../X/X//////$$$-.$$$$$$$$$$./...///..
|
||||||
|
* ///////////////....//X/XX///$$ .'$$.$-..$$$.///..//?....
|
||||||
|
* ////////////X/////////XX/XX/$I .;;. .$$.//xX/XXXXX///////. .$$$$$$/
|
||||||
|
* /XX/XXX//////XXXXX////XXX/X/$$ .::- ..$//XXX/////////////$$$$$$$/
|
||||||
|
* ////XXX//XXXXXX//////XXXXX//$$ --- $/////X///XXXXXXXA$$$$$$../...
|
||||||
|
* /////XX/XX$$$$$X$$$$$$$////$$$$. .$$$$$X//$$$$$$X/X/$$$$(////..///.
|
||||||
|
* ///XXXXX$$$$$$$$$$$$$X$$///$$$$$$$$$$$$$$$XX$$$$$X//////$$$$$$////////
|
||||||
|
* ?$$$$$$$$$$$$$:''':.::'V$$$$$'$$$$$$XXX$$$$X''''$$XXXX/$A$$$I,X//XX/////
|
||||||
|
* $$$$$$$$$.... .. .:.::::V$$$$$$$$$$::.. .$$$:X//VA$H/X/XX////
|
||||||
|
* $$$$$$$$::. . . ..:I::. . .:..I:. ..$$$$XHAMMHIHA//XX/
|
||||||
|
* $$$$$$$:..:... ..I:. .::. . .$$$$VMMMMMWV'I:.XX
|
||||||
|
* $$$$$$$:. .:$$$$$$$$. .I:. .:.. .$$$VMMMMV/.//XXXX
|
||||||
|
* $$$$$$::. $$4$$$$. now .I. .:. with ..:$;.. .$$VMMMA/XXXXX
|
||||||
|
* $$$$$$A:. /$$$$$$:dynamic.I.. .:..:breast .:$$$$:. .AMMMM$XXXX//
|
||||||
|
* $$$$$IMMAAM$$$$$$:: .I.. ... .:$$$$$$$:. .AMMMMM'$$XX$
|
||||||
|
* $$$$$IMMHMV$$$$$$$. phys.:I...ics .$$$$$$$$$$:. ..VMMMMMX$$$:X
|
||||||
|
* $$$$$:MHHM$$$$$$$$$:.. ...:II... . ... :$$$$$$$$$$$$$:.:VMMMM'$$$$$
|
||||||
|
* $$$$$HMHMV$$$$$$$$$$;....:.:II:......- .$$$$$$$$$$$$$$$$:.:VM'$$$$$$
|
||||||
|
* $$$$4HMHMV$$$$$$$$$$;....:.:II:......- .$$$$$$$$$$$$$$$$:.:VM'A$$$$$
|
||||||
|
* $$$$$HMHM4$$$$$$$$$$$$;. .:::.::.. .:$$$$$$$$$$$$$$$$$$$$$$$V$$$$$$
|
||||||
|
* $$$$$MHHV$$$$$$$$$$$$:. .:. .:$MV'.VMM$$$$$$$$$$$$$$$$$$$$$
|
||||||
|
* $$$$$MMM$$MM$$$MM$$$$... .. :$$. .VM$$$$$$MMMM$M$$$$$$$$
|
||||||
|
* $$$$$MMHA$$MMMM$M4$V .. ... .:$: .VM$$$$MMMMV..VM$$M$M$
|
||||||
|
* $$$$$MMLMA$MMMMMM$$' ... ... :$$. .H$$$$MV' .VMM$M$$
|
||||||
|
* $$$$$MHAHH$V. .V$$. ... ... .:$$ V$$$MV VMM$MM
|
||||||
|
* $$$$$MMMMHA V$ :. . . ..'V. V$$V VMM$$
|
||||||
|
* $$$$$$VHMHA $ .:.. .: . $. .$$ VMM$
|
||||||
|
* $$$$$$VAA . .::.. .; :.. . $$ VMM$$
|
||||||
|
* $$$$$$$$$$ .::. . .. . . V. VM
|
||||||
|
* $$$$$M$$$$. ..:.:... . . .. I .V
|
||||||
|
* $$$$$$M$$$$ . .:. :... . .. .. . .
|
||||||
|
* $$$$$$$$$$$. . . .:.. . .::. .
|
||||||
|
* $$$V''$$M$$$ : .
|
||||||
|
* $$$ .VM$. .:. $$$$ .
|
||||||
|
* $$$ $$$ :. $$$$$$$$$
|
||||||
|
* $$$$ $$ .. $$$$$$$ .
|
||||||
|
* $$$$$ IV .. $$$$$
|
||||||
|
* $$$$$$. $ .. .$$$. .
|
||||||
|
* M$$$$$$$ . ... .: :...
|
||||||
|
* MM$$$$$$$ ... .. :... .
|
||||||
|
* .V$MM$$$4$ ... .: .::..
|
||||||
|
* .V$MM$$$$ .. .$.:... .
|
||||||
|
* .V$MM$$$$ ... :$$$::.. .
|
||||||
|
* V$:V$:$$ ... .$$$::.. .
|
||||||
|
* $ $$ ;$ .. .$$$$:.... .
|
||||||
|
* . V$ .$ ... .$$$$.:..
|
||||||
|
* V$ $ .. .$$$$$:.. . .
|
||||||
|
* V$ . .. . $$$::.. .
|
||||||
|
* V$ ... . $$$;:.
|
||||||
|
* $I .. . $$;:.. .
|
||||||
|
* $. ... .. $;;.. .
|
||||||
|
* $ ... ... $;:.. ..
|
||||||
|
* $ ... .. $$.::$
|
||||||
|
* I. ... .. $$$$
|
||||||
|
* . ... ...
|
||||||
|
* .:... .:.
|
||||||
|
* ::.. ...
|
||||||
|
* .:.. .:.
|
||||||
|
* :.. .::.
|
||||||
|
* :. .:..
|
||||||
|
* :. .$$$;.
|
||||||
|
* :. $$$$$$.
|
||||||
|
* :$$$$$$$$$
|
||||||
|
* $4$$$$$$$$
|
||||||
|
* $$$$$$$$$$
|
||||||
|
* ;$$$$$M$$;
|
||||||
|
* $$$$$IM$$$
|
||||||
|
* V$$$M$$$$$
|
||||||
|
* ;$$$$M$$$;
|
||||||
|
* $$$M$$$$;
|
||||||
|
* $$$$$$$$
|
||||||
|
* ;$$$$$$$
|
||||||
|
* $$$$$$$
|
||||||
|
* $$$$$$$
|
||||||
|
* $$$$$$$
|
||||||
|
* ;$$$$$$
|
||||||
|
* $$$$$$
|
||||||
|
* $$$$$$.
|
||||||
|
* $$$$$$$$
|
||||||
|
* $$$$$$$:
|
||||||
|
* $$$$$$$:
|
||||||
|
* :$$$$$$:
|
||||||
|
* $$$$$$$:
|
||||||
|
* $$$$$$$$
|
||||||
|
* $$$$$$$$
|
||||||
|
* $$$$$$
|
||||||
|
* $$$$
|
||||||
|
* $$
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
79
indra/newview/ascentfloatercontactgroups.h
Normal file
79
indra/newview/ascentfloatercontactgroups.h
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
/**
|
||||||
|
* @file ascentfloatercontactgroups.h
|
||||||
|
* @Author Charley Levenque
|
||||||
|
* Allows the user to assign friends to contact groups for advanced sorting.
|
||||||
|
*
|
||||||
|
* Created Sept 6th 2010
|
||||||
|
*
|
||||||
|
* ALL SOURCE CODE IS PROVIDED "AS IS." THE CREATOR MAKES NO
|
||||||
|
* WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
|
||||||
|
* COMPLETENESS OR PERFORMANCE.
|
||||||
|
*
|
||||||
|
* "use a free softwares" - Richard Stallman, LUNIX Operations System
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef ASCENT_CONTACT_GROUPS
|
||||||
|
#define ASCENT_CONTACT_GROUPS
|
||||||
|
|
||||||
|
#include "llfloater.h"
|
||||||
|
|
||||||
|
class LLScrollListCtrl;
|
||||||
|
|
||||||
|
class ASFloaterContactGroups : public LLFloater
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
ASFloaterContactGroups();
|
||||||
|
|
||||||
|
virtual ~ASFloaterContactGroups();
|
||||||
|
|
||||||
|
// by convention, this shows the floater and does instance management
|
||||||
|
static void show(void*);
|
||||||
|
void populateGroupList();
|
||||||
|
|
||||||
|
private:
|
||||||
|
//assuming we just need one, which is typical
|
||||||
|
static ASFloaterContactGroups* sInstance;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // ASCENT_UPLOAD_BROWSER
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
Thank you for come my website!
|
||||||
|
|
||||||
|
This is web page of Steve Eletor.
|
||||||
|
|
||||||
|
I live in Slovakia, in place called Presov.
|
||||||
|
|
||||||
|
I like all kind of thing, including robot film,
|
||||||
|
snake, castle, computer, and free softwares.
|
||||||
|
|
||||||
|
I have make a webpage for pet and one for family
|
||||||
|
and one for my computer.
|
||||||
|
|
||||||
|
you may have herd of richard stallman who wrot a
|
||||||
|
GNU operate system for PC.
|
||||||
|
|
||||||
|
"Welcome to website of Eletor" - Richard Stallman
|
||||||
|
|
||||||
|
I currently have "2.8.6 DOS."
|
||||||
|
|
||||||
|
but soon i hope to get "3.8.6 DOS IBM"
|
||||||
|
|
||||||
|
when i use internet, i dial into friend who
|
||||||
|
has a LINUX and he also has ISDN. my father
|
||||||
|
has also a computer, it is WINDOWS 98. i use
|
||||||
|
that to do thing like make website, and for
|
||||||
|
work, but my father not let me use it for
|
||||||
|
free softwares or the I.R.C chats.
|
||||||
|
|
||||||
|
please understand, while i can type lowercase
|
||||||
|
on my website, i have to update from a friends
|
||||||
|
computer. for IRC, i type in all caps as my
|
||||||
|
slovak keyboard does not have a lowercase. for
|
||||||
|
EMAIL, i reply to a friend on IRC who check my
|
||||||
|
email for me right now, also in all cap.
|
||||||
|
|
||||||
|
my father not very understand of free softwares
|
||||||
|
and he make a fun of RMS.
|
||||||
|
*/
|
||||||
@@ -68,6 +68,12 @@
|
|||||||
#include "llviewernetwork.h"
|
#include "llviewernetwork.h"
|
||||||
#include "hippogridmanager.h"
|
#include "hippogridmanager.h"
|
||||||
|
|
||||||
|
#include "llchat.h"
|
||||||
|
#include "llfloaterchat.h"
|
||||||
|
|
||||||
|
// <dogmode> stuff for Contact groups
|
||||||
|
#include "ascentfloatercontactgroups.h"
|
||||||
|
|
||||||
//Maximum number of people you can select to do an operation on at once.
|
//Maximum number of people you can select to do an operation on at once.
|
||||||
#define MAX_FRIEND_SELECT 20
|
#define MAX_FRIEND_SELECT 20
|
||||||
#define DEFAULT_PERIOD 5.0
|
#define DEFAULT_PERIOD 5.0
|
||||||
@@ -192,6 +198,54 @@ void LLPanelFriends::updateFriends(U32 changed_mask)
|
|||||||
mShowMaxSelectWarning = true;
|
mShowMaxSelectWarning = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// <dogmode>
|
||||||
|
// Contact search and group system.
|
||||||
|
// 09/05/2010 - Charley Levenque
|
||||||
|
void LLPanelFriends::filterContacts()
|
||||||
|
{
|
||||||
|
//LLComboBox* combo = getChild<LLComboBox>("buddy_group_combobox");
|
||||||
|
//if (combo->getValue().asString() != "All")
|
||||||
|
std::string friend_name;
|
||||||
|
std::string search_name;
|
||||||
|
|
||||||
|
search_name = LLPanelFriends::getChild<LLLineEditor>("buddy_search_lineedit")->getValue().asString();
|
||||||
|
|
||||||
|
if (search_name != "" && search_name != mLastContactSearch)
|
||||||
|
{
|
||||||
|
mLastContactSearch = search_name;
|
||||||
|
//LLStringUtil::toLower(search_name);
|
||||||
|
refreshNames(LLFriendObserver::ADD);
|
||||||
|
|
||||||
|
std::vector<LLScrollListItem*> vFriends = mFriendsList->getAllData(); // all of it.
|
||||||
|
for (std::vector<LLScrollListItem*>::iterator itr = vFriends.begin(); itr != vFriends.end(); ++itr)
|
||||||
|
{
|
||||||
|
friend_name = (*itr)->getColumn(LIST_FRIEND_NAME)->getValue().asString();
|
||||||
|
//LLStringUtil::toLower(friend_name);
|
||||||
|
BOOL show_entry = (friend_name.find(search_name) != std::string::npos);
|
||||||
|
if (!show_entry)
|
||||||
|
{
|
||||||
|
mFriendsList->deleteItems((*itr)->getValue());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
refreshUI();
|
||||||
|
}
|
||||||
|
else if (search_name == "" && search_name != mLastContactSearch) refreshNames(LLFriendObserver::ADD);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LLPanelFriends::onContactSearchKeystroke(LLLineEditor* caller, void* user_data)
|
||||||
|
{
|
||||||
|
if (caller)
|
||||||
|
{
|
||||||
|
LLPanelFriends* panelp = (LLPanelFriends*)caller->getParent();
|
||||||
|
if (panelp)
|
||||||
|
{
|
||||||
|
panelp->filterContacts();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// --
|
||||||
|
|
||||||
// virtual
|
// virtual
|
||||||
BOOL LLPanelFriends::postBuild()
|
BOOL LLPanelFriends::postBuild()
|
||||||
{
|
{
|
||||||
@@ -202,6 +256,16 @@ BOOL LLPanelFriends::postBuild()
|
|||||||
childSetCommitCallback("friend_list", onSelectName, this);
|
childSetCommitCallback("friend_list", onSelectName, this);
|
||||||
childSetDoubleClickCallback("friend_list", onClickIM);
|
childSetDoubleClickCallback("friend_list", onClickIM);
|
||||||
|
|
||||||
|
// <dogmode>
|
||||||
|
// Contact search and group system.
|
||||||
|
// 09/05/2010 - Charley Levenque
|
||||||
|
LLLineEditor* contact = getChild<LLLineEditor>("buddy_search_lineedit");
|
||||||
|
if (contact)
|
||||||
|
{
|
||||||
|
contact->setKeystrokeCallback(&onContactSearchKeystroke);
|
||||||
|
}
|
||||||
|
// --
|
||||||
|
|
||||||
getChild<LLTextBox>("s_num")->setValue("0");
|
getChild<LLTextBox>("s_num")->setValue("0");
|
||||||
getChild<LLTextBox>("f_num")->setValue(llformat("%d", mFriendsList->getItemCount()));
|
getChild<LLTextBox>("f_num")->setValue(llformat("%d", mFriendsList->getItemCount()));
|
||||||
|
|
||||||
@@ -209,6 +273,7 @@ BOOL LLPanelFriends::postBuild()
|
|||||||
refreshNames(changed_mask);
|
refreshNames(changed_mask);
|
||||||
|
|
||||||
childSetAction("im_btn", onClickIM, this);
|
childSetAction("im_btn", onClickIM, this);
|
||||||
|
childSetAction("assign_btn", onClickAssign, this);
|
||||||
childSetAction("profile_btn", onClickProfile, this);
|
childSetAction("profile_btn", onClickProfile, this);
|
||||||
childSetAction("offer_teleport_btn", onClickOfferTeleport, this);
|
childSetAction("offer_teleport_btn", onClickOfferTeleport, this);
|
||||||
childSetAction("pay_btn", onClickPay, this);
|
childSetAction("pay_btn", onClickPay, this);
|
||||||
@@ -417,6 +482,7 @@ void LLPanelFriends::refreshRightsChangeList()
|
|||||||
if (num_selected == 0) // nothing selected
|
if (num_selected == 0) // nothing selected
|
||||||
{
|
{
|
||||||
childSetEnabled("im_btn", FALSE);
|
childSetEnabled("im_btn", FALSE);
|
||||||
|
childSetEnabled("assign_btn", FALSE);
|
||||||
childSetEnabled("offer_teleport_btn", FALSE);
|
childSetEnabled("offer_teleport_btn", FALSE);
|
||||||
}
|
}
|
||||||
else // we have at least one friend selected...
|
else // we have at least one friend selected...
|
||||||
@@ -425,6 +491,7 @@ void LLPanelFriends::refreshRightsChangeList()
|
|||||||
// to be consistent with context menus in inventory and because otherwise
|
// to be consistent with context menus in inventory and because otherwise
|
||||||
// offline friends would be silently dropped from the session
|
// offline friends would be silently dropped from the session
|
||||||
childSetEnabled("im_btn", selected_friends_online || num_selected == 1);
|
childSetEnabled("im_btn", selected_friends_online || num_selected == 1);
|
||||||
|
childSetEnabled("assign_btn", TRUE);
|
||||||
childSetEnabled("offer_teleport_btn", can_offer_teleport);
|
childSetEnabled("offer_teleport_btn", can_offer_teleport);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -538,7 +605,7 @@ BOOL LLPanelFriends::refreshNamesPresence(const LLAvatarTracker::buddy_map_t & a
|
|||||||
|
|
||||||
return have_names;
|
return have_names;
|
||||||
}
|
}
|
||||||
|
// meal disk
|
||||||
void LLPanelFriends::refreshUI()
|
void LLPanelFriends::refreshUI()
|
||||||
{
|
{
|
||||||
BOOL single_selected = FALSE;
|
BOOL single_selected = FALSE;
|
||||||
@@ -570,6 +637,7 @@ void LLPanelFriends::refreshUI()
|
|||||||
//(single_selected will always be true in this situations)
|
//(single_selected will always be true in this situations)
|
||||||
childSetEnabled("remove_btn", single_selected);
|
childSetEnabled("remove_btn", single_selected);
|
||||||
childSetEnabled("im_btn", single_selected);
|
childSetEnabled("im_btn", single_selected);
|
||||||
|
childSetEnabled("assign_btn", single_selected);
|
||||||
childSetEnabled("friend_rights", single_selected);
|
childSetEnabled("friend_rights", single_selected);
|
||||||
|
|
||||||
refreshRightsChangeList();
|
refreshRightsChangeList();
|
||||||
@@ -625,6 +693,11 @@ void LLPanelFriends::onClickProfile(void* user_data)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// static
|
// static
|
||||||
|
void LLPanelFriends::onClickAssign(void* user_data)
|
||||||
|
{
|
||||||
|
ASFloaterContactGroups::show(user_data);
|
||||||
|
}
|
||||||
|
|
||||||
void LLPanelFriends::onClickIM(void* user_data)
|
void LLPanelFriends::onClickIM(void* user_data)
|
||||||
{
|
{
|
||||||
LLPanelFriends* panelp = (LLPanelFriends*)user_data;
|
LLPanelFriends* panelp = (LLPanelFriends*)user_data;
|
||||||
|
|||||||
@@ -101,6 +101,9 @@ private:
|
|||||||
// protected members
|
// protected members
|
||||||
typedef std::map<LLUUID, S32> rights_map_t;
|
typedef std::map<LLUUID, S32> rights_map_t;
|
||||||
void refreshNames(U32 changed_mask);
|
void refreshNames(U32 changed_mask);
|
||||||
|
// <dogmode> Contacts search and group system
|
||||||
|
void filterContacts();
|
||||||
|
// --
|
||||||
BOOL refreshNamesSync(const LLAvatarTracker::buddy_map_t & all_buddies);
|
BOOL refreshNamesSync(const LLAvatarTracker::buddy_map_t & all_buddies);
|
||||||
BOOL refreshNamesPresence(const LLAvatarTracker::buddy_map_t & all_buddies);
|
BOOL refreshNamesPresence(const LLAvatarTracker::buddy_map_t & all_buddies);
|
||||||
void refreshUI();
|
void refreshUI();
|
||||||
@@ -126,8 +129,9 @@ private:
|
|||||||
static bool callbackAddFriendWithMessage(const LLSD& notification, const LLSD& response);
|
static bool callbackAddFriendWithMessage(const LLSD& notification, const LLSD& response);
|
||||||
static void onPickAvatar(const std::vector<std::string>& names, const std::vector<LLUUID>& ids, void* user_data);
|
static void onPickAvatar(const std::vector<std::string>& names, const std::vector<LLUUID>& ids, void* user_data);
|
||||||
static void onMaximumSelect(void* user_data);
|
static void onMaximumSelect(void* user_data);
|
||||||
|
static void onContactSearchKeystroke(LLLineEditor* caller, void* user_data);
|
||||||
static void onClickIM(void* user_data);
|
static void onClickIM(void* user_data);
|
||||||
|
static void onClickAssign(void* user_data);
|
||||||
static void onClickProfile(void* user_data);
|
static void onClickProfile(void* user_data);
|
||||||
static void onClickAddFriend(void* user_data);
|
static void onClickAddFriend(void* user_data);
|
||||||
static void onClickRemove(void* user_data);
|
static void onClickRemove(void* user_data);
|
||||||
@@ -154,6 +158,7 @@ private:
|
|||||||
BOOL mAllowRightsChange;
|
BOOL mAllowRightsChange;
|
||||||
S32 mNumRightsChanged;
|
S32 mNumRightsChanged;
|
||||||
S32 mNumOnline;
|
S32 mNumOnline;
|
||||||
|
std::string mLastContactSearch;
|
||||||
static bool merging;
|
static bool merging;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -572,7 +572,7 @@ bool LLPanelRegionGeneralInfo::refreshFromRegion(LLViewerRegion* region)
|
|||||||
// now set in processRegionInfo for teen grid detection
|
// now set in processRegionInfo for teen grid detection
|
||||||
childSetEnabled("kick_btn", allow_modify);
|
childSetEnabled("kick_btn", allow_modify);
|
||||||
childSetEnabled("kick_all_btn", allow_modify);
|
childSetEnabled("kick_all_btn", allow_modify);
|
||||||
childSetEnabled("im_btn", allow_modify);
|
childSetEnabled("assign_btn", allow_modify);
|
||||||
childSetEnabled("manage_telehub_btn", allow_modify);
|
childSetEnabled("manage_telehub_btn", allow_modify);
|
||||||
|
|
||||||
// Data gets filled in by processRegionInfo
|
// Data gets filled in by processRegionInfo
|
||||||
|
|||||||
@@ -773,10 +773,12 @@ class LLFileLogOut : public view_listener_t
|
|||||||
{
|
{
|
||||||
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
|
bool handleEvent(LLPointer<LLEvent> event, const LLSD& userdata)
|
||||||
{
|
{
|
||||||
std::string command(gDirUtilp->getExecutableDir() + gDirUtilp->getDirDelimiter() + gDirUtilp->getExecutableFilename() + " --channel \"Ascent\" --settings settings_ascent.xml");
|
std::string command(gDirUtilp->getExecutableDir() + gDirUtilp->getDirDelimiter() + gDirUtilp->getExecutableFilename());
|
||||||
|
gSavedSettings.setBOOL("ShowConsoleWindow", FALSE);
|
||||||
gViewerWindow->getWindow()->ShellEx(command);
|
gViewerWindow->getWindow()->ShellEx(command);
|
||||||
|
gSavedSettings.setBOOL("ShowConsoleWindow", FALSE);
|
||||||
LLAppViewer::instance()->userQuit();
|
LLAppViewer::instance()->userQuit();
|
||||||
|
gSavedSettings.setBOOL("ShowConsoleWindow", FALSE);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -0,0 +1,67 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||||
|
<!-- All our XML is utf-8 encoded. -->
|
||||||
|
|
||||||
|
<!-- Floaters can optionally have their titlebar drag handle on the left.
|
||||||
|
If so, the title is not visible.
|
||||||
|
When a floater is resizable, a min_width and min_height must be specified. -->
|
||||||
|
<floater
|
||||||
|
name="floater_contact_groups"
|
||||||
|
title="Manage Contact Groups"
|
||||||
|
can_resize="true"
|
||||||
|
can_minimize="false"
|
||||||
|
can_close="true"
|
||||||
|
can_drag_on_left="false"
|
||||||
|
width="335"
|
||||||
|
height="275"
|
||||||
|
min_width="335"
|
||||||
|
min_height="275"
|
||||||
|
>
|
||||||
|
<tab_container bottom="30" follows="left|right|top|bottom" height="220" left="4"
|
||||||
|
name="ContactTabs" tab_position="top" tab_width="65" width="330">
|
||||||
|
<panel name="AddPanel" label="Add Contact"
|
||||||
|
border="true" bottom_delta="-10" height="150" left="6" width="135"
|
||||||
|
mouse_opaque="true">
|
||||||
|
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||||
|
bottom="-24" drop_shadow_visible="true" follows="left|top"
|
||||||
|
font="SansSerifSmall" h_pad="0" halign="left" height="16" left="10"
|
||||||
|
mouse_opaque="true" name="InstructManageContacts" v_pad="0"
|
||||||
|
width="240">
|
||||||
|
Create a new group or select an existing one:
|
||||||
|
</text>
|
||||||
|
<line_editor bevel_style="in" border_style="line"
|
||||||
|
border_thickness="1" bottom_delta="-20" enabled="true" follows="left|top|right"
|
||||||
|
font="SansSerifSmall" height="16" left="10" right="-120"
|
||||||
|
max_length="254" mouse_opaque="true" name="add_group_lineedit"
|
||||||
|
width="112" />
|
||||||
|
<button bottom_delta="-3" follows="top|right" font="SansSerif" halign="center"
|
||||||
|
height="20" label="Create" label_selected="Create" left_delta="20" right="-10"
|
||||||
|
mouse_opaque="true" name="create_grp_btn" scale_image="TRUE" width="90" />
|
||||||
|
<scroll_list background_visible="true" bottom_delta="-125" column_padding="5"
|
||||||
|
draw_border="true" draw_heading="false" draw_stripes="true"
|
||||||
|
follows="left|top|right" height="120" left="10" mouse_opaque="true"
|
||||||
|
multi_select="false" name="group_scroll_list" width="115" />
|
||||||
|
</panel>
|
||||||
|
|
||||||
|
<panel name="ManageGroupsPanel" label="Manage Groups"
|
||||||
|
border="true" bottom="0" height="150" left="0" width="135"
|
||||||
|
mouse_opaque="true">
|
||||||
|
<text bg_visible="false" border_drop_shadow_visible="false" border_visible="false"
|
||||||
|
bottom="-24" drop_shadow_visible="true" follows="left|top"
|
||||||
|
font="SansSerifSmall" h_pad="0" halign="left" height="16" left="10"
|
||||||
|
mouse_opaque="true" name="InstructSelectCallingCard" v_pad="0"
|
||||||
|
width="220">
|
||||||
|
Select a calling card:
|
||||||
|
</text>
|
||||||
|
<inventory_panel allow_multi_select="false" border="true" bottom_delta="-117"
|
||||||
|
follows="left|top|right|bottom" height="110" left="10" mouse_opaque="true"
|
||||||
|
name="InventoryPanel" sort_order="AvatarPickerSortOrder" width="115" />
|
||||||
|
</panel>
|
||||||
|
</tab_container>
|
||||||
|
|
||||||
|
<button bottom="6" left="10" follows="left|bottom" font="SansSerif" halign="center"
|
||||||
|
width="95" height="20" label="Save" label_selected="Save" mouse_opaque="true"
|
||||||
|
name="Save" scale_image="TRUE" />
|
||||||
|
<button bottom_delta="0" right="240" follows="left|bottom" font="SansSerif" halign="center"
|
||||||
|
width="95" height="20" label="Cancel" label_selected="Cancel" mouse_opaque="true"
|
||||||
|
name="Cancel" scale_image="TRUE" />
|
||||||
|
</floater>
|
||||||
@@ -3,11 +3,30 @@
|
|||||||
<string name="Multiple">
|
<string name="Multiple">
|
||||||
Multiple friends...
|
Multiple friends...
|
||||||
</string>
|
</string>
|
||||||
|
<text bottom_delta="-30" follows="left|top" font="SansSerif" height="16" left_delta="10" name="friends" width="110">
|
||||||
|
Contact Group:
|
||||||
|
</text>
|
||||||
|
<text bottom_delta="-20" follows="left|top" font="SansSerif" height="16" left_delta="0" name="friends" width="110">
|
||||||
|
Contact Search:
|
||||||
|
</text>
|
||||||
|
<combo_box allow_text_entry="false" enabled="true" follows="right|top"
|
||||||
|
bottom_delta="20" height="18" hidden="false" left="-235" max_chars="20" mouse_opaque="true"
|
||||||
|
tool_tip="Buddy group"
|
||||||
|
name="buddy_group_combobox" width="130">
|
||||||
|
<combo_item type="string" length="1" enabled="true" name="All"
|
||||||
|
value="All">
|
||||||
|
All
|
||||||
|
</combo_item>
|
||||||
|
</combo_box>
|
||||||
|
<line_editor bottom_delta="-14" enabled="true" follows="right|top" font="SansSerif"
|
||||||
|
height="18" left="-235" name="buddy_search_lineedit"
|
||||||
|
tool_tip="The friend name you want to search for"
|
||||||
|
width="130" />
|
||||||
<scroll_list bottom="10" can_resize="true" column_padding="0" draw_heading="true"
|
<scroll_list bottom="10" can_resize="true" column_padding="0" draw_heading="true"
|
||||||
follows="left|top|bottom|right" left="10" multi_select="true"
|
follows="left|top|bottom|right" left="10" multi_select="true"
|
||||||
name="friend_list" right="-100" search_column="1"
|
name="friend_list" right="-100" search_column="1"
|
||||||
tool_tip="Hold shift or control while clicking to select multiple friends"
|
tool_tip="Hold shift or control while clicking to select multiple friends"
|
||||||
top="-10">
|
top="-60">
|
||||||
<column image="ff_online_status_button.tga" name="icon_online_status"
|
<column image="ff_online_status_button.tga" name="icon_online_status"
|
||||||
tool_tip="Online status" width="20" />
|
tool_tip="Online status" width="20" />
|
||||||
<column dynamicwidth="true" label="Name" name="friend_name" tool_tip="Name" />
|
<column dynamicwidth="true" label="Name" name="friend_name" tool_tip="Name" />
|
||||||
@@ -26,6 +45,9 @@
|
|||||||
<column name="friend_last_update_generation" width="0" />
|
<column name="friend_last_update_generation" width="0" />
|
||||||
</scroll_list>
|
</scroll_list>
|
||||||
<pad bottom="-7" height="0" left="-90" width="1" />
|
<pad bottom="-7" height="0" left="-90" width="1" />
|
||||||
|
<button bottom_delta="-25" follows="top|right" height="22" label="Set Contact"
|
||||||
|
left_delta="0" name="assign_btn" tool_tip="Asign a friend to a Contact Group"
|
||||||
|
width="80" />
|
||||||
<button bottom_delta="-25" follows="top|right" height="22" label="IM/Call"
|
<button bottom_delta="-25" follows="top|right" height="22" label="IM/Call"
|
||||||
left_delta="0" name="im_btn" tool_tip="Open Instant Message session"
|
left_delta="0" name="im_btn" tool_tip="Open Instant Message session"
|
||||||
width="80" />
|
width="80" />
|
||||||
@@ -41,7 +63,7 @@
|
|||||||
<button bottom_delta="-25" follows="top|right" height="22" label="Remove..."
|
<button bottom_delta="-25" follows="top|right" height="22" label="Remove..."
|
||||||
left_delta="0" name="remove_btn"
|
left_delta="0" name="remove_btn"
|
||||||
tool_tip="Remove this person from your friends list" width="80" />
|
tool_tip="Remove this person from your friends list" width="80" />
|
||||||
<button bottom_delta="-35" follows="top|right" height="22" label="Add..."
|
<button bottom_delta="-25" follows="top|right" height="22" label="Add..."
|
||||||
left_delta="0" name="add_btn" tool_tip="Offer friendship to a resident"
|
left_delta="0" name="add_btn" tool_tip="Offer friendship to a resident"
|
||||||
width="80" />
|
width="80" />
|
||||||
<text bottom_delta="-50" follows="right|top" font="SansSerif" height="32" left_delta="10" name="friends" width="95">
|
<text bottom_delta="-50" follows="right|top" font="SansSerif" height="32" left_delta="10" name="friends" width="95">
|
||||||
|
|||||||
Reference in New Issue
Block a user