コード例 #1
0
        private void OnCommandReceived(ServerCommand command)
        {
            switch (command.Type)
            {
            case ServerCommandType.JCH:
                var jch = command.Payload.ToObject <ServerJch>();
                if (jch.character.identity == chatManager.OwnCharacterName)
                {
                    var memberList = new ObservableKeyedList <Character, Channel.Member>(x => x.Character);
                    var newChannel = new Channel(jch.channel, jch.title, memberList);
                    members.Add(newChannel, memberList);
                    joinedChannels.Add(newChannel);
                    SetIsJoined(newChannel, true);
                    return;
                }
                break;

            case ServerCommandType.ICH:
            case ServerCommandType.CDS:
            case ServerCommandType.CBU:
            case ServerCommandType.CKU:
            case ServerCommandType.COA:
            case ServerCommandType.COL:
            case ServerCommandType.COR:
            case ServerCommandType.CSO:
            case ServerCommandType.CTU:
            case ServerCommandType.LCH:
            case ServerCommandType.RMO:
                break;

            case ServerCommandType.FLN:
                var flnCharacter = command.Value <string>("character");
                foreach (var item in joinedChannels.ToList())
                {
                    members[item].Remove(characterManager.GetCharacter(flnCharacter));
                }
                return;

            case ServerCommandType.CHA:
                publicChannels.Reset(command.Payload.GetValue("channels").Select(x => {
                    var name      = x.Value <string>("name");
                    var item      = new ChannelListItem(name, name, x.Value <int>("characters"));
                    item.IsJoined = JoinedChannels.ContainsKey(item.Id);
                    return(item);
                }));
                return;

            case ServerCommandType.ORS:
                privateChannels.Reset(command.Payload.GetValue("channels").Select(x => {
                    var item      = new ChannelListItem(x.Value <string>("name"), x.Value <string>("title"), x.Value <int>("characters"));
                    item.IsJoined = JoinedChannels.ContainsKey(item.Id);
                    return(item);
                }));
                return;

            default:
                return;
            }
            HandleChannelMessage(joinedChannels[command.Value <string>("channel")], command);
        }
コード例 #2
0
        private void LoadChannels()
        {
            UrlLists urls        = UrlLists.Get();
            Channels channels    = Channels.Get();
            bool     withoutUrls = false;
            bool     refreshList = false;

            if (urls.Lists.Count > 0)
            {
                channels.SetUrl(urls.Lists[urls.Selected]);
            }
            else
            {
                channels.SetUrl(new UrlObject()
                {
                    Name = "NONE", URL = "http://no_url"
                });
                withoutUrls = true;
            }
            if (!withoutUrls && File.Exists(Utils.CONF_PATH + "\\lists\\" + urls.Lists[urls.Selected].Name + "_cache.json"))
            {
                channels = Channels.LoadFromJSON();
                fillChannelList();
                DateTime creationCacheChannel = File.GetLastWriteTimeUtc(Utils.CONF_PATH + "\\lists\\" + urls.Lists[urls.Selected].Name + "_cache.json");
                if (File.Exists(Utils.CONF_PATH + "\\lists\\" + urls.Lists[urls.Selected].Name + "_cache.json") &&
                    creationCacheChannel.Day < DateTime.Now.Day - 1)
                {
                    refreshList = true;
                }
            }
            else
            {
                ChannelInfo ch = new ChannelInfo();
                ch.Title = Strings.DEFAULT_MSG_NO_LIST;
                ListViewItem i = new ListViewItem("0");
                i.SubItems.Add(Strings.DEFAULT_MSG_NO_LIST);
                chList.Invoke((System.Threading.ThreadStart) delegate
                {
                    chList.Items.Add(i);
                });
                var x = new ChannelListItem(ch.Title, ch.ChNumber);
                x.Seen   = ch.seen;
                x.Resume = ch.currentPostion != null;
                lstListsChannels[ALL_GROUP].Add(x);
                lstChannels.Add(x);
                if (urls.Lists.Count > 0 && !File.Exists(Utils.CONF_PATH + "\\lists\\" + urls.Lists[urls.Selected].Name + "_cache.json"))
                {
                    refreshList = true;
                }
            }

            FillGroups();

            if (refreshList)
            {
                RefreshChList(true);
            }
        }
