2006-10-21 02:52:28 +00:00
|
|
|
using System;
|
2006-10-21 05:53:58 +00:00
|
|
|
using System.Collections.Generic;
|
2006-10-21 02:52:28 +00:00
|
|
|
using System.ComponentModel;
|
|
|
|
|
using System.Data;
|
|
|
|
|
using System.Drawing;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Windows.Forms;
|
2006-10-22 20:27:59 +00:00
|
|
|
using System.IO;
|
2008-07-21 21:12:59 +00:00
|
|
|
using OpenMetaverse;
|
|
|
|
|
using OpenMetaverse.Imaging;
|
2009-05-12 00:07:35 +00:00
|
|
|
using OpenMetaverse.Assets;
|
2006-10-21 02:52:28 +00:00
|
|
|
|
|
|
|
|
namespace groupmanager
|
|
|
|
|
{
|
|
|
|
|
public partial class frmGroupInfo : Form
|
|
|
|
|
{
|
|
|
|
|
Group Group;
|
2008-07-21 21:12:59 +00:00
|
|
|
GridClient Client;
|
2008-07-26 05:38:30 +00:00
|
|
|
Group Profile = new Group();
|
2008-07-25 05:15:05 +00:00
|
|
|
Dictionary<UUID, GroupMember> Members = new Dictionary<UUID,GroupMember>();
|
|
|
|
|
Dictionary<UUID, GroupTitle> Titles = new Dictionary<UUID,GroupTitle>();
|
|
|
|
|
Dictionary<UUID, GroupMemberData> MemberData = new Dictionary<UUID, GroupMemberData>();
|
|
|
|
|
Dictionary<UUID, string> Names = new Dictionary<UUID, string>();
|
2009-10-20 20:18:03 +00:00
|
|
|
EventHandler<GroupProfileEventArgs> GroupProfileCallback;
|
|
|
|
|
EventHandler<GroupMembersReplyEventArgs> GroupMembersCallback;
|
|
|
|
|
EventHandler<GroupTitlesReplyEventArgs> GroupTitlesCallback;
|
2009-10-22 04:29:25 +00:00
|
|
|
EventHandler<UUIDNameReplyEventArgs> AvatarNamesCallback;
|
2006-10-22 20:27:59 +00:00
|
|
|
|
2008-07-21 21:12:59 +00:00
|
|
|
public frmGroupInfo(Group group, GridClient client)
|
2006-10-21 02:52:28 +00:00
|
|
|
{
|
2006-12-22 15:28:33 +00:00
|
|
|
InitializeComponent();
|
|
|
|
|
|
|
|
|
|
while (!IsHandleCreated)
|
|
|
|
|
{
|
|
|
|
|
// Force handle creation
|
2009-07-22 06:57:52 +00:00
|
|
|
// warning CS0219: The variable `temp' is assigned but its value is never used
|
2006-12-22 15:28:33 +00:00
|
|
|
IntPtr temp = Handle;
|
|
|
|
|
}
|
|
|
|
|
|
2009-10-20 20:18:03 +00:00
|
|
|
GroupMembersCallback = new EventHandler<GroupMembersReplyEventArgs>(GroupMembersHandler);
|
|
|
|
|
GroupProfileCallback = new EventHandler<GroupProfileEventArgs>(GroupProfileHandler);
|
|
|
|
|
GroupTitlesCallback = new EventHandler<GroupTitlesReplyEventArgs>(GroupTitlesHandler);
|
2009-10-22 04:29:25 +00:00
|
|
|
AvatarNamesCallback = new EventHandler<UUIDNameReplyEventArgs>(AvatarNamesHandler);
|
2007-02-28 03:47:46 +00:00
|
|
|
|
2006-10-21 02:52:28 +00:00
|
|
|
Group = group;
|
2006-10-22 20:27:59 +00:00
|
|
|
Client = client;
|
2007-07-13 14:49:36 +00:00
|
|
|
|
2007-02-28 03:47:46 +00:00
|
|
|
// Register the callbacks for this form
|
2009-10-20 20:18:03 +00:00
|
|
|
Client.Groups.GroupProfile += GroupProfileCallback;
|
|
|
|
|
Client.Groups.GroupMembersReply += GroupMembersCallback;
|
|
|
|
|
Client.Groups.GroupTitlesReply += GroupTitlesCallback;
|
2009-10-22 04:29:25 +00:00
|
|
|
Client.Avatars.UUIDNameReply += AvatarNamesCallback;
|
2006-12-22 15:28:33 +00:00
|
|
|
|
|
|
|
|
// Request the group information
|
2007-08-10 20:16:19 +00:00
|
|
|
Client.Groups.RequestGroupProfile(Group.ID);
|
|
|
|
|
Client.Groups.RequestGroupMembers(Group.ID);
|
|
|
|
|
Client.Groups.RequestGroupTitles(Group.ID);
|
2007-02-28 03:47:46 +00:00
|
|
|
}
|
2006-10-22 20:27:59 +00:00
|
|
|
|
2007-02-28 03:47:46 +00:00
|
|
|
~frmGroupInfo()
|
|
|
|
|
{
|
|
|
|
|
// Unregister the callbacks for this form
|
2009-10-20 20:18:03 +00:00
|
|
|
Client.Groups.GroupProfile -= GroupProfileCallback;
|
|
|
|
|
Client.Groups.GroupMembersReply -= GroupMembersCallback;
|
|
|
|
|
Client.Groups.GroupTitlesReply -= GroupTitlesCallback;
|
2009-10-22 04:29:25 +00:00
|
|
|
Client.Avatars.UUIDNameReply -= AvatarNamesCallback;
|
2006-10-23 08:30:31 +00:00
|
|
|
}
|
2006-10-22 20:27:59 +00:00
|
|
|
|
2009-10-20 20:18:03 +00:00
|
|
|
private void GroupProfileHandler(object sender, GroupProfileEventArgs e)
|
2006-10-23 08:30:31 +00:00
|
|
|
{
|
2009-10-20 20:18:03 +00:00
|
|
|
Profile = e.Group;
|
2006-10-23 08:30:31 +00:00
|
|
|
|
2008-07-25 05:15:05 +00:00
|
|
|
if (Group.InsigniaID != UUID.Zero)
|
2009-05-07 16:10:52 +00:00
|
|
|
Client.Assets.RequestImage(Group.InsigniaID, ImageType.Normal,
|
|
|
|
|
delegate(TextureRequestState state, AssetTexture assetTexture)
|
|
|
|
|
{
|
|
|
|
|
ManagedImage imgData;
|
|
|
|
|
Image bitmap;
|
|
|
|
|
|
2009-05-28 00:02:55 +00:00
|
|
|
if (state != TextureRequestState.Timeout || state != TextureRequestState.NotFound)
|
2009-05-07 16:10:52 +00:00
|
|
|
{
|
|
|
|
|
OpenJPEG.DecodeToImage(assetTexture.AssetData, out imgData, out bitmap);
|
|
|
|
|
picInsignia.Image = bitmap;
|
2009-05-28 00:02:55 +00:00
|
|
|
UpdateInsigniaProgressText("Progress...");
|
|
|
|
|
}
|
|
|
|
|
if (state == TextureRequestState.Finished)
|
|
|
|
|
{
|
|
|
|
|
UpdateInsigniaProgressText("");
|
|
|
|
|
}
|
|
|
|
|
}, true);
|
2007-07-13 14:49:36 +00:00
|
|
|
|
|
|
|
|
if (this.InvokeRequired)
|
|
|
|
|
this.BeginInvoke(new MethodInvoker(UpdateProfile));
|
2007-02-22 12:36:31 +00:00
|
|
|
}
|
|
|
|
|
|
2009-05-28 00:02:55 +00:00
|
|
|
private void UpdateInsigniaProgressText(string resultText)
|
|
|
|
|
{
|
|
|
|
|
if (this.InvokeRequired)
|
|
|
|
|
{
|
|
|
|
|
this.BeginInvoke(new MethodInvoker(delegate()
|
|
|
|
|
{
|
|
|
|
|
UpdateInsigniaProgressText(resultText);
|
|
|
|
|
}));
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
labelInsigniaProgress.Text = resultText;
|
|
|
|
|
}
|
|
|
|
|
|
2006-10-23 08:30:31 +00:00
|
|
|
private void UpdateProfile()
|
|
|
|
|
{
|
|
|
|
|
lblGroupName.Text = Profile.Name;
|
|
|
|
|
txtCharter.Text = Profile.Charter;
|
|
|
|
|
chkShow.Checked = Profile.ShowInList;
|
|
|
|
|
chkPublish.Checked = Profile.AllowPublish;
|
|
|
|
|
chkOpenEnrollment.Checked = Profile.OpenEnrollment;
|
|
|
|
|
chkFee.Checked = (Profile.MembershipFee != 0);
|
|
|
|
|
numFee.Value = Profile.MembershipFee;
|
|
|
|
|
chkMature.Checked = Profile.MaturePublish;
|
2006-10-24 11:16:26 +00:00
|
|
|
|
2006-12-22 15:28:33 +00:00
|
|
|
Client.Avatars.RequestAvatarName(Profile.FounderID);
|
2006-10-24 11:16:26 +00:00
|
|
|
}
|
|
|
|
|
|
2009-10-22 04:29:25 +00:00
|
|
|
private void AvatarNamesHandler(object sender, UUIDNameReplyEventArgs e)
|
2006-10-24 11:16:26 +00:00
|
|
|
{
|
|
|
|
|
lock (Names)
|
|
|
|
|
{
|
2009-10-22 04:29:25 +00:00
|
|
|
foreach (KeyValuePair<UUID, string> agent in e.Names)
|
2006-10-24 11:16:26 +00:00
|
|
|
{
|
|
|
|
|
Names[agent.Key] = agent.Value;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2007-02-22 12:36:31 +00:00
|
|
|
UpdateNames();
|
2006-10-24 11:16:26 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void UpdateNames()
|
|
|
|
|
{
|
2007-02-22 12:36:31 +00:00
|
|
|
if (this.InvokeRequired)
|
2006-10-24 11:16:26 +00:00
|
|
|
{
|
2007-02-22 12:36:31 +00:00
|
|
|
Invoke(new MethodInvoker(UpdateNames));
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
lock (Names)
|
2006-10-24 11:16:26 +00:00
|
|
|
{
|
2008-07-25 05:15:05 +00:00
|
|
|
if (Profile.FounderID != UUID.Zero && Names.ContainsKey(Profile.FounderID))
|
2007-02-22 12:36:31 +00:00
|
|
|
{
|
|
|
|
|
lblFoundedBy.Text = "Founded by " + Names[Profile.FounderID];
|
|
|
|
|
}
|
2006-10-24 11:16:26 +00:00
|
|
|
|
2007-02-22 12:36:31 +00:00
|
|
|
lock (MemberData)
|
2006-10-24 11:16:26 +00:00
|
|
|
{
|
2008-07-25 05:15:05 +00:00
|
|
|
foreach (KeyValuePair<UUID, string> name in Names)
|
2006-10-24 11:16:26 +00:00
|
|
|
{
|
2007-02-22 12:36:31 +00:00
|
|
|
if (!MemberData.ContainsKey(name.Key))
|
|
|
|
|
{
|
|
|
|
|
MemberData[name.Key] = new GroupMemberData();
|
|
|
|
|
}
|
2006-10-24 11:16:26 +00:00
|
|
|
|
2007-02-22 12:36:31 +00:00
|
|
|
MemberData[name.Key].Name = name.Value;
|
|
|
|
|
}
|
2006-10-24 11:16:26 +00:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2007-02-22 12:36:31 +00:00
|
|
|
UpdateMemberList();
|
|
|
|
|
}
|
2006-10-24 11:16:26 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void UpdateMemberList()
|
|
|
|
|
{
|
2006-10-26 10:43:59 +00:00
|
|
|
// General tab list
|
2006-10-24 11:16:26 +00:00
|
|
|
lock (lstMembers)
|
|
|
|
|
{
|
|
|
|
|
lstMembers.Items.Clear();
|
|
|
|
|
|
|
|
|
|
foreach (GroupMemberData entry in MemberData.Values)
|
|
|
|
|
{
|
|
|
|
|
ListViewItem lvi = new ListViewItem();
|
|
|
|
|
lvi.Text = entry.Name;
|
|
|
|
|
|
|
|
|
|
ListViewItem.ListViewSubItem lvsi = new ListViewItem.ListViewSubItem();
|
|
|
|
|
lvsi.Text = entry.Title;
|
|
|
|
|
lvi.SubItems.Add(lvsi);
|
|
|
|
|
|
|
|
|
|
lvsi = new ListViewItem.ListViewSubItem();
|
|
|
|
|
lvsi.Text = entry.LastOnline;
|
|
|
|
|
lvi.SubItems.Add(lvsi);
|
|
|
|
|
|
|
|
|
|
lstMembers.Items.Add(lvi);
|
|
|
|
|
}
|
|
|
|
|
}
|
2006-10-26 10:43:59 +00:00
|
|
|
|
|
|
|
|
// Members tab list
|
|
|
|
|
lock (lstMembers2)
|
|
|
|
|
{
|
|
|
|
|
lstMembers2.Items.Clear();
|
|
|
|
|
|
|
|
|
|
foreach (GroupMemberData entry in MemberData.Values)
|
|
|
|
|
{
|
|
|
|
|
ListViewItem lvi = new ListViewItem();
|
|
|
|
|
lvi.Text = entry.Name;
|
|
|
|
|
|
|
|
|
|
ListViewItem.ListViewSubItem lvsi = new ListViewItem.ListViewSubItem();
|
|
|
|
|
lvsi.Text = entry.Contribution.ToString();
|
|
|
|
|
lvi.SubItems.Add(lvsi);
|
|
|
|
|
|
|
|
|
|
lvsi = new ListViewItem.ListViewSubItem();
|
|
|
|
|
lvsi.Text = entry.LastOnline;
|
|
|
|
|
lvi.SubItems.Add(lvsi);
|
|
|
|
|
|
|
|
|
|
lstMembers2.Items.Add(lvi);
|
|
|
|
|
}
|
|
|
|
|
}
|
2006-10-23 08:30:31 +00:00
|
|
|
}
|
2006-10-22 20:27:59 +00:00
|
|
|
|
2009-10-20 20:18:03 +00:00
|
|
|
private void GroupMembersHandler(object sender, GroupMembersReplyEventArgs e)
|
2006-10-23 08:30:31 +00:00
|
|
|
{
|
2009-10-20 20:18:03 +00:00
|
|
|
Members = e.Members;
|
2006-10-23 08:30:31 +00:00
|
|
|
|
2007-02-22 12:36:31 +00:00
|
|
|
UpdateMembers();
|
2006-10-22 20:27:59 +00:00
|
|
|
}
|
|
|
|
|
|
2006-10-23 08:30:31 +00:00
|
|
|
private void UpdateMembers()
|
2006-10-22 20:27:59 +00:00
|
|
|
{
|
2007-02-22 12:36:31 +00:00
|
|
|
if (this.InvokeRequired)
|
2006-10-24 11:16:26 +00:00
|
|
|
{
|
2007-02-22 12:36:31 +00:00
|
|
|
Invoke(new MethodInvoker(UpdateMembers));
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2008-07-25 05:15:05 +00:00
|
|
|
List<UUID> requestids = new List<UUID>();
|
2007-02-22 12:36:31 +00:00
|
|
|
|
|
|
|
|
lock (Members)
|
2006-10-24 11:16:26 +00:00
|
|
|
{
|
2007-02-22 12:36:31 +00:00
|
|
|
lock (MemberData)
|
2006-10-24 11:16:26 +00:00
|
|
|
{
|
2007-02-22 12:36:31 +00:00
|
|
|
foreach (GroupMember member in Members.Values)
|
|
|
|
|
{
|
|
|
|
|
GroupMemberData memberData = new GroupMemberData();
|
|
|
|
|
memberData.ID = member.ID;
|
|
|
|
|
memberData.IsOwner = member.IsOwner;
|
|
|
|
|
memberData.LastOnline = member.OnlineStatus;
|
2007-09-05 01:21:36 +00:00
|
|
|
memberData.Powers = (ulong)member.Powers;
|
2007-02-22 12:36:31 +00:00
|
|
|
memberData.Title = member.Title;
|
|
|
|
|
memberData.Contribution = member.Contribution;
|
|
|
|
|
|
|
|
|
|
MemberData[member.ID] = memberData;
|
|
|
|
|
|
|
|
|
|
// Add this ID to the name request batch
|
|
|
|
|
requestids.Add(member.ID);
|
|
|
|
|
}
|
2006-10-24 11:16:26 +00:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2007-02-22 12:36:31 +00:00
|
|
|
Client.Avatars.RequestAvatarNames(requestids);
|
|
|
|
|
}
|
2006-10-21 02:52:28 +00:00
|
|
|
}
|
2006-10-23 08:30:31 +00:00
|
|
|
|
2009-10-20 20:18:03 +00:00
|
|
|
private void GroupTitlesHandler(object sender, GroupTitlesReplyEventArgs e)
|
2006-10-23 08:30:31 +00:00
|
|
|
{
|
2009-10-20 20:18:03 +00:00
|
|
|
Titles = e.Titles;
|
2006-10-23 08:30:31 +00:00
|
|
|
|
2007-02-22 12:36:31 +00:00
|
|
|
UpdateTitles();
|
2006-10-23 08:30:31 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void UpdateTitles()
|
|
|
|
|
{
|
2007-02-22 12:36:31 +00:00
|
|
|
if (this.InvokeRequired)
|
|
|
|
|
{
|
|
|
|
|
Invoke(new MethodInvoker(UpdateTitles));
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
2007-08-10 20:16:19 +00:00
|
|
|
lock (Titles)
|
|
|
|
|
{
|
2008-07-25 05:15:05 +00:00
|
|
|
foreach (KeyValuePair<UUID, GroupTitle> kvp in Titles)
|
2007-08-10 20:16:19 +00:00
|
|
|
{
|
2007-11-30 13:15:31 +00:00
|
|
|
Console.Write("Title: " + kvp.Value.Title + " = " + kvp.Key.ToString());
|
2007-08-10 20:16:19 +00:00
|
|
|
if (kvp.Value.Selected)
|
|
|
|
|
Console.WriteLine(" (Selected)");
|
|
|
|
|
else
|
|
|
|
|
Console.WriteLine();
|
|
|
|
|
}
|
|
|
|
|
}
|
2007-02-22 12:36:31 +00:00
|
|
|
}
|
2006-10-23 08:30:31 +00:00
|
|
|
}
|
2006-10-24 23:03:08 +00:00
|
|
|
}
|
2007-02-22 12:36:31 +00:00
|
|
|
|
|
|
|
|
public class GroupMemberData
|
|
|
|
|
{
|
2008-07-25 05:15:05 +00:00
|
|
|
public UUID ID;
|
2007-02-22 12:36:31 +00:00
|
|
|
public string Name;
|
|
|
|
|
public string Title;
|
|
|
|
|
public string LastOnline;
|
|
|
|
|
public ulong Powers;
|
|
|
|
|
public bool IsOwner;
|
|
|
|
|
public int Contribution;
|
|
|
|
|
}
|
2006-10-22 20:27:59 +00:00
|
|
|
}
|