Inheritance: ObservableClass
コード例 #1
0
ファイル: Conference.cs プロジェクト: qingxuebei/FSClient
        private ConferenceUser GetUser(FSEvent evt)
        {
            String         member_id = evt.get_header("Member-ID");
            ConferenceUser user      = (from u in users where u.id == member_id select u).FirstOrDefault();

            return(user);
        }
コード例 #2
0
ファイル: Converters.cs プロジェクト: mitchcapper/FSClient
        public static String StateConvert(ConferenceUser.USER_STATE state)
        {
            String ret = "";

            if (ConferenceUser.StateTest(state,ConferenceUser.USER_STATE.DEAF))
                ret += "D ";
            if (ConferenceUser.StateTest(state, ConferenceUser.USER_STATE.FLOOR))
                ret += "F ";
            if (ConferenceUser.StateTest(state, ConferenceUser.USER_STATE.MUTE))
                ret += "M ";
            if (ConferenceUser.StateTest(state, ConferenceUser.USER_STATE.TALK))
                ret += "T ";
            return ret;
        }
コード例 #3
0
ファイル: IContactPlugin.cs プロジェクト: qingxuebei/FSClient
        private void bgResolveWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            Call c = e.Argument as Call;

            if (c == null)
            {
                ConferenceUser user = (ConferenceUser)e.Argument;
                active_plugin.contact_plugin.ResolveNumber(user.party_number, alias => { if (user.party_name == user.party_number)
                                                                                         {
                                                                                             user.party_name = alias;
                                                                                         }
                                                           });
                return;
            }

            active_plugin.contact_plugin.ResolveNumber(c.other_party_number, alias => { if (c.other_party_name == c.other_party_number)
                                                                                        {
                                                                                            c.other_party_name = alias;
                                                                                        }
                                                       });
        }
コード例 #4
0
ファイル: Converters.cs プロジェクト: blueglare/FSClient2
        public static String StateConvert(ConferenceUser.USER_STATE state)
        {
            String ret = "";

            if (ConferenceUser.StateTest(state, ConferenceUser.USER_STATE.DEAF))
            {
                ret += "D ";
            }
            if (ConferenceUser.StateTest(state, ConferenceUser.USER_STATE.FLOOR))
            {
                ret += "F ";
            }
            if (ConferenceUser.StateTest(state, ConferenceUser.USER_STATE.MUTE))
            {
                ret += "M ";
            }
            if (ConferenceUser.StateTest(state, ConferenceUser.USER_STATE.TALK))
            {
                ret += "T ";
            }
            return(ret);
        }
コード例 #5
0
ファイル: Conference.cs プロジェクト: qingxuebei/FSClient
        public void NewFSEvent(object sender, FSEvent evt)
        {
            if (evt.event_id != switch_event_types_t.SWITCH_EVENT_CUSTOM || evt.subclass_name != "conference::maintenance" || evt.get_header("Conference-Name") != "fsc_conference")
            {
                return;
            }
            String         type = evt.get_header("Action");
            ConferenceUser user;

            switch (type)
            {
            case "add-member":
                String member_id = evt.get_header("Member-ID");
                String uuid      = evt.get_header("Unique-ID");
                String source    = evt.get_header("Caller-Source");
                String direction = evt.get_header("Call-Direction");
                user = new ConferenceUser {
                    id = member_id, uuid = uuid, party_name = evt.get_header("Caller-Caller-ID-Name"), party_number = evt.get_header("Caller-Caller-ID-Number")
                };
                if (source == "mod_portaudio" && direction == "inbound")
                {
                    user.party_number = user.party_name = "You";
                    user.is_us        = true;
                }
                users.Add(user);
                break;

            case "del-member":
                user = GetUser(evt);
                if (user == null)
                {
                    return;
                }
                users.Remove(user);
                break;

            case "start-talking":
                user = GetUser(evt);
                if (user == null)
                {
                    return;
                }
                user.state |= ConferenceUser.USER_STATE.TALK;
                break;

            case "stop-talking":
                user = GetUser(evt);
                if (user == null)
                {
                    return;
                }
                user.state ^= ConferenceUser.USER_STATE.TALK;
                break;

            case "floor-change":
                user = GetUser(evt);
                if (user == null)
                {
                    return;
                }
                foreach (var u in users)
                {
                    u.state ^= ConferenceUser.USER_STATE.FLOOR;
                }
                user.state |= ConferenceUser.USER_STATE.FLOOR;
                break;
            }
        }