コード例 #3
0
        private void UpdateRules()
        {
            if (_model.IsManual)
            {
                ChannelListItem channelItem = _manualChannelComboBox.SelectedItem as ChannelListItem;
                if (channelItem != null &&
                    channelItem.ChannelId != Guid.Empty &&
                    (_manualDurationDateTimePicker.Value.Hour != 0 || _manualDurationDateTimePicker.Value.Minute != 0))
                {
                    DateTime startTime = _manualDatePicker.Value.Date.Add(
                        new TimeSpan(_manualTimePicker.Value.Hour, _manualTimePicker.Value.Minute, 0));
                    TimeSpan duration =
                        new TimeSpan(_manualDurationDateTimePicker.Value.Hour, _manualDurationDateTimePicker.Value.Minute, 0);

                    ScheduleDaysOfWeek daysOfWeek = _manualScheduleDaysOfWeekControl.ScheduleDaysOfWeek;
                    _controller.UpdateManualSchedule(channelItem.ChannelId, channelItem.ChannelDisplayName, startTime, duration, daysOfWeek);
                    _nameTextBox.Text = _model.Schedule.Name;
                }
            }
            else
            {
                List <ScheduleRule> rules = new List <ScheduleRule>();

                _controller.AppendTitleRule(rules, _titleRuleTypeComboBox.SelectedIndex, _titleTextBox.Text);
                _controller.AppendSubTitleRule(rules, _subTitleRuleTypeComboBox.SelectedIndex, _subTitleTextBox.Text);
                _controller.AppendEpisodeNumberRule(rules, _episodeNumberRuleTypeComboBox.SelectedIndex, _episodeNumberTextBox.Text);

                if (_descriptionOrAnyComboBox.SelectedIndex == 1)
                {
                    _controller.AppendDescriptionRule(rules, _descriptionOrAnyTextBox.Text);
                }
                else
                {
                    _controller.AppendProgramInfoRule(rules, _descriptionOrAnyTextBox.Text);
                }
                _controller.AppendOnDateAndDaysOfWeekRule(rules, _scheduleDaysOfWeekControl.ScheduleDaysOfWeek,
                                                          _onDateDateTimePicker.Checked ? _onDateDateTimePicker.Value : (DateTime?)null);
                _controller.AppendAroundTimeRule(rules, _aroundCheckBox.Checked ? _aroundDateTimePicker.Value : (DateTime?)null);
                _controller.AppendStartingBetweenRule(rules, _betweenCheckBox.Checked, _betweenFromDateTimePicker.Value, _betweenToDateTimePicker.Value);
                _controller.AppendCategoriesRule(rules, _notInCategoriesRadioButton.Checked, _categoriesListBox.Items);
                _controller.AppendDirectedByRule(rules, _directorsListBox.Items);
                _controller.AppendWithActorRule(rules, _actorsListBox.Items);
                _controller.AppendNewEpisodesOnlyRule(rules, _newEpisodesOnlyCheckBox.Checked);
                _controller.AppendNewTitlesOnlyRule(rules, _newTitlesOnlyCheckBox.Checked);
                _controller.AppendSkipRepeatsRule(rules, _skipRepeatsCheckBox.Checked);

                List <Guid> channelIds = new List <Guid>();
                foreach (ChannelListItem item in _tvChannelsListBox.Items)
                {
                    channelIds.Add(item.ChannelId);
                }
                _controller.AppendChannelsRule(rules, _notInChannelsRadioButton.Checked, channelIds);

                _model.Schedule.Rules = rules;
            }
        }
コード例 #4
0
        // 채널에 입장하겠다고 서버에 알리고 결과를 받아 처리한다.
        private void EnterChannel()
        {
            ChannelListItem info = (ChannelListItem)list_ChannelList.SelectedItem;

            if (info == null)
            {
                return;
            }

            MessageHandler.SendToServer(CustomProtocolManager.MakeChannelEnterRequestPacket(info.index));
        }
