{\r
this.tcGroupDetails = new System.Windows.Forms.TabControl();\r
this.tpGeneral = new System.Windows.Forms.TabPage();\r
+ this.lvwGeneralMembers = new System.Windows.Forms.ListView();\r
+ this.chGenMemberName = new System.Windows.Forms.ColumnHeader();\r
+ this.chGenTitle = new System.Windows.Forms.ColumnHeader();\r
+ this.chGenLastOn = new System.Windows.Forms.ColumnHeader();\r
+ this.lblOwners = new System.Windows.Forms.Label();\r
+ this.tbxCharter = new System.Windows.Forms.TextBox();\r
+ this.lblCharter = new System.Windows.Forms.Label();\r
+ this.gbPreferences = new System.Windows.Forms.GroupBox();\r
+ this.cbxShowGroupInList = new System.Windows.Forms.CheckBox();\r
+ this.cbxReceiveNotices = new System.Windows.Forms.CheckBox();\r
+ this.cbxActiveTitle = new System.Windows.Forms.ComboBox();\r
+ this.lblActiveTitle = new System.Windows.Forms.Label();\r
+ this.nudEnrollmentFee = new System.Windows.Forms.NumericUpDown();\r
+ this.cbxMaturity = new System.Windows.Forms.ComboBox();\r
+ this.cbxEnrollmentFee = new System.Windows.Forms.CheckBox();\r
+ this.cbxOpenEnrollment = new System.Windows.Forms.CheckBox();\r
+ this.cbxShowInSearch = new System.Windows.Forms.CheckBox();\r
+ this.lblInsignia = new System.Windows.Forms.Label();\r
+ this.pnlInsignia = new System.Windows.Forms.Panel();\r
+ this.lblFounded = new System.Windows.Forms.Label();\r
+ this.lblGroupName = new System.Windows.Forms.Label();\r
this.tpMembersRoles = new System.Windows.Forms.TabPage();\r
this.tpNotices = new System.Windows.Forms.TabPage();\r
+ this.pnlBottomControls = new System.Windows.Forms.Panel();\r
+ this.btnClose = new System.Windows.Forms.Button();\r
+ this.btnApply = new System.Windows.Forms.Button();\r
+ this.btnRefresh = new System.Windows.Forms.Button();\r
this.tcGroupDetails.SuspendLayout();\r
+ this.tpGeneral.SuspendLayout();\r
+ this.gbPreferences.SuspendLayout();\r
+ ((System.ComponentModel.ISupportInitialize)(this.nudEnrollmentFee)).BeginInit();\r
+ this.pnlBottomControls.SuspendLayout();\r
this.SuspendLayout();\r
// \r
// tcGroupDetails\r
this.tcGroupDetails.Location = new System.Drawing.Point(0, 0);\r
this.tcGroupDetails.Name = "tcGroupDetails";\r
this.tcGroupDetails.SelectedIndex = 0;\r
- this.tcGroupDetails.Size = new System.Drawing.Size(418, 405);\r
+ this.tcGroupDetails.Size = new System.Drawing.Size(408, 500);\r
this.tcGroupDetails.TabIndex = 0;\r
// \r
// tpGeneral\r
// \r
+ this.tpGeneral.BackColor = System.Drawing.SystemColors.Control;\r
+ this.tpGeneral.Controls.Add(this.lvwGeneralMembers);\r
+ this.tpGeneral.Controls.Add(this.lblOwners);\r
+ this.tpGeneral.Controls.Add(this.tbxCharter);\r
+ this.tpGeneral.Controls.Add(this.lblCharter);\r
+ this.tpGeneral.Controls.Add(this.gbPreferences);\r
+ this.tpGeneral.Controls.Add(this.lblInsignia);\r
+ this.tpGeneral.Controls.Add(this.pnlInsignia);\r
+ this.tpGeneral.Controls.Add(this.lblFounded);\r
+ this.tpGeneral.Controls.Add(this.lblGroupName);\r
this.tpGeneral.Location = new System.Drawing.Point(4, 22);\r
this.tpGeneral.Name = "tpGeneral";\r
this.tpGeneral.Padding = new System.Windows.Forms.Padding(3);\r
- this.tpGeneral.Size = new System.Drawing.Size(410, 379);\r
+ this.tpGeneral.Size = new System.Drawing.Size(400, 474);\r
this.tpGeneral.TabIndex = 0;\r
this.tpGeneral.Text = "General";\r
- this.tpGeneral.UseVisualStyleBackColor = true;\r
+ // \r
+ // lvwGeneralMembers\r
+ // \r
+ this.lvwGeneralMembers.AllowColumnReorder = true;\r
+ this.lvwGeneralMembers.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)\r
+ | System.Windows.Forms.AnchorStyles.Left)\r
+ | System.Windows.Forms.AnchorStyles.Right)));\r
+ this.lvwGeneralMembers.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {\r
+ this.chGenMemberName,\r
+ this.chGenTitle,\r
+ this.chGenLastOn});\r
+ this.lvwGeneralMembers.GridLines = true;\r
+ this.lvwGeneralMembers.HideSelection = false;\r
+ this.lvwGeneralMembers.Location = new System.Drawing.Point(9, 232);\r
+ this.lvwGeneralMembers.MultiSelect = false;\r
+ this.lvwGeneralMembers.Name = "lvwGeneralMembers";\r
+ this.lvwGeneralMembers.ShowGroups = false;\r
+ this.lvwGeneralMembers.Size = new System.Drawing.Size(385, 131);\r
+ this.lvwGeneralMembers.Sorting = System.Windows.Forms.SortOrder.Ascending;\r
+ this.lvwGeneralMembers.TabIndex = 8;\r
+ this.lvwGeneralMembers.UseCompatibleStateImageBehavior = false;\r
+ this.lvwGeneralMembers.View = System.Windows.Forms.View.Details;\r
+ this.lvwGeneralMembers.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.lvwGeneralMembers_ColumnClick);\r
+ // \r
+ // chGenMemberName\r
+ // \r
+ this.chGenMemberName.Text = "Member name";\r
+ this.chGenMemberName.Width = 130;\r
+ // \r
+ // chGenTitle\r
+ // \r
+ this.chGenTitle.Text = "Title";\r
+ this.chGenTitle.Width = 130;\r
+ // \r
+ // chGenLastOn\r
+ // \r
+ this.chGenLastOn.Text = "Last login";\r
+ this.chGenLastOn.Width = 90;\r
+ // \r
+ // lblOwners\r
+ // \r
+ this.lblOwners.AutoSize = true;\r
+ this.lblOwners.Location = new System.Drawing.Point(6, 213);\r
+ this.lblOwners.Name = "lblOwners";\r
+ this.lblOwners.Size = new System.Drawing.Size(141, 13);\r
+ this.lblOwners.TabIndex = 7;\r
+ this.lblOwners.Text = "Owners and visible members";\r
+ // \r
+ // tbxCharter\r
+ // \r
+ this.tbxCharter.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)\r
+ | System.Windows.Forms.AnchorStyles.Right)));\r
+ this.tbxCharter.Location = new System.Drawing.Point(155, 36);\r
+ this.tbxCharter.Multiline = true;\r
+ this.tbxCharter.Name = "tbxCharter";\r
+ this.tbxCharter.Size = new System.Drawing.Size(239, 190);\r
+ this.tbxCharter.TabIndex = 6;\r
+ // \r
+ // lblCharter\r
+ // \r
+ this.lblCharter.AutoSize = true;\r
+ this.lblCharter.Location = new System.Drawing.Point(152, 20);\r
+ this.lblCharter.Name = "lblCharter";\r
+ this.lblCharter.Size = new System.Drawing.Size(72, 13);\r
+ this.lblCharter.TabIndex = 5;\r
+ this.lblCharter.Text = "Group charter";\r
+ // \r
+ // gbPreferences\r
+ // \r
+ this.gbPreferences.Controls.Add(this.cbxShowGroupInList);\r
+ this.gbPreferences.Controls.Add(this.cbxReceiveNotices);\r
+ this.gbPreferences.Controls.Add(this.cbxActiveTitle);\r
+ this.gbPreferences.Controls.Add(this.lblActiveTitle);\r
+ this.gbPreferences.Controls.Add(this.nudEnrollmentFee);\r
+ this.gbPreferences.Controls.Add(this.cbxMaturity);\r
+ this.gbPreferences.Controls.Add(this.cbxEnrollmentFee);\r
+ this.gbPreferences.Controls.Add(this.cbxOpenEnrollment);\r
+ this.gbPreferences.Controls.Add(this.cbxShowInSearch);\r
+ this.gbPreferences.Dock = System.Windows.Forms.DockStyle.Bottom;\r
+ this.gbPreferences.Location = new System.Drawing.Point(3, 369);\r
+ this.gbPreferences.Name = "gbPreferences";\r
+ this.gbPreferences.Size = new System.Drawing.Size(394, 102);\r
+ this.gbPreferences.TabIndex = 4;\r
+ this.gbPreferences.TabStop = false;\r
+ this.gbPreferences.Text = "Group Preferences";\r
+ // \r
+ // cbxShowGroupInList\r
+ // \r
+ this.cbxShowGroupInList.AutoSize = true;\r
+ this.cbxShowGroupInList.Location = new System.Drawing.Point(211, 82);\r
+ this.cbxShowGroupInList.Name = "cbxShowGroupInList";\r
+ this.cbxShowGroupInList.Size = new System.Drawing.Size(130, 17);\r
+ this.cbxShowGroupInList.TabIndex = 8;\r
+ this.cbxShowGroupInList.Text = "List group in my profile";\r
+ this.cbxShowGroupInList.UseVisualStyleBackColor = true;\r
+ // \r
+ // cbxReceiveNotices\r
+ // \r
+ this.cbxReceiveNotices.AutoSize = true;\r
+ this.cbxReceiveNotices.Location = new System.Drawing.Point(211, 59);\r
+ this.cbxReceiveNotices.Name = "cbxReceiveNotices";\r
+ this.cbxReceiveNotices.Size = new System.Drawing.Size(133, 17);\r
+ this.cbxReceiveNotices.TabIndex = 7;\r
+ this.cbxReceiveNotices.Text = "Receive group notices";\r
+ this.cbxReceiveNotices.UseVisualStyleBackColor = true;\r
+ // \r
+ // cbxActiveTitle\r
+ // \r
+ this.cbxActiveTitle.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;\r
+ this.cbxActiveTitle.FormattingEnabled = true;\r
+ this.cbxActiveTitle.Location = new System.Drawing.Point(211, 32);\r
+ this.cbxActiveTitle.Name = "cbxActiveTitle";\r
+ this.cbxActiveTitle.Size = new System.Drawing.Size(151, 21);\r
+ this.cbxActiveTitle.TabIndex = 6;\r
+ // \r
+ // lblActiveTitle\r
+ // \r
+ this.lblActiveTitle.AutoSize = true;\r
+ this.lblActiveTitle.Location = new System.Drawing.Point(208, 16);\r
+ this.lblActiveTitle.Name = "lblActiveTitle";\r
+ this.lblActiveTitle.Size = new System.Drawing.Size(72, 13);\r
+ this.lblActiveTitle.TabIndex = 5;\r
+ this.lblActiveTitle.Text = "My active title";\r
+ // \r
+ // nudEnrollmentFee\r
+ // \r
+ this.nudEnrollmentFee.Increment = new decimal(new int[] {\r
+ 10,\r
+ 0,\r
+ 0,\r
+ 0});\r
+ this.nudEnrollmentFee.Location = new System.Drawing.Point(114, 55);\r
+ this.nudEnrollmentFee.Maximum = new decimal(new int[] {\r
+ 1410065408,\r
+ 2,\r
+ 0,\r
+ 0});\r
+ this.nudEnrollmentFee.Name = "nudEnrollmentFee";\r
+ this.nudEnrollmentFee.Size = new System.Drawing.Size(53, 20);\r
+ this.nudEnrollmentFee.TabIndex = 4;\r
+ // \r
+ // cbxMaturity\r
+ // \r
+ this.cbxMaturity.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;\r
+ this.cbxMaturity.FormattingEnabled = true;\r
+ this.cbxMaturity.Items.AddRange(new object[] {\r
+ "PG Content",\r
+ "Mature Content",\r
+ "Adult Content"});\r
+ this.cbxMaturity.Location = new System.Drawing.Point(6, 77);\r
+ this.cbxMaturity.Name = "cbxMaturity";\r
+ this.cbxMaturity.Size = new System.Drawing.Size(121, 21);\r
+ this.cbxMaturity.TabIndex = 3;\r
+ // \r
+ // cbxEnrollmentFee\r
+ // \r
+ this.cbxEnrollmentFee.AutoSize = true;\r
+ this.cbxEnrollmentFee.Location = new System.Drawing.Point(15, 56);\r
+ this.cbxEnrollmentFee.Name = "cbxEnrollmentFee";\r
+ this.cbxEnrollmentFee.Size = new System.Drawing.Size(93, 17);\r
+ this.cbxEnrollmentFee.TabIndex = 2;\r
+ this.cbxEnrollmentFee.Text = "Enrollment fee";\r
+ this.cbxEnrollmentFee.UseVisualStyleBackColor = true;\r
+ // \r
+ // cbxOpenEnrollment\r
+ // \r
+ this.cbxOpenEnrollment.AutoSize = true;\r
+ this.cbxOpenEnrollment.Location = new System.Drawing.Point(6, 38);\r
+ this.cbxOpenEnrollment.Name = "cbxOpenEnrollment";\r
+ this.cbxOpenEnrollment.Size = new System.Drawing.Size(103, 17);\r
+ this.cbxOpenEnrollment.TabIndex = 1;\r
+ this.cbxOpenEnrollment.Text = "Open enrollment";\r
+ this.cbxOpenEnrollment.UseVisualStyleBackColor = true;\r
+ // \r
+ // cbxShowInSearch\r
+ // \r
+ this.cbxShowInSearch.AutoSize = true;\r
+ this.cbxShowInSearch.Location = new System.Drawing.Point(6, 19);\r
+ this.cbxShowInSearch.Name = "cbxShowInSearch";\r
+ this.cbxShowInSearch.Size = new System.Drawing.Size(99, 17);\r
+ this.cbxShowInSearch.TabIndex = 0;\r
+ this.cbxShowInSearch.Text = "Show in search";\r
+ this.cbxShowInSearch.UseVisualStyleBackColor = true;\r
+ // \r
+ // lblInsignia\r
+ // \r
+ this.lblInsignia.AutoSize = true;\r
+ this.lblInsignia.Location = new System.Drawing.Point(6, 179);\r
+ this.lblInsignia.Name = "lblInsignia";\r
+ this.lblInsignia.Size = new System.Drawing.Size(75, 13);\r
+ this.lblInsignia.TabIndex = 3;\r
+ this.lblInsignia.Text = "Group Insignia";\r
+ // \r
+ // pnlInsignia\r
+ // \r
+ this.pnlInsignia.Location = new System.Drawing.Point(9, 36);\r
+ this.pnlInsignia.Name = "pnlInsignia";\r
+ this.pnlInsignia.Size = new System.Drawing.Size(140, 140);\r
+ this.pnlInsignia.TabIndex = 2;\r
+ // \r
+ // lblFounded\r
+ // \r
+ this.lblFounded.AutoSize = true;\r
+ this.lblFounded.Location = new System.Drawing.Point(6, 20);\r
+ this.lblFounded.Name = "lblFounded";\r
+ this.lblFounded.Size = new System.Drawing.Size(115, 13);\r
+ this.lblFounded.TabIndex = 1;\r
+ this.lblFounded.Text = "Founded by: Test User";\r
+ // \r
+ // lblGroupName\r
+ // \r
+ this.lblGroupName.AutoSize = true;\r
+ this.lblGroupName.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));\r
+ this.lblGroupName.Location = new System.Drawing.Point(6, 3);\r
+ this.lblGroupName.Name = "lblGroupName";\r
+ this.lblGroupName.Size = new System.Drawing.Size(89, 17);\r
+ this.lblGroupName.TabIndex = 0;\r
+ this.lblGroupName.Text = "Group Name";\r
// \r
// tpMembersRoles\r
// \r
+ this.tpMembersRoles.BackColor = System.Drawing.SystemColors.Control;\r
this.tpMembersRoles.Location = new System.Drawing.Point(4, 22);\r
this.tpMembersRoles.Name = "tpMembersRoles";\r
this.tpMembersRoles.Padding = new System.Windows.Forms.Padding(3);\r
- this.tpMembersRoles.Size = new System.Drawing.Size(410, 379);\r
+ this.tpMembersRoles.Size = new System.Drawing.Size(400, 474);\r
this.tpMembersRoles.TabIndex = 1;\r
this.tpMembersRoles.Text = "Members & Roles";\r
- this.tpMembersRoles.UseVisualStyleBackColor = true;\r
// \r
// tpNotices\r
// \r
+ this.tpNotices.BackColor = System.Drawing.SystemColors.Control;\r
this.tpNotices.Location = new System.Drawing.Point(4, 22);\r
this.tpNotices.Name = "tpNotices";\r
this.tpNotices.Padding = new System.Windows.Forms.Padding(3);\r
- this.tpNotices.Size = new System.Drawing.Size(410, 379);\r
+ this.tpNotices.Size = new System.Drawing.Size(400, 474);\r
this.tpNotices.TabIndex = 2;\r
this.tpNotices.Text = "Notices";\r
- this.tpNotices.UseVisualStyleBackColor = true;\r
+ // \r
+ // pnlBottomControls\r
+ // \r
+ this.pnlBottomControls.Controls.Add(this.btnClose);\r
+ this.pnlBottomControls.Controls.Add(this.btnApply);\r
+ this.pnlBottomControls.Controls.Add(this.btnRefresh);\r
+ this.pnlBottomControls.Dock = System.Windows.Forms.DockStyle.Bottom;\r
+ this.pnlBottomControls.Location = new System.Drawing.Point(0, 500);\r
+ this.pnlBottomControls.Name = "pnlBottomControls";\r
+ this.pnlBottomControls.Size = new System.Drawing.Size(408, 34);\r
+ this.pnlBottomControls.TabIndex = 6;\r
+ // \r
+ // btnClose\r
+ // \r
+ this.btnClose.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));\r
+ this.btnClose.Location = new System.Drawing.Point(329, 6);\r
+ this.btnClose.Name = "btnClose";\r
+ this.btnClose.Size = new System.Drawing.Size(75, 23);\r
+ this.btnClose.TabIndex = 0;\r
+ this.btnClose.Text = "Close";\r
+ this.btnClose.UseVisualStyleBackColor = true;\r
+ // \r
+ // btnApply\r
+ // \r
+ this.btnApply.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));\r
+ this.btnApply.Location = new System.Drawing.Point(248, 6);\r
+ this.btnApply.Name = "btnApply";\r
+ this.btnApply.Size = new System.Drawing.Size(75, 23);\r
+ this.btnApply.TabIndex = 0;\r
+ this.btnApply.Text = "Apply";\r
+ this.btnApply.UseVisualStyleBackColor = true;\r
+ // \r
+ // btnRefresh\r
+ // \r
+ this.btnRefresh.Location = new System.Drawing.Point(13, 6);\r
+ this.btnRefresh.Name = "btnRefresh";\r
+ this.btnRefresh.Size = new System.Drawing.Size(75, 23);\r
+ this.btnRefresh.TabIndex = 0;\r
+ this.btnRefresh.Text = "Refresh";\r
+ this.btnRefresh.UseVisualStyleBackColor = true;\r
+ this.btnRefresh.Click += new System.EventHandler(this.btnRefresh_Click);\r
// \r
// GroupDetails\r
// \r
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);\r
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;\r
this.Controls.Add(this.tcGroupDetails);\r
+ this.Controls.Add(this.pnlBottomControls);\r
this.Name = "GroupDetails";\r
- this.Size = new System.Drawing.Size(418, 405);\r
+ this.Size = new System.Drawing.Size(408, 534);\r
this.tcGroupDetails.ResumeLayout(false);\r
+ this.tpGeneral.ResumeLayout(false);\r
+ this.tpGeneral.PerformLayout();\r
+ this.gbPreferences.ResumeLayout(false);\r
+ this.gbPreferences.PerformLayout();\r
+ ((System.ComponentModel.ISupportInitialize)(this.nudEnrollmentFee)).EndInit();\r
+ this.pnlBottomControls.ResumeLayout(false);\r
this.ResumeLayout(false);\r
\r
}\r
private System.Windows.Forms.TabPage tpGeneral;\r
private System.Windows.Forms.TabPage tpMembersRoles;\r
private System.Windows.Forms.TabPage tpNotices;\r
+ private System.Windows.Forms.Panel pnlInsignia;\r
+ private System.Windows.Forms.Label lblFounded;\r
+ private System.Windows.Forms.Label lblGroupName;\r
+ private System.Windows.Forms.Label lblInsignia;\r
+ private System.Windows.Forms.GroupBox gbPreferences;\r
+ private System.Windows.Forms.Panel pnlBottomControls;\r
+ private System.Windows.Forms.Button btnClose;\r
+ private System.Windows.Forms.Button btnApply;\r
+ private System.Windows.Forms.Button btnRefresh;\r
+ private System.Windows.Forms.CheckBox cbxEnrollmentFee;\r
+ private System.Windows.Forms.CheckBox cbxOpenEnrollment;\r
+ private System.Windows.Forms.CheckBox cbxShowInSearch;\r
+ private System.Windows.Forms.ComboBox cbxMaturity;\r
+ private System.Windows.Forms.ComboBox cbxActiveTitle;\r
+ private System.Windows.Forms.Label lblActiveTitle;\r
+ private System.Windows.Forms.NumericUpDown nudEnrollmentFee;\r
+ private System.Windows.Forms.CheckBox cbxShowGroupInList;\r
+ private System.Windows.Forms.CheckBox cbxReceiveNotices;\r
+ private System.Windows.Forms.Label lblCharter;\r
+ private System.Windows.Forms.ListView lvwGeneralMembers;\r
+ private System.Windows.Forms.Label lblOwners;\r
+ private System.Windows.Forms.TextBox tbxCharter;\r
+ private System.Windows.Forms.ColumnHeader chGenMemberName;\r
+ private System.Windows.Forms.ColumnHeader chGenTitle;\r
+ private System.Windows.Forms.ColumnHeader chGenLastOn;\r
}\r
}\r
// $Id$\r
//\r
using System;\r
+using System.Collections;\r
using System.Collections.Generic;\r
using System.ComponentModel;\r
using System.Drawing;\r
{\r
public partial class GroupDetails : UserControl\r
{\r
+ private Group group;\r
+ private RadegastInstance instance;\r
+ private GridClient client { get { return instance.Client; } }\r
+\r
+ private UUID groupTitlesRequest;\r
+ private UUID groupMembersRequest;\r
+\r
public GroupDetails(RadegastInstance instance, Group group)\r
{\r
InitializeComponent();\r
+ Disposed += new EventHandler(GroupDetails_Disposed);\r
+ \r
+ this.instance = instance;\r
+ this.group = group;\r
+\r
+ if (group.InsigniaID != UUID.Zero)\r
+ {\r
+ SLImageHandler insignia = new SLImageHandler(instance, group.InsigniaID, string.Empty);\r
+ insignia.Dock = DockStyle.Fill;\r
+ pnlInsignia.Controls.Add(insignia);\r
+ }\r
+\r
+ lblGroupName.Text = group.Name;\r
+ lvwGeneralMembers.ListViewItemSorter = new GroupMemberSorter();\r
+\r
+ // Callbacks\r
+ client.Groups.OnGroupTitles += new GroupManager.GroupTitlesCallback(Groups_OnGroupTitles);\r
+ client.Groups.OnGroupMembers += new GroupManager.GroupMembersCallback(Groups_OnGroupMembers);\r
+ client.Groups.OnGroupProfile += new GroupManager.GroupProfileCallback(Groups_OnGroupProfile);\r
+ client.Avatars.OnAvatarNames += new AvatarManager.AvatarNamesCallback(Avatars_OnAvatarNames);\r
+\r
+ RefreshGroupInfo();\r
+ }\r
+\r
+ void GroupDetails_Disposed(object sender, EventArgs e)\r
+ {\r
+ client.Groups.OnGroupTitles -= new GroupManager.GroupTitlesCallback(Groups_OnGroupTitles);\r
+ client.Groups.OnGroupMembers -= new GroupManager.GroupMembersCallback(Groups_OnGroupMembers);\r
+ client.Groups.OnGroupProfile -= new GroupManager.GroupProfileCallback(Groups_OnGroupProfile);\r
+ client.Avatars.OnAvatarNames -= new AvatarManager.AvatarNamesCallback(Avatars_OnAvatarNames);\r
+ }\r
+\r
+ private void RefreshGroupInfo()\r
+ {\r
+ lvwGeneralMembers.Items.Clear();\r
+ cbxActiveTitle.Items.Clear();\r
+\r
+ // Request group info\r
+ client.Groups.RequestGroupProfile(group.ID);\r
+ groupTitlesRequest = client.Groups.RequestGroupTitles(group.ID);\r
+ groupMembersRequest = client.Groups.RequestGroupMembers(group.ID);\r
+ }\r
+\r
+ #region Network callbacks\r
+ void Groups_OnGroupProfile(Group group)\r
+ {\r
+ if (group.ID != this.group.ID) return;\r
+\r
+ if (InvokeRequired)\r
+ {\r
+ BeginInvoke(new MethodInvoker(delegate()\r
+ {\r
+ Groups_OnGroupProfile(group);\r
+ }\r
+ ));\r
+ return;\r
+ }\r
+\r
+ this.group = group;\r
+\r
+ tbxCharter.Text = group.Charter;\r
+ lblFounded.Text = "Founded by: " + instance.getAvatarName(group.FounderID);\r
+ }\r
+\r
+ void Avatars_OnAvatarNames(Dictionary<UUID, string> names)\r
+ {\r
+ if (InvokeRequired)\r
+ {\r
+ BeginInvoke(new MethodInvoker(delegate()\r
+ {\r
+ Avatars_OnAvatarNames(names);\r
+ }\r
+ ));\r
+ return;\r
+ }\r
+\r
+ if (names.ContainsKey(group.FounderID))\r
+ {\r
+ lblFounded.Text = "Founded by: " + names[group.FounderID];\r
+ }\r
+\r
+ lvwGeneralMembers.BeginUpdate();\r
+ bool modified = false;\r
+ foreach (KeyValuePair<UUID, string> name in names)\r
+ {\r
+ if (lvwGeneralMembers.Items.ContainsKey(name.Key.ToString()))\r
+ {\r
+ lvwGeneralMembers.Items[name.Key.ToString()].Text = name.Value;\r
+ modified = true;\r
+ }\r
+ }\r
+ if (modified)\r
+ lvwGeneralMembers.Sort();\r
+ lvwGeneralMembers.EndUpdate();\r
+ }\r
+\r
+ void Groups_OnGroupTitles(UUID requestID, UUID groupID, Dictionary<UUID, GroupTitle> titles)\r
+ {\r
+ if (groupTitlesRequest != requestID) return;\r
+ Dictionary<UUID, GroupTitle> t = titles;\r
+ }\r
+\r
+ void Groups_OnGroupMembers(UUID requestID, UUID groupID, Dictionary<UUID, GroupMember> members)\r
+ {\r
+ if (groupMembersRequest != requestID) return;\r
+\r
+ if (InvokeRequired)\r
+ {\r
+ BeginInvoke(new MethodInvoker(delegate()\r
+ {\r
+ Groups_OnGroupMembers(requestID, groupID, members);\r
+ }\r
+ ));\r
+ return;\r
+ }\r
+\r
+ lvwGeneralMembers.BeginUpdate();\r
+ List<ListViewItem> newItems = new List<ListViewItem>();\r
+ List<UUID> unknownNames = new List<UUID>();\r
+\r
+ foreach (GroupMember member in members.Values)\r
+ {\r
+ string name;\r
+ \r
+ if (instance.haveAvatarName(member.ID))\r
+ {\r
+ name = instance.getAvatarName(member.ID);\r
+ }\r
+ else\r
+ {\r
+ name = "Loading...";\r
+ unknownNames.Add(member.ID);\r
+ }\r
+\r
+ ListViewItem item = new ListViewItem(name);\r
+ item.Tag = member;\r
+ item.Name = member.ID.ToString();\r
+ item.SubItems.Add(new ListViewItem.ListViewSubItem(item, member.Title));\r
+ item.SubItems.Add(new ListViewItem.ListViewSubItem(item, member.OnlineStatus));\r
+\r
+ newItems.Add(item);\r
+ }\r
+\r
+ if (unknownNames.Count > 0)\r
+ {\r
+ instance.getAvatarNames(unknownNames);\r
+ }\r
+\r
+ lvwGeneralMembers.Items.AddRange(newItems.ToArray());\r
+ lvwGeneralMembers.Sort();\r
+ lvwGeneralMembers.EndUpdate();\r
+ }\r
+ #endregion\r
+\r
+ private void btnRefresh_Click(object sender, EventArgs e)\r
+ {\r
+ RefreshGroupInfo();\r
+ }\r
+\r
+ void lvwGeneralMembers_ColumnClick(object sender, ColumnClickEventArgs e)\r
+ {\r
+ GroupMemberSorter sorter = (GroupMemberSorter)lvwGeneralMembers.ListViewItemSorter;\r
+ switch (e.Column)\r
+ {\r
+ case 0:\r
+ sorter.SortBy = GroupMemberSorter.SortByColumn.Name;\r
+ break;\r
+\r
+ case 1:\r
+ sorter.SortBy = GroupMemberSorter.SortByColumn.Title;\r
+ break;\r
+\r
+ case 2:\r
+ sorter.SortBy = GroupMemberSorter.SortByColumn.LastOnline;\r
+ break;\r
+ }\r
+\r
+ if (sorter.CurrentOrder == GroupMemberSorter.SortOrder.Ascending)\r
+ sorter.CurrentOrder = GroupMemberSorter.SortOrder.Descending;\r
+ else\r
+ sorter.CurrentOrder = GroupMemberSorter.SortOrder.Ascending;\r
+\r
+ lvwGeneralMembers.Sort();\r
+ }\r
+ }\r
+\r
+ public class GroupMemberSorter : IComparer\r
+ {\r
+ public enum SortByColumn\r
+ {\r
+ Name,\r
+ Title,\r
+ LastOnline\r
+ }\r
+\r
+ public enum SortOrder\r
+ {\r
+ Ascending,\r
+ Descending\r
+ }\r
+\r
+ public SortOrder CurrentOrder = SortOrder.Ascending;\r
+ public SortByColumn SortBy = SortByColumn.Name;\r
+\r
+ public GroupMemberSorter()\r
+ {\r
+ }\r
+\r
+ public int Compare(object x, object y)\r
+ {\r
+ ListViewItem item1 = (ListViewItem)x;\r
+ ListViewItem item2 = (ListViewItem)y;\r
+ GroupMember member1 = (GroupMember)item1.Tag;\r
+ GroupMember member2 = (GroupMember)item2.Tag;\r
+\r
+ switch (SortBy)\r
+ {\r
+ case SortByColumn.Name:\r
+ if (CurrentOrder == SortOrder.Ascending)\r
+ return string.Compare(item1.Text, item2.Text);\r
+ else\r
+ return string.Compare(item2.Text, item1.Text);\r
+\r
+ case SortByColumn.Title:\r
+ if (CurrentOrder == SortOrder.Ascending)\r
+ return string.Compare(member1.Title, member2.Title);\r
+ else\r
+ return string.Compare(member2.Title, member1.Title);\r
+\r
+ case SortByColumn.LastOnline:\r
+ DateTime t1;\r
+ if (member1.OnlineStatus == "Online")\r
+ {\r
+ t1 = DateTime.Now;\r
+ }\r
+ else\r
+ {\r
+ t1 = Convert.ToDateTime(member1.OnlineStatus, Utils.EnUsCulture);\r
+ }\r
+\r
+ DateTime t2;\r
+ if (member2.OnlineStatus == "Online")\r
+ {\r
+ t2 = DateTime.Now;\r
+ }\r
+ else\r
+ {\r
+ t2 = Convert.ToDateTime(member2.OnlineStatus, Utils.EnUsCulture);\r
+ }\r
+\r
+ if (CurrentOrder == SortOrder.Ascending)\r
+ return DateTime.Compare(t1, t2);\r
+ else\r
+ return DateTime.Compare(t2, t1);\r
+ }\r
+\r
+ return 0;\r
}\r
}\r
}\r