コード例 #6
0
ファイル: Conference.cs プロジェクト: qingxuebei/FSClient
        private MenuItem UserMenu(ConferenceUser user)
        {
            MenuItem main = new MenuItem();
            MenuItem item;

            main.Header = user.party_name + " " + ConfStateConverter.StateConvert(user.state);
            item        = new MenuItem()
            {
                Header = "Min Energy Level"
            };
            for (int x = 0; x <= 1500; x += 150)
            {
                int    val = x;
                String add = val == user.min_energy_level ? "*" : "";
                item.Items.Add(CreateMenuItem("Level " + val + add, () => user.SetEnergyLevel(val)));
            }
            main.Items.Add(item);

            item = new MenuItem()
            {
                Header = "Their Volume Level"
            };
            for (int x = -4; x <= 4; x++)
            {
                int    val = x;
                String add = val == user.their_volume ? "*" : "";
                item.Items.Add(CreateMenuItem("Level " + x + add, () => user.SetAudioLevel(val)));
            }
            main.Items.Add(item);

            item = new MenuItem()
            {
                Header = "Conference Volume Level"
            };
            for (int x = -4; x <= 4; x++)
            {
                int    val = x;
                String add = val == user.conference_volume ? "*" : "";
                item.Items.Add(CreateMenuItem("Level " + x + add, () => user.SetAudioLevel(val, true)));
            }
            main.Items.Add(item);
            if (user.StateIs(ConferenceUser.USER_STATE.MUTE))
            {
                main.Items.Add(CreateMenuItem("UnMute", () => user.Mute(true)));
            }
            else
            {
                main.Items.Add(CreateMenuItem("Mute", () => user.Mute()));
            }

            if (user.StateIs(ConferenceUser.USER_STATE.DEAF))
            {
                main.Items.Add(CreateMenuItem("UnDeaf", () => user.Deaf(true)));
            }
            else
            {
                main.Items.Add(CreateMenuItem("Deaf", () => user.Deaf()));
            }
            if (!user.is_us)
            {
                main.Items.Add(CreateMenuItem("Split Out", user.Split));
            }
            main.Items.Add(CreateMenuItem("Drop From Conference", user.Drop));
            return(main);
        }
コード例 #7
0
ファイル: Conference.cs プロジェクト: mitchcapper/FSClient
        private MenuItem UserMenu(ConferenceUser user)
        {
            MenuItem main = new MenuItem();
            MenuItem item;
            main.Header = user.party_name + " " + ConfStateConverter.StateConvert(user.state);
            item = new MenuItem() { Header = "Min Energy Level" };
            for (int x = 0; x <= 1500; x += 150) {
                int val = x;
                String add = val == user.min_energy_level ? "*" : "";
                item.Items.Add(CreateMenuItem("Level " + val + add, () => user.SetEnergyLevel(val)));
            }
            main.Items.Add(item);

            item = new MenuItem() { Header = "Their Volume Level" };
            for (int x = -4; x <= 4; x++) {
                int val = x;
                String add = val == user.their_volume ? "*" : "";
                item.Items.Add(CreateMenuItem("Level " + x + add, () => user.SetAudioLevel(val)));
            }
            main.Items.Add(item);

            item = new MenuItem() { Header = "Conference Volume Level" };
            for (int x = -4; x <= 4; x++) {
                int val = x;
                String add = val == user.conference_volume ? "*" : "";
                item.Items.Add(CreateMenuItem("Level " + x + add, () => user.SetAudioLevel(val, true)));
            }
            main.Items.Add(item);
            if (user.StateIs(ConferenceUser.USER_STATE.MUTE))
                main.Items.Add(CreateMenuItem("UnMute", () => user.Mute(true)));
            else
                main.Items.Add(CreateMenuItem("Mute", () => user.Mute()));

            if (user.StateIs(ConferenceUser.USER_STATE.DEAF))
                main.Items.Add(CreateMenuItem("UnDeaf", () => user.Deaf(true)));
            else
                main.Items.Add(CreateMenuItem("Deaf", () => user.Deaf()));
            if (!user.is_us)
                main.Items.Add(CreateMenuItem("Split Out", user.Split));
            main.Items.Add(CreateMenuItem("Drop From Conference", user.Drop));
            return main;
        }
コード例 #8
0
ファイル: Conference.cs プロジェクト: mitchcapper/FSClient
        public void NewFSEvent(object sender, FSEvent evt)
        {
            if (evt.event_id != switch_event_types_t.SWITCH_EVENT_CUSTOM || evt.subclass_name != "conference::maintenance" || evt.get_header("Conference-Name") != "fsc_conference")
                return;
            String type = evt.get_header("Action");
            ConferenceUser user;
            switch (type) {
                case "add-member":
                    String member_id = evt.get_header("Member-ID");
                    String uuid = evt.get_header("Unique-ID");
                    String source = evt.get_header("Caller-Source");
                    String direction = evt.get_header("Call-Direction");
                    user = new ConferenceUser { id = member_id, uuid = uuid, party_name = evt.get_header("Caller-Caller-ID-Name"), party_number = evt.get_header("Caller-Caller-ID-Number") };
                    if (source == "mod_portaudio" && direction == "inbound") {
                        user.party_number = user.party_name = "You";
                        user.is_us = true;
                    }
                    users.Add(user);
                    break;
                case "del-member":
                    user = GetUser(evt);
                    if (user == null)
                        return;
                    users.Remove(user);
                    break;
                case "start-talking":
                    user = GetUser(evt);
                    if (user == null)
                        return;
                    user.state |= ConferenceUser.USER_STATE.TALK;
                    break;
                case "stop-talking":
                    user = GetUser(evt);
                    if (user == null)
                        return;
                    user.state ^= ConferenceUser.USER_STATE.TALK;
                    break;
                case "floor-change":
                    user = GetUser(evt);
                    if (user == null)
                        return;
                    foreach (var u in users)
                        u.state ^= ConferenceUser.USER_STATE.FLOOR;
                    user.state |= ConferenceUser.USER_STATE.FLOOR;
                    break;

            }
        }