コード例 #5
0
        public void AddChannelList(ChannelInfo info, int index)
        {
            if (InvokeRequired == true)
            {
                this.Invoke(new SetChannelInfoDelegate(AddChannelList), info, index);
                return;
            }

            ChannelListItem cli = new ChannelListItem(info, index);

            list_ChannelList.Items.Add(cli);
        }
コード例 #6
0
    void OnLoadChannelListItem(GameObject resItem, object param)
    {
        for (int i = 0; i < SceneData.SceneInstList.Count; i++)
        {
            ChannelListItem.CreateItem(ChannelListGrid, resItem, SceneData.SceneInstList[i].ToString(), this, StrDictionary.GetClientDictionaryString("#{1177}", (SceneData.SceneInstList[i] + 1).ToString()));
        }

        ChannelListGrid.GetComponent <UIGrid>().repositionNow = true;
        int nLine = SceneData.SceneInst + 1;

        m_CurLineLable.text = StrDictionary.GetClientDictionaryString("#{3192}", nLine);
    }
コード例 #7
0
        private void _addChannelButton_Click(object sender, EventArgs e)
        {
            ChannelListItem item = _channelComboBox.SelectedItem as ChannelListItem;

            if (item != null)
            {
                if (!_tvChannelsListBox.Items.Contains(item))
                {
                    _tvChannelsListBox.Items.Add(item);
                    _channelComboBox.SelectedIndex = -1;
                    RefreshUpcoming();
                }
            }
        }
コード例 #8
0
    public void OnChangeChannel(ChannelListItem item)
    {
        int channelID;

        if (int.TryParse(item.name, out channelID))
        {
            if (channelID != SceneData.SceneInst && SceneData.SceneInstList.Contains(channelID))
            {
                CG_SCENE_CHANGEINST packet = (CG_SCENE_CHANGEINST)PacketDistributed.CreatePacket(MessageID.PACKET_CG_SCENE_CHANGEINST);
                packet.SetSceneInst(channelID);
                packet.SendPacket();
            }
        }

        UIManager.CloseUI(UIInfo.ChannelChange);
    }
コード例 #9
0
    public static ChannelListItem CreateItem(GameObject grid, GameObject resItem, string name, ChangeChannelController parent, string text)
    {
        GameObject curItem = Utils.BindObjToParent(resItem, grid, name);

        if (null != curItem)
        {
            ChannelListItem curItemComponent = curItem.GetComponent <ChannelListItem>();
            if (null != curItemComponent)
            {
                curItemComponent.SetData(parent, text);
            }

            return(curItemComponent);
        }

        return(null);
    }
コード例 #10
0
        private void LoadChannels()
        {
            Channels channels = Channels.Get();

            channels.SetUrl(AmiConfiguration.Get().URL_IPTV);
            if (File.Exists(Utils.CONF_PATH + "channelCache.json"))
            {
                channels = Channels.LoadFromJSON();
                fillChannelList();
            }
            else
            {
                ChannelInfo ch = new ChannelInfo();
                ch.Title = Strings.DEFAULT_MSG_NO_LIST;
                ListViewItem i = new ListViewItem("0");
                i.SubItems.Add(Strings.DEFAULT_MSG_NO_LIST);
                chList.Items.Add(i);
                var x = new ChannelListItem(ch.Title, ch.ChNumber);
                x.Seen   = ch.seen;
                x.Resume = ch.currentPostion != null;
                lstListsChannels[ALL_GROUP].Add(x);
                lstChannels.Add(x);
            }

            cmbGroups.Items.Clear();

            foreach (string group in lstListsChannels.Keys)
            {
                cmbGroups.Items.Add(group);
            }
            cmbGroups.SelectedIndex = 0;

            DateTime creationCacheChannel = File.GetLastWriteTimeUtc(Utils.CONF_PATH + "channelCache.json");

            if (File.Exists(Utils.CONF_PATH + "channelCache.json") &&
                creationCacheChannel.Day < DateTime.Now.Day - 1)
            {
                RefreshChList(false);
            }
        }
