OSDN Git Service

Update copyright year
[radegast/radegast.git] / Radegast / GUI / Dialogs / MuteResident.cs
1 // 
2 // Radegast Metaverse Client
3 // Copyright (c) 2009-2014, Radegast Development Team
4 // All rights reserved.
5 // 
6 // Redistribution and use in source and binary forms, with or without
7 // modification, are permitted provided that the following conditions are met:
8 // 
9 //     * Redistributions of source code must retain the above copyright notice,
10 //       this list of conditions and the following disclaimer.
11 //     * Redistributions in binary form must reproduce the above copyright
12 //       notice, this list of conditions and the following disclaimer in the
13 //       documentation and/or other materials provided with the distribution.
14 //     * Neither the name of the application "Radegast", nor the names of its
15 //       contributors may be used to endorse or promote products derived from
16 //       this software without specific prior written permission.
17 // 
18 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
21 // DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
22 // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23 // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
24 // SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
25 // CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
26 // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 //
29 // $Id$
30 //
31 using System;
32 using System.Collections.Generic;
33 using System.ComponentModel;
34 using System.Data;
35 using System.Drawing;
36 using System.Linq;
37 using System.Text;
38 using System.Windows.Forms;
39 using OpenMetaverse;
40
41 namespace Radegast
42 {
43     public partial class MuteResidentForm : RadegastForm
44     {
45         AvatarPicker picker;
46         RadegastInstance instance;
47         Netcom.RadegastNetcom netcom;
48
49         public MuteResidentForm(RadegastInstance instance)
50             :base(instance)
51         {
52             InitializeComponent();
53             Disposed += new EventHandler(MuteResidentForm_Disposed);
54             AutoSavePosition = true;
55
56             this.instance = instance;
57             this.netcom = instance.Netcom;
58
59             picker = new AvatarPicker(instance) { Dock = DockStyle.Fill };
60             Controls.Add(picker);
61             picker.SelectionChaged += new EventHandler(picker_SelectionChaged);
62             picker.BringToFront();
63             
64             netcom.ClientDisconnected += new EventHandler<DisconnectedEventArgs>(Netcom_ClientDisconnected);
65         }
66
67         void picker_SelectionChaged(object sender, EventArgs e)
68         {
69             btnMute.Enabled = picker.SelectedAvatars.Count > 0;
70         }
71
72         void MuteResidentForm_Disposed(object sender, EventArgs e)
73         {
74             netcom.ClientDisconnected -= new EventHandler<DisconnectedEventArgs>(Netcom_ClientDisconnected);
75             netcom = null;
76             instance = null;
77             picker.Dispose();
78             Logger.DebugLog("Group picker disposed");
79         }
80
81         void Netcom_ClientDisconnected(object sender, OpenMetaverse.DisconnectedEventArgs e)
82         {
83             ((Radegast.Netcom.RadegastNetcom)sender).ClientDisconnected -= new EventHandler<DisconnectedEventArgs>(Netcom_ClientDisconnected);
84
85             if (!instance.MonoRuntime || IsHandleCreated)
86                 BeginInvoke(new MethodInvoker(() =>
87                 {
88                     Close();
89                 }
90                 ));
91         }
92
93
94         private void MuteResidentForm_Load(object sender, EventArgs e)
95         {
96             picker.txtSearch.Focus();
97         }
98
99         private void btnMute_Click(object sender, EventArgs e)
100         {
101             foreach (var kvp in picker.SelectedAvatars)
102             {
103                 Client.Self.UpdateMuteListEntry(MuteType.Resident, kvp.Key, instance.Names.Get(kvp.Key, kvp.Value));
104             }
105             Close();
106         }
107     }
108 }