コード例 #11
0
        private void FillChList()
        {
            Channels channels = Channels.Get();
            List <ChannelListItem> woGroup = new List <ChannelListItem>();

            lstListsChannels.Clear();
            lstListsChannels[ALL_GROUP] = new List <ChannelListItem>();
            lstListsChannels[ALL_GROUP].Clear();
            lstChannels.Clear();
            foreach (var elem in channels.GetChannelsDic())
            {
                int             chNumber = elem.Key;
                ChannelInfo     channel  = elem.Value;
                ChannelListItem chanItem = new ChannelListItem(channel.Title, channel.ChNumber);
                chanItem.Seen   = channel.seen;
                chanItem.Resume = channel.currentPostion != null;
                lstChannels.Add(chanItem);
                lstListsChannels[ALL_GROUP].Add(chanItem);
                string group = channel.TVGGroup;
                if (string.IsNullOrEmpty(group))
                {
                    woGroup.Add(chanItem);
                }
                else
                {
                    if (!lstListsChannels.ContainsKey(group))
                    {
                        lstListsChannels[group] = new List <ChannelListItem>();
                    }
                    lstListsChannels[group].Add(chanItem);
                }
            }
            if (woGroup.Count > 0)
            {
                lstListsChannels[EMPTY_GROUP] = woGroup;
            }
        }
コード例 #12
0
ファイル: CategoryAPI.cs プロジェクト: Coca162/Valour
        private static async Task InsertItem(HttpContext ctx, ValourDB db, ulong category_id,
                                             [FromHeader] string authorization)
        {
            AuthToken auth = await ServerAuthToken.TryAuthorize(authorization, db);

            if (auth == null)
            {
                ctx.Response.StatusCode = 401;
                await ctx.Response.WriteAsync($"Token is invalid [token: {authorization}]");

                return;
            }

            ServerPlanetCategory category = await db.PlanetCategories.Include(x => x.Planet)
                                            .ThenInclude(x => x.Members.Where(x => x.User_Id == auth.User_Id))
                                            .FirstOrDefaultAsync(x => x.Id == category_id);

            if (category == null)
            {
                ctx.Response.StatusCode = 400;
                await ctx.Response.WriteAsync($"Category not found [id: {category_id}]");

                return;
            }

            var member = category.Planet.Members.FirstOrDefault();

            if (member == null)
            {
                ctx.Response.StatusCode = 401;
                await ctx.Response.WriteAsync("Member not found");

                return;
            }

            if (!await category.HasPermission(member, CategoryPermissions.View, db))
            {
                ctx.Response.StatusCode = 401;
                await ctx.Response.WriteAsync("Member lacks CategoryPermissions.View");

                return;
            }

            if (!auth.HasScope(UserPermissions.PlanetManagement))
            {
                ctx.Response.StatusCode = 401;
                await ctx.Response.WriteAsync($"Token lacks UserPermissions.PlanetManagement");

                return;
            }

            if (!await category.HasPermission(member, CategoryPermissions.ManageCategory, db))
            {
                ctx.Response.StatusCode = 401;
                await ctx.Response.WriteAsync("Member lacks CategoryPermissions.ManageCategory");

                return;
            }

            ChannelListItem in_item = await JsonSerializer.DeserializeAsync <ChannelListItem>(ctx.Request.Body);

            if (in_item == null || in_item.Planet_Id == 0)
            {
                ctx.Response.StatusCode = 400;
                await ctx.Response.WriteAsync("Include item data.");

                return;
            }

            IServerChannelListItem item = await IServerChannelListItem.FindAsync(in_item.ItemType, in_item.Id, db);

            if (item == null)
            {
                ctx.Response.StatusCode = 400;
                await ctx.Response.WriteAsync($"Item not found [id: {in_item.Id}]");

                return;
            }

            ServerPlanet item_planet = await db.Planets.FindAsync(item.Planet_Id);

            if (item_planet == null)
            {
                ctx.Response.StatusCode = 400;
                await ctx.Response.WriteAsync($"Item planet not found [id: {in_item.Planet_Id}]");

                return;
            }

            if (item_planet.Id != category.Planet_Id)
            {
                ctx.Response.StatusCode = 400;
                await ctx.Response.WriteAsync($"Item belongs to different planet");

                return;
            }

            if (item.Parent_Id == category.Id)
            {
                ctx.Response.StatusCode = 200;
                await ctx.Response.WriteAsync($"No change");

                return;
            }

            // Ensure that if this is a category, it is not going into a category that contains itself!
            if (item.ItemType == ItemType.Category)
            {
                ulong?parent_id = category.Parent_Id;

                while (parent_id != null)
                {
                    // Recursion is a nono
                    if (parent_id == item.Id)
                    {
                        ctx.Response.StatusCode = 400;
                        await ctx.Response.WriteAsync("Operation would result in recursion.");

                        return;
                    }

                    parent_id = (await db.PlanetCategories.FindAsync(parent_id)).Parent_Id;
                }
            }

            item.Parent_Id = category.Id;
            item.Position  = in_item.Position;

            db.Update(item);
            await db.SaveChangesAsync();

            item.NotifyClientsChange();

            ctx.Response.StatusCode = 200;
            await ctx.Response.WriteAsync("Success");

            return;
        }
コード例 #13
0
        private void ShowRulesInUI()
        {
            _onDateDateTimePicker.Checked = false;
            _descriptionOrAnyComboBox.SelectedIndex = 0;

            int typeIndex;
            _titleTextBox.Text = _controller.GetTitleRuleText(out typeIndex);
            _titleRuleTypeComboBox.SelectedIndex = typeIndex;

            _subTitleTextBox.Text = _controller.GetSubTitleRuleText(out typeIndex);
            _subTitleRuleTypeComboBox.SelectedIndex = typeIndex;

            _episodeNumberTextBox.Text = _controller.GetEpisodeNumberRuleText(out typeIndex);
            _episodeNumberRuleTypeComboBox.SelectedIndex = typeIndex;

            bool isProgramInfo;
            _descriptionOrAnyTextBox.Text = _controller.GetDescriptionOrProgramInfoRuleText(out isProgramInfo);
            _descriptionOrAnyComboBox.SelectedIndex = isProgramInfo ? 0 : 1;

            foreach (ScheduleRule rule in _model.Schedule.Rules)
            {
                switch (rule.Type)
                {
                    case ScheduleRuleType.NotOnChannels:
                        if (!_manualScheduleGroupBox.Visible)
                        {
                            goto case ScheduleRuleType.Channels;
                        }
                        break;

                    case ScheduleRuleType.Channels:
                        _tvChannelsListBox.Items.Clear();
                        foreach (Guid channelId in rule.Arguments)
                        {
                            ChannelListItem item = FindChannelItem(_channelComboBox, channelId);
                            if (item == null
                                && _model.AllChannels.ContainsKey(channelId))
                            {
                                item = new ChannelListItem(_model.AllChannels[channelId]);
                            }
                            if (item != null)
                            {
                                _tvChannelsListBox.Items.Add(item);
                            }
                        }
                        if (_manualScheduleGroupBox.Visible
                            && rule.Arguments.Count > 0)
                        {
                            Guid channelId = (Guid)rule.Arguments[0];
                            SelectGroupWithChannel(_manualChannelGroupComboBox, channelId);
                            _manualChannelComboBox.SelectedItem = FindChannelItem(_manualChannelComboBox, channelId);
                        }
                        _notInChannelsRadioButton.Checked = (rule.Type == ScheduleRuleType.NotOnChannels);
                        break;

                    case ScheduleRuleType.OnDate:
                        _onDateLabel.Text = _onDateLabelText;
                        _manualDateTimeLabel.Text = _onDateLabelText;
                        _onDateDateTimePicker.Checked = true;
                        _onDateDateTimePicker.Value = (DateTime)rule.Arguments[0];
                        _scheduleDaysOfWeekControl.ScheduleDaysOfWeek = ScheduleDaysOfWeek.None;
                        break;

                    case ScheduleRuleType.DaysOfWeek:
                        _onDateLabel.Text = _fromDateLabelText;
                        _manualDateTimeLabel.Text = _fromDateLabelText;
                        ScheduleDaysOfWeek scheduleDaysOfWeek = (ScheduleDaysOfWeek)rule.Arguments[0];
                        _scheduleDaysOfWeekControl.ScheduleDaysOfWeek = scheduleDaysOfWeek;
                        _manualScheduleDaysOfWeekControl.ScheduleDaysOfWeek = scheduleDaysOfWeek;
                        if (rule.Arguments.Count > 1)
                        {
                            _onDateDateTimePicker.Checked = true;
                            _onDateDateTimePicker.Value = (DateTime)rule.Arguments[1];
                        }
                        else
                        {
                            _onDateDateTimePicker.Checked = false;
                            _onDateDateTimePicker.Value = DateTime.Today;
                        }
                        break;

                    case ScheduleRuleType.AroundTime:
                        _aroundCheckBox.Checked = true;
                        ScheduleTime aroundTime = (ScheduleTime)rule.Arguments[0];
                        _aroundDateTimePicker.Value = DateTime.Today.AddTicks(aroundTime.Ticks);
                        break;

                    case ScheduleRuleType.StartingBetween:
                        _betweenCheckBox.Checked = true;
                        ScheduleTime fromTime = (ScheduleTime)rule.Arguments[0];
                        ScheduleTime toTime = (ScheduleTime)rule.Arguments[1];
                        _betweenFromDateTimePicker.Value = DateTime.Today.AddTicks(fromTime.Ticks);
                        _betweenToDateTimePicker.Value = DateTime.Today.AddTicks(toTime.Ticks);
                        break;

                    case ScheduleRuleType.CategoryEquals:
                    case ScheduleRuleType.CategoryDoesNotEqual:
                        foreach (string category in rule.Arguments)
                        {
                            _categoriesListBox.Items.Add(category);
                        }
                        _notInCategoriesRadioButton.Checked = (rule.Type == ScheduleRuleType.CategoryDoesNotEqual);
                        break;

                    case ScheduleRuleType.DirectedBy:
                        foreach (string director in rule.Arguments)
                        {
                            _directorsListBox.Items.Add(director);
                        }
                        break;

                    case ScheduleRuleType.WithActor:
                        foreach (string actor in rule.Arguments)
                        {
                            _actorsListBox.Items.Add(actor);
                        }
                        break;

                    case ScheduleRuleType.NewEpisodesOnly:
                        _newEpisodesOnlyCheckBox.Checked = (bool)rule.Arguments[0];
                        break;

                    case ScheduleRuleType.NewTitlesOnly:
                        _newTitlesOnlyCheckBox.Checked = (bool)rule.Arguments[0];
                        break;

                    case ScheduleRuleType.SkipRepeats:
                        _skipRepeatsCheckBox.Checked = (bool)rule.Arguments[0];
                        break;

                    case ScheduleRuleType.ManualSchedule:
                        DateTime manualDateTime = (DateTime)rule.Arguments[0];
                        ScheduleTime manualDuration = (ScheduleTime)rule.Arguments[1];
                        _manualDatePicker.Value = manualDateTime.Date;
                        _manualTimePicker.Value = DateTime.Today.Add(manualDateTime.TimeOfDay);
                        _manualDurationDateTimePicker.Value = DateTime.Today.AddTicks(manualDuration.Ticks);
                        break;
                }
            }

            RefreshListBoxAllLabels();
        }
コード例 #14
0
ファイル: IrcUWPBase.cs プロジェクト: mlarouche/WinIRC
 private void Dialog_JoinChannelClick(ChannelListItem item)
 {
     JoinChannel(item.Channel);
     MainPage.instance.SwitchChannel(Server.Name, item.Channel, true);
 }
コード例 #15
0
        public void SetUp()
        {
            Schedule(() =>
            {
                foreach (var item in channelMap.Values)
                {
                    item.Expire();
                }

                channelMap.Clear();

                Child = new FillFlowContainer
                {
                    Direction    = FillDirection.Vertical,
                    Anchor       = Anchor.Centre,
                    Origin       = Anchor.Centre,
                    AutoSizeAxes = Axes.Both,
                    Spacing      = new Vector2(10),
                    Children     = new Drawable[]
                    {
                        selectedText = new OsuSpriteText
                        {
                            Anchor = Anchor.TopCentre,
                            Origin = Anchor.TopCentre,
                        },
                        leaveText = new OsuSpriteText
                        {
                            Anchor        = Anchor.TopCentre,
                            Origin        = Anchor.TopCentre,
                            Height        = 16,
                            AlwaysPresent = true,
                        },
                        new Container
                        {
                            Anchor       = Anchor.TopCentre,
                            Origin       = Anchor.TopCentre,
                            AutoSizeAxes = Axes.Y,
                            Width        = 190,
                            Children     = new Drawable[]
                            {
                                new Box
                                {
                                    RelativeSizeAxes = Axes.Both,
                                    Colour           = colourProvider.Background6,
                                },
                                flow = new FillFlowContainer
                                {
                                    Direction        = FillDirection.Vertical,
                                    RelativeSizeAxes = Axes.X,
                                    AutoSizeAxes     = Axes.Y,
                                },
                            },
                        },
                    },
                };

                selected.BindValueChanged(change =>
                {
                    selectedText.Text = $"Selected Channel: {change.NewValue?.Name ?? "[null]"}";
                }, true);

                foreach (var channel in channels)
                {
                    var item = new ChannelListItem(channel);
                    flow.Add(item);
                    channelMap.Add(channel, item);
                    item.OnRequestSelect += c => selected.Value = c;
                    item.OnRequestLeave  += leaveChannel;
                }
            });
        }
コード例 #16
0
 public JSChannel(ObjectInstance prototype, ChannelListItem item)
     : base(prototype.Engine, ((ClrFunction)prototype.Engine.Global["Channel"]).InstancePrototype)
 {
     this.Item = item;
     this.PopulateFunctions();
 }
コード例 #17
0
        private void ShowRulesInUI()
        {
            _onDateDateTimePicker.Checked           = false;
            _descriptionOrAnyComboBox.SelectedIndex = 0;

            int typeIndex;

            _titleTextBox.Text = _controller.GetTitleRuleText(out typeIndex);
            _titleRuleTypeComboBox.SelectedIndex = typeIndex;

            _subTitleTextBox.Text = _controller.GetSubTitleRuleText(out typeIndex);
            _subTitleRuleTypeComboBox.SelectedIndex = typeIndex;

            _episodeNumberTextBox.Text = _controller.GetEpisodeNumberRuleText(out typeIndex);
            _episodeNumberRuleTypeComboBox.SelectedIndex = typeIndex;

            bool isProgramInfo;

            _descriptionOrAnyTextBox.Text           = _controller.GetDescriptionOrProgramInfoRuleText(out isProgramInfo);
            _descriptionOrAnyComboBox.SelectedIndex = isProgramInfo ? 0 : 1;

            foreach (ScheduleRule rule in _model.Schedule.Rules)
            {
                switch (rule.Type)
                {
                case ScheduleRuleType.NotOnChannels:
                    if (!_manualScheduleGroupBox.Visible)
                    {
                        goto case ScheduleRuleType.Channels;
                    }
                    break;

                case ScheduleRuleType.Channels:
                    _tvChannelsListBox.Items.Clear();
                    foreach (Guid channelId in rule.Arguments)
                    {
                        ChannelListItem item = FindChannelItem(_channelComboBox, channelId);
                        if (item == null &&
                            _model.AllChannels.ContainsKey(channelId))
                        {
                            item = new ChannelListItem(_model.AllChannels[channelId]);
                        }
                        if (item != null)
                        {
                            _tvChannelsListBox.Items.Add(item);
                        }
                    }
                    if (_manualScheduleGroupBox.Visible &&
                        rule.Arguments.Count > 0)
                    {
                        Guid channelId = (Guid)rule.Arguments[0];
                        SelectGroupWithChannel(_manualChannelGroupComboBox, channelId);
                        _manualChannelComboBox.SelectedItem = FindChannelItem(_manualChannelComboBox, channelId);
                    }
                    _notInChannelsRadioButton.Checked = (rule.Type == ScheduleRuleType.NotOnChannels);
                    break;

                case ScheduleRuleType.OnDate:
                    _onDateLabel.Text             = _onDateLabelText;
                    _manualDateTimeLabel.Text     = _onDateLabelText;
                    _onDateDateTimePicker.Checked = true;
                    _onDateDateTimePicker.Value   = (DateTime)rule.Arguments[0];
                    _scheduleDaysOfWeekControl.ScheduleDaysOfWeek = ScheduleDaysOfWeek.None;
                    break;

                case ScheduleRuleType.DaysOfWeek:
                    _onDateLabel.Text         = _fromDateLabelText;
                    _manualDateTimeLabel.Text = _fromDateLabelText;
                    ScheduleDaysOfWeek scheduleDaysOfWeek = (ScheduleDaysOfWeek)rule.Arguments[0];
                    _scheduleDaysOfWeekControl.ScheduleDaysOfWeek       = scheduleDaysOfWeek;
                    _manualScheduleDaysOfWeekControl.ScheduleDaysOfWeek = scheduleDaysOfWeek;
                    if (rule.Arguments.Count > 1)
                    {
                        _onDateDateTimePicker.Checked = true;
                        _onDateDateTimePicker.Value   = (DateTime)rule.Arguments[1];
                    }
                    else
                    {
                        _onDateDateTimePicker.Checked = false;
                        _onDateDateTimePicker.Value   = DateTime.Today;
                    }
                    break;

                case ScheduleRuleType.AroundTime:
                    _aroundCheckBox.Checked = true;
                    ScheduleTime aroundTime = (ScheduleTime)rule.Arguments[0];
                    _aroundDateTimePicker.Value = DateTime.Today.AddTicks(aroundTime.Ticks);
                    break;

                case ScheduleRuleType.StartingBetween:
                    _betweenCheckBox.Checked = true;
                    ScheduleTime fromTime = (ScheduleTime)rule.Arguments[0];
                    ScheduleTime toTime   = (ScheduleTime)rule.Arguments[1];
                    _betweenFromDateTimePicker.Value = DateTime.Today.AddTicks(fromTime.Ticks);
                    _betweenToDateTimePicker.Value   = DateTime.Today.AddTicks(toTime.Ticks);
                    break;

                case ScheduleRuleType.CategoryEquals:
                case ScheduleRuleType.CategoryDoesNotEqual:
                    foreach (string category in rule.Arguments)
                    {
                        _categoriesListBox.Items.Add(category);
                    }
                    _notInCategoriesRadioButton.Checked = (rule.Type == ScheduleRuleType.CategoryDoesNotEqual);
                    break;

                case ScheduleRuleType.DirectedBy:
                    foreach (string director in rule.Arguments)
                    {
                        _directorsListBox.Items.Add(director);
                    }
                    break;

                case ScheduleRuleType.WithActor:
                    foreach (string actor in rule.Arguments)
                    {
                        _actorsListBox.Items.Add(actor);
                    }
                    break;

                case ScheduleRuleType.NewEpisodesOnly:
                    _newEpisodesOnlyCheckBox.Checked = (bool)rule.Arguments[0];
                    break;

                case ScheduleRuleType.NewTitlesOnly:
                    _newTitlesOnlyCheckBox.Checked = (bool)rule.Arguments[0];
                    break;

                case ScheduleRuleType.SkipRepeats:
                    _skipRepeatsCheckBox.Checked = (bool)rule.Arguments[0];
                    break;

                case ScheduleRuleType.ManualSchedule:
                    DateTime     manualDateTime = (DateTime)rule.Arguments[0];
                    ScheduleTime manualDuration = (ScheduleTime)rule.Arguments[1];
                    _manualDatePicker.Value             = manualDateTime.Date;
                    _manualTimePicker.Value             = DateTime.Today.Add(manualDateTime.TimeOfDay);
                    _manualDurationDateTimePicker.Value = DateTime.Today.AddTicks(manualDuration.Ticks);
                    break;
                }
            }

            RefreshListBoxAllLabels();
        }